2010-06-03 39 views
0

我有使用维克斯安装,并拥有自己的UpgradeCode制作维克斯卸载旧插件进行升级

在主要的产品,我们有时会发布插件里面添加或版本之间的主要产品时修补一些功能。这些插件使用自己的UpgradeCodes打包在自己的Wix生成的.msi文件中,并且通常安装附加文件是与主产品不同的文件夹。

我想创建一个新版本的主要产品,其中包括以前在插件中提供的功能。升级到新版本的用户将不再需要该插件,因此将其作为升级的一部分进行卸载会很好。

当使用UpgradeCode1升级产品时,有什么方法让Wix使用UpgradeCode2卸载产品?

Bob的答案===

我试过多次升级元素和维克斯代码编译确定,但安装程序无法正常工作

当我双击的.msi我立即得到一个后

===更新错误对话框显示“意外的错误...错误代码是2711”

根据Microsoft的Windows安装程序错误消息页面,错误2711表示“在功能表中找不到指定的功能名称('[2]')。

事件查看器为MsiInstaller列出了一个错误: “安装程序在安装此程序包时遇到意外错误,这可能表示此程序包有问题,错误代码为2711.参数为:{6BEC2276-3211- 4E5F-9EF0-2E64B92DE3F4},,“

该guid是我想要卸载的产品的正确ProductCode。 msiexec /卸载{6BEC2276-3211-4E5F-9EF0-2E64B92DE3F4}成功执行卸载。

我猜测在guid之后的2个逗号之间的空格是“Feature name('[2]')”,找不到。我曾尝试通过向元素添加属性RemoveFeatures =“PlugInFeatureId”来手动添加,但仍得到相同的结果。

我缺少一些东西让安装程序生成它应该删除的功能列表?

... 

<!--Upgrade the main application--> 
<Upgrade Id='$(var.UpgradeCode)'> 
    <UpgradeVersion OnlyDetect='no' Property='PATCHFOUND' 
    IncludeMinimum='yes' Minimum='1.0.1' Maximum='$(var.BuildVersion)' IncludeMaximum='no'/> 
</Upgrade> 

<!--Remove the old plugin--> 
<Upgrade Id='$(var.PluginUpgradeCode)'> 
    <UpgradeVersion OnlyDetect='no' Property='REMOVE' IncludeMinimum='yes' Minimum='1.0.0' Maximum='15.0.0' IncludeMaximum='yes'/> 
</Upgrade> 

<UIRef Id="WixUI_ErrorProgressText" /> 

<InstallExecuteSequence> 
    <FindRelatedProducts Before="LaunchConditions" /> 
    <RemoveExistingProducts After="InstallInitialize" /> 
</InstallExecuteSequence> 

回答

0

是的,只是添加它作为正确UpgradeVersion孩子第二次升级元素。

+0

感谢Bob,我试过了,仍然有问题,我更新了原始问题并提供了更多详细信息 – IanM 2010-06-04 11:14:15

+0

在运行升级时创建详细日志,您将能够看到在调用RemoveExistingProducts时发生了什么。 – 2010-06-06 17:46:37

+0

认为我发现了问题,它使用的是 Property ='REMOVE'。如果我将其更改为Property ='ANYTHINGBUTREMOVE“,那么它将按预期工作。 感谢您的帮助 Ian – IanM 2010-06-07 11:19:19