簡體   English   中英

使用msiexec安裝后,MSI安裝程序將再次運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM