Hi Rob,
Yes, you can install SQL Express as part of your applications installation, but you can not nest it inside your existing MSI. Windows Installer does not allow nesting of MSIs, so you have to create a wrapper that will handle running both the SQL Express installation and your own application MSI.
If you are building your application using Visual Studio 2005, the VS Bootstrapper is already designed to do this for you. Just add SQL Express from the list of Pre-requisites and VS will build your setup to automatically install SQL Express along side your application. If you're trying to roll you own, there are a number of different resources available to help you do this.
Check out the FAQ that I've just posted at the top of this forum, you will find links to information about installing SQL Express in quite mode and detecting if SQL Express is already on the computer.|||It would appear, then, that I'm in a catch 22 situation. As I mentioned in my original posting, my install is MSI-based, and it installs a vertical market suite of applications, only one of which needs SQL Server Express to be installed. As I also mentioned, I don't want to have to deal with the SQL Server issue if the user doesn't want to install that particular application. This suggests that SQL Server be installed after the application suite is installed. However, if the application in question is installed, the install has to start it once it's installed, meaning that SQL Server must be installed first. These two conflicting needs point to the need for SQL Server to be installed at an appropriate point during my suite install.
I'm using Wise for Windows Installer to develop my installer, and because I want only one entry for the entire application suite in the ARP applet, I don't think separating the install for each application in the suite into a separate MSI would be the way to go. Also, if each application were installed by a separate MSI, wouldn't each MSI have its own GUI. I'd like to have one GUI for the entire suite, preferably without having to roll my own dialogues from scratch. Hence, the install was constructed as a single MSI.
Is there no way to launch the SQL Server Express install as a nested install using one of the MSIs that come in the package, or are those MSIs inextricably tied into the setup.exe wrapper?|||
Hi Rob,
No, you can not nest MSI installation. This is a limitation of the Windows Installer technology.
I'm not sure you understood all of my post; it is totally possible to install SQL Server in quite mode, so that it doesn't show any UI at all. Read the quite mode install FAQ and the embedding paper to learn more about how to deploy SQL Express with your own application.
SQL Express will always install as a separate item in the ARP list. We have to do this for the purpose of discovery and patching. There is a bunch of technical mumbo jumbo, but the short version is that if you could install SQL Express so that it didn't show up in ARP, then we couldn't detect it from Microsoft Update, and there would be no facility for patching it. In the event that there is a security issue that needs to be patched, we must be able to detect SQL Express to patch it. If you hid SQL Express, you would be putting your customers at risk, which I'm sure you don't want to do.
Thousands of developers accomplish exactly what you are trying to do using a wrapper program to chain together multiple MSI based installations. You will need to write a wrapper program that contains the logic to determine which components need to be installed. In your case, you would simple have a wrapper that would allow customers to pick which parts of your application you want to install, if they pick the part that requires SQL Express, then your wrapper checks for SQL Express, and if it is not there, installs it. The wrapper acts as a unifying UI driver. (This is exactly what SQL Server does, we have a wrapper, Setup.exe, that combines multiple MSIs into a single experience.)
It's possible that Wise might even provide the ability to create wrapper programs, I'm sure there are a number of Wise support forums out there where you could find others who are facing this exact same issue. Start with the Wise web site and I'll be there is already a solution.
Regards,
Mike
No comments:
Post a Comment