我正在使用NSIS来创建我的安装程序/卸载程序,并且卸载程序似乎有一种奇怪的行为。
我没有将安装程序放在$ INSTDIR中,它位于$ INSTDIR / subdir / uninstall.exe(它是主机应用程序的插件安装程序)。
当我运行安装程序时,它认为应用程序安装根目录是$ INSTDIR / subdir而不是$ INSTDIR。然后它找不到subdir / *中的所有文件,因为它已经在subdir中。
如果我移动可执行文件,它似乎只接受应用程序安装根目录所在的当前目录。我可以把它移到$ INSTDIR,一切都很好。
感谢。
答案 0 :(得分:5)
卸载程序中的$ INSTDIR只是卸载程序所在的目录(必须与当前目录不同)
如果您可以将卸载程序放在安装的根目录中,那么这是最好的选择,否则您必须执行像strcpy $instdir "$instdir\.."
这样丑陋的操作,或者在每个Delete / RMDir调用中使用define。
或者,如果在安装期间将安装目录保存在注册表中的某个位置,则可以在卸载程序中将其读回。