DIY SQL Express SP2 Bootstrapper


I’ve waited far too long to communicate this disappointing news to everyone, so here it is…

I’m not going to be releasing the SQL Express SP2 Bootstrapper manifests that I had discussed in a long ago blog posting. I’ll spare you the sob story of my efforts to create this; suffice it to say that some requirements arose that complicated an official release and priorities changed over time. If you work in the software industry you know how it goes. So that brings us to…

My feeble backup plan

Most of the complications (ok, all of them) that I ran into were related to packaging up the manifests so they could be downloaded and installed. (Seriously, it’s a long story, so don’t ask.) The manifests themselves are pretty straight forward and only required some minor tweaks of the existing RTM manifests. There is nothing to stop me from sharing those updates with you in this blog and giving instructions on how to use them.

DIY SQL Express Bootstrapper

Technically, the bootstrapper, or the VS Generic Bootstrapper as I like to call it, refers to the technology created by the Visual Studio team to allow any developer to deliver specific sets of functionality as prerequisites that can be checked for and automatically installed by both ClickOnce and MSI based installers built with VS. The framework for building your own prerequisite is documented on MSDN in the topic Adding Custom Prerequisites. A more end to end treatment of the technology was printed in MSDN magazine back in 2004 in the article Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation. These are both recommended reading for anyone delving into the land of creating a bootstrapper manifest. Feel free to take a look at those article now if you want, I’ll wait until you’re done.

The SQL Express bootstrapper is composed of five pieces:

  • The product manifest that describes the non-localized pieces of the package
  • The package manifest that describes the localized pieces of the package, such as the messages associated with specific error codes.
  • A license file containing the SQL Express EULA.
  • A custom executable that Microsoft created to check to see if SQL Express is installed or not.
  • The actual SQL Express installation package.

    All five of these pieces is available to you, so you can create your own SP2 bootstrapper by creating a few directories and copying the files into the right place. These instructions assume a default installation of Visual Studio 2005 and also that you have not redirected VS to an alternate bootstrapper package directory.

    Creating the directory structure

    The default directory for bootstrapper packages is at C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages. Do the following:

  1. Create a parent directory for the package named SqlExpressSP2.
  2. Under SqlExpressSP2, create the localized resource directory named EN.

    Files in the SqlExpressSP2 directory

  3. Copy the contents of the product manifest that I’ve modified for SP2 (located here) and create a file in this directory named product.xml.
  4. Copy the file named SqlExpressChk.exe from the SQL Express 2005 RTM bootstrapper package (located at C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\SqlExpress) into your SP2 version.

    Localized files in SqlExpressSP2\EN

  5. Download (or copy if you’ve got it already) the installer package for SQL Express SP2 from the Microsoft Download Center. (Note: This particular flavor of the manifest is specific for the 32-bit only install of SQL Express, which is named SQLEXPR32.EXE.)
  6. Copy the EULA from the SQL Express install location and save it to the name license.txt in the EN directory. By default it is at C:\Program Files (x86)\Microsoft SQL Server\90\EULA and is named License_EXPR_ENU.txt.
  7. Copy the contents of the manifest I’ve modified for SP2 (located here) and create a file in this directory named package.xml.

    Test your spankin’ new bootstrapper package

    That’s really all there is to do. You should now be able to launch Visual Studio 2005 and see SQL Server 2005 Express Edition SP2 listed in the prerequisites dialog.

    There’s always a catch

    There are a few known limitations with the package that is created using this method, here are the gotchas:

  • This set of manifests does not handle upgrades, only fresh installs.
  • SqlExpressChk.exe is limited to only the default instance name, SQLEXPRESS. It won’t detect other named instances.
  • This set of manifests is specific to the 32-bit only installer package. If you want to use the WoW enabled package (for installing on 64-bit platforms), you would need to make some changes to the manifest. (This would be a good point to go back and read those MSDN articles about the Generic Bootstrapper if you haven’t already.)

    Other bootstrapper solutions for SQL Express

    I know of at least one other description of a DIY SQL Express SP2 bootstrapper that was mentioned in a comment of the original post on the topic. Check out IGrocholski’ blog post on this same topic. There are some difference between the approaches, particularly in discovery. You may also find other implementations by searching on the MSDN forums.

    I’m always happy to see community contribution, so feel free to share you own implementations with the rest of us by posting comments.

       

