MSI Registry前置值未更新

时间:2016-07-05 09:25:14

标签: wix windows-installer

我们正在使用wix 3.9.1208.0来生成MSI。下面的代码将值添加到Upperfilters注册表项。

<RegistryKey Id="UpperFilters" Root="HKLM" Key="xxxxxxxxx" Action="create"> <RegistryValue Name="UpperFilters" Type="multiString" Action="prepend" Value="xxxxx"/> </RegistryKey>

观察安装后,值不会超过&#39; UpperFilters&#39;注册表项,并未在MSI日志中找到任何错误。这个问题只发生过一次。

MSI日志:

  

MSI(0C:28)[10:38:08:835]:执行op:ComponentRegister(ComponentId = xxxx,KeyPath = 02:xxxxx,State = 3,Disk = 1,SharedDllRefCount = 0, BinaryType = 0)   MSI(sC)(0C:28)[10:38:24:455]:执行op:RegOpenKey(Root = -2147483646,Key = xxxxx ,, BinaryType = 0 ,,)   MSI(sC)(0C:28)[10:38:24:456]:执行op:RegAddValue(Name = UpperFilters,Value = xxxxx [〜],)

MSI是否在无法更新注册表时返回任何失败?

是否所有注册表失败都记录在MSI日志中?

我的方案中的问题是什么?

先谢谢。

1 个答案:

答案 0 :(得分:0)

从日志中显示更多信息可能会有所帮助。很难说出这些日志片段发生了什么。 ComponentRegister通常不在RegOpenKey旁边 - 它只是注册表中keypath的一个注册表,与实际问题无关。

有些事情可能是错的:

为什么Component id为xxxx?您是否在发布日志信息时隐藏了实际的guid,或者您实际使用的是什么?这不是合法身份证。

这是一个64位系统,您尝试更新32位注册表。在不知道系统位数和MSI架构的情况下,我们无法判断您是否更新了所需的密钥。

如果现有数据中没有任何内容,前置实际上没有做任何事情,所以如果没有看到之前的数据和之后的数据,则不清楚它是否正常工作(因为没有任何内容可以补充)或失败(因为它实际上并没有将您的数据添加到现有数据中。