2010-01-04 55 views
2

我嘗試執行主要升級與我的MSI安裝程序和安靜安裝。當使用具有完整用戶界面的正常安裝時,安裝程​​序已經運行良好。在這種情況下,舊產品將被卸載,因爲FindRelatedProducts操作(從FolderForm中的UI序列)檢測到我以前安裝的版本。升級安裝會導致安裝軟件的重複條目(FindRelatedProducts not executed)

當MSIEXEC的/ QR開關用於抑制對話框和需要用戶交互(基本上重複使用從最後版本的設置),則失敗:

MSI (s) : Doing action: FindRelatedProducts 
Action FindRelatedProducts. Searching for related applications 
Action start FindRelatedProducts. 
MSI (s) : Skipping FindRelatedProducts action: already done on client side 
Action ended FindRelatedProducts. Return value 0. 

其結果是,有在Windows的已安裝軟件對話框中顯示兩個條目 - 一個用於新舊版本,所以在這種情況下舊版本未被卸載/刪除。

有,我可以使用,將仍然執行FindRelatedProducts行動的任何其他msiexec命令開關?它是否可以集成到其他地方,以便在如此安靜的環境中執行?

+0

難道說你以前的安裝是在不同的上下文(每名用戶的機器對),比靜默安裝?當您安裝每個用戶時,MSI無法卸載每臺計算機的安裝,反之亦然。這是你必須忍受的技術限制。 – 2010-01-04 16:52:52

+0

感謝您的回答,Divo。 上下文應該相同,只有UI級別不同(5對4)。但是我能看到的是這個動作沒有被執行,因爲沒有顯示對話框。它將被用於FolderForm NextButton的DoAction觸發,但這是不可見的,並用縮小的UI級別執行。另一方面,當FindRelatedProducts應該被檢查並再次觸發時,它會被跳過(如上面的日誌片段所示),因爲它「已經在客戶端完成」。因此,在這裏,對於兩個UI級別,執行相同的操作。 – marco4net 2010-01-05 08:38:30

回答

2

我找到了一種方法來解決這個問題,並如預期的那樣進行升級。

/QB開關MSIEXEC推出,FindRelatedProducts被exectuted和升級按預期工作

我還沒有發現關於執行不同的UI水平和影響一個更好的規範或解釋,但它可能是足夠的信息來調試和解決類似的問題。

開關/ QR似乎觸發跳躍:「跳繩FindRelatedProducts行動:已在客戶端完成」。

感謝您的支持!

0

你似乎都集中在一種症狀,而不是實際的問題。只要以下兩種情況屬實,FindRelatedProducts只需執行一次:每個升級條目的操作屬性是公共(ALL_CAPS)屬性,此屬性的名稱在屬性SecureCustomProperties中列出。當這兩個都爲真時,UI序列的第一個應該設置action屬性,其值應該使其對執行序列保持完整,RemoveExistingProducts應該處理並刪除該屬性中列出的相關產品代碼。 (當然,運行/ qb將跳過UI序列,並回退到只執行您在回答中描述的執行序列條目)。

+0

兩者都是正確的,它在CAPS中並在SecureCustomProperties中列出,並且它被執行。不幸的是,FindRelatedProducts只返回上面的日誌輸出,並沒有找到以前安裝的產品:「MSI(s),它返回:跳過FindRelatedProducts操作:已經在客戶端完成。」我只能假設在/ qr的情況下,FindRelatedProducts會被跳過,因爲它確實存在於UI序列中(即使由於縮減的UI序列而未執行它)。因此,有重複的條目。這可能是一個預期的行爲,但我不能說是否是這種情況。 – marco4net 2010-01-06 08:50:49

+0

因此,以前沒有用於UI序列的FindRelatedProducts操作的日誌記錄,只有Execute Sequence跳過了一個?這不是我所期望的。我將不得不在稍後運行一些測試。 :) – 2010-01-06 14:52:17

+0

是的,只是在使用/ qr時纔會發生一次,然後在ExecuteSequence中運行,感謝您的支持!我不知道這可能是有意的,或者是我的特定版本的MSI/Windows Installer中的錯誤? – marco4net 2010-01-07 08:39:35