2012-06-14 89 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