我正在为我的应用程序编写一个卸载程序,我需要检查调用哪个目录卸载程序(因为我想限制从任何其他目录卸载)。
我正在使用内置变量$EXEPATH
,但它正在给我C:\Users\MyUser\Local\Temp\~nsu.tmp
而不是当前目录。
我还使用nsis使用了Windows API GetModuleFileName
,但它也提供了相同的输出。如何获取可执行文件的当前目录?
答案 0 :(得分:0)
C:\Users\MyUser\Local\Temp\~nsu.tmp
形式的临时目录可能是卸载程序实际运行的目录。
为避免因无法删除卸载程序可执行文件而导致的问题,因为它在运行时被锁定(因此需要重新启动才能实际删除),通常会将卸载程序.exe复制到临时位置并从那里运行。
如果您不希望unistaller将自己分叉到临时目录中,可以这样调用它:
ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'
技巧涉及manual中描述的_?
特殊参数。