Nested Wow6432Node key in InstallShield

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-07 18:27:51

问题


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.


回答1:


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.

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.

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.

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.

(edited for clarification)




回答2:


For a 64-bit system you can create one 64-bit installation and set Yes for your components 64-Bit property.

Or:

Disable( WOW64FSREDIRECTION );   

//... call register function

Enable( WOW64FSREDIRECTION );  


来源:https://stackoverflow.com/questions/8113081/nested-wow6432node-key-in-installshield

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!