0

I have a base application, let's call it Navigator and with this Navigator there exists a Web app that runs within it that provides customers several bits of information/metrics through a database installed locally.

We have this MSI now. (The WiX project is large and convoluted, attempting to be modular and consisting of 24 files) We currently need to run this MSI three times to install three times to create a different environment each time, Production, Test, and Training.

I would like to create a single solution that ideally will allow the user to select via a Feature Tree, which environments to install.

I have researched this topic a lot and have found many possible solutions which I have not been able to apply successfully.

One solution was to use the Burn engine to essentially shoot off three separate installs. This I have not tried yet.

Second solution was to use InstanceTransforms. From what I've read, in order to install using InstanceTransforms one must use the command prompt to install each instance (i.e. msiexec /i Navigator.msi MSINEWINSTANCE=1 TRANSFORMS=":TEST) so how would one integrate a feature tree to have the user select which features to install? and then NOT use the command prompt to install. Must be user friendly.

Third solution was to use a unique UpgradeCode for each installer and involved using MSBuild Community Tasks. I found this under WiX tricks and tips

What would be 'best' solution to solve this problem and keeping it user friendly, ideally with a feature tree or something similar?

I would like to follow up on this... The Navigator is installed in Program Files The WebApp is an analytics tool where one can customize their settings and reporting, it needs to be in ProgramData because it needs read/write capabilities

Currently, we use Xcopy/Robocopy to make three copies of the WebApp in ProgramData to make WebApp_PROD, WebApp_TEST, WebApp_TRAIN and manually update some config files as well as add them to IIS.

Can this all be done with a FeatureTree or something else to check off what the user would like to install and keep this structure and updating appropriate files? Can WiX do XCopy/Robocopy to this effect or another approach is needed?

Community
  • 1
  • 1
user1964485
  • 91
  • 1
  • 7

1 Answers1

1

Maybe I'm misunderstanding something, but it's very normal to do this with a single MSI file and (in your case) those three features. On the first install the user selects which of the features are needed, maybe one or maybe all three. Later on the user can decide to add or remove features by going to Programs&Features and doing a change. This is normal, as I said, and I don't understand how you got to the point where you run the same MSI three times to install those features rather than just once where the user chooses them. Maybe you don't actually have a UI to choose features?

PhilDW
  • 20,260
  • 1
  • 18
  • 28
  • unless I am over complicating this, I need to duplicate the database environment three times in separate directories, PROD, TEST, TRAIN. The current UI asks for a base install directory, then asks to configure Database (user, password, database name), then for some Oracle configuration paths (TNSNAMES.ORA) then begins to install. I would ideally want a feature tree, to select which environments I need and be able to configure each database in one swoop through the UI. – user1964485 Mar 19 '14 at 16:59
  • You might not need to duplicate the database. The usual method is to have an invisible feature that is always installed no matter what visible features are selected. Your common files all go there. I don't understand three separate directories if it's the same directory. Unless the app can't figure it out, put the db in the local application data folder. – PhilDW Mar 19 '14 at 18:36
  • Would this allow each feature to be individually uninstalled or upgraded? – user1964485 Mar 20 '14 at 13:44
  • Features aren't upgraded - an upgrade or patch is at the level of the entire MSI file. – PhilDW Mar 20 '14 at 15:26
  • The Navigator is installed in Program Files. The WebApp is an analytics tool where one can customize their settings and reporting, it needs to be in ProgramData because it needs read/write capabilities Currently, we use Xcopy/Robocopy to make three copies of the WebApp in ProgramData to make WebApp_PROD, WebApp_TEST, WebApp_TRAIN and manually update some config files as well as add them to IIS. Can this all be done with a FeatureTree and have it update appropriate config files and create new directories for each isntance? Can WiX do XCopy/Robocopy to this effect? – user1964485 Mar 20 '14 at 20:08