PDA

View Full Version : run other msi during install



ladyhawke
11-17-2005, 04:14 AM
I need to install an msi file during my IS install project (quiet install) and it (naturally) has to be uninstalled during normal uninstall...

I guess this is very simple, but:

How is this done?

TsungH
11-17-2005, 03:50 PM
You will want to start by looking at custom action types. Since you want to perform an installation of another .msi in silent installation (i.e., UI Sequence is skipped) of your .msi, you will have to use nested installation custom action (please read up on Nested Installation Actions (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/nested_installation_actions.asp)). The nested installation can not be uninstalled alone, or by any installation other than its parent. Hence, you will want to have Custom Action Type 39 to remove the nested installation when the parent is uninstalled.

With that being said, IMO, most 3rd party .msi are not a good candidate for nested installation. It will potentially create problems for your users when the vendor of 3rd party .msi used releases an upgrade.

Christopher Painter
11-17-2005, 04:24 PM
I highly discourage the use of nested installations. Write your own boostrapper that will chain your 2 silent installs together.

Another problem with nested installs is patching. If you build install1 and nest it into install2 and then make a patch for install1 you can't apply it against install2. Same difficulties apply for patching merge modules.

A huge example of this was the Slammer virus for SQL Server/MSDE. It created a security hell for network administrators.

ladyhawke
11-18-2005, 02:42 AM
I do not know how to make a boot strapper and the parent installer are not to be silent.

I've found a guide in the IS helpfiles (Nested installations) but I get an error when trying to run the installer (with the 2 added custom actions).

I thought that I might need to change the target box entries but the explanation of the contents I found was very short and didn't explain other options.

For now I'm supposed to make a child installer, later maybe it can be done another way...

Hamilton-Scott
11-18-2005, 03:18 AM
Christiopher, please explain what you mean by writing a 'bootstrapper'. I may know it in InstallShield by another name? :confused:

Christopher Painter
11-18-2005, 09:59 AM
Bootstrappers are programs or processes that invoke other programs or processes. In InstallShield speak that would describe the relationship between setup.exe and MSI files.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/bootstrapping.asp

InstallShields stock setup.exe bootstrapper has certain capabilities such as MSI and DotNet redistibution and more recently Setup Prerequisites. But sometimes its generic design is not flexible enough to meet your exact requirements so you have to write your own.

Hamilton-Scott
11-18-2005, 11:29 AM
Thanks for the explanation.