I had a vendor MSI that I needed to make changes too. I wanted to push it out as a silent install but as it was configured, it required user input to install correctly. I found a lot of information telling me that I needed a MSI transform (or MST) to do that. But I found almost no details on how to create that transform.
I eventually discovered the ORCA MSI Editor. I think its a Microsoft tool but I found it on this Technipage. ORCA looks at the MSI like its a database and exposes all the tables and records to you. It is a bit overwhelming to get into. After messing up a few MSI packages (make backups first) I discovered how easy it was to create a transform. Making changes is where it gets hard.
To create a mst transform, first open the MSI. Then under Transform, choose New Transform. Now make any changes or updates that you want to make. When you are done, under the Transform menu choose Generate Transform and save it. This will create a MST with your changes. To test the transform you can run your command like this: base.msi TRANSFORMS=transform1.mst
That looks easy and once you figure out what changes you are going to make then it is easy. Here are two links you should look at. Using a Sequence Table and the List of Database Tables. They were a huge help to me. Here are a few examples of changes that I made.
The first one was to fix the message “This installation cannot be run directly launching the MSI package. You must run setup.exe“. In the Properties table add a row called ISSETUPDRIVEN with a value of 1. This will allow the msi to run on its own. Remember they added this check to make sure your version of Microsoft Installer supported the MSI. If it fails, you may have to install the correct files yourself.
My setup had one section with 3 options and I need to disable one of those options. I tracked that option down to a entry in the Feature table. Looking at the online documentation it looks like setting the Level value to 0 from 1 will do that for me.
Registry settings was also something I needed to mess with. All the registry settings were in the Registry table. I found the key I wanted to change and was able to change the value. There was a second key I had to add in by hand. It is one that the installer would prompt the user for and it had no default. If I want my silent install to work, I have to make sure that value gets set. The component column puts the key in a group that matches an installed component. I reused the component value of the other key I changed. I should never see one without the other. I set Root = 2 because that’s what the other key had.
That was all the changed I needed to make. It was a lot to take in at first. I had never created a MST before. It was a great way to work around the vendor. I know I have ran into this before where a MST was needed but I was able to just use a batchfile instead. Now that I am running things with a bit more security with windows 7, batch files just don’t cut it anymore.
