3

For my application, I need to install the main application and allow users to pick and choose one or more additional features to install. I tried to run the main msi and have a custom action to install other feature msi files. However, it doesn't work since MSI doesn't support nested installation. Should I build a window application and give the users the choices and internally call msi files sequentially? The additional msi files are custom applications that we built. They are not pre-requisites. We separated these features into different msi files because we want to make changes to the features msi files without recompile the main msi file. Please help!

Thank you. Amy Pham

Amy Pham
  • 33
  • 1
  • 1
  • 4
  • What are the other MSIs? If they are pre-requisites such as SQL Server 2005 Express, the VS installer component supports installing them as part of the installation process. –  Dec 23 '09 at 17:27
  • These msi files are not pre-requisites components. These msi files are custom applications that we built. – Amy Pham Dec 23 '09 at 17:33
  • What tool do you use to create your MSI? How about adding these other applications as features to your MSI, i.e. the result would be a single MSI. – Dirk Vollmar Dec 23 '09 at 17:40
  • I use Visual Studio to build my installers. The reason why we separated additional features into different msi files is because we want to making changes to the features msi files without recompile the main msi. If there are changing to a feature, users can just run the feature msi file independently without worrying about the main application. Please let me know if you don't understand my setup. I really need help since my manager is expecting me to have a solution. – Amy Pham Dec 23 '09 at 17:55

2 Answers2

1

As MSI does not support nested installations (yet) you will have to create a so-called bootstrapper. This is a separate .exe file normally named setup.exe. The purpose of this exe is to (download and) install the pre-requisites of your MSI before your MSI is launched.

A bootstrapper can e.g. be generated using Visual Studio.

See this related question:

How to create installer inside another installer?

Community
  • 1
  • 1
Dirk Vollmar
  • 172,527
  • 53
  • 255
  • 316
  • Thanks Divo, I was hoping that you are online. I saw some of your answers and thought that you would be the perfect person to help me out. These msi files are not pre-requisites. These msi files are custom applications that interact with the main application. From what I understand, a bootstrapper is to install pre-requisites only. For my scenarios, I will run the main msi and provide a user interface dialog box to allow users to pick additional application. For all additional application that are checked, I need to install those msi files. Please help. Thanks – Amy Pham Dec 23 '09 at 17:42
  • Then maybe this question might also be interesting to you: http://stackoverflow.com/questions/295138/how-to-deploy-multiple-projects-in-a-single-msi – Dirk Vollmar Dec 23 '09 at 17:52
  • since my features are msi files, I don't know how to do conditional installs. I thought I could use custom action to install these msi files but as you pointed out, msi doesn't support nested installation. – Amy Pham Dec 23 '09 at 18:10
  • Unless you're going to require MSI 4.5 or better, nested/chained MSI installations are not supported. divo's referenced article on merge modules (MSM) is what you want, I think, particularly if the custom apps are not separately installable. – DaveE Dec 23 '09 at 18:33
1

I think the short answer is that you can't do what you described using an MSI. Since Windows Installer only allows a single MSI to be installing at a time, you may need to write a non-MSI application that can present a UI, and install the MSIs sequentially based on the user's choices. You can use the MSIs as external resources if you don't want to compile them into your main setup program.

Kevin Kibler
  • 13,357
  • 8
  • 38
  • 61
  • Thanks CodeSawyGeek, I decided the same thing. I just wanted to ask this question just in case if there are different solutions that I don't know. I already developed an application to do this. – Amy Pham Dec 28 '09 at 01:14
  • Well, *now* you can using MSI 4.5 or later. Last I looked, the penetration of those versions is pretty ow. – DaveE Jan 01 '10 at 17:50