我有一个安装程序,一个已编译的NSIS脚本,它首先检查我的应用程序的另一个版本是否在系统上运行。如果存在另一个实例,则它首先触发静默卸载,然后继续安装新的实例。
我使用ExecWait在静默模式下触发unistaller,但我的主安装程序进程不会等待并继续安装过程。
如何强制主安装程序等待静默卸载首先完成?
答案 0 :(得分:11)
您需要使用一个特殊的卸载程序parameter(原因通常是卸载程序通常需要能够自行删除)
ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'
答案 1 :(得分:7)
这不仅仅是关于“ExecWait”。它也是关于“_?”,一种特殊的卸载程序指令。 实际上,在卸载期间,uninstaller.exe被复制到临时目录,然后从那里执行。
从temp目录复制和调用新的卸载程序的步骤可能很快,并且调用将立即返回,而不会实际等待卸载程序完成。
使用“_?”您告诉NSIS从同一个地方而不是从临时目录运行卸载程序的指令。
除了“_?”之外还使用“ExecWait”你告诉NSIS等待“卸载程序”进程完成然后返回。通过这种方式,您可以实现所需。
请参阅http://nsis.sourceforge.net/Docs/Chapter3.html#3.2.2以获取更多信息。