2012-06-14 83 views
7

我们正在尝试做重大升级。当我调查时,我发现了两种方法。Majorupgrade或升级ID是主要升级的首选?

一个使用升级ID,另一个是Majorupgrade标签。

看来Majorupgrade似乎很容易做到。但是schedule不包含任何installinitialize操作。

我不确定应该使用哪个。

哪一个是主要的[推荐]?

+1

Schedule安装了InstallInitialize之前的选项“afterInstallValidate”。 – Adkins

回答

17

在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 MajorUpgradetopic in the wix documentation