7
我们正在尝试做重大升级。当我调查时,我发现了两种方法。Majorupgrade或升级ID是主要升级的首选?
一个使用升级ID,另一个是Majorupgrade标签。
看来Majorupgrade似乎很容易做到。但是schedule不包含任何installinitialize操作。
我不确定应该使用哪个。
哪一个是主要的[推荐]?
我们正在尝试做重大升级。当我调查时,我发现了两种方法。Majorupgrade或升级ID是主要升级的首选?
一个使用升级ID,另一个是Majorupgrade标签。
看来Majorupgrade似乎很容易做到。但是schedule不包含任何installinitialize操作。
我不确定应该使用哪个。
哪一个是主要的[推荐]?
在wix 3.5中引入了MajorUpgrade元素,以简化您通常对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
元素没有这些复杂性,所以我建议您使用它。关于这个主题,请参阅blog post by Bob Arnson introducing MajorUpgrade
和topic in the wix documentation。
Schedule安装了InstallInitialize之前的选项“afterInstallValidate”。 – Adkins