I am getting to the end of a large installation project for a client. What came out of this is several things I can pass along to you. The first involves the integration of Features and Components from one installation project to another. What is the best way to do that?
I had been given two installations. Installation A was an InstallScript MSI project. It was very involved and very big. It was an installation for several Administrator applications. No way this thing would run in a Standard User account. Anyway, I was given a Basic MSI installation that I’ll call Installation B. One of my many jobs in this monster project was to integrate Installation B into Installation A. So, let’s look at Installation B.
There were a total of 17 features. 6 main features and 11 sub-features. Of course there were components associated with all of these features. So, what was the best way to get these features, components, file references, shortcuts into Installation A? I did some analysis and here’s what I came up with.
There were three ways that I could think to do this:
- Save both installation projects in XML format. Next, edit the XML project file for Installation B, and copy the features, components, shortcuts, file references from there and paste them into Installation A’s XML project file.
- Go to the Direct Editor of Installation B and export the Features table, the FeaturesComponents table, and other needed tables. Next, open Installation A and import the tables into that.
- Open two instances of InstallShield, with Installation A open in one, and Installation B open in the other. With a dual monitor setup, this is not a problem. Next, while looking at Installation B, hand-recreate the features, components, files references, shortcuts in Installation A.
Which one do you think I chose to do? Well, I contemplated #1 and #2, and worked with each of them for about 15 minutes each. However, the opportunity for error with #1 and #2 was great. So, I settled on #3.
When you are faced with something like this, you have to weigh how much time it is going to take for the different alternatives. I decided it was quicker to do #3, even though it was very tedious to do so.
So, you may be wondering if I made any mistakes along the way? Well, yes I did. I forgot one registry entry that was associated with one of the components. That bug showed up during testing. But, it was quickly fixed and now all is right with the world.