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:
Create a parent directory for the package named SqlExpressSP2.
Under SqlExpressSP2, create the localized resource directory named EN.
Files in the SqlExpressSP2 directory
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.
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
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.)
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.
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
Anonymous
August 23, 2007
PingBack from http://msdnrss.thecoderblogs.com/2007/08/23/diy-sql-express-sp2-bootstrapper/Anonymous
September 03, 2007
One new subscriber from Anothr AlertsAnonymous
November 16, 2007
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".Anonymous
November 16, 2007
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. MikeAnonymous
December 05, 2007
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.Anonymous
August 27, 2008
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.Anonymous
October 27, 2008
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.Anonymous
October 27, 2008
The comment has been removedAnonymous
October 28, 2008
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 - daveAnonymous
October 28, 2008
The comment has been removed