Inno Setup Exec不会等待InstallShield卸载完成

时间:2018-04-18 07:03:32

标签: inno-setup installshield

尝试在安装之前使用卸载字符串卸载软件(并在Exec中使用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)

1 个答案:

答案 0 :(得分:3)

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

根据InstallShield documentation,您可以尝试将/w/clone_wait个开关添加到命令行:

  

/w ...对于基本MSI项目,/w选项强制Setup.exe 等待安装完成后再退出。

     

/clone_wait ...此参数表示原始设置应等待克隆设置过程完成后再退出