http://bugs.winehq.org/show_bug.cgi?id=7189
------- Additional Comments From focht@gmx.net 2007-15-06 16:14 ------- Hello,
--- quote --- The next problem is that the installer tries to run executables requiring msvcr80.dll, which requires activation context support. --- quote ---
yes it's annoying. There are some ways to work around the VC 8.x CRT manifest checks. This works for all applications which use manifest bound executables (e.g. compiled with #pragma comment(linker,/manifestdependency:.. )
- pretend to be a pre-fusion OS (Windows NT, Windows 2000). To do this, don't export "FindActCtxSectionStringW" from kernel32.dll (remove it from kernel32.spec and recompile).
or
- pretend to be in .NET CLR context by having mscoree.dll and pgort80.dll (profiler instrumentation runtime) loaded into memory. The CRT explicitly looks for these dlls in memory, they just need to be LoadLibrary()'d. Loading fake dlls seems to succeed this one.
The following conditions need to be satisfied if previous ones failed:
- don't ever load any VC 8.x CRT sxs assemblies from system32 directory. (requires loader override) - implement FindActCtxSectionStringW to return a valid activation context
- dll was loaded from winsxs storage or - if loaded from another folder, manifest must reside in same folder
---
Summarizing, the removal of "FindActCtxSectionStringW" from kernel32 exports is currently the fastest way to work around these problems.
For the time being (with no wine FindActCtxSectionStringW() impl in place) I suggest a patch that comments out this export from kernel32.spec. This would enable other bugreports which have sxs-related activation context showstoppers to go further too.
Regards