我们正在尝试进行重大升级。在我调查的过程中,我发现了两种方法。
一个使用升级ID,另一个方法是Majorupgrade标记。
看来Majorupgrade很容易做到。但是,在安装初始化操作之前,时间表不包含任何内容。
我不确定应该使用哪种。
哪一个首选[并推荐]?
答案 0 :(得分:19)
在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。