2010-10-05 108 views
4

我有一個主要升級,我正在嘗試做,但它不起作用。它只是將舊程序安裝在新程序旁邊。它們位於不同的目錄中(因爲我使用新版本更改了目錄結構),因此沒有衝突,但爲了使產品正常工作,舊的NEEDS將被刪除。WiX3主要升級不起作用

<Property Id="UPGRADE_NEEDED" Secure="yes" /> 
<Property Id="SAME_OR_NEWER_VERSION" Secure="yes" /> 
<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallFinalize" /> 
</InstallExecuteSequence> 
<Upgrade Id="{PUT-YOUR-GUID-HERE}"> 
    <UpgradeVersion Minimum="5.1.3" OnlyDetect="yes" IncludeMinimum="yes" Property="SAME_OR_NEWER_VERSION" /> 
    <UpgradeVersion Minimum="5.1" Maximum="5.1.3" Language="1033" Property="UPGRADE_NEEDED" MigrateFeatures="yes" IncludeMinimum="yes" /> 

這是我的升級元素(與GUID當然移除)。如果任何人都能找到問題所在,我將不勝感激。

回答

6

some general rules的升級是工作:

  1. 舊的和新的產品必須具有相同的UpgradeCode價值觀和 不同ProductCode值。

  2. 舊產品和新產品必須具有相同的值 InstallAllUsers [即每個機器 安裝無法升級每用戶 安裝,反之亦然。]

  3. 新產品的設置Version(安裝項目,無關文件 版本)必須更高。

  4. 所有安裝程序版本(同樣,不是文件版本)必須是1.0或更高版本。

進一步詳細說明了如何使用WiX的正確實施升級可以在這個主題中找到:

How to implement WiX installer upgrade?

+0

我想你可能會到一些與InstallAllUsers值。我用新的MSI明確地設置了它(舊的是用WiX以外的其他技術創建的,所以我不能再編輯那個)。我正在測試它,並將其標記爲已解決。非常感謝您的幫助。 – Adkins 2010-10-05 12:32:34

+0

仍然無法正常工作。我已經閱讀了你關聯的帖子(之前寫過這個問題),並嘗試了寫在那裏的所有內容。我對這個問題感到茫然,因爲這個MSI安裝了幾個MSI(通過使用chainer),並且它們基本上都是相同的,除了這個之外,所有的升級都是相同的。很奇怪。 – Adkins 2010-10-05 13:29:26

+0

@Adkins:您是否嘗試過在'InstallFinalize'動作之前移動'RemoveExistingProducts'動作,即''?如果您不使用鏈接器,會發生什麼情況,但只測試未正確升級的特定MSI文件?在MSI的新版本中安裝的組件的文件版本是否比已安裝的版本高? – 2010-10-05 13:40:12