Windows installer Windows Installer日志显示添加的注册表项,但不显示';安装后注册表中不存在

Windows installer Windows Installer日志显示添加的注册表项,但不显示';安装后注册表中不存在,windows-installer,installshield,installshield-2012,Windows Installer,Installshield,Installshield 2012,我正在使用的安装程序有一个组件,它将注册表元素安装到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:

我正在使用的安装程序有一个组件,它将注册表元素安装到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时,该值不在那里。

无法用提供的数据回答。可能安装程序中止并回滚。也许另一个组件复制了注册表数据,并在以后对其进行了更改。可能会触发自定义操作并重置值。甚至是另一个MSI,它是引导程序的一部分,踩到了它

我需要花时间在虚拟机上测试你的安装程序,以了解到底发生了什么。据我所知,writeRegistryValue中没有系统性问题。

“…从以前的版本升级到最新版本时会出现此问题”

既然如此,我想:

  • 拆分32位和64位部分以使用两个不同的组件。这是可能的
  • 将新组件的键路径设置为 以前的安装。换句话说:确保两个组件都有关键路径,并且它们是不同的
  • 为两个组件启用“重新评估组件条件”(可传递组件)。这将在重新安装期间重新评估已安装的组件状况。换言之,决定是在系统上安装、重新安装还是卸下它们

如果重新安装时存在上一次安装的组件密钥路径,则不会安装通过启用64位有效添加的新注册表项,因为组件仅作为一个整体安装或根本不安装。

抱歉,我应该添加:安装程序已成功完成。没有触及此值的自定义操作,也没有运行和编辑该位置的其他MSI文件。唯一的其他信息是,我将该组件从32位组件(只有默认的SOFTWARE\Company\Product)更改为64位组件,其中包含64位和32位路径。从以前的版本升级到最新版本时会出现此问题。您是在进行主要升级还是次要升级?如果是major,RemoveExistingProducts计划在哪里?major-我们会在每次构建时更改产品代码。RemoveExistingProducts计划在InstallValidate之后立即执行。