Majorupgrade или идентификатор обновления, который предпочтительнее для крупного обновления?

Мы пытаемся сделать серьезное обновление. Пока я исследовал, я нашел 2 подхода.

Один использует идентификатор обновления, а другой подход - тег Majorupgrade.

Кажется, Majorupgrade - это просто. Но в расписании нет никаких действий перед установкой и инициализацией.

Я не уверен, что использовать.

Какой из них наиболее предпочтителен [и рекомендуется]?


person Samselvaprabu    schedule 14.06.2012    source источник
comment
Schedule имеет параметр afterInstallValidate, который находится перед InstallInitialize.   -  person Christopher B. Adkins    schedule 14.06.2012


Ответы (1)


Элемент MajorUpgrade был введен в wix 3.5, чтобы упростить то, что вы обычно делаете с Upgrade. Чтобы вместо этого:

<!– Major upgrade –> 
<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED" /> 
    <UpgradeVersion Minimum="1.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" /> 
</Upgrade>

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallValidate" /> 
</InstallExecuteSequence>

<Condition Message="Can't downgrade"> 
    NOT NEWERVERSIONDETECTED 
</Condition>

Вы можете просто сделать это:

<MajorUpgrade DowngradeErrorMessage="Can’t downgrade." />

Мало того, что старый способ более подробен, он также требует повторения кода обновления и версии продукта, которые указаны в Элемент Product. Таким образом, в приведенном выше примере необходимо использовать переменные Wix для их синхронизации. Если вы ошиблись, обновление будет работать некорректно.

У нового элемента MajorUpgrade нет ни одной из этих сложностей, поэтому я рекомендую вам его использовать. См. Также эту запись в блоге Боба Арнсона, в которой представлены MajorUpgrade и раздел документации wix по этому вопросу.

person Wim Coenen    schedule 14.06.2012
comment
Мне нужна была функция, недоступная в MajorUpgrade (т.е. разрешающая крупное обновление со старых версий, но не с очень старых версий), поэтому ваш ответ был чрезвычайно полезен при преобразовании MajorUpgrade в эквивалентный (и более настраиваемый) код старого стиля. Спасибо! - person Heinzi; 03.07.2019