Clearly, the names of our components are getting too long, but that's a matter for another post…
Many of you have noticed that the VS bootstrapper for SQL Express 2008 (and similarly the bootstrapper for Windows Installer 4.5) are installed by the Visual Studio 2008 Express SP1 products, but not by the VS SP1 patch that is applied to the non-Express versions. After noticing this, many of you have ask, "What's up with that?"
The short answer is that it's just one of those things that happens when two large development organizations get together, one group is using metric, the other is using standard and the next thing you know your Mars Probe is crashing; but I digress. The deal here is that we shipped SQL Express 2008 as part of VS Express 2008 SP1, so we included the necessary bootstrappers to support ClickOnce with the Express products. We didn't include SQL Express in the VS 2008 SP1 patch (non-Express) so we didn't include the bootstrappers. You can always install SQL Express 2008 for use with any SP1 edition of VS 2008, but the bootstrappers themselves are actually installed by VS, so we've got a gap. I've been talking to the VS team to get this sorted out, but in the mean time, here is a workaround to get the bootstrappers required for ClickOnce deployment of SQL Express 2008 onto your non-Express VS installations.
- Install any flavor of Visual Studio 2008 Express SP1.
- Go into the bootstrapper directory (C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages) and rename both the SqlExpress2008 and WindowsInstaller4_5 directories.
- Uninstall Visual Studio 2008 Express SP1.
OK, it's silly, but it works. Steps 2 & 3 are optional if you don't mind leaving the VS Express installation on your computer, but if you don't want to keep it around you need to rename the directories to prevent the uninstall action from removing them. You don't have to re-rename the directories because population of the ClickOnce Prerequisites doesn't have anything to do with the directory names, it just scans the sub-directories under Packages and builds the list based on the manifests it finds there. There you have it, have fun.