2010-01-21 9 views
4

Est-il possible de séquencer une action personnalisée avant "LaunchConditions"?Séquençage d'une action personnalisée dans WiX avant "LaunchConditions"

Ceci est mon action personnalisée:

<CustomAction 
    Id="CA_vcAppRunning" 
    BinaryKey="vcShowMsg" 
    DllEntry="IsAppRunning" 
    Return="check" 
    Execute="immediate"/> 

séquencée <InstallExecuteSequence/>

<Custom Action="CA_vcAppRunning" Before="LaunchConditions" /> 

J'ai essayé, ouvert le fichier MSI dans Orca et trouvé que mon action personnalisée est séquencée à "99". Mais quand j'ai essayé d'installer, il n'a jamais été appelé.

Je souhaite planifier cela avant LaunchConditions car cette action personnalisée est supposée définir une propriété utilisée dans LaunchCondition (si l'application est en cours d'exécution, quittez l'installateur/le programme de mise à jour).

Répondre

4

Ne le planifiez pas avant LaunchConditions, planifiez-le après FindRelatedProducts, puis ajoutez une seconde action personnalisée qui bloque l'installation en fonction des résultats de votre première autorité de certification.

Cette méthode est la même que celle utilisée pour empêcher la rétrogradation dans de nombreux didacticiels, par ex.

<CustomAction Id="CA_BlockOlderVersionInstall" Error="!(loc.LaunchCondition_LaterVersion)" /> 
<InstallExecuteSequence> 
     <LaunchConditions After="AppSearch" /> 
     <Custom Action="CA_BlockOlderVersionInstall" After="FindRelatedProducts"> 
      <![CDATA[NEWERVERSIONDETECTED]]> 
     </Custom> 
</InstallExecuteSequence> 
<InstallUISequence> 
     <LaunchConditions After="AppSearch" /> 
     <Custom Action="CA_BlockOlderVersionInstall" After="FindRelatedProducts"> 
      <![CDATA[NEWERVERSIONDETECTED]]> 
     </Custom> 
</InstallUISequence> 
+0

Mon action personnalisée a dû être modifié: Exécuter = « immédiate » 'au lieu de' defered' sinon je reçois un « code d'erreur est 2762 » et ne fonctionne que pendant après InstallInitialize et avant AfterInstall. –