Installation failing with “A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on this machine”

ISSUE DESCRIPTION:

Installation of Visual C++ 2010 or software that installs a version of VC++ 2010 runtime might fail saying that a newer version is already installed. Or it might be the installation of a different software that has this runtime added as a prerequisite. It is common for applications developed with the corresponding VC++ version to require VC++ redistributable. These packages include C Runtime (CRT), Standard C++, ATL, MFC, OpenMP and MSDIA libraries.

SYMPTOM AND INFERENCE:

The installation might show an error similar to-

"A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on this machine"

While the more common and indeed logical underlying cause would be the actual presence of a higher version of the runtime on the machine in installed state, the issue might occur even if VC++ is currently not installed on the machine (but had been installed at some point of time in the past).  Essentially there currently exist some remains of the installation of Visual C++ in terms of registry references that is causing this unexpected behavior.

RESOLUTION:

The first thing you want to do is to go to ‘Programs and Features’ and look for the presence of a runtime of later version, and uninstall it, if found. Do note that different VC++ runtimes do not interfere with each other:  for instance, the presence of VC++ 2010 will not hinder the installation of VC++ 2008. Once this has been looked into and the installation is still failing, you need to examine the logs.

To get more details on this failure, you can enable verbose logging on the machine as per https://support.microsoft.com/kb/223300 and rerun the setup of the product showing the installation.

To save time and avoid ambiguity you might want to directly download and run installation of the particular runtime that is failing. 

The verbose log will be formed at-

‘%LOCALAPPDATA%\temp’

named similar to

‘Microsoft Visual C++ 2010 x86 Redistributable Setup_20140710_094400154.html’

clip_image001Sample Log Excerpt

BlockIf: A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.... [7/10/2014, 9:44:0]A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine. [7/10/2014, 9:44:0]evaluating BlockIf:

[7/10/2014, 9:44:0] And: evaluating... [7/10/2014, 9:44:0] Equals: evaluating... [7/10/2014, 9:44:0]Current Operation value is Installing

[7/10/2014, 9:44:0] Equals evaluated to true

[7/10/2014, 9:44:0] LessThan: evaluating... [7/10/2014, 9:44:0]RegKeyValue: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86\Bld contains '40219' [7/10/2014, 9:44:0]all numeric characters - canonicalizing

[7/10/2014, 9:44:0] LessThan evaluated to true

[7/10/2014, 9:44:0] And evaluated to true

[7/10/2014, 9:44:0] BlockIf evaluated to true

Note the highlighted line above (and in the snapshot below) indicating the registry that is responsible for a newer version (40219) getting detected. You need to go to the registry editor and rename or delete this registry key (x86).

clip_image002

The installation should now go through.

Caution: Incorrectly editing the Registry can cause serious problems that may require you to reinstall your operating system. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs.

 

Content by: Ritwik Sinha