VC Redistributable – What is it?
Programs and applications are generally made to rely on a shared set of libraries. One of the ways Microsoft supplies these is through a redistributable package. These are released and usually updated through its service life for each release of Visual Studio/Visual C++.
What’s different about VS2015?
In parallel with the release of Windows 10, Microsoft factored a great deal of the runtime out of the shared libraries and into the operating system itself. This is the Universal C Runtime (UCRT). The UCRT ships with Windows 10 and is updated and maintained like any other operating system component.
What about older operating systems?
Windows XP (and probably Server 2003/2003 R2) – Microsoft no longer provides updates for Windows XP. Because of this, the Visual Studio team made special provisions in the VC redistributable to provide the UCRT on these systems. We should never have to deal with the UCRT directly on XP.
Windows Vista/Server 2008 through Windows 8.1/Server 2012 R2 – Microsoft decided to distribute the UCRT for these OS versions as part of Windows Update. This is where we see the various KB issues come into play. More on this later.
How do we get the UCRT on older systems?
According to the Microsoft documentation, the VC redistributable packages are supposed to install the UCRT for systems without it. (See bullet 3 under “Distributing Software that uses the Universal CRT” from the more information link below.) However, some systems are having other issues getting the UCRT installed.
First of all, our partners should always keep their machines patched and up-to-date. That is best practices and we should always take the opportunity to encourage them to do that.
To date, Microsoft has made 2 versions of the UCRT as KB items.
KB2999226 – https://support.microsoft.com/en-us/kb/2999226
This version corresponds to the originally shipping version that came with Windows 10. It should now be considered superseded to the next version.
KB3118401 – https://support.microsoft.com/en-us/kb/3118401
This version corresponds to the Windows 10 November 2015 update and is currently the one that we should install.
In both cases, there is a prerequisite servicing baseline the operating system should be in.
- Service Pack 2 for Windows Vista and for Windows Server 2008 (KB948465)
- Service Pack 1 for Windows 7 or Windows Server 2008 R2 (KB976932)
- April 2014 update rollup for Windows 8.1, and Windows Server 2012 R2 (KB2919355)
In all cases, the earlier service levels of these operating systems are no longer under support by Microsoft. No mention in the prerequisites mentions Windows 8 specifically. If a client is using that, it will need an upgrade to 8.1 + the rollup.
What could prevent KB2999226 or KB3118401 from installing individually or as part of the redistributable?
The UCRT MSU included in the VC redistributable is installed by making a call into the Windows Update service and the KB can fail to install based upon Windows Update service activity/state:
- If the machine has not updated to the required servicing baseline, the UCRT MSU will be viewed as being “Not Applicable”. In the case of the April 2014 roll-up, there are known issues with that update as documented in the link above.
- If the Windows Update service is installing other updates when the VC redistributable attempts to install, you can either see long delays or errors indicating the machine is busy. This one can be resolved by waiting and trying again later.
- If the Windows Update service is in a non-ready state, you will see errors reflecting that.