如何在nsis脚本中获取exe路径?

时间:2015-06-09 11:14:17

标签: path exe nsis

我正在为我的应用程序编写一个卸载程序,我需要检查调用哪个目录卸载程序(因为我想限制从任何其他目录卸载)。

我正在使用内置变量$EXEPATH,但它正在给我C:\Users\MyUser\Local\Temp\~nsu.tmp而不是当前目录。

我还使用nsis使用了Windows API GetModuleFileName,但它也提供了相同的输出。如何获取可执行文件的当前目录?

1 个答案:

答案 0 :(得分:0)

C:\Users\MyUser\Local\Temp\~nsu.tmp形式的临时目录可能是卸载程序实际运行的目录。

为避免因无法删除卸载程序可执行文件而导致的问题,因为它在运行时被锁定(因此需要重新启动才能实际删除),通常会将卸载程序.exe复制到临时位置并从那里运行。

如果您不希望unistaller将自己分叉到临时目录中,可以这样调用它:

ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'

技巧涉及manual中描述的_?特殊参数。