Jim said:
I have a Vista Ultimate OS, and Windows Installation Cleanup Utility shows
two versions installed: v8.0.50727.42 and v8.0.56336. Do I need to remove
one of these and if so, which one? OR, do I need to remove both and
install
version v8.0.50727.762 (the SP1 version)? I've been having problems with
Microsoft Visual C++ runtime errors. Any help would be appreciated.
Hi Jim,
In theory, you can have as many versions of the C++ Runtime installed as you
want, or need. The runtime files get installed in the "Side-by-Side" cache,
C:\Windows\winsxs. Each version gets its own unique directory. So for
example, you could have 2 or more versions of msvcr80.dll, one installed in:
C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.42_none_db5f52fb98cb24ad
and the other in:
C:\Windows\winsxs\x86_microsoft.vc80.crt_14d7a2d4c3f54a2b_8.0.56336_none_db6d3dc5a3d168c
Applications built with Visual C++ typically have a "manifest" which tells
the application what specific side-by-side DLL versions are acceptable. So
when App1 goes to load msvcr80.dll, it will look in the first directory, for
the version of msvcr80.dll it likes best. App 2 may look in the second
directory instead, to find a specific version of msvcr80.dll it likes. If
the app does not request a specific version, the Side-by-Side cache manager
will load the "best" DLL, according to some internal algorithm. If an
application mandates a specific version of a DLL in its manifest, and that
version is not present on the system, then you will get an error, even
though there may be several other versions of the DLL on the system.
This mechanism is designed to get past the problem of "DLL Hell" (belive it
or not

.
The exact list of runtine versions you need depends on what applications you
have installed, and what Runtime DLL versions they are mandating (if any).
But apart from a small amount of disk space (these are not big files)
there's not much overhead in having several versions of the Runtime
installed. So you don't need to aggressively trim the list.
There were some problems installing some versions of the VC++ Runtime on
Vista, because the Installer package did not seem to understand UAC
correctly. The Write permissions in the winsxs directory are fairly tightly
controlled and some files didn't get written - I seem to recall ATL80.DLL
was particularly affected by this. So that may be the source of the errors
you're getting?