在安装前尝试使用卸载字符串(并使用Exec
在InitializeSetup
中运行该字符串)卸载一个软件,它不会等待卸载完成,而是进入Inno安装中的下一个安装步骤。
我正在使用下面的代码和我试图在Installshield产品中卸载的软件:
Exec(
ExpandConstant('{pf}\InstallShield Installation Information\{{XXX8X88X-XX8X-88X8-X8XX-88X888X88888}\setup.exe'),
'-s -runfromtemp -l0x0004 -removeonly -remove', '',
SW_SHOW, ewWaitUntilTerminated, ReturnCode)
发布于 2018-04-18 09:04:21
setup.exe
很可能为实际卸载执行子进程并退出自身。因此,Inno安装程序似乎不会等待进程完成。这是一种常见的行为,因为卸载程序需要删除它自己,如果它仍然在运行的话,它不能做什么。因此,它在临时文件夹中创建自己的副本(或另一个可执行文件),然后(Re)从那里执行。
根据InstallShield文档,您可以尝试将/w
或/Clone_wait
交换机添加到命令行:
/w
...对于基本的MSI项目,/w
选项迫使Setup.exe
在退出.之前等待安装完成。/Clone_wait
...此参数表示原始安装程序应该在退出之前等待克隆的安装过程完成。
https://stackoverflow.com/questions/49893227
复制相似问题