[Python-Dev] Registry keys written by x64 installer

"Martin v. Löwis" martin at v.loewis.de
Fri Jul 13 09:49:12 CEST 2007


> I suspect I'm still missing something here.  The title of the page you
> referenced before is "Using 64-Bit Windows Installer Packages" - I suspect
> that is different than a 32-Bit installer package installing a 64bit
> program!

Right. You cannot easily have a 32-bit installer install 64-bit
programs. That will normally not work, as Windows will silently
redirect all registry keys to the Wow6432Node, so it won't
"see" the registry keys that the Win64 program sees.

The only way to "see" the same keys as a 64-bit process would
do is to specify KEY_WOW64_64KEY when opening the key.

>> Agreed. I was just making clear that I'm not familiar with what the
>> MSI includes, and whether any of the components in a 64-bit install
>> should be 32-bit or not. With the msilib code as is, it appears to be
>> all or nothing, or rely on tweaking a global between calls to
>> start_component.
> 
> Yes - that is a bit of a shame, as having 32bit components would allow more
> flexibility (eg, allow a 64bit install of Python to work with an IIS
> configured for 32bit extensions), but that's something we can deal with
> later if necessary.

Can you elaborate? It's incorrect for a Win64 installer to make the
executable components Win32. A 64 bit pythonxy.dll cannot work in
a 32-bit IIS - it's a different instruction set. That's not something
that you can fix by just installing things differently.

> using _winreg is (almost) like using the API directly.
> RegDisable[/Enable]ReflectionKey appears to let the 32bit process see the
> real keys - I'm not aware of how 64bit apps would enable that reflection,
> but it probably doesn't really matter for our purposes.

They can specify KEY_WOW64_32KEY.

Regards,
Martin


More information about the Python-Dev mailing list