WiX MSI升级不允许安装某些组件

时间:2015-02-03 17:04:05

标签: xml wix windows-installer installer upgrade

当我尝试升级我的项目时,我得到了大约八个左右组件的以下日志:

MSI (c) (24:EC) [11:50:17:422]: Disallowing installation of component: {290E89A8-6BA7-59F2-B350-BE657C2823BC} since the same component with higher versioned keyfile exists

升级的卸载部分似乎删除了所有以前安装的文件,但是在升级过程中安装新文件时,似乎不允许安装8个左右的组件/文件。升级成功,但这八个文件不存在。我使用以下标准进行升级(顺便提一下,我的产品ID是*):

<Upgrade Id="{16B40AC6-1F80-47CD-9955-BDCC5BB297E4}">
    <UpgradeVersion Minimum="$(var.InstallerVersion)" Property="NEWPRODUCTFOUND" OnlyDetect="yes" IncludeMinimum="no" Language="1033" />
    <UpgradeVersion Minimum="0.0.0" Maximum="$(var.InstallerVersion)" Property="OLDPRODUCTFOUND" OnlyDetect="no" IncludeMinimum="yes" IncludeMaximum="yes" Language="1033" />
</Upgrade>
<InstallExecuteSequence>
...
    <RemoveExistingProducts Before="InstallInitialize" />
...
</InstallExecuteSequence>

我试图使用described here步骤绕过这个问题,但没有成功。任何人都可以了解如何在升级时安装我的新文件?奇怪的是,如果我通过程序和功能卸载旧版本,然后安装新版本,它可以工作并且所有文件都已安装(因此,它在未升级时有效),但在升级时,它确实有效不安装我的一些文件。

编辑:恰好将REINSTALLMODE属性设置为 amus 将强制它重新安装文件,无论版本和校验和如何,它现在可以正常工作,因为默认值为它是 omus ,但我不确定这是否是最佳方法:

<Property Id="REINSTALLMODE" Value="amus" />

1 个答案:

答案 0 :(得分:4)

这个问题似乎是一个反复出现的问题,类似于:

http://support.microsoft.com/kb/905238

Windows决定不安装这些文件,因为存在更高版本,但是当我们正在进行重大升级时,不会重新评估该决定。我认为这个问题已在MSI 4.5中得到修复。

在CostInitialize之前执行RemoveExistingProducts可以解决问题,但是如果您正在使用该功能,那么在升级过程中您将遇到一些ICE错误并丢失功能迁移。