We had some experience with two similar scenarios and used to have one big MSI. That quickly turned out to be impractical in the long run, today we have a dozen MSIs that all install with a similar configuration, most frequently on a 1-box setup. I definitely suggest you follow the "many simple MSIs" vs. "one complicated MSI" route and use a bootstrapper.
So you've been warned ;) Now you decided not to listen. Supplying a configuration file to the MSI is no different than supplying a list of parameters on the command-line. An executable that launches your MSI is a bootstrapper. Now we're just haggling over technology (XML vs. command-line). I have two stories of real-world implementation of configuration-driven installers. Story 1: We have introduced a "Setup Support Files" MSI that writes general settings, such as location of the suite to registry. We chose to use a bootstrapper (http://dotnetinstaller.codeplex.com) that chains the MSIs and ask the questions in the bootstrapper. We've been experimenting with the HTML UI in DNi 2.0 asking quite a few questions, such as destination folder or database username/password. We pass shared settings, such as install location, to the Setup Support Files MSI and write that value to registry. Then we use the registry as a hint for the value(s) in other MSIs. This avoids relying on the bootstrapper too much and allows us to reload the values on upgrade (from registry). Setup support files was a good paradigm as it brought in the uninstaller (the bootstrapper itself) for the suite. Story 2: Our most frequent scenario was a distributed one. We have two dozen MSIs that deploy the system. We developed a deployment tool (not open-source) that manages dependencies and order and uses WMI to remote-deploy the MSI. We described in XML what MSIs we have and various scenarios. What we built is a remote-deploy bootstrapper that's XML-driven. That worked well for 1-box setups as well - users would supply the XML "scenario" and fill in the blanks, such as machine names or credentials. Eventually I'd like dotNetInstaller to do this. Hope this helps, -dB. -----Original Message----- From: Timur Faizrakhmanov [mailto:aliv...@gmail.com] Sent: Wednesday, November 17, 2010 4:11 AM To: WiX-users@lists.sourceforge.net Subject: [WiX-users] Installer architecture design question Hi WiX community, I have a question considering Architectural Design of an Installer rather than explicit WiX usage. I would like to address this question to expert Installer developers and MSI guru's. We would like to have an installer, actually a set of installers, (preferably pure msi, no exe's or bootstrappers) that could be initiated via config.xml file. I.e. configuration file (xml format) would have a set of elements and attributes that "describe" what and where we would like to install. For example: InstallPath and a set of features. This will be used mostly in unattended scenarios. This file is supposed to be in the folder along with main setup.msi. For now, if I'm not mistaken, the only way I can read XML file and initialize properties would be the usage of Custom Actions. Our main app is written entirely on .NET platform, so, I guess, managed CustomAction and DTF would be fine. At least I would like to change the INSTALLLOCATION and some other properties (Feature install condition). This approach should be able to update itself using only MajorUpgrade (Bob, thanks for this "syntactic sugar" with this command, it really makes WiX code simplerJ with updates). So, when updates come to happen, new msi's should read configuration file again for the previous and maybe some changed values (InstallPath could be changed, set of features could be changed, etc.). So the question goes here. Is this approach is good in terms of MSI Design Guidelines. Maybe this whole approach, using CA to "tell" MSI what to do, is an anti-pattern and should be avoided in Production Development. I've already created a prototype of this approach and already have issues with property initializations, especially for the Feature conditions. I could not have 100% deterministic behavior during initial install and further upgrades. As an alternate approach I thought of using separate executable that would parse xml file and launch msi's with corresponding parameters (INSTALLDIR, feature selection), by the way, this approach gives 99,999% probability of successful installations. But still we would like to initiate the process launching only msi file, and no EXE. That's why I'm addressing this question to WiX community. I guess someone has already encountered this scenario before and has his thoughts of this. For those who didn't, the conclusions of this topic it could help them in future. So I guess this topic would be valuable to discuss for installer developers. Any advices, ideas and conclusions would be greatly appreciated! Thanks in advanced! Tim ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users