Installation InstallShield中嵌套的WOW6432节点密钥

Installation InstallShield中嵌套的WOW6432节点密钥,installation,registry,windows-installer,installshield,Installation,Registry,Windows Installer,Installshield,我有一个问题,在我的InstallShield项目构建并在干净的64位Windows 7计算机上测试安装后,当我在HKEY_LOCAL_machine\软件中选中regedit时,它会在Wow6432Node密钥中创建一个Wow6432Node密钥。一切正常,程序运行正常。我已经确定是我的项目导致了这一点。我不想让它保持原样,因为那样的注册是愚蠢的。有人知道是什么导致了这一切吗?如果您需要更多信息,请告诉我。对于64位系统,您可以创建一个64位安装,并为组件64位属性设置“是” 或: 我在工作中

我有一个问题,在我的InstallShield项目构建并在干净的64位Windows 7计算机上测试安装后,当我在HKEY_LOCAL_machine\软件中选中regedit时,它会在Wow6432Node密钥中创建一个Wow6432Node密钥。一切正常,程序运行正常。我已经确定是我的项目导致了这一点。我不想让它保持原样,因为那样的注册是愚蠢的。有人知道是什么导致了这一切吗?如果您需要更多信息,请告诉我。

对于64位系统,您可以创建一个64位安装,并为组件64位属性设置“是”

或:


我在工作中看到过这个问题。如果打开install shield项目并查看组件,有些组件的COM Extract at Build属性将设置为yes。展开该组件并查看文件。右键单击它们以查看属性。如果文件已检查自注册,则会导致您看到的问题。当我们从所有具有自注册文件的组件中删除构建时的COM摘录时,问题就消失了

当您在64位计算机上安装产品时,它会将wow6432node项嵌套在注册表中。在32位机器上,它将只向注册表添加一个WOW6432节点项,而该注册表项在32位机器上不应存在

因此,为了澄清这个问题,具体的组件将Com Extract at Build属性设置为yes,并且该组件中包含的一个文件设置为self register。这将创建一个错误的WOW6432节点。要回答为什么会看到嵌套的WOW6432节点键的问题要复杂一点

我认为在您的案例中发生的是,您正在创建一个具有WOW6432节点问题的可再发行文件。当主安装程序创建必要的注册表项时,它会检查机器是否为64位。如果是,则将所有内容放置在WOW6432节点键下。到目前为止,一切正常,但随后出现了包含错误的可再发行文件。然后,它将所有内容安装到自己的WOW6432节点密钥中,该密钥现在包含在主安装程序中。您可以通过将应用程序安装到32位计算机上来测试这一点。然后,您应该只看到1个WOW6432节点键,而不是嵌套键。该1 WOW6432节点密钥是由于上述问题而错误创建的密钥,该问题包含在可再发行文件中


(为澄清而编辑)

什么操作系统?维斯塔遇到了这个“镜屋”问题。在Windows7中修复。它是Windows7。我想补充一点,这其实是我的问题。我的可再发行文件中的一个合并模块将其所有自注册组件的Com Extract at Build属性设置为yes。当我将其设置为“否”时,问题已得到解决。谢谢
Disable( WOW64FSREDIRECTION );   

//... call register function

Enable( WOW64FSREDIRECTION );