[Python-Dev] Registry keys written by x64 installer

Michael Urman murman at gmail.com
Fri Jul 13 06:58:46 CEST 2007


On 7/12/07, Mark Hammond <mhammond at skippinet.com.au> wrote:
> Why wouldn't it work for x64 machines?  Is it simply because msilib only
> handles Intel64 when that flag is set?

Right - it sets the template summary to include Intel64, not x64.
Furthermore only one architecture may be set in the template summary,
so an installer may be only one of i386, x64, and Intel64 (although
the latter are assumed to also be able to run i386 binaries).

> What 32bit components should a 64bit build of Python include?  Perhaps you
> mean *could* - but IIUC, there is no intention to release 32bit and 64bit
> versions of Python in a single package (and further, IIUC, no intent on
> supporting a 32bit and 64bit installation on the same machine, regardless of
> packaging)

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.

> I'm afraid its not clear to me if you are agreeing with me (ie, that the
> registry keys are incorrect), or disagreeing with me (the keys are what you
> would expect a correct x64 install to create)?  I think you are agreeing,
> but sounding a caution that it might not be trivial to fix, but I would like
> to be sure...

The former, with hints of caution: it appears the unused 64-bit code
paths of msilib were created to best serve under incorrect
assumptions. With what the code would create (with or without Win64
set), it will not generate the 64-bit registry keys that the 64-bit
program will access. With Win64 set it will not even install except on
an Itanium system. If you just want to get to the keys it currently
sets, there should be an override parameter that causes the registry
API to read the 32-bit keys even in a 64-bit process, but I'm not
familiar with using _winreg.

If there's interest and I can get pointers to where the MSI files are
built, I can look into patching it. I don't have a convenient 64-bit
Windows machine around to test any changes, though.

-- 
Michael Urman


More information about the Python-Dev mailing list