Microsoft ends Visual C++ Redistributable Chaos
Programs designed with Visual Studio may require a specific version of the Microsoft Visual C++ Redistributable to run. The requirement resulted in the installation of a large number of Visual C++ Redistributable packages on Windows PCs.
It is not uncommon to see multiple Microsoft Visual C++ Redistributables on a system that were installed by software programs, through updates, e.g. security updates, or manually by the system administrator.
Redistributables are stored in a central location so that any program installed on the system may access the files if required.Â You can check out our detailed guide on Visual C++ Redistributables here for additional details.
Microsoft changed the system significantly with the release of the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019. A baseline image is provided for these redistributable packages so that it is no longer necessary to install different versions separately on target systems.
In other words: if the Visual C++ 2019 redistributable is installed on a system, it is no longer necessary to install the Visual C++ 2015 or 2017 redistributable packages as these are supported automatically as well.
Microsoft provides the following example on the "The latest supported Visual C++ downloads" support page.
For example, installing the Visual C++ 2019 redistributable will affect programs built with Visual C++ 2015 and 2017 also. However, installing the Visual C++ 2015 redistributable will not replace the newer versions of the files installed by the Visual C++ 2017 and 2019 redistributables.
This is different from all previous Visual C++ versions, as they each had their own distinct runtime files, not shared with other versions.
A support article on Microsoft's Docs website provides further information:
From Visual Studio .NET through Visual Studio 2013, each major release of the C++ compiler and tools has included a new, standalone version of the Microsoft C Runtime (CRT) library. These standalone versions of the CRT were independent from, and to various degrees, incompatible with each other. For example, the CRT library used by Visual Studio 2012 was version 11, named msvcr110.dll, and the CRT used by Visual Studio 2013 was version 12, named msvcr120.dll. Beginning in Visual Studio 2015, this is no longer the case. Visual Studio 2015 and later versions of Visual Studio all use one Universal CRT.
The Universal CRT is a Microsoft Windows operating system component. It is included as part of the operating system in Windows 10 and is available for older operating systems, Windows Vista through Windows 8.1, by using Windows Update. In addition, local deployment of the Universal CRT is supported, with some restrictions.
Windows administrators may download the Universal C Runtime with a click on the following links:
- x86: vc_redist.x86.exe
- x64: vc_redist.x64.exe
- ARM64: vc_redist.arm64.exe
Older Visual C++ Redistributable packages for Visual Studio still need to be downloaded and installed separately, or delivered as part of a program's installation process.
The Visual C++ All in One Installer is also useful when it comes to installing redistributable packages on Windows systems.
The Universal C Runtime is a step in the right direction. While it does not take care of older C++ Redistributable packages, it did so starting with the release of the Visual C++ 2015 Redistributable.
Now You: How many Redistributable packages are installed on your system? (via Born)
in a nutshell: Visual C++ 2015, 2017 and 2019 all share the same redistributable files
all the previous versions are not involved
Hmm, not much for me as 2015 is the newest on my PC.
Theres 2005, 2008, 2010, 2012 and 2013 packages.
Nothing saved by this move.
I wish I can see which programs use these packages.
I wonder what negative thing people will come up with about this one!
Some weird grammar: “as well as these are supported automatically as well.”
Martin, I believe is in Europe. Also, I believe Martin uses English as a second language.
He believe Martin does quite well, all things considered.
Microsoft ends nothing. It they wanted to end C++ madness they would provide all C++ updates through Windows Update instead letting the user to explode their brains searching each update separately for their respective C++ versions. Actually there are some guys that are offering some C++ all-in-one packages that solve in much way this problem FOR FREE, with no MS money reward. Microsoft’s brilliant volunteers are mostly the 50% gold medal of this amazing amount of bloatware and ‘updateware’ named Windows. Probably it’s named this way because every day there are a large number of people desiring throwing his computer across their windows.
It’s not like you have to scurry the Web or anything.
Hi John G.
Can you please name or link some of these C++ all-in-one packages?
After testing and using five or six all-in-one packages, this is the most efficient for all C++:
It works like a charm, no problem experienced ever. Enjoy yourself! :)
Try to visit this site- https://forums.mydigitallife.net/threads/repack-visual-c-redistributable-runtimes-2019-06-13.76588/
the Visual C++ Redistributable Runtimes installer can be found here: https://rebrand.ly/vcredist
Hope this helps..
PS. Please support martin by giving a small donations guys.
always take care.
Yes. I downloaded one of those packages, from Major Geeks I think it was, a while back. No more problems with applications complaining I don’t have the right C++ version.
@John G, I wholeheartedly agree with you that Microsoft should just deliver all various redistributable runtimes through Windows Update anyway. This should reduce the number of reboots required to install some software. For example, I had to reboot THREE TIMES to get VMware Workstation to update from 15.x to 15.y all because the installer itself required the latest runtimes (both x86 and x64 variants both of which required restarts themselves individually) even before the software continued its own upgrade! Has anyone confirmed whether or not Microsoft is current or is planning to do this?
How can I determine whether I can uninstall some older c++ redistributables? (i.e. older than 2015)
There is no easy way to do this. I suggest you check out the “try” section of our guide: https://www.ghacks.net/2017/04/10/microsoft-visual-c-redistributable-information/
I have the following Microsoft Visual C++ redistributables installed:
Nothing from 2015 ??
This is chaos. This is madness. This is insanity.
The update changes nothing about that.
2017 includes 2015.
Remove them all. Get the latest ones, in your case 2005-2008-2010-2012 and the new 2015~2019 that replaces 2017, both x64 and x86 from here: https://github.com/CNMan/MicrosoftHotfixesList/tree/master/Microsoft_Visual_C%2B%2B_Redistributable_Package It’s enough to have just one version per “year”, whatever program that needs it doesn’t care about the version number. The latest ones are the safest ones. I personally would remove everything and then try all installed programs to see if some won’t start anymore. Many times those c++ things are just left behind after a program has been uninstalled..and other times not, my webcam on my old acer laptop doesn’t work without c++ 2005 for example. The latest ClipGrab needs c++ 2017 etc etc.. its a damn hassle for sure.
I even had some of the latest versions already installed, so I mostly uninstalled the older ones.
Use this: https://forums.mydigitallife.net/threads/repack-visual-c-redistributable-runtimes-2019-06-13.76588/
For a while I’ve been relying on the vcredist-all package from chocolatey.
The most comprehensive up to date supported version is here:
This is nice. It even installs the VCredist 2005 properly – Microsoft’s own installer fails to place one file in its folder and I always had to do it manually then re-register the dll via CMD.
Also, abbodi1406 should be trustworthy, he’s from MDL forums.
I downloaded and installed https://github.com/abbodi1406/vcredist
It appears to have worked fine, but now I see that from 2012 on, I have a “Minimum Runtime” and an “Additional Runtime” for each version.
I’ve searched, but haven’t been able to find the difference between the “minimum” and “additional” versions.
Do I need both in each case?
Based on the software on my computer, is there a tool that can tell me which C++ versions I actually need?
Ignore the years, look at the versions. 2015-2019 are all v14, that’s all. If C++ v15.0 comes out then it will just add to the list of C++ runtimes you will need to install.
MS has a website the maintains the latest minor version of each major release.
Make it easy for yourself :-)
I’ve been using these packs for a long time, they are fine. The source is the mydigitallife forum.
What’s the news here? Microsoft did this years ago.
“For example, installing the Visual C++ 2019 redistributable will affect programs built with Visual C++ 2015 and 2017 also.”
I read that to mean: “Installing the latest CRT may screw your earlier programs and force all your customers to update to a newer version. (That’s how we make our money; msvs).”
then I sugest you go back to school for a cource in comprehensive reading.
* older installation are still valid, so no need to “force update your customers”
* VC redistributable are free of charge, so no extra money comes out of this for M$ (write it like you can read it) so on the contrary the work they’ve done here did cost MS money and they have no direct return on it.
* I’m no emplyoyee nor afiliated with MS, but I do want to aplogise to you that Ms is trying to make life a bit easier.
*They could have made it even more easy by uninstalling the older versions when installing the last version applicable, but thet you would have reason to complain as your application no doubt checks on version 15.654754.7487.57568 and that version would be gone.
“*They could have made it even more easy by uninstalling the older versions when installing the last version applicable, but thet you would have reason to complain as your application no doubt checks on version 15.654754.7487.57568 and that version would be gone.”
I beg your pardon but this is an insane concept itself, because Microsoft is now offering at its site all C++ latest versions only, not minor ones, older ones or whatever they could be named. So it’s not fair for the users that they are releasing updates over updates that can’t be used for specific programs that required such minor version. Where they can be found?
According to the exposed facts, MS should offer all 20 versions of C++ or not?
Good job, MS. Why can’t you even include a date / version number in the new filename?
The developmentally disabled are complaining justifiably that MS is disrepecting the ‘retarded’.
This does nothing 90% of my versions are old than this.
2008 had 5 versions of x86 and x64.
Can MS explain, what they made in EVERY runtime so important and incompatible, that we need to install all this “C++ mess”? Objects are changed? OOP? Virtual table? I never believe there is no SINGLE solution for all C++ programs. Just question of qualification (of MS developers).
Currently Installed (Power User / Software Developer)
C++ 2005 Redistributables: 5
C++ 2008 Redistributables: 7
C++ 2010 Redistributables: 2
C++ 2012 Redistributables: 2
C++ 2013 Redistributables: 2
C++ 2017 Redistributables: 2
If I can replace this with 1, I’ll be more than happy ._.
You don’t need to have the total 20 versions installed, only just the last version of each redistributable package of C++ per year. According to Microsoft they all have backward compatibility, so you need only six installed (or eleven if you have 64bit system).
Sorry, I forgot to make this question: where did you find all those minor versions of each C++? Microsoft only offers the last major version of each one, and they seem to be unavailable.
Am I the only one that views this as a non-issue? I could be missing something, but I don’t see the harm in having a bunch of these installed, aside from a slightly longer list of installed programs and a negligible number of MBs used up on my disk. In all the years and among the hundreds (thousands?) of workstations I’ve worked on, I was mildly inconvenienced exactly 1 time by the fact that there were multiple vcredistribs installed. I had to reinstall a vcredistrib to address a software issue and I wasn’t sure which version the program used, so I reinstalled all three of them. I don’t feel like this is the “hell” that people are making it out to be. I know I can’t speak for everybody, so I would be happy to hear a thoughtful rebuttal to this. I’m still going to posit that at least some of the people complaining are merely doing so because they will bash Microsoft over literally everything, big and small.
The main problem: there is no way to get six major C++ updates through windows update system.
Did they make a fundamental change to the linker to somehow allow parts of libraries (and the runtime) to have ABI-compatibility across multiple msvc versions? I think this is probabaly not that magical.
The Microsoft visual C++ Redistributable install run-time components that are required to run C++ applications. Wonderful article. Thanks for sharing.
ACL IT Academy – C training Institute in Kolkata
Exactly as it once worked on the good old Visual Studio 6.0 (1998). Then MS invented the manifest…
I wonder if somebody can say very clearly:
If I uninstall *all* previous versions, and then install *only* the latest one – is it enough then for *all* applications to run, including older apps?
(Or any older distros have to still be installed?)
>>If I uninstall *all* previous versions, and then install *only* the latest one â€“ is it enough then for *all* applications to run, including older apps?
If you are asking “If I install the 2019 redistributable, can I safely uninstall the 2008, 2012, and 2013 redistributables?” then the answer is No.
What you can do, if you have both older and newer versions of a single redistributable (multiple versions of one particular year), is keep the newest version of that one particular year, and delete the older versions of that one particular year.
To quote John G:
>>[You need] the last version of each redistributable package of C++ per year.
To quote Slaskfader:
>>Itâ€™s enough to have just one version per â€œyearâ€… The latest
For example, in a previous post in this discussion, Ivan Lazerov listed the redistributables on his system. Here are the versions of Microsoft Visual C++ 2008 Redistributable (x64) he has installed:
As long as he keeps the newest one installed (v9.0.30729.6161), he can uninstall the older ones (v9.0.21022; v9.0.30729.17; and v9.0.30729.4148).
This I am sure is very clear to most but I would love someone to post what the list of installed looks like on their system, so I can be sure I know what should be and what I can remove. I am still learning things and trying to understand is much easier when I can see it.
I would like to know what is the latest version of VC++ 2017 redistributables (I am using the version v14.16.27027.1).
My software is still compiled with VC++ 2017, can I use the 2019 redistributable?
Also, starting with the VC++2015 is each version of redistributables in sync with an update of Visual Studio? Or it does not matter and there are multiple versions of redistributables for the same version of Visual Studio?
It’s all included in the Universal C Runtime redistributable VC 2015-2019 are included (thus VC 2017). It’s really been a long time coming for this since it has always been painful over the years to provide the correct CRT redistributable or provide links to download it along with commercial software. The thing that still stinks now is that x86 and x64 are separate and sometimes software that leverages both x64 and x86 components get out of sync when another piece of software (typically x64) updates only that UCRT version and then there are mismatches between the x64 and x86 versions. But it’s better than it used to be.