InstallShield中的嵌套Wow6432Node密钥 [英] Nested Wow6432Node key in InstallShield

查看:41
本文介绍了InstallShield中的嵌套Wow6432Node密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到一个问题,在构建InstallShield项目并在干净的64位Windows 7计算机上测试安装后,当我在HKEY_LOCAL_MACHINE \ SOFTWARE中检查regedit时,它将在Wow6432Node密钥内创建Wow6432Node密钥.一切都正确注册,该程序似乎可以正常运行.我已经确定我的项目是导致这一情况的一个项目.我不想保留它,因为拥有这样的注册表是很愚蠢的.有谁知道是什么原因导致这种情况发生的?如果您需要更多信息,请告诉我.

I have a problem where after my InstallShield project is built and I test the install on a clean 64bit Windows 7 machine, it creates a Wow6432Node key within a Wow6432Node key when I check regedit at HKEY_LOCAL_MACHINE\SOFTWARE. Everything registers correctly and the program seems to run fine. I have made sure that my project is the one that is causing this. I don't want to leave it as it is since it would be silly to have the registry like that. Does anyone know what might have caused this to happen? If you need any more info, please let me know.

推荐答案

我在工作中已经看到了这个问题.如果打开安装盾牌项目并查看组件,则某些组件的构建时COM提取"属性将设置为是".展开该组件并查看文件.右键单击它们以查看属性.如果文件已选中自我注册",则将导致您遇到的问题.当我们从所有具有文件自注册问题的组件中删除了Build上的COM提取文件后,就消失了.

I have seen this issue at my work. If you open your install shield project and look at the components, some will have the COM Extract at Build property set to yes. Expand that component and look at the files. Right click them to view the properties. If the files have Self Register checked it will cause the issue you are seeing. When we went and removed the COM Extract at Build from all our components that had files self registering the issue went away.

在64位计算机上安装产品时,它将在注册表中嵌套wow6432node项.在32位计算机上,它将只向注册表添加wow6432node项,而该注册表项永远不会在32位计算机上存在.

When you install your product on a 64 bit machine it will nest the wow6432node key in the registry. On a 32 bit machine it will just add a wow6432node key to the registry which should never exist on a 32 bit machine.

因此,要澄清此问题,是由于特定组件将Build的Com Extract属性设置为yes,并且该组件中包含的文件之一设置为自注册.这将创建一个错误的wow6432node.要回答您为什么会看到嵌套的wow6432node键的问题,要稍微复杂一点.

So to clarify the issue stems from the specific components which have both Com Extract at Build property set to yes, AND one of the files contained in that component set to self register. This creates a wow6432node in error. To answer your question of why you are seeing nested wow6432node keys is a little more complex.

我认为您正在发生的情况是您正在创建具有wow6432node问题的可重新分发文件.当主安装程序创建必要的注册表项时,它将检查计算机是否为64位.如果是这样,它将所有内容放在wow6432node键下.到目前为止,一切正常,但是随之而来的是包含错误的可重新分发.然后,它将所有内容安装到它自己的Wow6432node密钥中,该密钥现在包含在主安装程序中.您可以尝试通过将应用程序安装到32位计算机上来对此进行测试.然后,您应该只看到1个wow6432node密钥,而不是嵌套密钥.1 wow6432node密钥是您在上述可再发行文件中因上述问题而错误创建的密钥.

What I think is happening in your case is you are creating a redistributable which has the wow6432node issue. When your main installer goes to create the necessary registry keys, it checks if the machine is 64 bit. If it is, it places everything under the wow6432node key. So far everything is working, but then comes along the redistributable which contains the error. It then installs everything to it's own Wow6432node key which is now contained in the main installer. You can try testing this by installing your application to a 32 bit machine. You should then only see 1 wow6432node key, rather than nested keys. That 1 wow6432node key is the one that is created in error from the issue explained above which is contained in your redistributable.

(为澄清而编辑)

这篇关于InstallShield中的嵌套Wow6432Node密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