【问题标题】:How to add Sleep In Pascal Script (Inno Setup) which will execute before Extraction of Files如何在提取文件之前执行的 Pascal 脚本(Inno Setup)中添加睡眠
【发布时间】:2021-11-03 16:03:17
【问题描述】:

我正在尝试制作一个安装程序,它将在安装新安装之前卸载旧安装。

我面临的问题是,卸载程序停止然后删除已安装的服务,删除服务后,Windows 需要 15 秒才能删除该服务,waituntilterminated 标志没有帮助,

因为删除服务命令(即service.exe remove)在 1 秒内完成

我想要的只是添加一个 15 秒的睡眠,它将在 [UninstallRun] 下的所有进程完成后或在实际提取文件之前执行

因为,否则卸载程序无法删除所有文件,因为该进程仍在运行 15 秒

因此,重新安装会引发错误,即删除文件失败访问被拒绝,

如果我等待 15 秒然后点击重试,那么安装程序可以覆盖旧文件

【问题讨论】:

    标签: inno-setup pascalscript


    【解决方案1】:

    最简单的解决方案是让 sleep 成为卸载命令的一部分。您可以使用timeout command

    [UninstallRun]
    Filename: cmd; Parameters: "/c service.exe remove && timeout /t 15 /nobreak"; \
         Flags: runhidden
    

    CurUninstallStepChanged(usPostUninstall) event 执行Pascal 脚本中的service.exe remove 可能更好。然后你可以使用Sleep function


    虽然更好的是检查服务何时真正完成,而不是等待任意时间。

    参见例如How to uninstall the program when it is running and only after the user's confirmation to close and uninstall it - Inno Setup

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      相关资源
      最近更新 更多