2015-05-27 105 views
0

我試圖按照以下要求進行安裝。
1.應該進行重大升級並防止降級。
2.應處理次要升級/更新並防止降級。
3.應該可以修補並防止降級。
當然,所有在同一個包無法防止降級

到目前爲止,我已經跑到一個接一個的障礙。
FindrelatedProducts不能在維護模式下運行,所以我無法真正檢查使用upgradeversion標記安裝的其他產品。
不能有ProductCode =「*」作爲pyro不喜歡創建一個補丁。
另外我注意到,防止降級,根據https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/建,並未真正發揮運行在命令行安裝與開關重新安裝= ALLREINSTALLMODE重建= vomus。似乎交換機忽略了升級版本設置。

我很確定我錯過了什麼,但我看不到它。有沒有人有關於如何做到這一點的提示?

我的升級元素看起來像

<Upgrade Id="put-guid-here"> 
    <UpgradeVersion OnlyDetect="yes" Property="SELFFOUND" Minimum="6.1.15119" 
        IncludeMinimum ="yes" Maximum="6.1.15124" IncludeMaximum="yes" /> 
    <UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="6.1.15124" 
        IncludeMinimum="no" /> 
</Upgrade> 
+0

你可能想看看https://stackoverflow.com/questions/10461840/wix-prevent-downgrade-with-check-for-revision – mcy

+0

@mcy現在我感到困惑,因爲* RemoveExistingProducts *只運行第一次安裝。這導致我相信我需要刪除靜態* ProductCode *,在這種情況下patchbuild(pyro)不會接受。或者我看着錯誤的東西? –

+0

我升級elemnt看起來像'<升級編號= 「aaab4b63-729f-45b4-9457-fb70c2e4bcda」> ' –

回答

0

主要升級需要的產品代碼(和其他一些東西)的變化,以安裝新版本,並可以防止降級,因爲它的內置到Windows安裝程序。

針對已安裝產品的次要升級需要具有相同ProductCode的MSI,因爲您已針對已安裝的產品進行維護(而不是安裝全新的產品),並且需要在命令上設置REINSTALL和REINSTALLMODE線。這種類型的更新沒有使用主要的升級邏輯,主要是更新文件並且是補丁的替代品。

這意味着沒有人可以通過運行次要升級來降級,除非您專門構建具有相同ProductCode(已發貨的產品代碼)和較低ProductVersion的MSI文件,然後告訴人們使用REINSTALL和REINSTALLMODE進行安裝。你真的會這麼做嗎?它看起來不像你的問題。另外,請注意,如果您發佈的唯一MSI文件都有不同的ProductCodes,那麼您將永遠不會遇到問題。

所以你所需要做的就是重大升級,也許你會建立偶爾的補丁。所以再次,你不必擔心小升級,因爲永遠不會有任何MSI文件可用於此。

+0

Thx爲我清除了很多問題標記。 –