2013-02-12 50 views
1

我爬網,但發現沒有解決方案,或者我只是沒有線索。Wix 3.6:有條件地觸發「RemoveExistingProducts」

我需要在我的設置中有條件地執行RemoveExistingProducts操作。我想我的設置默認情況下卸載所有現有的產品,如下所示:

<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="No downgrades allowed" /> 

這工作正常。但是當用戶取消選擇我的用戶界面中的複選框時,我希望安裝程序不要卸載以前的產品版本。所以,我想是這樣的:

<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" /> 

    <Upgrade Id="3E700BA7-CAF8-4C49-A53A-70F70DE0C8D6"> 
     <UpgradeVersion 
      Minimum="1.0.0.0" Maximum="99.0.0.0" 
      Property="PREVIOUSVERSIONSINSTALLED" 
      IncludeMinimum="yes" IncludeMaximum="no" OnlyDetect="myVar" /> 
    </Upgrade> 

    <Property Id="myVar" Value="no" /> 

希望,我可以設置myVar,但是這是違法的。

有沒有人知道如何解決我的問題?

原因是,我們希望讓用戶自己承擔風險,可以安裝多個版本的產品 - 這是我們客戶的要求。

回答

0

我認爲,在默認順序中,RemoveExistingProducts是在UI之前運行的。

你可以嘗試重新佈線RemoveExistingProducts動作要InstallFinalize後符合條件觸發它:

<RemoveExistingProducts After="InstallFinalize"> 
    NOT CHECKBOX 
</RemoveExistingProducts> 

不知道如何做到這一點,你的情況車費。

您也可以嘗試運行自定義操作,當您用複選框退出對話框時手動卸載產品。也許你甚至可以強制在上述自定義操作中啓動RemoveExistingProducts

最後一個解決方案是製作一個單獨的卸載程序,提示用戶卸載該產品,並跟進實際的安裝程序。