2012-04-04 164 views
2

我已經看過Why doesn't my new Windows Installer file (MSI) install properly over an older version of the MSI? 但這並不能幫助我。安裝(MSI)將無法正確安裝在舊版本

我有一個由安裝程序包(MSI)

最初的插件和安裝項目在Visual Studio 2005中的解決方案做安裝,現在轉移到Visual Studio 2010中的程序(插件辦公室)。 當我做一個新的MSI並嘗試安裝它的舊版本時,新版本不會工作,然後使用添加刪除程序 - >修改安裝 - >修復進行修復 新版本安裝完美,如果我刪除舊的版本第一。

這對我們來說重要的是,新的MSI能夠順利刪除舊版本並安裝新版本,因爲它由幾個用戶沒有電腦經驗

的RemovePreviousVersion設置爲True。我已將版本從3.1.1升級到4.0.0,並在該過程中接受了新的ProductCode。 在Orca中,我將Reinstallmode設置爲amus,但似乎沒有任何幫助。

謝謝!

回答

1

如果我理解正確,你說升級工程,如果運行新版本的修復?當兩個軟件包都有共享組件時,即包裝組件的重複GUID時,可能會出現這種情況。最好的方法來跟蹤這個問題是創建一個詳細的安裝日誌,所以我們可以分析它。

在修復過程中,與舊版本沒有衝突,因爲它已被刪除,並且軟件包中的組件安裝正確,這就是插件工作之後的原因。

你可以創建一個詳細的日誌,所以我們可以看看它嗎?

+0

嗨。感謝您的答覆。如果我爲新版本運行修復,升級正常無誤。我已經制作了兩個安裝的詳細日誌。它可以在這裏下載http://download.ditmer.dk/klu/Installlogs.zip – 2012-04-04 11:27:04

+0

日誌顯示一個組件與以下GUID是由您的應用程序的兩個版本共享:{1BB1F0AD-8476-42BE-A165-9116EEDCB560} 。我建議您爲新版本的軟件包生成一個新的GUID並再次測試升級。 – 2012-04-04 13:18:58

+0

發生了什麼事情,這個組件被兩個共享,新版本跳過了它的安裝,但隨後卸載舊版本是由於Windows Installer中的一個錯誤而刪除了共享組件,所以你最終會以缺少資源。這就是爲什麼在維修之後,所有工作都正常。生成一個新的GUID應該解決問題。 – 2012-04-04 13:21:14

0

奇怪的是,第二個日誌沒有顯示可見的問題,所以升級應該正確安裝。要獲得更多詳細信息,我們需要在操作系統觸發自動修復時創建的詳細日誌。要創建此日誌,您需要激活全局日誌記錄,如下所述: http://support.microsoft.com/kb/2545723

+0

這裏有一個詳細的日誌修復:download.ditmer.dk/klu/verboseLog.zip – 2012-04-11 13:06:57

0

我試圖從日誌中獲取更多詳細信息,但可以找到更多信息。但是,我發現了另一種檢測修理原因的方法。要獲取有關按需安裝原因的更多信息,請打開事件查看器(「開始 - >運行」,「eventvwr.msc」),然後查看應用程序節點下的以下格式的「MsiInstaller」日誌消息:

事件類型:警告 來源:MsiInstaller 事件ID:1001 描述: 檢測產品的 '{000C1109-0000-0000-C000-000000000046}',特徵 '實施例' 請求組件「{00030829過程中失敗-0000-0000-C000-000000000046}'

消息和GUID當然會在您的機器上有所不同。然後,您可以檢查項目中的GUID以查看哪個組件觸發了修復。

0

通過使用Orca Tool編輯msi,它可能會解決您的問題。

首先,我通過在InstallValidate和InstallIncecuteSequence選項卡下的InstallInitialize之前設置RemoveExistingProducts的序列號來刪除現有產品。

謝謝,Saurabh

0

你應該告訴我們更多。你正在交換版本號,產品,組件,升級和包代碼嗎?你在使用哪種軟件?

通常,您在產品中保持升級代碼一致。 您需要在升級表中指定包含舊/當前升級代碼的版本號。

取決於你在哪裏安排RemoveExistingProducts如果你保留組件代碼,我可能是一些舊的組件不會被替換。

我安排事件後總是InstallInitialize

檢查是否動作FindRelatedProducts被調用。

this Post中可以找到使用WIX的示例。