![](/img/trans.png)
[英]MSI installer automatically starting after application already installed when using "Everyone" option?
[英]MSI installer runs again after already having installed using msiexec
我正在運行Windows服務,該服務會更新另一個Windows服務。 它通過卸載currentversion然后安裝較新的版本來實現。 我們使用原始的msi安裝程序和帶有Process.Start()的msiexec進行此操作。
Process msiexec = new Process();
msiexec.StartInfo.FileName = "msiexec";
msiexec.StartInfo.Arguments = "/quiet /i \"" + msiFileName + "\" /l*v \"" + msilogfile + "\"";
if (!msiexec.Start())
....etc... error handling code and such...
卸載可以,所以沒問題。 安裝,似乎也很好。 我輸出msi安裝日志。 並且在日志中,它表示已成功安裝。
然后,我重新啟動計算機,並在啟動時Windows本身再次運行安裝程序? 然后它抱怨該服務當然已經存在,並且一切都中斷了...
Windows決定在啟動時運行安裝程序的原因可能是什么?
在此處需要注意的重要事項:如果我手動安裝新版本,則該版本可以運行,並且Windows不會在啟動時嘗試安裝它。 因此,這可能與msiexec有關? 一些許可的東西?
這可能是修復。 檢查應用程序事件日志中是否有提及缺少組件的MsiInstaller條目。 如果Windows認為安裝的產品已損壞,則會發生這種情況。
我懷疑您看到有關已安裝服務的錯誤的原因是,您正在使用Installer類自定義操作來安裝服務,並且它將在修復時再次運行,並為您提供有關已安裝的錯誤。 如果右鍵單擊MSI並選擇修復,或者從Programs&Features進行修復,則會看到相同的“已安裝”錯誤。
為防止這種情況,請在安裝服務的安裝自定義操作中添加“未安裝”條件,然后它將僅在安裝時運行,而不在修復時運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.