I'm working on an installer project that consists of an MSI file and a bootstrap application that manages the prerequisites; and since the need for some of the prerequisites depends on what features the user chooses to install, the bootstrap app also provides the UI. I want to be able to force the Add/Remove Programs (or Programs and Features) control panel (ARP) to run the bootstrap application instead of the MSI when the user wants to run a modify install. I've tried changing the ModifyPath value under the installer's Uninstall Registry key to the path of the bootstrap application, but to no avail. Clicking the Change button in the ARP still gets me the MSI.
Is there an easy way to do what I want? Failing that, is there a way for the MSI to detect that it was run from the ARP using the Change button so that I could get it to show an error message that tells the user to run the bootstrap app instead? (I.e., does the ARP use the same command line arguments that a user would use to run the MSI and specify a modify install without having to see the maintenance page of the UI? If not, what should I look for?)
Edit My installer is installing not just one application, but a suite of applications, each of which the user is allowed to choose not to install. (We're installing these applications as a suite, because most of them depend on one of them in particular being installed. Therefore, it'll be easier on the user to have just one installer handle them all, rather than the separate installers that this new installer is going to replace.)
The applications in the suite don't all require the same set of prerequisites, therefore, it is not easy for the MSI to check for the prerequisites until it knows which applications in the suite the user wants to install. Furthermore, we want to make it easy for the user by having the installers for all of the prerequisites for the applications that the user does want installed launched automatically. (This is the main reason why the installer's UI was implemented in the bootstrap app.)
Is it possible for the MSI to launch the bootstrap app and then silently exit immediately while the bootstrap app carries on, eventually relaunching the MSI? (When the bootstrap app launches the MSI, one of the command line args it passes into the MSI is a property that tells it that the bootstrap app launched it. This is currently used, among other things, to allow the MSI to show an error message telling the user to run the bootstrap app unless an uninstall or repair install was specified on the command line.)