NSIS 卸载程序工作目录

Posted

技术标签:

【中文标题】NSIS 卸载程序工作目录【英文标题】:NSIS Uninstaller Working Directory 【发布时间】:2011-02-18 19:03:12 【问题描述】:

我正在使用 NSIS 创建我的安装程序/卸载程序,而卸载程序的行为似乎很奇怪。

我没有将安装程序放在 $INSTDIR 中,它位于 $INSTDIR/subdir/uninstall.exe(它是主机应用程序的插件安装程序)。

当我运行安装程序时,它认为应用程序安装根目录是 $INSTDIR/subdir 而不是 $INSTDIR。然后它无法找到 subdir/* 中的所有文件,因为它已经在 subdir 中。

如果我移动可执行文件,它似乎只是接受当前目录作为应用程序安装根目录的位置。我可以将其移至 $INSTDIR,一切都很好。

谢谢。

【问题讨论】:

【参考方案1】:

卸载程序中的$INSTDIR只是卸载程序所在的目录(不一定与当前目录相同)

如果您可以将卸载程序放在安装的根目录中,那是最好的选择,否则您必须做一些丑陋的事情,例如 strcpy $instdir "$instdir\.." 或在每个 Delete/RMDir 调用中使用定义。

或者,如果您在安装过程中将安装目录保存在注册表中的某个位置,您可以在卸载程序中重新读取它。

【讨论】:

以上是关于NSIS 卸载程序工作目录的主要内容,如果未能解决你的问题,请参考以下文章

NSIS目录

如何在NSIS卸载时线运行一个EXE文件?(EXE文件在卸载程序目录下)用啥代码?

NSIS 的卸载程序运行速度非常快

根据安装程序的 NSIS 卸载程序权限

我的 NSIS 脚本的卸载没有从 ProgramData 目录中删除链接

如何要求用户使用 NSIS 卸载以前的版本