2013-08-30 10 views
5

Ich habe einige benutzerdefinierte Aktionen, die ich nur in einem Upgrade-Szenario ausführen möchte.Wie kann ich zwischen einer normalen Installation und einem Upgrade in WIX unterscheiden?

Ich versuche, einige Eigenschaften, zum Beispiel „MyProperty“ zu setzen ... Als ich über einen Standard kommen in installieren, ich sie einstellen können, und ein Beispiel für diese XML ist wie folgt ...

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

Es läuft in einer normalen Installation ... Ich möchte es auch in einem Upgrade-Szenario ausführen.

+0

ein wichtiges Upgrade oder ein Minor-Upgrade? Wenn Sie ein kleines Upgrade durchführen, wäre Installed true und dies würde zu false führen. –

Antwort

19

Ich benutze dies in allen meinen Setups:

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

Sie können dann Ihre benutzerdefinierte Aktion planen nur auf Upgrades auszuführen:

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

Dank Natalie, ich habe nur ein kleines Problem mit diesem. Irgendwie scheint ich immer in den "FirstInstall" -Teil zu kommen und dann den Rest zu überspringen, sogar beim Upgrade ... Die anderen überspringen immer. – Slippy

+0

Seltsam, das habe ich noch nie erlebt. Könnten Sie vielleicht Ihre Protokolldatei posten, die Ihnen helfen würde? –

+4

Die Eigenschaften WIX_UPGRADE_DETECTED und WIX_DOWNGRADE_DETECTED gehen davon aus, dass das Element MajorUpgrade verwendet wurde. Benutzerdefinierte Upgrade-Regeln haben möglicherweise andere ActionProperty-Namen und ein kleines Upgrade würde diese gar nicht enthalten. Der OP hat nicht gesagt, was für ein Upgrade er gemacht hat. –