Wix Major проблемы с обновлением

Вот сценарии.

1.) Установите 1.0.1.1, затем обновите до 1.0.2.2 ===> Это работает хорошо (как и ожидалось)

2.) Установите 1.0.2.2, затем вернитесь к 1.0.1.1 ===> Это не работает (как и ожидалось)

3.) Установите 1.0.1.1, затем установите 1.0.1.1 ===> Это переходит в режим восстановления / удаления (как и ожидалось)

4.) Установите 1.0.1.1, затем установите 1.0.1.2 ===> Он устанавливается как новый и дважды показывает программу в окне "Установка и удаление программ" на панели управления (я полагаю, она должна работать как 3.), потому что из моего понимая, MSI не волнует 4-я часть версии продукта)

Я делаю что-то не так?

<Product Id="*" Name="My product" Version="$(var.Version)" Language="1033"  Manufacturer="My Company" UpgradeCode="MY-UPGRADE-CODE">

<Package Description="My product" Comments="Comments" InstallerVersion="200" Compressed="yes" />

<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />

1 ответ

Решение

Это ведет себя как упомянуто в документации WIX. Для обработки этого сценария необходимо установить для свойства ниже значение "Да" в элементе MajorUpgrade. Прочитайте выделенный текст для более подробной информации.

AllowSameVersionUpgrades (YesNoType)

При значении no (по умолчанию) установка продукта с той же версией и кодом обновления (но с другим кодом продукта) разрешена и рассматривается MSI как два продукта. При значении yes WiX устанавливает атрибут msidbUpgradeAttributesVersionMaxInclusive, который указывает MSI рассматривать продукт с той же версией, что и при значительном обновлении.

This is useful when two product versions differ only in the fourth version field. MSI specifically ignores that field when comparing product versions, so two products that differ only in the fourth version field are the same product and need this attribute set to yes to be detected.

Обратите внимание, что, поскольку MSI игнорирует четвертое поле версии продукта, установка этого атрибута на да также позволяет понизить рейтинг, если первые три поля версии продукта идентичны. Например, версия продукта 1.0.0.1 будет "обновлена" до версии 1.0.0.2998, поскольку они рассматриваются как одна и та же версия (1.0.0). Это может привести к серьезным ошибкам, поэтому самый безопасный выбор - изменить первые три поля версии и пропустить этот атрибут, чтобы получить значение по умолчанию - no.

Этот атрибут не может быть "да", когда AllowDowngrades также "да" - AllowDowngrades уже позволяет двум продуктам с одинаковым номером версии обновлять друг друга.

Источник: документация WIX

Другие вопросы по тегам