J'utilise Inno setup pour créer un programme d'installation d'application. Pendant l'installation, j'ajoute une clé de registre qui fournit un PATH où je stockerai des fichiers communs (DLL, etc.) qui pourraient être utilisés par plusieurs applications différentes (ou plusieurs versions de la même application!).Inno Setup: Le paramètre de registre ne se met pas à jour lors du démarrage automatique de l'application
J'utilise la méthode proposée dans cet article: http://www.codeguru.com/cpp/w-p/dll/article.php/c99/Application-Specific-Paths-for-DLL-Loading.htm
Le problème que j'ai est que lorsque l'installation est terminée, l'utilisateur peut automatiquement exécuter l'application. Dans ce cas, l'application ne trouve pas les DLL dans l'emplacement PATH. Si je ferme l'application et la relance à partir de l'explorateur cela fonctionne très bien. Je ne veux pas placer les fichiers dans des emplacements de DLL partagés standard, ils ne sont pas tous des DLL, et je veux un meilleur contrôle des versions de dll que mes applications utilisent. De plus, mettre les fichiers dans le répertoire d'installation de l'application .exe n'est pas une option non plus. Je ne veux pas non plus ajouter le PATH au chemin de l'environnement système (même si je l'ai fait, je suppose que j'aurais probablement le même problème de toute façon!)
Des idées?
Un cas de RTFM je pense !! http://www.jrsoftware.org/ishelp/index.php?topic=registrysection J'ai utilisé la commande shellexec dans la section [run], cela semble résoudre le problème. –
Quel est le protocole pour cela? Supprimer la question? Je pense que cela pourrait être utile pour un autre imbécile comme moi. Au moins, je pense que l'astuce sur les chemins spécifiques à l'application est en fait très utile et n'apparaît pas trop référencée. –
Ye J'ai posté le mauvais lien: http://www.jrsoftware.org/ishelp/index.php?topic=runsection Le drapeau "shellexec" exécute le programme "de la même manière que si l'utilisateur double-cliquait le fichier dans l'Explorateur. " En d'autres termes, il démarre un nouveau processus, pas un enfant du processus d'installation, de sorte qu'il prend en compte les changements de l'environnement, ce qui, je suppose, adhère à ce que vous mettez dans votre réponse. –