如何从另一个 NSIS 安装程序中执行 NSIS 卸载程序并等待其完成?

问题描述 投票:0回答:2

我有一个安装程序,一个已编译的 NSIS 脚本,它首先检查系统上是否正在运行我的应用程序的另一个版本。如果存在另一个实例,则它首先触发静默卸载,然后继续安装新实例。

我使用

ExecWait
在静默模式下触发卸载程序,但我的主安装程序进程不会等待并继续安装过程。

如何强制主安装程序先等待静默卸载完成?

nsis
2个回答
12
投票

有一个特殊的卸载程序参数你需要使用(这样做的原因是通常卸载程序需要能够删除自身)

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

7
投票

这不仅仅是“ExecWait”。它还与“_?”有关,这是一条特殊的卸载程序指令。 实际上,在卸载过程中,uninstaller.exe 被复制到临时目录,然后从那里执行。

从临时目录复制和调用新卸载程序的步骤可能会很快,并且调用会立即返回,而无需实际等待卸载程序完成。

通过使用“_?”指示您告诉 NSIS 从同一位置运行卸载程序,而不是从临时目录运行。

除了“_?”之外,还使用“ExecWait”您告诉 NSIS 等待“卸载程序”过程完成然后返回。这样你就可以实现你所需要的。

请参阅 http://nsis.sourceforge.net/Docs/Chapter3.html#3.2.2 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.