2009-11-13 8 views
1

Je fais un programme d'installation pour un logiciel utilisé pour le débogage des cœurs ARM embarqués (OpenOCD) et ce programme d'installation supprime automatiquement les versions précédentes - c'est simple. Cependant, il serait parfois souhaitable d'avoir plus qu'une seule version installée (chaque version a son propre dossier, donc il n'y a pas de conflit ici) en raison de divers problèmes de (in) compatibilité, etc.Désinstallation conditionnelle de la version précédente dans Wix

J'essaie de créer un programme d'installation qui aurait une option dans l'arbre des fonctionnalités (ou ailleurs) pour désinstaller (ou non) la version précédente.

Fondamentalement, il y a cette séquence d'installation:

<InstallExecuteSequence> 
    <Custom Action="NewerVersionDetected" After="FindRelatedProducts">DOWNGRADE</Custom> 
    <RemoveExistingProducts After="InstallFinalize"/> 
</InstallExecuteSequence> 

Je sais que RemoveExistingProducts peut être subordonné en mettant une condition entre les balises de RemoveExistingProducts mais ... quelle devrait être la condition? Il y a beaucoup d'informations sur la façon de rendre les fonctionnalités conditionnelles ou sur des conditions comme la version OS et certaines entrées de registre, mais je n'ai trouvé aucune information utile sur les "conditions définies par l'utilisateur" ...

Disons que dans l'arbre des caractéristiques il y a cet élément:

<Feature Id="UninstallOlderVersionFeature" Title="Uninstal previous versions" Level="1" Description="..."/> 

Comment faire la version précédente conditionnelle désinstallation sur cette fonction (ou toute autre méthode, l'utilisateur peut sélectionner lors de l'installation - une boîte question ou une fenêtre séparée ou tout ce qu'il faut)?

Toute aide appréciée (par moi et les utilisateurs de l'installateur), comme je ne suis pas très bon dans Wix et XML (je suis une personne embarquée (;)

Si davantage de détails sur l'ensemble . fichier Wix sont nécessaires - dites-moi et je posterai bits pertinents

Répondre

2

Essayez ceci:

<RemoveExistingProducts After="InstallFinalize"> 
<![CDATA[&UninstallOlderVersionFeature=3]]> 
</RemoveExistingProducts> 

Il est l'état wether la fonction est sélectionnée « 3 » dit que la fonction est sélectionnée pour l'installation.

+0

C'est tout - merci beaucoup! –

Questions connexes