2010-07-29 83 views
2

我正在使用WIX進行'小升級'包。基於升級包,我很困惑。生成補丁WIX - 版本3關閉版本1或版本2?

當我生成補丁總是我基地起飛版本1,或做I類基礎版本3關閉的版本2?

總之

,我無法理解

<UpgradeImage SourceFile="$(var.ProjNew)" Id="Upgrade1_$(var.NewID)"> 
    <TargetImage SourceFile="$(var.ProjOld)" Order="2" Id="Target1_$(var.NewID)" IgnoreMissingFiles="no" /> 
</UpgradeImage> 

ProjNew應指向新的MSI,又該ProjOld點?第一個MSI,還是n-1 MSI?

可能有人幫助我明白怎麼回事,如何正確地做到這一點?理想情況是,當版本3出來時運行版本1的人可以獲得一個更新包,這使我相信我應該始終以版本1爲基礎。但是,如果我這樣做,如果有人安裝了版本2會發生什麼?他們是否敬酒?

我覺得我的問題的心臟是假設我已經建立了1三個版本,2和3。假設每個基於1版本如果有人安裝版本1,然後第2版。然後,他們獲得第3版補丁會發生什麼?將msiexec刪除補丁2,然後應用補丁3?記住補丁3是基於關閉的第1版。

回答

4

首先,除非你絕對必須使用維克斯V2不使用PatchCreation元素。切換到使用WiX v3的Patch元素。它使用起來更容易,功能更強大,並具有更好的錯誤檢查。

現在,這聽起來像你想要做的是創建一個針對多種產品的補丁。換句話說,你需要一個可以同時定位v1和v2的補丁來將它們變成v3。你完成這個任務的方式是創建一個從v1到v3的轉換,另一個從v2轉換到v3。

要通過讀取WiX.chm「使用純維克斯」主題做開始。當您看到「創建您的產品之間的轉換」部分時,請執行該步驟兩次以創建v1tov3.wixmst和v2tov3.wixmst。然後在「構建補丁」步驟中,在命令行中提供兩個.wixmst文件。 Pyro將負責其餘的事情。

Patch元素中有很多選項。如果你不這樣做,不要打開它們。當你循序漸進地練習一點點時,它確實不那麼複雜。

+0

感謝羅!你知道工作做得正確嗎?我很想創建一些積極的失敗案例,所以我可以向自己證明我知道我在做什麼:) – stuck 2010-08-07 05:53:55

+0

我通常使用Orca查看應用於有問題的MSI(即手動驗證)的修補程序。我沒有做足夠的補丁來證明構建工具能夠以自動化的方式進行驗證。 – 2010-08-07 19:00:54