– Mike

Comments (10)

  1. anothr user says:

    One new subscriber from Anothr Alerts

  2. JeffBean says:

    There is a typo in the package.xml file. In the element:

    <String Name = "InsufficientHardward">The current system does not meet the minimum hardware requirements for SQL Server 2005 Express Edition. Contact your application vendor.</String> the name should be "InsufficientHardware", not "InsufficientHardward".

  3. sqlexpress says:

    Actually, it was supposed to be InsufficientHoward. There’s this guy on the team named Howard who just isn’t working out…

    OK, not really, I’ve updated the posting to correct the typo, thanks for pointing that out.

    Mike

  4. lmajewski says:

    When publishing ClickOnce I keep getting a warning:The value of the ‘PublicKey’ attribute in ‘SQL Server 2005 Express Edition SP2’ does not match that of file ‘C:Program FilesMicrosoft Visual Studio 8SDKv2.0 BootstrapperPackagesSqlExpressSP2ensqlexpr32.exe’. even when using the key from your package.xml. What is going on? Luckly, it is only a warning and publishing finishes successfuly.

  5. william.ykng says:

    May I know how to create a bootstrapper for SQL Server 2008 Express with appropriate parameters in the manifest file for use with VS 2008 SP1? Thanks.

  6. david@windward.net says:

    Please reconsider.

    First off, many of us have created programs using Sql Server Express assuming in part that we have the bootstrapper – it is a key part of making the install of our product seamless. We depend on you for something you promised us, and have provided up till now.

    Second, this is a classic 1 person puts in some time, or tems of thousands put in identical time. If you don’t do this then person after person after person has to go download and install the program, figuring out what to do each step.

    Third, if you, with all of the very specific knowledge you have, cannot do it – then how on earth can any of us do it? I tried to create a bootstrapper 18 months ago and when I contacted MS for support I was escalated through 4 layers of support, finally got someone on the MS Build team, and it took him 6 weeks to figure it out. And this was for the provided KB908002 bootstrapper which MS had shipped – but didn’t work. You’re it – if you don’t do it we’ll never have it.

    This is important to a lot of people – please reconsider.

  7. sqlexpress says:

    Response to David –

    The SQL Express 2005 SP2 bootstrapper was released as part of Visual Studio 2008 RTM, so you can either move to that product to get that level of the SQL bootstrapper or you can install the VS 2008 Express product and then copy the entire SQL Express bootstrapper folder into the location used by the VS 2005 prerequisite system.

    You may also be interested to know that we released the SQL Express 2008 bootstrapper as part of VS 2008 Express SP1 so that you are covered when you need to move to the SQL 2008 product line.

    – Mike

  8. david@windward.net says:

    Hi;

    That’s good news that you have it in VS 2008.

    Now a question, we are using VS 2008 and are not getting it. I just ran MSBuild and got:

    Microsoft (R) Build Engine Version 3.5.21022.8

    [Microsoft .NET Framework, Version 2.0.50727.1433]

    Copyright (C) Microsoft Corporation 2007. All rights reserved.

    I appear to have the bootstrappers installed in the following directories (I have VS 2005 also installed because we have 1 project that uses J#):

    C:Program FilesMicrosoft SDKsWindowsv6.0A

    C:Program FilesMicrosoft Visual Studio 8SDKv2.0

    What do I need to do to get the VS 2008 bootstrapper, and thereby the Sql Server Express SP2 bootstrapper?

    And when we switch, where do I put the bootstrapper files because I have to make sure we get the J# and KB908002 bootstrappers.

    thanks – dave

  9. sqlexpress says:

    Dave –

    The best people to answer this question are the ones that spend time in the Visual Studio Setup and Installation forum at http://social.msdn.microsoft.com/forums/en-US/vssetup/threads/. This is where the folks that built the Generic Bootstrapper answer questions and they are the ones that incorporated the SQL bootstrapper package into VS.

    The only reason I could imagine that you don’t have the SQL 2005 SP2 package installed with VS 2008 is if you did not select the option to install SQL Express during VS isntallation. (Or it wasn’t offered because you had it already.) I don’t know for sure if the VS install logic ties the bootstrapper packages to the installation of the matched component in this case, but the folks on the forum will.

    – Mike