在32位和64位平台上安装组件
问题描述:
我有一个基于WiX的安装程序的大型项目。它只有32位。 我可以在32位和64位安装它。 唯一的问题是,在64位有几个值在Wow6432Node注册(通常是好的),但我需要替换HKLM/SOFTWARE /微软/ Windows NT中的一些值在32位和64位平台上安装组件
我这样做是这样的:
<Component Id="..." Guid="..."
Transitive="yes" Win64="yes">
<Registry Id="..."
Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\..."
Name="..." Type="string" Value="..." />
</Component>
但它不适用于在32位系统中安装。我怎样才能创建2个版本(32位和64位)?
答
从32位安装程序或应用程序,您根本无法轻松访问64位注册表。系统只需按照32-bit and 64-bit Application Data in the Registry中所述的反射隐藏它们。然而,有一种技术如何解决这个问题。这在How to access the “real” x64 registry from a Win32 .NET Application中描述。请检查名为的部分如何在托管代码中使用它?得到的想法。然后编写一个托管自定义操作,将为您执行此操作。就我个人而言,我没有尝试这种解决方案,但在我看来,它应该工作。