Hi All,

After a few years of working on MSI installs, I have finally gotten around to adding all of my tools into one overall application. This program is written in VB.NET using .NET 1.1. This is just an expression of interest email, I am willing to make this tool available, but I would class it as alpha as I have only used it internally, it is highly configurable and it could be used in other organisations. Now, if enough people are interested in it, I will write up documentation, tidy it up a bit and release it for testing out in the wild world. However, I will put a kill switch in it, as I would prefer people to use it in a test environment until at least a few public releases. Anyway, here is some of the features that it has:

Basic workflow for application development. (Uses MS Access DB as the backend)
Creation of default directory structure.
Automation of text and MS Word documentation for the application.
Generation of Transforms.
Conflict Management.
Uses PlugIn MSI's to standardise MSI's and MST's
MST Combiner
Merge MST's into MSI's.

That is the general jist of it. I will explain how it does Conflict Management and the concept of MSI PlugIns.

Conflict Management
Most organisations I have worked for have ditched the idea of Merge Modules. Mostly because they do not conform to MSI standards and they are not always up to date. The method used in my current organisation, is to use what I call a Common Control MSI. This Common Control stores all of the DLL's and OCX's that 2 or more applications have a conflict with. The Standardiser index's your Common Control MSI and when enabled, it will automatically redirect all DLL's, OCX's and TLB's that are in the System32 directory to a directory that has been assigned to your shortcuts. Essentially it isolates these files. It then removes all registry and COM Table references from the MSI to ensure that this file does not get registered. It creates all of these changes into a Transform (MST), other options that the Conflict Management can be used for is Merge, which will merge these conflicts directly into the main MSI.

MSI PlugIns
Ok, here goes at trying to explain what this does! Basically, alot of organisations standardise their MSI's by having it dump down registry keys, setting standard properties, removing dialogs that it doesn't want etc etc. The way a plugin works, is that you create a small MSI, usually using ORCA, that only contains the data that you want to merge into your newly captured MSI.

So for example, lets create an MSI plugin that just contains registry keys to let us know when the app was installed, what version, and what internal version it is. So I create an MSI using ORCA, that contains the Component, FeatureComponent and say the Registry table, along with the _Validation table with the appropriate table information in the _Validation table. I then add my registry keys, and instead of hardcoding in the manufacturer, name or version, i simply use a reserve string, such as <manufacturer>, <name>, <version>. Once that is done, I make that MSI available to MSI Corporate Standardiser, then I bind that MSI plugin with the application, and when I hit my 'STANDARDISE' button, it will merge the contents of that MSI into my new capture MSI therefore automatically adding the new registry keys to standardise my app. This is a basic description of what plugins can do. We use plugins that Set Properties, Deletes Dialogs, and also pre build Custom Actions, such as ensuring a dependency is installed, making sure the app can only be dropped via Group Policy, and ensuring the app is not dropped during the Build Process. All these are automatically added to the MSI through this plugin system. Essentially, you can add whatever you want to standardise the MSI. You could create a plugin MSI for every type of Custom Action that you would want, and make that available as a PlugIn. Therefore if someone has to write a custom action to check for an application, and they use a plugin, it ensures that is always standard.

I hope I have explained it enough, feel free to ask questions or whatever. The application does alot more than what I have listed, but as I begin to write the documentation, I should be able to make that available, so people can have a look. Now, I am not trying to sell this (I am not saying down the track I wont ever) but at the moment I am after expression of interest to see if this kind of util is needed elsewhere. As there is a bit of work I will need to do on it to make it worthy of release, I estimate about an extra 2 days of programming work, 1 day on documentation, 10mins to create a basic MSI install for it :) Most of the programming is error messages, as at the moment if it bombs, you just get a standard .NET error message :)

0 Comments   [ - ] Hide Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity


Cam, I am very interested in helping out with your testing. Please send me a copy when it is ready. i look forward to your response.

cdupuis AT richmond.sd38.bc.ca-NOSPAM

remove the AT and replace with @ and remove the -NOSPAM.
Answered 07/06/2004 by: cdupuis
Third Degree Green Belt

Please log in to comment
Looking for more testers for this. The documentation is not 100% complete but enough to get people started. If you are interested, I can send you a copy of the manual and you can decide if it is something that you wish to test. I already have a few testers but require a couple more.

Feel free to email me at cambooth@hotmail.com

Answered 09/13/2004 by: CamBooth
Yellow Belt

Please log in to comment