2012-02-27 83 views
0

我希望我的安装程序,如果检测到一个旧的,先前卸载它,然后启动新的安装。Wix - 升级将旧安装,并安装新的

我有以下维克斯XML:

<Product Id="16bf910b-3b0f-4240-914a-81526bce35f4" 
     Name="MyProduct" 
     Language="1033" 
     Version="1.0.0.0" 
     Manufacturer="MyCompany" 
     UpgradeCode="6ba28d97-41de-4371-a236-b757b7840f7b"> 
<Package InstallerVersion="200" Compressed="yes" /> 

<Upgrade Id="6ba28d97-41de-4371-a236-b757b7840f7b"> 
    <UpgradeVersion Minimum="0.0.0.0" 
        IncludeMinimum="yes" 
        OnlyDetect="no" 
        Maximum="1.0.0.0" 
        IncludeMaximum="yes" 
        Property="PREVIOUSFOUND" /> 
</Upgrade> 
<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallValidate"/> 
</InstallExecuteSequence> 

在生成MSI文件,安装它(1.0.0.0版本),它的确定。 现在我将Product/@Version更改为1.0.1.0,然后再次点击MSI,此时我收到一个问题:“此产品的以前安装存在,请先将其删除...”。

我该如何修改此行为? 谢谢

回答

4

Product @ Id映射到Windows Installer ProductCode属性。此ID必须从构建变为构建才能成为主要升级。你可以将它设置为“*”,让编译器为你处理。

+0

这样做会卸载以前的安装并正确地安装它,或者只是覆盖现有的文件? (顺便说一下,谢谢)。 – 2012-02-28 07:51:07

+0

这是一个复杂的问题,需要了解组件规则和默认文件版本规则。一般来说,是的,但YMMV基于这些规则。 – 2012-02-28 14:55:13

+1

我将我的Wix版本更新到了3.5版,现在使用'MajorUpgrade'标签,这是自动完成的。谢谢 :) – 2012-02-28 15:08:20

相关问题