Wix:组件更新无法按预期工作

时间:2013-04-17 20:43:20

标签: wix windows-installer

我有一个共享的dll(COM对象),我们称之为由多个产品安装的Utility.dll。在我的WIX文件中,我将Utility.dll作为单独的组件安装。

现在我发布新版本2.0,并使用相同的组件GUID和路径。从理论上讲,他的组件应该重新计算,但这不是什么问题:

  1. 安装产品1 1.0(Utility.dll 1.0)
  2. 安装产品2 2.0(Utility.dll 2.0)
  3. 磁盘上的Utility.dll是2.0

    1. 删除产品1 1.0并删除Utility.dll。
    2. 以前的安装程序是在InstallShield中编写的,当前的安装程序是在Wix3中。 Utility.dll的组件GUID和路径是相同的(双重检查)。

2 个答案:

答案 0 :(得分:1)

在详细日志文件中查找Component的GUID。您应该看到指示是否存在Component的其他客户端(产品)的消息。这将解释为什么卸载会删除文件。

答案 1 :(得分:1)

我遇到了同样的问题并且文件被卸载了,因为两个组件之间的KEYPATH不同。在我的情况下,我在较新版本的安装程序中添加了一个配套文件,以确保安装了最新的文本文件。因为一个文件不能是KEYPATH并且有一个伴随文件,所以我被迫改变了KEYPATH。

您可以通过搜索组件GUID的前8个字符来查找注册表中的组件。该注册表文件夹将为安装该GUID的每个MSI都有一个密钥,数据字段将显示KEYPATH。我的猜测是,对于版本为1.0的机器而不是具有2.0的机器,KEYPATH是不同的。