Manifests, Microsoft.VC90.CRT and vc_redist
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