Обновление сгенерированного WiX пакета до нулевой основной версии

Недавно я выпустил пакет с версией 0.8.3, и теперь я готов выпустить новый пакет. Однако я изо всех сил пытался реализовать Major Upgrade / Upgrade. Похоже, что переменная WIX_UPGRADE_DETECTED никогда не заполнялась. Затем я столкнулся с основным обновлением WiX3, не работающим, где в принятом ответе указано, что:

  1. Все версии установки (опять же, не версии файлов) должны быть 1.0 или выше.

И действительно, временное повышение основной версии обоих пакетов до 1, похоже, решило проблему. Однако я не могу задним числом изменить версию старого пакета, так как он уже установлен на тысячах компьютеров. Как лучше всего полностью удалить старый пакет при установке нового? Есть ли способ лучше, чем настроить CustomAction, который запускает msiexec.exe /x {PRODUCT-CODE}?


person luzifer    schedule 26.05.2018    source источник
comment
Что означает ваш Upgrade table как выглядят? (подробнее ). Откройте скомпилированный MSI с помощью бесплатных инструментов Orca, SuperOrca или InstEd (ссылки внизу) или любой другой инструмент, который у вас есть для проверки MSI.   -  person Stein Åsmul    schedule 26.05.2018
comment
Upgrade table имеет следующую запись: UpgradeCode: {MYGUID-47A5-4E5A-BB2B-45800A2244C0} MinVersion: 0.0.0 MaxVersion: 0.8.2 Language: Attributes: 256 Remove: ALL ActionProperty: PREVIOUSFOUND   -  person luzifer    schedule 27.05.2018
comment
Эта проблема решена?   -  person Stein Åsmul    schedule 04.06.2018


Ответы (1)


Если ваш код обновления стабилен между выпусками, вам просто нужно правильно составить таблицу обновлений, чтобы включить версию, которую вы хотите обновить.

Какую конструкцию вы используете для реализации основного обновления? Вы используете MajorUpgrade element? Это должно в значительной степени работать прямо из коробки:

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

Возможно, вы используете основные элементы обновления старого стиля: Как реализовать установщик WiX обновить?.

Вы должны предоставить нам свой фрагмент кода WiX, который вы используете для реализации основных обновлений.

Я бы удостоверился, что максимальная версия, указанная в таблице обновлений, совпадает с версией установки, которую вы устанавливаете в настоящее время.


Некоторые ссылки:

Ответы:

Документация:

person Stein Åsmul    schedule 27.05.2018