2017-08-14 65 views
0

我不願意在這個時候問這個問題,因爲我再說一遍WiX - Doing a major upgrade on a multi instance install ......然而,我希望我的問題將得到回答:)在多實例主要升級安裝程序

我有多個安裝程序實例:

<Product Id="{GUID}" UpgradeCode="{GUID}" Version="!(wix.Version)" Name="MyProduct" Manufacturer="MyCompany"> 

    <MajorUpgrade Schedule="afterInstallExecute" DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 

    <Property Id="INSTANCEID" Value="Default" /> 
    <InstanceTransforms Property="INSTANCEID"> 
    <Instance Id="I01" ProductName="MyProduct_I01" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    <Instance Id="I02" ProductName="MyProduct_I02" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    . 
    . 
    . 
    <Instance Id="I49" ProductName="MyProduct_I49" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    <Instance Id="I50" ProductName="MyProduct_I50" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    </InstanceTransforms> 
</Product> 

爲了清楚起見,每一個新版本使用:

  • 不同的版本號
  • (在前3個數字中的至少一個不同)
  • 爲每個實例不同的產品代碼
  • 爲每個實例
  • 我安裝的每個產品具有域管理員權限

在更改產品代碼每一個新版本我用同樣的一個同樣的升級代碼每個版本,儘管它有點笨拙(永久保留已刪除的組件),但重新安裝過程已經結束。

但是,現在,隨後使用不同版本的重新安裝使msiexec.exe將所有組件視爲丟失,從而導致安裝失敗。它看起來好像是時候過渡到重大升級!

升級用簡單的方式

msiexec.exe /i "installer.msi" /n {OLD_VERSION_PRODUCTCODE}

提示一個錯誤信息:

系統管理員已設置策略,以防止此安裝。經由

升級重新安裝

msiexec.exe /i "installer.msi" /n {OLD_VERSION_PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus

(因爲新產品也試圖與REINSTALLMODE=amus是一種新的安裝,但沒了)

記錄的每個組件作爲缺席和沒不碰任何文件(升級報告成功):

已安裝:無;要求:無;行動:空

我很茫然 - 我錯過了什麼?

回答

0

我發現了一個尷尬的解決方案,但它僅適合一個尷尬的問題:

<SetProperty Id="REINSTALL" Value="" Before="AppSearch" /> 
<SetProperty Id="REINSTALLMODE" Value="" Before="AppSearch" /> 

通過取消REINSTALL性能我莫名其妙地跳過了重大升級許可的障礙,避免真正的重新安裝,留下我與新版本。

我會高興地接受一個更正統的解決方案,特別是不涉及Windows Installer屬性的操作...