2009-04-22 82 views
17

我有一個應用程序的安裝程序,需要安裝在任何現有版本上,而不管版本號如何。WiX--總是覆蓋以前版本

相反,我有一個安裝程序,不斷說我需要去添加/刪除程序。對我的測試人員來說,這是非常令人沮喪的行爲,因爲它只是在他們的腦海中放慢了他們的真實原因 - 以前的安裝程序包總是會安裝,刪除以前存在的任何文件,所以他們從來不必這麼做。我們還有一個經過類似培訓的(大型)客戶羣,因爲我現在安裝的任何版本都應該覆蓋以前可能安裝的任何版本。

從我所瞭解的情況來看,WiX模式似乎是做一些事情,比如阻止向後版本的安裝和其他複雜的事情,比如修補。坦率地說,我們的客戶不夠聰明,無法知道或關心打補丁,合併等等,只想要一個總是有效的安裝程序(我傾向於同意這些安裝程序;帶寬很便宜)。那麼我怎麼得到這個?

我已經試過這一點,但它只是似乎並不重要:

<InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize"/> 
</InstallExecuteSequence> 

這是維克斯的3.0.5120版本。

編輯:按照羅布的建議有,我已經添加以下代碼:

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize"/> 
</InstallExecuteSequence> 

<Upgrade Id="27cb76c7-544e-465f-b1f3-b11d9a49e416"> 
    <UpgradeVersion Minimum="0.8.0" 
        IncludeMinimum="yes" 
        Maximum="1.5.1" 
        Property="OLDERVERSIONBEINGUPGRADED" /> 
</Upgrade> 

我不添加代碼不允許回滾安裝;出於令我難以置信的尷尬的原因,我們只是說版本號的增加並不一定與軟件良好度的增加相關。我不希望任何人被他們認爲他們需要的東西鎖定。

此外,非常重要的是將產品的默認GUID更改爲「*」,以便使用不同的安裝程序創建不同的GUID,這顯然是問題所在。

+2

我不太清楚您的最後一句:將產品的默認GUID設置爲*爲每個已編譯的安裝程序生成一個新的GUID。這導致每次更新並排安裝新的設備。至少這就是我的想法。我仍然試圖爲你的問題找到一個簡單的工作PoC ... – 2012-06-25 14:22:35

+0

對我來說,似乎安裝永遠不會並排。只要升級代碼匹配,舊版本將被卸載,並且新版本將被安裝到位。這不是來自wix的預期行爲嗎? – Shadoninja 2016-01-29 23:44:07

回答