2009-12-31 10 views
2

J'écris un programme d'installation en utilisant Wix 3 qui installe un plugin à une application tierce. L'application utilise un groupe de clés de registre pour détecter les plugins installés. Chaque plugin est nécessaire pour ajouter une nouvelle sous-clé avec un nom numérique compris entre 0-9 et HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\App\Plugins. La clé contient une seule valeur de chaîne qui est le ProgId d'un composant COM que l'application va instancier. Ainsi, par exemple, je besoin d'ajouter la clé suivante pour installer mon plug-in:Wix: Ajouter une clé de registre séquentielle

HKEY_LOCAL_MACHINE\SOFTWARE\Vendor\App\Plugins\0 
    REG_SZ ProgId "MyCompany.MyPlugin" 

Cependant, si la 0 clé existe déjà, mon installateur doit être assez intelligent pour créer la clé 1 au lieu de 0 et vers le bas par key 9. Existe-t-il un moyen d'y parvenir en utilisant la syntaxe Wix? Je sais que je peux écrire une action personnalisée pour le faire, mais si possible, je voudrais l'éviter.

Répondre

2

Vous pouvez utiliser RegistrySearch pour trouver la première valeur vide. Mais il serait plus facile d'utiliser l'approche que je décris au http://www.joyofsetup.com/2007/07/01/semi-custom-actions/.

+0

Merci pour la réponse qui était très lisse et utile. Juste une question, dans le post le dernier paramètre passé à 'WcaAddTempRecord' est' wzComponent'. Est-ce censé être l'identifiant d'un composant déjà dans mes fichiers Wix ou devrais-je utiliser 'WcaAddTempRecord' pour ajouter un nouveau composant à la table des composants spécifiquement pour mon entrée de registre? Merci encore! – heavyd

+0

Il doit s'agir d'un composant existant qui contrôle si les valeurs de registre sont écrites. –