Inno Setup Exec不等待InstallShield卸载完成

use*_*087 3 installshield inno-setup

尝试在安装之前使用卸载字符串(并使用Execin 运行该软件)来卸载软件InitializeSetup,它不会等待卸载完成,而是继续执行Inno Setup中的下一步安装。

我正在使用以下代码和试图在Installshield产品中卸载的软件:

Exec(
  ExpandConstant('{pf}\InstallShield Installation Information\{{XXX8X88X-XX8X-88X8-X8XX-88X888X88888}\setup.exe'),
  '-s -runfromtemp -l0x0004 -removeonly -remove', '',
  SW_SHOW, ewWaitUntilTerminated, ReturnCode)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 5

setup.exe最有可能执行的实际卸载并退出本身的子进程。因此,Inno Setup似乎不等待该过程完成。这是一种常见的行为,因为卸载程序仍在运行,因此需要删除自身,无法执行的操作。因此,它会在一个临时文件夹中创建其自身(或另一个可执行文件)的副本,并从那里执行(重新执行)。

根据InstallShield文档,您可以尝试添加/w/clone_wait切换到命令行:

/w...对于Basic MSI项目,该/w选项将强制Setup.exe 等待直到安装完成再退出。

/clone_wait...此参数指示原始设置应在退出之前等待克隆的设置过程完成