We are looking to start building internally used software in 64 bit, and found this morning that installing the x64 VS 2013 redistributable either uninstalls or makes inaccessible the x86 dlls. We have a lot of software and do not want to rebuild everything in one go for a hard cutover. Is there a reasonable way to install both versions of the redistributable packages so they co-exist, so that a migration may be done instead of a hard cut from one build to the other for everything? Development machines with Visual Studio 2013 installed have no issue, as it provides both sets of dlls and makes them both accessible at the same time.
Turns out the issue seems to be the x64 redistributable clobbering the registry entry. The registry entries for the redistributables can be found here:
When x86 version is installed, it adds it's own key to whatever exists. When the x64 version is installed, it deletes the other keys (in this case the already installed x86 key) and then adds it's own. The dlls are there, just not properly referenced so they can be used.
The quick solution here is to install the x64 redist first, THEN the x86 version, and then both will be usable without issue.
Why the x64 clobbers but the x86 doesn't is beyond me.
After installing VC++ 2013 update for an x86-based application, the x64 Visual C++ 2013 runtime libraries are missing. For example, Installing the “Visual C++ Redistributable 2013 x86 v12.0.30501” removes binaries for non-target architectures i.e “Visual C++ Redistributable 2013 v12.0.21005” x86 and x64!
The 12.0.30501 version of the VCRedist can be downloaded from https://www.microsoft.com/en-us/download/details.aspx?id=40784
Resolution - install https://support.microsoft.com/en-us/kb/3138367 This fix makes sure that both versions of the Visual C++ redistributable are visible when you add or remove programs after installation of the update.
Affiliation - Microsoft Support Engineer