Mailbag: How to detect the presence of the Visual C++ 2010 redistributable package
Question:
I have seen your previous blog posts that describe how to detect the presence of the Visual C++ 2005 redistributable package and the Visual C++ 2008 redistributable package. I am creating an installer that requires the Visual C++ 2010 runtime files. How can I detect the presence of the Visual C++ 2010 redistributable package?
Answer:
Unlike the Visual C++ 2005 and 2008 redistributable packages, there are registry keys that can be used to detect the presence of the Visual C++ 2010 redistributable package.
Visual C++ 2010 redistributable package detection registry values
Visual C++ 2010 Redistributable Package (x86)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86]
Installed = 1 (REG_DWORD)Visual C++ 2010 Redistributable Package (x64)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64]
Installed = 1 (REG_DWORD)Visual C++ 2010 Redistributable Package (ia64)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\ia64]
Installed = 1 (REG_DWORD)
Alternatively, like in past releases of the Visual C++ redistributable package, you can use an algorithm like the one I described in my previous blog posts to detect the presence of the Visual C++ 2010 redistributable package on a system:
- Call the MsiQueryProductState API
- Pass in the product code for the package that you want to detect based on the list below
- Check the return value of this API. If it is anything other than INSTALLSTATE_DEFAULT, the package is not yet installed
Visual C++ 2010 redistributable package product codes
- Visual C++ 2010 Redistributable Package (x86) - {196BB40D-1578-3D01-B289-BEFC77A11A1E}
- Visual C++ 2010 Redistributable Package (x64) - {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
- Visual C++ 2010 Redistributable Package (ia64) - {C1A35166-4301-38E9-BA67-02823AD72A1B}
Visual C++ 2010 SP1 redistributable package product codes
- Visual C++ 2010 SP1 Redistributable Package (x86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
- Visual C++ 2010 SP1 Redistributable Package (x64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
- Visual C++ 2010 SP1 Redistributable Package (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}
<update date="4/12/2011"> Added product codes for Visual C++ 2010 SP1 redistributable packages. </update>
Comments
Anonymous
September 16, 2010
I have VS2010 installed, but I don't have these registry keys on my machine.Anonymous
September 23, 2010
Hi Martin - These keys are installed by the Visual C++ redistributable package, not by Visual Studio. Can you please double-check that you have the Visual C++ redistributable package installed in your scenario?Anonymous
October 14, 2010
The comment has been removedAnonymous
December 17, 2010
What is infurating is that this runtime should simply be part of Windows 7. Way too many things need it. It's just silly not to have it pre-installed or at the very least it should be part of the pre-reqs for ONE-CLICK installs.Anonymous
December 29, 2010
The comment has been removedAnonymous
December 30, 2010
The comment has been removedAnonymous
March 07, 2011
i check the registry editor in window 2007 server@Enterprisefor Visual C++ 2010 Redistributable Package (x64)the right directory is below:[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0VCVCRedistx64]Installed = 1 (REG_DWORD)can you do a check?Anonymous
March 08, 2011
Hi Jordan from China - Yes, that registry key looks like the correct one to check for the 64-bit VC++ 2010 Redistributable.Anonymous
March 29, 2011
From what I understand VC++ 2010 Redist is supported in 10 different langauges. Is there a way from registry to figure out which language of VC++ 2010 Redist is installed?Anonymous
March 29, 2011
Hi RN - The VC++ Redistributable is a multi-language package that displays setup UI in the language of your OS when you run it. The underlying MSI and files that are installed are the same for all languages. You shouldn't need to detect anything language-specific for this package, and instead can just detect whether it is installed or not in a language-neutral way.Anonymous
March 31, 2011
Since Visual Studio 2010 installs a version of the VC 10.0 runtime, what would we check for in this instance? We do not need to install the redistributable since Visual Studio installed a version of it. Would it be sufficient to check for both VS 2010 and the Runtime listed in ...VisualStudio10.0VCVCRedist? Or in this instance, should we still be installing the redistributable?Thank you.Anonymous
March 31, 2011
Hi Robert - Visual Studio 2010 installs a sub-set of the VC++ 2010 Redistributable, not the full package. You should not check for that sub-set package, and instead should check for and install the full redistributable in your scenarios.Anonymous
March 31, 2011
Thank you for your response and for the rest of your blog. It is very helpful.Anonymous
April 10, 2011
Does anyone have the full list of Visual C++ 2010 SP1 redistributable package product codes?x86 appears to be {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}, but it would be nice to have someone else validate that (and also get the x64/ia64 codes)[my apologies if this posts multiple times, something weird is going on with my machine...]Anonymous
April 12, 2011
Hi CMC - Here are the SP1 product codes. I'll also update the table in the main blog post with this information.Visual C++ 2010 SP1 Redistributable (x86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}Visual C++ 2010 SP1 Redistributable (x64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}Visual C++ 2010 SP1 Redistributable (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}Anonymous
April 12, 2011
Much appreciated!Anonymous
April 21, 2011
Hi Aaron,Is the Visual C++ 2010 SP1 Redistributable also suited for applications developed in Visual Studio 2010 without SP1?So is it enough to install the Visual C++ 2010 SP1 Redistributable or should we install both the Visual C++ 2010 Redistributable and the Visual C++ 2010 SP1 Redistributable on target systems?Anonymous
April 22, 2011
Hi Ton Grommen - The installer for the Visual C++ 2010 SP1 Redistributable will automatically upgrade the original Visual C++ 2010 Redistributable if it was previously installed on your computer, so you won't be able to install both of them on the same computer. You should be able to use the SP1 redistributable to run applications created by VS 2010 with or without VS 2010 SP1.Anonymous
May 01, 2011
Hi Aaron,Thanks for the provided information!How do you consider the point that only one VCRedist 2010 package can be installed at the same time (nomore SxS like previous VCRedists) ? For the approach using the Reg keys this doesn't distinguish between RTM and SP1 (SP2...). The approach using MsiQueryProductState API cannot be used when e.g. a SP2 is installed and we want to install a SP1 as we (right now) don't know the Product Code.For me I did an approach with FindRelatedProducts and query the product version based on a given Upgrade Code. The WiX code fragment to illustrating that approach is like following (sets property VC2010SP1REDIST_X86 if VCredist 2010 x86 SP1 is installed): <Upgrade Id='{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}'> <UpgradeVersion OnlyDetect='yes' Property='VC2010SP1REDIST_X86' Minimum='10.0.40219' IncludeMinimum='yes'/> </Upgrade>Best regards,TobiasAnonymous
May 02, 2011
Hi Tobias S - Thanks for posting this information. I agree that this approach of using the UpgradeCode and the FindRelatedProducts action makes sense for the VC++ 2010 Redistributable.Anonymous
May 09, 2011
Can this be detected by file location?Anonymous
May 10, 2011
Hi John F - If you wanted to, you could check the versions of the VC++ runtime files in the %windir%system32 directory on a computer to see if they are installed. If you do this, you should make sure that the files exist and have version number 10.0.30319 or higher.Anonymous
October 14, 2011
just one question. you are saying the registry keys are created when you install the redist or runtime and not when VS 2010 is installed. so, when you uninstall the redist or runtime, will those keys be removed? or just the status of the Install subkey be moved back to 0 instead of 1thanks muchAnonymous
October 14, 2011
Hi Veeru - The Installed registry value will be removed when the VC++ redistributable is uninstalled.Anonymous
April 03, 2012
Hello, I believe there's a third incarnation of VC++ 2010 runtime: 6A86554B-8928-30E4-A53C-D7337689134D, it's version 10.00.30319 (you have keys for versions 10.00.20506.1 (original) and 10.00.40219 (SP1). Not sure how much different it is.Anonymous
August 02, 2012
We are running various applications that need different versions of VC++ 2010 runtime. Do you have the keys for version 9.0.30729.6161, v10.0.303191 and v10.0.303 for both x64 and x86?Anonymous
August 05, 2012
Hi Vinny - Unlike previous versions of the VC++ Redistributable, updates for the VC++ 2010 Redistributable are delivered as patches instead of new releases of the MSI. That means that the product code is the same as the original product, and that also means that you cannot use only the product code to determine whether or not an update is installed.If you need to be able to detect the installation state of VC++ 2010 Redistributable updates, you can use registry keys like the following:[HKEY_LOCAL_MACHINESOFTWAREMicrosoftUpdates[ProductName]KB2544655]ThisVersionInstalled=YIn the above key name, the ProductName will be different for each version and processor architecture of the VC++ 2010 Redistributable. For example, in the VC++ 2010 SP1 x64 Redistributable, it will be Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219.Also, in the above key name, the KB number will be different for each update.Overall, my recommendation for the VC++ redistributable packages is to not bother to try to detect if the package is already installed. Instead, I recommend that you always install them during your installation process. In the worst case, it will already be installed and it will trigger a repair. The reason I recommend this is that I've seen enough cases in the past where the detection logic wasn't reliable and/or changed in future service packs, and that ended up causing problems for setup programs that tried to detect the install state.You also asked about a 9.0 version of the VC++ Redistributable. That is the VC++ 2008 Redistributable, and I've got a separate blog post about that version. You can find it at blogs.msdn.com/.../9384143.aspx.Anonymous
October 01, 2012
' WROTE THIS UP IN VB.NET - THOUGHT I'D SHARE' Tells you if Visual C++ 2010 Runtime is installedPublic Function IsVisualCPP10RedistributableInstalled() As Boolean Dim ret As Boolean = False Dim Check1 As Object = Nothing Dim Check2 As Object = Nothing Try If IntPtr.Size = 8 Then ' I'm Running as a 64-bit application Check1 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx64", "Installed", Nothing) Check2 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0VCVCRedistx64", "Installed", Nothing) If Check1 Is Nothing Then Check1 = CInt("0") If Check2 Is Nothing Then Check2 = CInt("0") If (CInt(Check1) = 1) Or (CInt(Check2) = 1) Then ret = True End If Else ' I'm Running as a 32-bit application Check1 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86", "Installed", Nothing) Check2 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0VCVCRedistx86", "Installed", Nothing) If Check1 Is Nothing Then Check1 = CInt("0") If Check2 Is Nothing Then Check2 = CInt("0") If (CInt(Check1) = 1) Or (CInt(Check2) = 1) Then ret = True End If End If Catch ex As Exception ret = False End Try Return ret End FunctionAnonymous
October 17, 2012
I'm having an issue while scanning a Windows Server 2003 x86 and detects the following vulnerability in reference to Microsoft Foundation Class (mfc100.dll) FOR Visual C++ 2010. It is detecting the wrong version 10.0.40219.325 and it should be 10.0.40219.1. I do see Visual C++ 2008 Redistributable Package for mfc90 VERSION 9.030729.6161. I do not see anything that indicates Visual C++ 2010 Redistributable Package 1, but I do see Microsoft Visual C++ x86 Runtime 10.0.40219 which is not version number the security software is expecting. Any ideas?Anonymous
October 17, 2012
Hi Mjocasio23 - I'm not sure I understand your scenario. Version 40219.325 is a higher version than 40219.1, so it sounds like the updated version of that file is already installed. Is your scanning software telling you that you still need to install a patch when it is already installed? If so, what exact scanning software are you using?Anonymous
October 18, 2012
It should be Version 40219.325 but the security patch install version 40219.1. The scanner is NessusAnonymous
October 18, 2012
Hi Mjocasio23 - Are you referring to this update - support.microsoft.com/.../2565063 If so, and if you've already installed it, then it is possible that there is a problem with the detection logic in the scanning software you're using. If that's the case, you'll likely need to contact the manufacturer to see if they have any known issues related to detection of VC++ redistributable updates.Anonymous
October 18, 2012
I see what you saying; they confirm that is the version they expecting to be used for that dll...Kind of stuck.... Do not know what to do....Anonymous
October 18, 2012
I take that back..... Yes that is the KB article and the version is suggesting for file mfc100.dll is 40219.325..... I under hand the software associated with the installtion of software is Microsoft Visual C++ 2010 Runtime version 10.0.40219.To my understanding the article is pointing to software Microaoft Visual C++ 2010 Redistributable x86 in a Winodws Server 2003 Machine. Is it possible the machine does not have the correct security update patch for this file.Anonymous
October 18, 2012
Hi Mjocasio23 - Do you know exactly what the scanning software is looking for when it determines that you have version 40219.1 instead of 40219.325? Is it a registry key, a version of a specific file (if so, which one), etc?Anonymous
October 18, 2012
Yes the scanner is specting version 40219.325 for mfc100.dllAnonymous
October 18, 2012
This is the outcome of the scannere:Program FilesMicrosoft Visual Studio 10.0VCredistx86Microsoft.VC100.MFCmfc100.dll has not been patchedRemote version : 10.0.40219.1Should be : 10.0.40219.325Anonymous
October 18, 2012
Hi Mjocasio23 - Have you confirmed that this computer has this security update package installed, and if so, can you double-check the version of that file manually (as opposed to letting the scanner check for you)? If the version is 40219.1, can you try to uninstall + re-install this security update package to see if it installs the correct version of mfc100.dll?Anonymous
June 13, 2013
Are these checks even necessary for windows 8? I can't seem to find any information regarding it, and some versions of win8 have the keys, some doesn't. Still the software seem to work on all windows 8 machines either way.Anonymous
June 14, 2013
Hi Sam - I'm not sure which exact versions of the VC runtimes are included with Winodws 8. However, in general, it isn't safe to assume that a given version of the VC runtimes are available on a given version of Windows. I'd always recommend trying to install the redistributable that includes the exact versions that your application needs.Anonymous
September 25, 2013
The comment has been removedAnonymous
September 30, 2013
Hi FastEd - In some cases, rebooting the computer will be enough to clear up this error message. If that doesn't help, then the suggestions at assortedtopics.blogspot.com/.../fix-for-windows-error-1500-another.html might help instead.Anonymous
November 06, 2013
Hi Aaron,Where did you find the product codes? I am looking for the correct product codes for Microsoft Visual C++ 2012 Redistributable (x86) and Microsoft Visual C++ 2012 Redistributable (x64), but I cannot find them.When I check my registry I see:Microsoft Visual C++ 2012 x86 Additional RuntimeMicrosoft Visual C++ 2012 x86 Minimum Runtime Microsoft Visual C++ 2012 Redistributable I am not sure which of these applications’ code I should use.Thank you in advanceAnonymous
November 06, 2013
Hi George Karadjov - I typically download the redistributable installer, extract the .msi and open it in the Orca .msi editing tool too determine the product codes. I believe that the "Minimum Runtime" and "Additional Runtime" are only installed by Visual Studio and aren't licensed for redistribution, so you shouldn't need to worry about detecting those packages.Anonymous
November 07, 2013
Thank you Aaron,I used similar approach and found out that for the redistributable package 'Microsoft Visual C++ 2012 x86' there are two msi. One for 'Microsoft Visual C++ 2012 x86 Additional Runtime' and one for 'Microsoft Visual C++ 2012 x86 Minimum Runtime'. I use the product codes from 'Microsoft Visual C++ 2012 x86 Minimum Runtime' and all 'is installed' checks work correctly. Here are the produce codes for the three updates if someone needs them:Microsoft Visual C++ 2012 x86 Minimum Runtime - 11.0.50727{2F73A7B2-E50E-39A6-9ABC-EF89E4C62E36}Microsoft Visual C++ 2012 x86 Minimum Runtime - 11.0.51106{E824E81C-80A4-3DFF-B5F9-4842A9FF5F7F}Microsoft Visual C++ 2012 x86 Minimum Runtime - 11.0.60610{E7D4E834-93EB-351F-B8FB-82CDAE623003}<--->Microsoft Visual C++ 2012 x64 Minimum Runtime - 11.0.50727{A2CB1ACB-94A2-32BA-A15E-7D80319F7589}Microsoft Visual C++ 2012 x64 Minimum Runtime - 11.0.51106{5AF4E09F-5C9B-3AAF-B731-544D3DC821DD}Microsoft Visual C++ 2012 x64 Minimum Runtime - 11.0.60610{2EDC2FA3-1F34-34E5-9085-588C9EFD1CC6}Thank you for the article AaronAnonymous
January 30, 2014
Aaron Stebner, really valuable information.Can you or someone please provide a list of product codes for VC++ 2012 (x64, x86 & ia64). I would like to check if VC++ 2012 Redistributable Package is installed or not using the bootstrap mechanism for my product.Looking for the list, Thanks in Advance.Anonymous
February 03, 2014
Hi Narendra - I think the information you're looking for is in the previous comment from George Karadjov. Can you give those product codes a try and see if they work in your scenario?Note - there is not an ia64 version of the VC++ 2012 redistributable.Anonymous
March 08, 2014
I am getting the missing msvcp100.dll error message on a windows 7 laptop.I have installed vcredist_x64 restarted and it seems to be installed but I still get the error.on boot. Can anyone advise how I might resolve the issue.Anonymous
March 08, 2014
I've found a solution to my error message.I had to install the 32bit dist (vcredist_x86)also as I think the sl_reader is a 32 bit software.Anyway I came across the solution here:jira.phoenixviewer.com/.../FIRE-11994If anyone has anything to add to my issue solution comments I'd appreciate that.All working fine now.Thanks for your interesting blog.Anonymous
April 17, 2014
Thanks Aaron and everyone else for the information. To add to George' list - here is what I am seeing for Visual C++ 2012 Update 4 on Windows 7:====Microsoft Visual C++ 2012 x86 Minimum Runtime - 11.0.61030{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}====Microsoft Visual C++ 2012 x64 Minimum Runtime - 11.0.61030{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}Anonymous
May 13, 2014
Thanks Tobias Alte, the product code (which I searched for long time) works for the VC++ 2012 update4.Can you tell me how to get the product code?Anonymous
May 16, 2014
Hi Kenny - You can use the Orca tool from the Windows SDK to view the contents of an MSI file to find the product code. There are other options too (using VBScript or PowerShell, etc) and you can do a web search to find more details about those options if needed.Anonymous
May 21, 2014
Hi guys! What about product codes for Visual C++ 2013? Cannot find them anywhere.Anonymous
May 22, 2014
Hi Eugene - You can find those product codes for yourself if needed. For example, the Orca tool from the Windows SDK will allow you to view the product code inside a .msi file.Anonymous
May 22, 2014
Hi Aaron, thank you for your answer. Unfortunatelly, I can't find a way to extract msi from vcredist_2013_x86.exe properly. I tried to run it with /c key - it didn't recognize it. And I tried to extract it as archive using 7Zip but I got only bunch of files with strange names like: "0", "u0", "u1", "u2" etc. But file "0" appeared to be xml with BurnManifest. It contains product codes (for x86: {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E};for x64: {A749D8E6-B613-3BE3-8F5F-045C84EBA29B}) so I tried to use them with <MsiProductCheck> in product.xml for redist package but no luck.I also looked what changes happen in HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall registry key (I'm working on Win8.1). Keys added during installation and removed after deinstallation are different: {ce085a78-074e-4823-8dc1-8a721b94b76d} for x86 and {7f51bdb9-ee21-49ee-94d6-90afc321780e} for x64. But they don't work with <MsiProductCheck> too. It's result is -1 (unknown product) even if they are installed.As far as I understand (and I am not an expert in this field) redistributable packages for VC++ 2013 are created using Burn. Maybe there is any other way to check whether such packages are installed?Anonymous
May 23, 2014
Hi Eugene - I'm sorry about that. I forgot that newer versions of the VC++ redistributable are packaged using Burn and that you can't extract the .msi files from the self-extracting packages like you could in pre-Burn packages.The best option I can think of is to install the VC++ redistributable package on a test machine and then use the tool and steps listed at blogs.msdn.com/.../434814.aspx to gather a list of installed .msi files on your computer and retrieve the product codes that way.Anonymous
May 26, 2014
Unfortunately I had no time to make the investigation Aaron wrote about. I chose another solution. Now I just use <RegistryCheck> instead of <MsiProductCheck> in my product.xml. I use keys I've found in registry before: {ce085a78-074e-4823-8dc1-8a721b94b76d} for x86 and {7f51bdb9-ee21-49ee-94d6-90afc321780e} for x64. Looks like that: <RegistryCheck Property="IsInstalled_Win_x86" Key="HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall{7f51bdb9-ee21-49ee-94d6-90afc321780e}" Value="Installed"/> <RegistryCheck Property="IsInstalled_Win_x64" Key="HKLMSOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall{7f51bdb9-ee21-49ee-94d6-90afc321780e}" Value="Installed"/> This works fine for me.Anonymous
August 13, 2014
Have some time to run Aaron solution the results after installing x86 Visual 2013 redistributable package is followingMicrosoft Visual C++ 2013 x86 Minimum Runtime - 12.0.21005
Microsoft Visual C++ 2013 x86 Additional Runtime - 12.0.21005Product code: {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}Product state: (5) Installed.Assignment: per machinePackage code: {E9934153-EAB1-4DA6-AA72-86C8BB1EDF2C}Version: 12.0.21005Publisher: Microsoft CorporationLanguage: 1033Installed from: C:ProgramDataPackage Cache{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}v12.0.21005packagesvcRuntimeMinimum_x86 Package: vc_runtimeMinimum_x86.msiHelp link: <a rel="nofollow" target="_new" href="http://go.microsoft.com/fwlink/?LinkId=133405">go.microsoft.com/fwlink</a>Instance type: 0Local package: C:WindowsInstaller12e31f3.msiInstall date: 2014�8140 patch packages.
Product code: {F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}Product state: (5) Installed.Assignment: per machinePackage code: {5703FD24-BF2D-4D14-AB2F-E415A0361E63}Version: 12.0.21005Publisher: Microsoft CorporationLanguage: 1033Installed from: C:ProgramDataPackage Cache{F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}v12.0.21005packagesvcRuntimeAdditional_x86 Package: vc_runtimeAdditional_x86.msiHelp link: <a rel="nofollow" target="_new" href="http://go.microsoft.com/fwlink/?LinkId=133405">go.microsoft.com/fwlink</a>Instance type: 0Local package: C:WindowsInstaller12e31f9.msiInstall date: 2014�8140 patch packages.
Anonymous
September 06, 2014
I have Win 7 64 bit and already had installed both x86 and x64 Visual C++ 2010 redistributable 10.0.40219 on my computer, I tried to download an update for a program and it said it couldn't install as it detected a newer version of the C++ 2010. I went into control panel and deleted both programs and it still wouldn't work. So I went to Microsoft to download these 2 programs again and both fail to install. I checked the registry and the key for VisualStudio does not exist, as it indicates below. I can't figure out where my other C++ programs (2005, 2008, 2012, 2013) exist to check if that key is there.Part of My Log:BlockIf evaluated to falseBlockIf: A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.evaluating BlockIf:And: evaluatingEquals: evaluatingCurrent Operation value is InstallingEquals evaluated to trueLessThan: evaluatingRegKeyValue: HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86Bld does NOT exist.returning BoolWhenNonExistent's value: falseLessThan evaluated to falseAnd evaluated to falseBlockIf evaluated to falseGlobal Block Checks no blocking conditions foundCreating new Performer for MSI itemAction: Performing Action on MSI at c:1a3bc65644edadf1b2010dvc_red.msiLog File C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt does not yet exist but may do at Watson upload timeCalling MsiInstallProduct(c:1a3bc65644edadf1b2010dvc_red.msi, EXTUI=1 Returning IDOK. INSTALLMESSAGE_ERROR [Access is denied. ]MSI (c:1a3bc65644edadf1b2010dvc_red.msi) Installation failed. Msi Log: Microsoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txtPerformOperation returned 1603 (translates to HRESULT = 0x80070643)Action completeOnFailureBehavior for this item is to Rollback.Action: Performing actions on all ItemsAction completeAction completeFinal Result: Installation failed with error code: (0x80070643), "Fatal error during installation. " (Elapsed time: 0 00:00:05).WM_ACTIVATEAPP: Focus stealer's windows WAS visible, NOT taking back focusSending Manifest ReportAnonymous
September 08, 2014
Hi JD McCutcheon - The log information that you listed above shows that the VC++ redistributable installer did not find a newer version of the VC++ redistributable installed. There should be more detailed information about what is causing this failure in the log named %temp%Microsoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt. Can you please zip that file, upload it to a file server (such as http://onedrive.live.com) and then reply back here and post a link that I can use to download that log file and take a closer look?Anonymous
September 11, 2014
Aaron, try this: onedrive.live.comAnonymous
September 12, 2014
Hi JD McCutcheon - I clicked on that link, but it says that you're not currently sharing anything. Can you please double-check the sharing settings for the logs that you uploaded?Anonymous
September 12, 2014
I'm sorry I've never used this before. See if these work, otherwise I'll need your email address.onedrive.live.com/redironedrive.live.com/redirAnonymous
September 15, 2014
Hi JD - I was able to download the logs from these new links. Unfortunately, the logs that you uploaded only show the information from before (a newer version of the VC++ redistributable is already installed). The logs do show what registry keys it found that made it decide that this was the case: HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx64Bld contains '40219' HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86Bld contains '40219'Do you have a log named C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt on your computer? If so, can you please upload that one too?If not, can you please try to use the steps described at blogs.msdn.com/.../487096.aspx to see if you can locate and uninstall any other versions of the VC++ 2010 redistributable from your computer?Anonymous
September 17, 2014
Hey Aaron. This file: HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio is not there. The "VisualStudio" file is missing, that's part of my problem. Also this log is not there: C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txtAs I don't have any previous versions (that I know of) on my computer.I can delete both of my C+++ 2010 files, but if I try to download them again, I get the error message and I have to use a restore point, to get them back on my computer.Here is the msiinv file, but I don't see any previous versions there either.onedrive.live.com/redirAnonymous
September 17, 2014
Hi JD McCutcheon - If your OS is 64-bit, that registry key will be at the following location: HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudioCan you please check there as well?Also, I looked at your msiinv output, and it shows that the following versions of the Visual C++ 2010 redistributable are installed: Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219
Microsoft Visual C++ 2010 x86 Redistributable - 10.0.40219Product code: {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
Can you please try removing those products using steps 3-7 in the blog post at blogs.msdn.com/.../487096.aspx and see if that helps resolve the issue that you're seeing?Product code: {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
Anonymous
September 23, 2014
The registry key is under the Wow6432node. So that checks out. Thanks!I can easily remove those 2 C++ 2010 files, because they are both in my Control panel under add/remove programs, but then the new ones won't install and I have to use a restore point to put them back on. This whole issue came about when I was trying to install a program. I found out the issue was the "KB2918614 Windows Security Update". I deleted it and the program was able to install. However I am still unable to download the updated C++ 2010 files. At this point, I don't know that I need to, but it is a vexing problem.Anonymous
September 23, 2014
Hi JD McCutcheon - So far, the only log files that you have uploaded have showed the VC++ 2010 redistributable failing because a newer version was already installed on your computer. Do you have log files that you can upload from the scenario where you uninstall the versions of the VC++ 2010 redistributable that you currently have installed and then try to install the other versions?Also, it sounds like your original problem was that you tried to install an application, and it tried to install the older versions of the VC++ 2010 redistributable behind the scenes, those failed and as a result, you couldn't install the application. In your most recent post, you said that you've been able to install your application now. If that's the case, then you can probably just leave the current versions of the VC++ 2010 redistributable installed and not worry about trying to go back and install the older versions.Anonymous
July 25, 2015
How do I find where the C++ thing is located VIA control panel?Anonymous
July 27, 2015
Hi Ryan Green - The VC++ Redistributable does not allow the user to choose an install path. It always installs to a location under the PC's Windows directory (the exact location varies from version to version). You shouldn't need to know the exact location of the files - applications will find them in their installed locations if they need them.Anonymous
October 25, 2015
My product installs different VC Redistributable packages that include VC2005, 2008, 2010 and so on. I am creating a installation diagnose utility that user would run when the product does not function correctly. One of the functions of diagnose utility is to check if all the required redistributable packages are installed or not. As per the advice in this blog, I use MsiQueryProductState to check if particular VC Redistributable package is installed or not. Since, my product installs VC 2010 (Base) version of redistributable package, and if the version of VC 2010 Installed on the system is SP1, my diagnose check fails. How can I check which version of VC 2010 is installed on the system, so that even if user has a higher version than what my product requires, the test case passes. In future, if microsoft releases say SP2 for VC2010, my utility should detect that too. It should not be guid specific. Is there any way out?Anonymous
October 26, 2015
Hi Himanshu - I don't know of a way to reliably implement detection logic that would be future-proof like you're describing. You might be able to parse registry values under the Uninstall sub-key like what is described at stackoverflow.com/.../how-to-detect-visual-c-2013-redistributable-package, but since it is not officially documented as supported, there's no guarantee that a future service pack would continue to work with this detection logic. There are some other detection ideas discussed at stackoverflow.com/.../detect-if-visual-c-redistributable-for-visual-studio-2012-is-installed that might be helpful in your scenario too.Anonymous
September 20, 2016
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86Anonymous
January 06, 2019
Why each VC++ update is different, the whole VC++ Redist dev is very confusing!I just wanna check if VC++ 2010 x64/x86 is installed or not? Any patch or update is not different!Your registry check method does NOT work for VC++ 2010 version 10.0.40219.I just installed VC++ 2010 version 10.0.40219 on a clean Windows install and there must be a way to detect the presence of ANY VC++ 2010 version/patch/update?During all these years, from 2005 to 2017 many VC++ versions and updates released, they never had a unique way of installing, what a big disappointment is MS! An Example: They release W10 1809 with the maximum number of fatal bugs possible!Anonymous
February 13, 2019
.\2005\x64\SP1MFC\vcredist_x64.EXE /Q.\2005\x86\SP1MFC\vcredist_x86.EXE /Q.\2008\x64\SP1MFC\vcredist_x64.exe /Q.\2008\x86\SP1MFC\vcredist_x86.exe /Q.\2010\x64\SP1\vcredist_x64.exe /quiet /norestart.\2010\x86\SP1\vcredist_x86.exe /quiet /norestart.\2012\x64\Update4\vcredist_x64.exe /install /quiet /norestart.\2012\x86\Update4\vcredist_x86.exe /install /quiet /norestart.\2013\x64\Update5\vcredist_x64.exe /install /quiet /norestart.\2013\x86\Update5\vcredist_x86.exe /install /quiet /norestartrem .\2015\x64\Update3\vcredist_x64.exe /install /quiet /norestartrem .\2015\x86\Update3\vcredist_x86.exe /install /quiet /norestart.\2017\x64\RTM\vc_redist.x64.exe /install /quiet /norestart.\2017\x86\RTM\vc_redist.x86.exe /install /quiet /norestartmsiexec /x {ad8a2fa1-06e7-4b0d-927d-6e54b3d31028} /qnmsiexec /x {710f4c1c-cc18-4c49-8cbf-51240c89a1a2} /qnmsiexec /x {5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4} /qnmsiexec /x {9BE518E6-ECC6-35A9-88E4-87755C07200F} /qnmsiexec /x {1D8E6291-B0D5-35EC-8441-6616F567A0F7} /qnmsiexec /x {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5} /qnmsiexec /x {ca67548a-5ebe-413a-b50c-4b9ceb6d66c6} /qnmsiexec /x {33d1fd90-4274-48a1-9bc1-97e33d9c2d6f} /qnmsiexec /x {042d26ef-3dbe-4c25-95d3-4c1b11b235a7} /qnmsiexec /x {9dff3540-fc85-4ed5-ac84-9e3c7fd8bece} /qnrem msiexec /x {d992c12e-cab2-426f-bde3-fb8c53950b0d} /qnrem msiexec /x {e2803110-78b3-4664-a479-3611a381656a} /qnmsiexec /x {5fb2083a-f3cc-4b78-93ff-bd9788b5de01} /qnmsiexec /x {2ff11a2a-f7ac-4a6c-8cd4-c7bb974f3642} /qn