so I tried doing wine pywin32-212.win32-py2.6.exe first. This fails immediately as described in http://bugs.winehq.org/show_bug.cgi?id=13844 It seems to terminate because it tries to get a handle to the loaded copy of mscoree.dll and fails (because there isn't one).
The installer seems to have been created by python's distutils.
Mark Hammond seems to be well aware of low level issues that affect the installer, see e.g. http://bugs.python.org/issue5075 so perhaps he could explain why the installer expects mscoree.dll to be resident...
This is explained here: http://bugs.winehq.org/show_bug.cgi?id=6880#c7 (I guess it's the same issue)
Copy and paste:
--- snip --- I've seen quite some applications that fail in the end like this one: 0009:Call kernel32.GetModuleHandleA(011bf1d4 "mscoree.dll") ret=00c5936f 0009:Ret kernel32.GetModuleHandleA() retval=00000000 ret=00c5936f Then ExitProcess. --- snip ---
This has nothing to do with this bug. The application uses dynamic msvc 7.1 runtime, which implicitly pulls mscoree.dll in.
Normally mscrt __crtExitProcess() calls just ExitProcess() but on newer versions a call to __crtCorExitProcess() is made to ensure proper shutdown of managed parts (even if you don't use managed = .NET code).
CorExitProcess() basically does this:
--- snip --- hModule = GetModuleHandle("mscoree.dll"); if (hModule != NULL) { pfn = (PFN_EXIT_PROCESS) GetProcAddress( hModule, "CorExitProcess"); if (pfn != NULL) pfn(status); } --- snip ---
If mscoree module or the export is not found it causes no harm. It works as designed.
The reason for this additional (implicit) shutdown code is you have no control whether a part of operation system or application dll (3rd party/injected) might pull in managed stuff thats why this code exists.
Regards