NSIS 卸载程序工作目录
我正在使用 NSIS 创建安装程序/卸载程序,并且卸载程序似乎有一个奇怪的行为。
我没有将安装程序放在 $INSTDIR 中,它位于 $INSTDIR/subdir/uninstall.exe (它是主机应用程序的插件安装程序)。
当我运行安装程序时,它认为应用程序安装根目录是 $INSTDIR/subdir 而不是 $INSTDIR。然后它无法找到 subdir/* 中的所有文件,因为它已经在 subdir 中。
如果我移动可执行文件,它似乎只接受当前目录作为应用程序安装根目录所在的位置。我可以将其移至 $INSTDIR,一切都很好。
谢谢。
I am using NSIS to create my installers/uninstallers, and the uninstaller seems to have a weird behavior.
I don't put the installer in $INSTDIR, it is located at $INSTDIR/subdir/uninstall.exe (it's a addon installer for a host application).
When I run the installer then, it thinks the application installation root is $INSTDIR/subdir instead of $INSTDIR. It then can't find all the files in subdir/* as it's already in subdir.
If I move the executable, it seems to just accept the current directory as where the application installation root is. I can move it to $INSTDIR and all is well.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
卸载程序中的 $INSTDIR 只是卸载程序所在的目录(不一定与当前目录相同)
如果您可以将卸载程序放在安装的根目录中,那是最好的选择,否则您必须做一些难看的事情,例如
strcpy $instdir "$instdir\.."
或在每个删除/RMDir 调用中使用定义。或者,如果您在安装过程中将安装目录保存在注册表中的某个位置,则可以在卸载程序中将其读回。
$INSTDIR in the uninstaller is just the directory the uninstaller is in (Not the same as current directory necessarily)
If you can just put the uninstaller in the root of the install, that is the best option, otherwise you have to do something ugly like
strcpy $instdir "$instdir\.."
or use a define in every Delete/RMDir call.Alternatively, if you save the install dir somewhere in the registry during install, you could read it back in the uninstaller.