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.