Home > Programming > Visual Studio 2005 SP1 Experiences

Visual Studio 2005 SP1 Experiences

January 19, 2007
Today I thought I would mention some of my experiences of using VS 2005 SP1. First off, for those who have not installed it yet, you can download it from http://www.microsoft.com/downloads/details.aspx?familyid=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&displaylang=en. Some people have reported issues with the install time for the SP, but I have not personally encountered this on the machines I have installed it on. The slownewss of the install is meant to be due to the architecture of Windows Installer and how it performs in-memory signature verifications. I suppose it helps to have 4GB of physical memory installed on your dev box <gg>. IMHO, the Visual C++ side of VS 2005 was already pretty stable, but there is no harm in applying the SP to make sure you are as up to date as possible. Microsoft still seems to be working on a post SP1 update which will iron out the issues which Visual Studio has with the new UAC features on Windows Vista. This update is currently in beta testing and can be downloaded from http://www.microsoft.com/downloads/details.aspx?familyid=FB6BB56A-10B7-4C05-B81C-5863284503CF&displaylang=en.

One area I have worked quite a lot with is the VS 2005 Bootstrapper which I have used in quite a few projects. When I was working with my former employer Soft-ex, I was responsible for developing the Bootstrapper which was used to install their various products. It seems that this type of program is now the MS recommended route to installing prerequisite requirements for your Windows application. I have also created a number of new perquisites for the Bootstrapper including one for MSXML6 (x86) and MSXML6 (x64). For those who would like to find out more about the Bootstrapper, you might want to check out Chris Smith’s Bootstrapper SDK at http://blogs.msdn.com/chrsmith/archive/2006/03/10/Bootstrapper-SDK-R1.aspx

Anyway, the VS 2005 Bootstrapper comes with a number of pre packaged prerequisites including one which will install the VC++ redists. This redist file is the well known vcredist_x86.exe file. For some good background reading on the issues with this, check out http://www.codeproject.com/cpp/vcredists_x86.asp. For this redist the boostrapper uses a MSI Product check to see if the redist has already been installed. That way it can determine if the VC redists are already installed on a machine. The problem I have found in the SP1 version of this file is that the check uses the same Product code. This means that on a machine which already has run the VS 2005 Gold vcredist, it will look like it already has the runtimes installed but your program was built with VS 2005 SP1 and requires the updated files which it provides. If you then attempt to run your program you will get the classic error message that "This application failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem".

Currently I know of no way of avoiding this issue, short of reauthoring the vcredist file, reworking the check which the Bootstrapper uses for this file (This would normally be the file C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\product.xml) or statically linking your app! Perhaps this will be fixed for SP2. You have been warned!

Categories: Programming
  1. Unknown
    March 8, 2007 at 4:34 pm

    Thanks for the very useful information about the broken product.xml in the vcredist_x86 bootstrapper. My hack was to comment out the line containing the check of the product code thusly:
     <!– <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/> –>
    This will force the installation of the crt redist package on every install but it seems to work albeit with a little wasted install time. It was either that, or jump through some VB coding hoops in the deployment project, time for which was not available.
    I wonder why they didn\’t update the product.xml along with the bootstrapper. As you say, maybe they will in SP2.
    Again, thanks for the very useful post.
    ChuckDines overat aolperiodcom

  2. PJ
    June 10, 2007 at 1:52 am

    Just a follow up on this blog:
    As you probably know the VS 2005 SP1 redists are now available from the MS web site at http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=en.
    and the Post SP1 update for Vista is available from http://www.microsoft.com/downloads/details.aspx?familyid=90E2942D-3AD1-4873-A2EE-4ACC0AACE5B6&displaylang=en.
    What I did and what I would suggest people do is develop their own customized version of the vcredist for SP1 for x86 (and x64 if you develop for this platform also) and integrate them into the bootstrapper directory structure. That way you can easily pick which prerequisites to include. On my main dev machine, I have the following items available:
    Microsoft Data Access Components 2.8
    .NET Framework 2.0
    Crystal Reports for .NET Framework 2.0
    Microsoft Visual J# .NET Redistributable 2.0
    Microsoft Visual Studio 2005 Report Viewer
    Visual C++ Runtime Libraries (x64)
    * Visual C++ SP1 Runtime Libraries (x64)

    Visual C++ Runtime Libraries (x86)
    * Visual C++ SP1 Runtime Libraries (x86)
    Windows Installer 2.0
    Windows Installer 3.1
    SQL Server 2005 Express Edition
    * MSXML6 (x86)
    * MSXML6 (x64)
    The items marked with a "*" are packages which I created myself following the information from Chris Smith\’s Bootstrapper SDK. The SP1 packages I created should become defunct when / If MS fix this issue in a post SP1 or SP2 fix for VS 2005.

  3. Fred
    November 3, 2007 at 5:13 pm

    For "Visual C++ SP1 Runtime Libraries (x86)", it seems to work fine by changing in product.xml:
    <MsiProductCheck Property="VCRedistInstalled" Product="{A49F249F-0C91-497F-86DF-B2585E8E76B7}"/>
    <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="3"/>
    <MsiProductCheck Property="VCRedistInstalled" Product="{7299052b-02a4-4627-81f2-1818da5d550d}"/>
    <BypassIf Property="VCRedistInstalled" Compare="ValueGreaterThanOrEqualTo" Value="5"/>
    I\’ve found the keys here:
    and for the value 5, I\’ve found it by looking at the log file created during the installation.

  4. February 2, 2014 at 8:03 pm

    Hi! I understand this is sort of off-topic but I had to
    ask. Does managing a well-established blog like yours require
    a lot of work? I am completely new to blogging however I do write in my diary on a daily basis.
    I’d like to start a blog so I will be able to share my
    own experience and views online. Please let me know if
    you have any kind of suggestions or tips for new aspiring
    blog owners. Appreciate it!

    • February 16, 2014 at 6:54 pm

      That’s a bit of an open ended question, but I think the thing which keeps a user coming back to a blog is making sure you keep it up to date with informative and regular updates. Good luck.

  1. No trackbacks yet.
Comments are closed.
%d bloggers like this: