如何在 Pascal 腳本(Inno Setup)中添加睡眠,它將在文件提取之前執行

推桿

我正在嘗試製作一個安裝程序,它將在安裝新安裝之前卸載舊安裝。

我面臨的問題是,卸載程序停止然後刪除已安裝的服務,刪除服務後,Windows 需要 15 秒才能刪除該服務,waituntilterminated標誌沒有幫助,

因為刪除服務命令(即service.exe remove)在 1 秒內完成

我想要的只是添加一個 15 秒的睡眠,它將在[UninstallRun]完成所有進程後或在實際提取文件之前執行

因為,否則卸載程序無法刪除所有文件,因為該進程仍在運行 15 秒

因此,重新安裝,拋出一個錯誤,刪除文件失敗拒絕訪問,

如果我等待 15 秒然後單擊重試,則安裝程序能夠覆蓋舊文件

馬丁·普里克里爾

最簡單的解決方案是將睡眠作為卸載命令的一部分。您可以使用該timeout命令

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

更好的方法可能是service.exe removeCurUninstallStepChanged(usPostUninstall)事件中執行from Pascal Script 然後就可以使用該Sleep功能了


雖然更好的是檢查服務何時真正完成,而不是等待任意的時間。

例如,請參閱如何在程序運行時卸載程序,並且只有在用戶確認關閉和卸載它之後 - Inno Setup

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章