2012-06-14 17 views
7

Wir versuchen Major Upgrade durchzuführen. Während ich nachforschte, fand ich 2 Ansätze.Majorupgrade oder Upgrade-ID, die für das Major-Upgrade bevorzugt wird?

Einer verwendet Upgrade-ID und ein anderer Ansatz war Majorupgrade-Tag.

Es scheint Majorupgrade ist einfach zu tun, scheint es. Der Zeitplan enthält jedoch keine Aktionen vor der Installation initialisieren.

Ich bin mir nicht sicher, welche verwenden sollte.

Welches wird bevorzugt [und empfohlen] meistens?

+1

Zeitplan hat die Option "afterInstallValidate", die vor InstallInitialize ist. – Adkins

Antwort

17

Das Element MajorUpgrade wurde in wix 3.5 eingeführt, um das zu vereinfachen, was Sie normalerweise mit dem Element tun würden. So dass anstatt etwas wie folgt aus:

<!– 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> 

Sie können dies einfach tun:

<MajorUpgrade DowngradeErrorMessage="Can’t downgrade." /> 

Nicht nur ist die alte Art und Weise ausführlicher, es erfordert auch, dass Sie den Upgrade-Code und Produktversion wiederholen, die sind im Product Element angegeben. Daher muss das obige Beispiel wix-Variablen verwenden, um sie synchron zu halten. Wenn Sie das falsch verstehen, wird das Upgrade nicht korrekt funktionieren.

Das neue MajorUpgrade Element hat keine dieser Komplikationen, daher empfehle ich, dass Sie es verwenden. Siehe dazu auch blog post by Bob Arnson introducing MajorUpgrade und die topic in the wix documentation zum Thema.