Freigeben über


Updated VC 8.0 runtime redistributable packages are included in Visual Studio 2005 SP1

I posted an item last week that described how to detect the presence of the Visual C++ 8.0 runtime files redistributable packages.  Over the weekend, a customer pointed out to me that Visual Studio 2005 SP1 includes modified versions of the VC redist packages.

The SP1 versions of the VC redist packages include the following changes:

  • The Windows Installer 3.1 requirement has been eliminated by rewriting a custom action included in the original MSIs so it does not use APIs that only exist in Windows Installer 3.x
  • The product codes were changed for each of the MSIs
  • The MSIs now implement the Windows Installer major upgrade feature to automatically upgrade systems that have the original VS 2005 version to the SP1 version

Because the product codes were changed, the detection mechanism that I described in my previous blog postwill not work for the SP1 versions of the VC redist MSIs.  The following steps can be used to check for the existence of the modified VC redist packages that are included in VS 2005 SP1:

  1. Call the MsiQueryProductStateAPI
  2. Pass in the product code for the package that you want to detect based on the list below
  3. Check the return value of this API.  If it is anything other than INSTALLSTATE_DEFAULT, the package is not yet installed

Visual C++ 2005 runtime files

Visual C++ 2005 SP1 runtime files

Visual C++ 2005 SP1 ATL Security Update runtime files

Visual C++ 2005 SP1 MFC Security Update runtime files

One additional note - the data files included with the Visual Studio deployment bootstrapper tool were not updated with the new SP1 detection mechanism.  This means that if you build a setup project in VS 2005 SP1 and include the VC redist package as a prerequisite, your setup will end up downloading and installing the VC redist package on systems that already have the original VS 2005 version of this redist package installed.  Because of the major upgrade functionality, this will not harm users' systems at all, but it will result in a slight time delay due to an unnecessary download and install.

<update date="11/19/2009"> Added information about VC++ 2005 and VC++ 2005 SP1 ATL Security Update packages. </update>

<update date="1/17/2012"> Added information about VC++ 2005 SP1 MFC Security Update packages. </update>

Comments

  • Anonymous
    January 27, 2007
    Bravo on removing the MSI 3.1 dependency for the VC8 redists (msm & standalone).  Now to revist our setup to see if we can remove MSI 3.1 (and it's reboot).  :)

  • Anonymous
    April 02, 2007
    I'm afraid I don't understand your last paragraph. "One additional note - the data files included with the Visual Studio deployment bootstrapper tool were not updated with the new SP1 detection mechanism.  This means that if you build a setup project in VS 2005 SP1 and include the VC redist package as a prerequisite, your setup will end up downloading and installing the VC redist package on systems that already have the original VS 2005 version of this redist package installed." Surely, this won't be downloaded, because the bootstrapper definition of the test will say that the file has already been installed.  Therefore, my application will not run correctly, as the prerequisite for VC 8.0 SP1 hasn't been fulfilled. Anthony Wieser Wieser Software Ltd

  • Anonymous
    April 02, 2007
    Hi Anthony - I'm referring to the bootstrapper tool that is used to build a setup.exe in the VS setup/deployment projects in this note.  The data files that the bootstrapper uses to detect whether or not each prereq package is installed was not updated with the new SP1 product codes for the VC redist packages.  This will cause detection to always return false, even if the VC redist SP1 package is already installed.  That means that if you use this bootstrapper for your setup, it will download and install the VC redist SP1 packages in some cases where it otherwise would not need to because it can incorrectly determine that it is not installed in cases where it actually is installed.  This won't harm your application functionality because the VC redist will eventually get installed, but it can cause a little longer installation experience because it could download unnecessary packages.

  • Anonymous
    April 02, 2007
    A reader of the previous post on my blog has posted two questions about using SP1 version of VCRedist.EXE

  • Anonymous
    February 29, 2008
    There are a several prerequisite dependencies that must be satisfied on a Windows system that does not

  • Anonymous
    February 29, 2008
    There are a several prerequisite dependencies that must be satisfied on a Windows system that does not

  • Anonymous
    January 29, 2009
    Question: I saw a couple of previous blog posts that you wrote about how to detect the presence of the

  • Anonymous
    March 26, 2009
    The comment has been removed

  • Anonymous
    January 16, 2012
    Visual C++ 2005 SP1 MFC Security Update runtime files (MS11-025) - GUIDs for all platforms •Visual C++ 2005 SP1 MFC Security Update Redistributable Package  (x86) - {710f4c1c-cc18-4c49-8cbf-51240c89a1a2} •Visual C++ 2005 SP1 MFC Security Update Redistributable Package  (x64)  - {ad8a2fa1-06e7-4b0d-927d-6e54b3d31028} •Visual C++ 2005 SP1 MFC Security Update Redistributable Package  (IA64)  - {c2f60bda-462a-4a72-8e4d-ca431a56e9ea}

  • Anonymous
    January 16, 2012
    Hi Srinivas Bringu (MS) - Thank you for these product codes.  I'll add them to the main blog post as well.

  • Anonymous
    October 31, 2016
    HelloCan someone here could explain the differences of these Redist 2005 versions? How are they differ to each other? I just understand that Visual C++ 2005 runtime SP1 is an update from Visual C++ 2005 runtime How about these redist?Visual C++ 2005 SP1 ATL Security Update runtime filesVisual C++ 2005 SP1 MFC Security Update runtime files

    • Anonymous
      November 07, 2016
      Hi aJeff - The redistributables for the ATL and MFC security updates are used to deliver security fixes for some of the VC++ runtime files. If an application is built with those versions of the VC++ runtime files, then they can package the corresponding redistributable packages with their installer in order to install the VC++ runtime files that the app needs.Other than the naming, these redistributables are not conceptually any different than the redistributable for the VC++ 2005 SP1 runtimes.
  • Anonymous
    January 30, 2017
    Hi. We have build our app using C++ 2005 redistributable package in version 8.0.50727.762 (for mfc80u.dll for example). Some of our customers has versions between 8.0.50727.4000-6000 and it cause a crash in our app. In our developer and test PCs there is installed version 8.0.50727.9185 which works fine. But we don't know where this version comes from. I can't find any information about this specific file version source. Can anyone help with that? Is there any list of all new 2005 redist upgrades and fixes? Maybe there is another way to know the patch number that have installed this dll?