我有一个问题,在我的InstallShield项目构建完成后,我在干净的64位Windows 7计算机上测试安装,当我在HKEY_LOCAL_MACHINE \ SOFTWARE上检查regedit时,它会在Wow6432Node键中创建一个Wow6432Node键。一切都正确注册,程序似乎运行正常。我确保我的项目是造成这个的项目。我不想留下它,因为拥有这样的注册表是愚蠢的。有谁知道可能导致这种情况发生的原因?如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
我在工作中看到了这个问题。如果打开安装屏蔽项目并查看组件,则某些组件会将Build属性中的COM Extract设置为yes。展开该组件并查看文件。右键单击它们以查看属性。如果文件已经自我注册,则会导致您看到的问题。当我们从所有具有自行注册文件的组件中删除Build的COM Extract时,问题就消失了。
在64位计算机上安装产品时,它会将wow6432node密钥嵌套到注册表中。在32位计算机上,它只会向注册表添加一个wow6432node密钥,该密钥在32位计算机上永远不会存在。
因此,澄清问题源于将Build属性中的Com Extract设置为yes的特定组件,以及该组件中包含的其中一个文件设置为自注册。这会错误地创建一个wow6432node。回答你为什么看到嵌套的wow6432node键的问题有点复杂。
我认为你的情况是你正在创建一个具有wow6432node问题的可再发行组件。当您的主安装程序去创建必要的注册表项时,它会检查该计算机是否为64位。如果是,它将所有内容放在wow6432node键下。到目前为止一切正常,但随后出现了包含错误的可再发行组件。然后它将所有内容安装到它自己的Wow6432node密钥,该密钥现在包含在主安装程序中。您可以尝试将应用程序安装到32位计算机上进行测试。然后,您应该只看到1个wow6432node键,而不是嵌套键。那1个wow6432node密钥是由上面解释的问题创建的密钥,它包含在您的可再发行组件中。
(编辑以供澄清)
答案 1 :(得分:1)
对于64位系统,您可以创建一个64位安装,并为组件64位属性设置“是”。
或者:
Disable( WOW64FSREDIRECTION );
//... call register function
Enable( WOW64FSREDIRECTION );