Ошибка установочного пакета Windows 7 2869 при установке обновленной версии - PullRequest
1 голос
/ 20 февраля 2011

У меня есть приложение с версией №: 1.0.0.1, которое является обновлением до более старой версии 1.0.0.0.

Когда я пытаюсь установить новую версию 1.0.0.1, когда в моей системе уже установлена ​​более старая версия, я получаю ошибку 2869.

Но если я удаляю старую версию вручную, а затем пытаюсь установить более новую версию, она устанавливается успешно.

Я изменил код продукта для новой версии. Но не изменил код обновления.

Может ли кто-нибудь любезно сообщить мне причину и исправить это?

1 Ответ

1 голос
/ 12 апреля 2011

В свойстве MSI ProductVersion важны только первые 3 поля при сравнении версий с использованием логики основного обновления. Так что в вашем случае MSI будет считать 1.0.0.1 и 1.0.0.0 обоими 1.0.0. Поэтому FindRelatedProducts не будет определять эту ситуацию как обновление.

Способ, которым я подхожу к этому, заключается в создании «упакованной» версии, в которой 3-е и 4-е поля объединяются в одно, скажем, (4096 * f3 + f4), но это позволит вам никогда не иметь 4-го поля (сборка число) больше 4096 и 3-е поле не больше 15, так как 0xFFFF является максимумом для поля версии.

Это позволяет нам выполнять крупные обновления между отдельными ночными сборками, а не только пакетами обновлений, без необходимости в загрузчике для незначительного обновления, и мы можем иметь новый код продукта для каждой сборки, поэтому нет необходимости запоминать обновления это вручную, когда возникает необходимость.

...