2013-08-30 8 views
5

Ho alcune azioni personalizzate che voglio solo eseguire in uno scenario di aggiornamento.Come faccio a distinguere tra un'installazione normale e un aggiornamento in WIX?

sto cercando di impostare alcune proprietà, ad esempio "MyProperty" ... Quando vengo in via un'installazione standard, che io possa impostare, e un esempio di che XML è la seguente ...

<Custom Action="SetMyPropertyToOn" After="exampleActionRuuningBeforeThisOne"> (ENABLEMYPROPERTY_CB) AND (NOT ENABLEMYPROPERTY_CB="0") AND (NOT ENABLEMYPROPERTY) AND (NOT Installed)</Custom> 

Viene eseguito in una normale installazione ... Mi piacerebbe anche che fosse eseguito in uno scenario di aggiornamento.

+0

un importante aggiornamento o un minore aggiornamento? Se si sta eseguendo un aggiornamento minore, Installed sarebbe vero e questo potrebbe essere valutato come falso. –

risposta

19

Io uso questo in tutti i miei configurazioni:

<SetProperty After="FindRelatedProducts" Id="FirstInstall" Value="true"> 
     NOT Installed AND NOT WIX_UPGRADE_DETECTED AND NOT WIX_DOWNGRADE_DETECTED 
    </SetProperty> 
    <SetProperty After="SetFirstInstall" Id="Upgrading" Value="true"> 
     WIX_UPGRADE_DETECTED AND NOT (REMOVE="ALL") 
    </SetProperty> 
    <SetProperty After="RemoveExistingProducts" Id="RemovingForUpgrade" Sequence="execute" Value="true"> 
     (REMOVE="ALL") AND UPGRADINGPRODUCTCODE 
    </SetProperty> 
    <SetProperty After="SetUpgrading" Id="Uninstalling" Value="true"> 
     Installed AND (REMOVE="ALL") AND NOT (WIX_UPGRADE_DETECTED OR UPGRADINGPRODUCTCODE) 
    </SetProperty> 
    <SetProperty After="SetUninstalling" Id="Maintenance" Value="true"> 
     Installed AND NOT Upgrading AND NOT Uninstalling AND NOT UPGRADINGPRODUCTCODE 
    </SetProperty> 

È possibile quindi pianificare l'azione personalizzata per funzionare solo su aggiornamenti:

<Custom Action="NameOfCustomAction" Before="InstallFinalize"><![CDATA[Upgrading= "true"]]></Custom> 
+0

Grazie Natalie, ho solo un piccolo problema con questo. In qualche modo, mi sembra sempre di entrare nella parte "FirstInstall", e poi saltare il resto, anche durante l'aggiornamento ... Gli altri saltano sempre. – Slippy

+0

Strano, non l'ho mai provato. Potresti pubblicare il tuo file di log, forse quello sarebbe di aiuto? –

+4

Le proprietà WIX_UPGRADE_DETECTED e WIX_DOWNGRADE_DETECTED presuppongono che sia stato utilizzato l'elemento MajorUpgrade. Le regole di aggiornamento definite dall'utente possono avere nomi ActionProperty diversi e un aggiornamento minore non ne ha affatto. L'OP non ha detto che tipo * di upgrade stava facendo. –

Problemi correlati