WiX - 为什么我的组件在主要升级过程中显示为缺席?

时间:2017-07-28 13:43:07

标签: windows wix windows-installer installer

我有一个我继承的WiX安装程序,它有自动生成的产品代码,固定的升级代码,自动生成的组件GUID,我们总是强制进行重大升级。其中一个配置文件在安装时由自定义操作修改,稍后可能会被用户修改。它在安装程序的现有(已发布)版本中未标记为NeverOverwrite。

我希望MSI文件版本控制规则能够防止修改后的文件在升级时被替换,但实际上它仍然会被替换。我在安装日志中找到了初始InstallValidate的这个条目:

MSI (s) (7C:00) [12:18:07:604]: Component: conf.xml; Installed: Absent; Request: Local; Action: Local

我认为这是我问题的根源,因为组件(其中包含文件作为密钥路径)实际上就在那里,即使它显示为缺席。

稍后,当安排RemoveExistingProducts时,旧安装程序会正确检测到该组件:

MSI (s) (7C:74) [12:18:09:901]: Component: conf.xml; Installed: Local; Request: Absent;   Action: Absent

然后删除。显然我可以创建一个自定义操作来备份文件并在升级过程中恢复它,但是当我不明白为什么它没有被检测到时,这似乎是一个黑客。

在这两种情况下,文件路径似乎都是正确的,据我所知,组件GUID也应该为两个安装生成相同的内容。是否还有一些我可以启用的日志记录,或者我错过了一些明显的东西?

0 个答案:

没有答案