Do I need both x64 and x86 versions of the C++ redist

If I have both the x64 and the x86 version of a Microsoft C++ Redist package, can I uninstall the x86 version? If I did uninstall the x86 version, would the x64 version cover the dependencies on the x86 package?


Solution 1:

Do I need both x64 and x86 versions of the C++ redist? If I have both the x64 and the x86 version of a Microsoft C++ Redist package, can I uninstall the x86 version?

It depends on whether you use 32-bit and/or 64-bit VC++ programs.

If I did uninstall the x86 version, would the x64 version cover the dependencies on the x86 package?

No, you need the x86 version to run 32-bit VC++ programs, and you need the x64 version to run 64-bit VC++ programs.

Technical Explanation:

Most programs do a lot of things in similar ways. To avoid “reinventing the wheel”, they will use libraries which are collections of pre-written functions that can be used to reduce the amount of work that has to be done. That’s good, but if every program included the common functions in the programs, then a lot of space would get wasted because they are all identical. Plus, if a bug were found and fixed or an improvement made in the library, every program would have to be recompiled to include the fix/improvement.

To solve these limitations, instead of including the functions internally, most programs will reference those functions stored externally in a .dll file. This way, they can all share the same code which reduces wasted space and can all be upgraded at the same time by replacing the single library file.

A program can be 32-bit or 64-bit, which among other things, determines the size of variables and such. The problem is that 32-bit code is not compatible with 64-bit code, so a 32-bit program must use 32-bit libraries and a 64-bit program must use 64-bit libraries.

Therefore, if there is a 32-bit program, foobar.exe and a 64-bit program, foobar64.exe, both of which use VC++ libraries, then foobar.exe will need \x86\msvc*.dll and foobar64.exe will need \x64\msvc*.dll; they cannot use libraries of the wrong “bitness”.

Solution 2:

Should not be removed.

Look at the installed operating systems that provide large vendors. There are present all packages 2005/2008/2010/2012 ... x86 and x64. Because developers diverse programs may use any of these libraries.

Solution 3:

The x86 and x64 redistributables cover x86 and x64 code, respectively and only. That is, the x64 version does not cover x86 code, nor vice-versa.

As for whether you can remove them in general, that is hard to say. That depends on what applications you have and whether they need those redistributables. It is a fairly safe practice to remove them, see whether that presents a problem, and put them back.