Windows

從腳本安裝 .msi,檢測何時安裝完成

  • December 29, 2015

我正在嘗試製作安裝腳本。我想安裝一個 .msi 文件,Python,然後在安裝 Python 後安裝其他東西。我已經看到瞭如何進行命令行安裝。但是,msiexec即使安裝仍在執行,也會立即返回。如何從批處理腳本中檢測到 msi 安裝的完成?

不知道 Python 如何處理將命令傳遞到 Windows/DOS,但使用普通批處理文件和start /wait命令批處理文件停止並等待 MSI 完成,然後再繼續下一步。

例如,要安裝一個主應用程序,僅在完成後才安裝更新檔,然後在完成後安裝最終程序,請將這些行放入 .cmd 文件中:

start /wait msiexec /i O12Conv.msi /qb
start /wait msiexec /p O12Convsp1-en-us.msp /qb
start /wait msiexec /i mpsetupedp.msi

這很棘手,而且不可靠,但是有一些方法可以監視程序列表中是否存在特定程序。您在等待該過程不再存在時將循環寫入 NOOP,然後執行下一步。有幾種處理方法。

SysInternals 工具pslist將顯示程序,儘管解析輸出可能很棘手。PowerShell 可以訪問 .NET API 以通過get-processcmdlet 進行程序監控。

這些方法只是監視程序的存在,它們無法檢查退出程式碼,因此無法知道程序是正常退出還是處於錯誤狀態。為此,您必須處理您指定生成的任何 MSI 日誌,或者可能在 Windows 偶數日誌中探勘錯誤事件。

引用自:https://serverfault.com/questions/189793