我正在使用的安装程序有一个组件,可以将注册表元素安装到64位HKLM配置单元中,并将类似的密钥安装到32位配置单元中(在Wow6432Node下)。安装时,日志显示64位:
MSI (s) (40:30) [13:29:49:879]: Executing op: RegOpenKey(Root=-2147483646,Key=SOFTWARE\Company\Product,,BinaryType=1,)
MSI (s) (40:30) [13:29:49:879]: Executing op: RegAddValue(Name=MyValueName,Value=MyValue,)
WriteRegistryValues: Key: \SOFTWARE\Company\Product, Name: MyValueName, Value: MyValue
然后是32位..
MSI (s) (40:30) [13:29:49:910]: Executing op: RegOpenKey(Root=-2147483646,Key=SOFTWARE\Wow6432Node\Company\Product,,BinaryType=1,)
MSI (s) (40:30) [13:29:49:910]: Executing op: RegAddValue(Name=MyValueName,Value=MyValue,)
WriteRegistryValues: Key: \SOFTWARE\Wow6432Node\Company\Product, Name: MyValueName, Value: MyValue
但是,当我在HKLM\Software\Wow6432Node\Company\Product
处查看注册表时,该值不存在。
答案 0 :(得分:0)
用提供的数据回答是不可能的。也许安装程序中止并回滚。也许另一个组件重复了注册表数据并在以后进行了更改。可能是自定义操作已触发并重置该值。或者甚至另一个属于引导程序的MSI踩到了它。
我需要花时间在VM上测试安装程序,以确切知道发生了什么。我很清楚WriteRegistryValues中没有系统性问题。
答案 1 :(得分:0)
“......从上一个版本升级到最新版本时出现问题”
因为我会这样:
如果重新安装时存在先前安装的组件密钥路径,则不会安装通过启用64位有效添加的新注册表项,因为组件仅作为整体安装或完全没有。