我正在嘗試製作一個安裝程序,它將在安裝新安裝之前卸載舊安裝。
我面臨的問題是,卸載程序停止然後刪除已安裝的服務,刪除服務後,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 remove
從CurUninstallStepChanged(usPostUninstall)
事件中執行from Pascal Script 。然後就可以使用該Sleep
功能了。
雖然更好的是檢查服務何時真正完成,而不是等待任意的時間。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句