2010-01-18 4 views
1

J'ai un programme d'installation WiX qui a 3 projets. 2 Crée des modèles de fusion, 1 Crée le programme d'installation. Le code dans les modules merg ne doit être exécuté que si la fonction correspondante est sélectionnée. Y a-t-il une chance de le faire fonctionner avec des actions personnalisées?WiX: Appel d'une action personnalisée sur le module de fusion uniquement si la fonction est sélectionnée

De mon expérience, les actions personnalisées sont toujours appelés - ou non une wether certaine fonction est sélectionnée ...

code dans le Podoct:

<Feature Id="Complete" Title="SDK Setup" Description="Installs the sdk" Display="expand" Level="1" ConfigurableDirectory="INSTALLLOCATION"> 
    <Feature Id="SDK" Title ="SDK" Description="" Level ="1"> 

....

Dans le module de fusion I appelez certaines actions personnalisées, par exemple:

<CustomAction Id='CustomAction' BinaryKey='CaDll' DllEntry='CaEntry' Execute='deferred' /> 
<CustomAction Id="CustomAction.SetProperty" Return="check" Property="CustomAction" Value='test' Execute='immediate' /> 

<InstallExecuteSequence> 
    <Custom Action='CustomAction.SetProperty' After='CostFinalize'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom> 
    <Custom Action='CustomAction' After='InstallFiles'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom> 

Répondre

2

Les actions personnalisées en général ne sont pas liées à des composants ou des fonctions. D'un certain point de vue, c'est parce qu'ils doivent être écrits de manière pilotée par les données: inspectez les états d'installation et d'action de tous les composants de votre code afin de dresser la liste des actions à entreprendre. Mais lorsque les actions n'ont pas de sens (même avec l'aide d'une table de base de données personnalisée), vous pouvez toujours les lier à l'état d'action de la fonction ou du composant par leur condition. Voir Conditional Statement Syntax pour "Préfixes d'accès" ou "Valeurs d'état des composants et des composants", et en particulier les exemples situés en bas: &MyFeature=3 est vrai lorsque MyFeature est installé.

Questions connexes