NSIS 卸载程序工作目录

发布于 2024-09-01 07:34:33 字数 314 浏览 8 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七禾 2024-09-08 07:34:33

卸载程序中的 $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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文