尝试在安装之前使用卸载字符串卸载软件(并在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)
答案 0 :(得分:3)
setup.exe
最有可能执行实际卸载的子进程并退出。所以Inno Setup似乎不等待这个过程结束。这是一种常见的行为,因为卸载程序需要删除自身,它不能执行的操作,如果它仍在运行。因此,它会在临时文件夹中创建自身(或其他可执行文件)的副本,并从那里执行(重新)。
根据InstallShield documentation,您可以尝试将/w
或/clone_wait
个开关添加到命令行:
/w
...对于基本MSI项目,/w
选项强制Setup.exe
等待安装完成后再退出。
/clone_wait
...此参数表示原始设置应等待克隆设置过程完成后再退出。