我们正在使用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日志中?
我的方案中的问题是什么?
先谢谢。
答案 0 :(得分:0)
从日志中显示更多信息可能会有所帮助。很难说出这些日志片段发生了什么。 ComponentRegister通常不在RegOpenKey旁边 - 它只是注册表中keypath的一个注册表,与实际问题无关。
有些事情可能是错的:
为什么Component id为xxxx?您是否在发布日志信息时隐藏了实际的guid,或者您实际使用的是什么?这不是合法身份证。
这是一个64位系统,您尝试更新32位注册表。在不知道系统位数和MSI架构的情况下,我们无法判断您是否更新了所需的密钥。
如果现有数据中没有任何内容,前置实际上没有做任何事情,所以如果没有看到之前的数据和之后的数据,则不清楚它是否正常工作(因为没有任何内容可以补充)或失败(因为它实际上并没有将您的数据添加到现有数据中。