Inno Setup Exec不等待InstallShield卸载完成

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

我正在使用以下代码和Installshield产品中的软件进行卸载:Exec(ExpandConstant('{pf}\InstallShield Installation Information{{XXX8X88X-XX8X-88X8-X8XX-88X888X88888}\setup.exe'),'-s -runfromtemp -l0x0004 -removeonly -remove','',SW_SHOW,ewWaitUntilTerminated,ReturnCode) - user1867087
原始安装程序已经注册了我在查询中编写的相同命令行选项。 - user1867087
1个回答

5

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

根据InstallShield文档,您可以尝试在命令行中添加/w/Clone_wait 开关:

/w ... 对于 Basic MSI 项目,/w 选项强制Setup.exe 在退出之前等待安装完成

/Clone_wait ... 此参数表示原始安装程序应该等待克隆的安装进程完成后再退出


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接