XP上的x64 wix安装程序不会在Wow6432Node下写入注册表值

时间:2010-08-17 07:16:02

标签: windows-xp wix registry 64-bit

如果在x64上安装,我需要编写两个注册表值:

1)<RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="8">

2)<RegistryValue Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="9"/>

我正在使用<?if $(var.PlatformName) = x64 ?>检查我是否使用x64。

在win 7 64位上它工作正常,但在xp 64位上它将第二个键(“9”)的值写入第一个键的位置(我猜它会覆盖第一个键)。 知道为什么吗?或者我该如何解决?

2 个答案:

答案 0 :(得分:2)

在.msi中执行此操作的正确方法是将这些注册表值放在两个单独的组件中。两者都将引用键SOFTWARE\Microsoft\Exchange,但一个是32位组件,另一个是64位组件。请注意,包含64位组件的程序包必须具有64位模板摘要值,因此无法安装在32位计算机上。

答案 1 :(得分:0)

我认为,首先您需要了解Windows由于注册表反射而在SOFTWARE\Wow6432Node上写入注册表值(当32位安装程序尝试将注册表值写入{{ 1}}或任何支持注册表反射的键。

在您的父SOFTWARE\上将win64属性设置为true时,可以为Registry element禁用注册表反射。

但是,作为最佳实践,建议为x64环境创建一个MSI,为x86环境创建一个MSI。

如果您想了解有关注册表反射的更多信息,可以查看下一个链接。