J'ai de la difficulté à utiliser la commande CopyFiles
et la valeur que j'ai lue dans le registre UninstallString. La valeur de UninstallString est "C:\myapp\uninstall.exe"
(avec des guillemets).NSIS Pourquoi CopyFiles fonctionne-t-il dans un exemple et pas dans l'autre?
Si j'essaie ce qui suit, cela ne fonctionne pas.
CopyFiles $uninstallPath "C:\Temp" # Does not work
Ensuite, je modifier le Registre et supprimer les citations de la valeur de UninstallString il est donc C:\myapp\uninstall.exe
.
Les travaux suivants, mais il n'est pas entouré par des guillemets.
CopyFiles $uninstallPath "C:\Temp" # Works
Maintenant j'ajoute des guillemets autour de la variable et cela fonctionne. J'ai l'impression que le premier et le dernier exemple sont deux manières différentes de faire la même chose. Toute clarté sur pourquoi le premier exemple ne fonctionne pas?
-vous pas besoin de craindre que vous » re passer l'argument $ uninstallPath à CopyFiles qui peut contenir un espace, mais n'est pas entouré de guillemets? En outre, si les guillemets ne sont pas nécessaires, pourquoi est-il courant d'entourer les chemins stockés dans les registres, puis de les supprimer? – user870130
Vous n'avez pas besoin de citer des variables, même si elles contiennent des espaces, elles sont développées sur la machine de l'utilisateur final longtemps après que le compilateur a analysé tous les paramètres que vous avez passés à une fonction dans votre script. Toute commande qui peut être exécutée doit être citée lorsqu'elle est stockée dans le registre tandis que les autres chemins comme les icônes et les autres fichiers ne sont généralement pas cités. Voir aussi: https://blogs.msdn.microsoft.com/oldnewthing/20070515-00/?p=26863 – Anders
J'ai remarqué un problème mineur avec le code. Le premier StrCpy devrait être StrCpy $ 1 $ 0 1. – user870130