Pus*_*der 3 inno-setup pascalscript
我正在尝试制作一个安装程序,它将在安装新安装之前卸载旧安装。
我面临的问题是,卸载程序停止然后删除已安装的服务,删除服务后,Windows 需要 15 秒才能删除该服务,waituntilterminated标志没有帮助,
因为删除服务命令 (Ie service.exe remove) 在 1 秒内完成
我想要的只是添加一个 15 秒的睡眠时间,该睡眠时间将在所有进程完成后[UninstallRun]或实际提取文件之前执行
因为否则卸载程序无法删除所有文件,因为该进程仍在运行 15 秒
因此,重新安装会引发错误,删除文件失败,访问被拒绝,
如果我等待 15 秒然后单击重试,则安装程序能够覆盖旧文件
最简单的解决方案是将睡眠作为卸载命令的一部分。您可以使用该timeout命令。
[UninstallRun]
Filename: cmd; Parameters: "/c service.exe remove && timeout /t 15 /nobreak"; \
Flags: runhidden
Run Code Online (Sandbox Code Playgroud)
更好的方法可能是从eventservice.exe remove执行from Pascal Script 。然后就可以使用该功能了。CurUninstallStepChanged(usPostUninstall)Sleep
不过更好的是检查服务何时真正完成,而不是等待任意时间。
例如,请参阅如何在程序运行时卸载程序,并且仅在用户确认关闭并卸载程序后卸载它 - Inno Setup。
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |