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, t...@probo.com Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32