2017-01-25 6 views
0

J'essaye de résoudre ceci pendant un moment maintenant. J'ai créé une interface utilisateur personnalisée pour mon application Bootstrapper. Définir une valeur par défaut pour InstallFolder n'est pas le problème, mais lorsque l'utilisateur modifie ce chemin, comment puis-je stocker ce chemin pour des changements ultérieurs dans ajouter/supprimer des programmes, par exemple. quand un autre paquet dans le paquet devrait être installé en modifiant l'ensemble? Écrire dans le Registre peut être une option, mais l'application Bootstrapper ne s'exécute pas tout le temps, de sorte qu'elle ne peut pas écrire dans HKLM. Mais il devrait y avoir un moyen de faire cela, j'ai vu des choses similaires pour Visual Studio ...Wix Burn: comment stocker le InstallFolder personnalisé pour des modifications ultérieures?

Répondre

0

Vous devriez stocker la valeur InstallFolder dans le registre dans un (ou tout selon la façon dont il est créé) de vos MSI sont emballés avec l'application bootstrapper. Au démarrage, vous pouvez utiliser un util:RegistrySearch pour rechercher et définir InstallFolder dans le programme d'amorçage.

<Fragment>  
    <util:RegistrySearch 
     Id="ServerInstalledCheck" 
     Root="HKLM" 
     Key="SOFTWARE\$(var.OEMRegistryRootKeyName)\v7" 
     Value="ServerPath" 
     Result="value" 
     Variable="ServerInstalled"/> 
    <util:DirectorySearch 
     Path='[ServerInstalled]' 
     Variable='InstallFolder' 
     After='ServerInstalledCheck' 
     Condition='ServerInstalled' /> 
</Fragment> 

Je pense que vous pouvez directement définir la variable InstallFolder dans la recherche de registre elle-même et omettre DirectorySearch. L'approche DirectorySearch a été utilisée uniquement pour s'assurer que nous ne définissons le dossier InstallFolder qu'à un emplacement qui existe réellement sur la machine. Il peut y avoir d'autres avantages, mais je ne peux pas y penser pour le moment. Cela permettra de conserver votre emplacement InstallFolder par défaut lors d'une nouvelle installation et de mémoriser l'emplacement d'installation sélectionné lors de l'exécution de désinstaller/modifier/mettre à niveau.

Vous avez raison de dire que vous ne pouvez pas compter sur l'écriture de clés de registre dans votre application de démarrage, car il n'est pas garanti (et ne devrait pas l'être) d'être élevé.


Ceci est essentiellement suivant le modèle « souvenir propriété » qui est expliqué here. Chaque fois que vous voulez vous souvenir d'une valeur définie lors d'une installation précédente lors de la modification/mise à niveau/suppression, c'est généralement le cas.