Majorupgrade или Upgrade ID, который является предпочтительным для Major upgrade?
Мы пытаемся сделать Major upgrade. Пока я расследовал, я нашел 2 подхода.
Один использует Upgrade Id, а другой - тег Majorupgrade.
Кажется, Majorupgrade легко сделать, кажется. Но расписание не содержит никаких действий перед установкой инициализации.
Я не уверен, что следует использовать.
Какой из них предпочтительнее [и рекомендуется] в основном?
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 по этому вопросу.