http://bugs.winehq.org/show_bug.cgi?id=12018
--- Comment #1 from Anastasius Focht focht@gmx.net 2008-03-15 10:47:38 --- Created an attachment (id=11402) --> (http://bugs.winehq.org/attachment.cgi?id=11402) patch which prevents load failure of SxS-aware Microsoft runtimes
Hello,
you probably ran the setup with default Windows 2000 config. The installer ships newer Visual C++ library DLLs which are to be installed as as shared assemblies. Usually developers just include the appropriate Micro$oft merge modules into their msi project which take care of installing CRT, MFC and ATL runtime as shared side-by-side assemblies (WinSxS).
For pre-Windows XP versions there are special considerations taken. Windows 2000 and earlier have no concept of side-by-side assemblies nor fusion. Hence the shared assemblies get installed into system32 folder. Additionally they are installed into WinSxS in case the user later decides to upgrade the OS (in Windows 2000 and earlier they have no use).
In Windows XP and later shared assemblies are *never* to be installed in system32 (automatically taken care by installer).
When one of these newer SxS-aware runtimes are loaded, some checks for sxs/manifest related things are done:
- existence of specific activation context API - existence of some loaded in-memory libraries (fusion/.NET related) - load path (detect if loaded from system directory)
Attached patch works around this problem. In pre-Windows XP configurations it pretends that the checked activation context entry is not available (which is really the case in native Windows 2000 and earlier). This will keep the SxS-aware runtimes happy and no further checks are done.
Another solution would be to install the app with Windows XP+ configuration which prevents shared assemblies from being put into system32.
I think the patch should be taken into consideration because wine should support all windows versions (and their side-effects) correctly.
Regards