11

I am using DeployMaster to build an installer for a 32-bit Windows application written in C++ using Qt.

The executable depends on the Visual Studio 2013 redistributable - i.e., the 32-bit Visual Studio 2013 redistributable must be installed by the end user, prior to running this application.

I have googled, and looked at other StackOverflow questions. In particular, this link provides the exact Registry key to check, but for the case of VS 2008.

I need VS 2013, not VS 2008.

However, ideally it will be a reliable registry check - not a programmatic solution - because I can easily check a registry key with a DeployMaster installer. (If the system is determined to not have the redistributable installed, it's also easy to have the DeployMaster installer kick off the installer.)

Does anybody know a reliable method, preferably using a Registry key, that allows to make it possible to determine if the 32-bit VS 2013 redistributable is installed on an end-user's machine?

Community
  • 1
  • 1
Dan Nissenbaum
  • 13,558
  • 21
  • 105
  • 181
  • Might work to figure this out yourself: run SysInternal's ProcMon on a machine (can be virtual) that doesn't have the redist installed yet and start the installation. That will reveal any registry keys it creates. Pick a suitable one (like those from HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall or HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products) and you're done.. – stijn Feb 11 '14 at 12:57
  • 1
    I *think* the key is `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum` (checking for `Install = 1`), but I would like confirmation that this or any answer is *reliable*. Good thought (though why should a programmer be forced to do that level of work just to see if a basic Microsoft runtime system is installed? That is another failure on Microsoft's part). – Dan Nissenbaum Feb 11 '14 at 13:00
  • 1
    yes that key is used as well probably - don't really agree with the pointing finger though.. In the end it's always somebody's fault, and I might as well eg claim it's DeployMaster's fault as they make you figure this out yourself :P since eg InstallShield has this functionality built-in for VC redists IIRC – stijn Feb 11 '14 at 13:05
  • 1
    @stijn InstallShield - another $1000 product that inspires you to "pay" for functionality to support another company's functionality that you must also pay for that isn't adequate. Good for them, though. – Dan Nissenbaum Feb 11 '14 at 21:50

5 Answers5

11

I'm using these reg keys: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x86 Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x64 Installed

I've confirmed that they appear only after the redist is installed, and they more closely match the ones for previous versions. e.g. VC++ 2010 is: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86 Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64 Installed

Nick Davis
  • 111
  • 1
  • 2
6

The key you need is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum.

lennon310
  • 12,503
  • 11
  • 43
  • 61
John Situ
  • 84
  • 1
  • 2
2

Just in case someone is looking at this, but is using NSIS to deploy their program.

You check:

ReadRegDword $0 HKLM "SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum" "Install"

If $0 equals 1, then it is installed. If not, it isn't.

Bruno Lubascher
  • 2,071
  • 14
  • 19
1

I found it here:

32bit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}
or
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}

64bit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}

This is probably better than the devdiv keys, as its the Windows key used to uninstall the msi, if its been installed. Now I just wish Microsoft's devdiv could talk to the Windows team so we can have a canonical place to detect this stuff, and a canonical name for Redistributable. Hint Microsoft, it ain't called 'minimum runtime'

gbjbaanb
  • 51,617
  • 12
  • 104
  • 148
1

For Visual Studio 2013 Update 5, 32 bit version (12.0.40664), the key is:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{8122DAB1-ED4D-3676-BB0A-CA368196543E}
Jac Goudsmit
  • 91
  • 2
  • 5