Manifests, Microsoft.VC90.CRT and vc_redist

Peter Urbanec winehq.org at urbanec.net
Mon Jul 12 04:49:02 CDT 2010


  I'm trying to get my head around the mess generated by SxS, isolated 
apps, embedded manifests, local deployment and all the other "solutions" 
to DLL hell. It's hard enough to make it work on Windows, but making it 
work well under wine is another challenge.

In a nutshell, I'd like to ship a custom wine64 RPM package that can 
co-exist with distribution provided wine32 RPMs. I also want to make a 
couple of companion RPMs, which provide x64 apps that depend on my 
wine64 RPM. I don't want to require an installation of the x64 packages 
under Wine. i.e. I want to avoid the requirement to run vcredist_x64.exe 
for each user. The most obvious solution to this seems to be to include 
the DLLs from "Microsoft Visual Studio 
9.0\VC\redist\amd64\Microsoft.VC90.CRT" in the same dir as the x64 
application executable, known as "application local deployment".

Now, this is where I get confused. The VC redist files provide DLLs with 
version 9.0.30729.1, whereas the manifest embedded in the application 
has version 9.0.21022.8. When the 9.0.30729.1 VC redist files are 
installed in the windows dir, the associated policies will redirect 
requests for 9.0.21022.8 to use 9.0.30729.1, but this does not seem to 
work when the DLLs are deployed in the app directory.

Wine itself provides msvcr90.dll.so, which as far as I can tell doesn't 
play the manifest games or provide any particular version number.

Should I be using msvcr90.dll from VC redist?

Should I be using msvcr90.dll.so provided by wine? If so, how do I tell 
wine to ignore manifests and just load the DLLs found in the app dir?

Thanks for any insights you could provide.




More information about the wine-devel mailing list