[python-win32] Pb SxS for install

Tim Roberts timr at probo.com
Sat Jan 31 01:23:55 CET 2009


Mark Hammond wrote:
> IIUC, we have determined that unless the CRT assembly is installed globally,
> every .DLL or .EXE which references the VC9 CRT must have a copy of that CRT
> next to itself.  For example, if python26.dll references the CRT and
> socket.pyd references the CRT via its menifest, and these files are not in
> the same directory, 2 copies of the CRT are needed - the socket module will
> *not* be use the one *already loaded* by python.  Or something like that :)
>   

Not quite, but almost.

A manifest resource has a number, like all resources.  That number
determines the "scope" of the manifest.  A manifest with number 1
becomes the default manifest for the whole process.  A manifest with
number 2 is a manifest only for the binary in which it is contained.

So, if python26.dll includes a manifest #2, that only applies to
python26.dll.  Any other DLLs must include their own manifests to point
to the CRT, otherwise you get an activation error.  But if python26.dll
includes a manifest #1, then it becomes the default manifest for the
process, and other DLLs do not have to include their own.

The complication happens when the exe has its own #1 manifest.  Does the
python26.dll manifest override it?  I'm not sure the answer is written
down anywhere.

Side-by-side is an abortion.  It is an incredibly baroque solution to a
problem that programmers outside of Redmond learned how to handle more
than a decade ago.

-- 
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.



More information about the python-win32 mailing list