[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