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

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”.