2012-06-14 14 views
7

Stiamo provando a fare l'aggiornamento principale. Mentre stavo investigando ho trovato 2 approcci.Majorupgrade o aggiornamento ID che è preferito per l'aggiornamento principale?

Uno sta utilizzando l'ID di aggiornamento e un altro approccio è stato tag Majorupgrade.

Sembra Majorupgrade è facile da fare sembra. Ma la pianificazione non contiene alcuna azione prima di installinitialize.

Non sono sicuro di quale dovrebbe essere utilizzato.

Quale è il preferito [e consigliato] principalmente?

+1

Schedule ha l'opzione "afterInstallValidate" che è prima di InstallInitialize. – Adkins

risposta

17

L'elemento MajorUpgrade è stato introdotto in wix 3.5 per semplificare ciò che si farebbe normalmente con l'elemento Upgrade. In modo che, invece di qualcosa di simile:

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

si può semplicemente fare questo:

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

Non solo è il vecchio modo più prolisso, ma richiede anche che si ripete la versione del codice di aggiornamento e di prodotto che sono specificati nell'elemento Product. Quindi l'esempio sopra deve fare uso delle variabili wix per tenerle sincronizzate. Se ti sbagli, l'aggiornamento non funzionerà correttamente.

Il nuovo elemento MajorUpgrade non ha nessuna di queste complicazioni, quindi consiglio di utilizzarlo. Vedi anche questo blog post by Bob Arnson introducing MajorUpgrade e lo topic in the wix documentation sull'argomento.

Problemi correlati