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:
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.
"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."
So how does this help the end user if can still install the older ones? Doesn't replace newer ones, but you still get an install of the older one. So when installing games, it sounds like you will still get VC++ install bloat. In the future, it should be limited hopefully to just one VC++ install forever.
This all has roots in the good old days of windows (aka 3.0 and 3.1). Back in those days you had the common dialog .dlls and such, and installing an application could be a nightmare because one app would use version 1.1 while another app would use version 1.12, and those two versions could not be used/installed side by side, as everything was dumped in the windows system directory.
Thus, MS came up with a way to version things like we see today, and it's a much better solution than dumping everything in one directory and hoping for the best. But as we see, every version creates yet another install entry, and the end user must be diligent to remove older versions if they really are not needed. I periodically uninstall the lower versions for the same VC++ redistrib year.
Still going to have a "problem" when installing older games as they will want to install VCRest by default, even if they have "modern" installers from GoG, Steam, or what have you.
Visual C++ runtimes etc should have been included with Windows across the board so that the mess would never have been present in the first place. Same for DX components etc.
These were removed so windows would fit on a CD instead of a DVD
Unwise in my opinion as many have slow internet to this day.