Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS
with no warranties, and confer no rights. Additionally, views expressed
herein are my own and not those of my employer, Microsoft.
I recently met a Program Manager who joined Microsoft late last year after working at InstallShield for a while. We got to talking about some of the difficulties involved in creating an MSI-based setup and the lack of solid, documented best practices and even things that would make it easier to build and test setups such as more comprehensive ICE validation test suites.
One of the interesting discussions we had was to compare lists of actions that are commonly needed in a setup that are not available as MSI standard actions and have to be implemented as custom actions. Here is his list:
In addition, he made the good point that for every custom action, a setup author has to essentially create 3 custom actions (install, rollback, uninstall) and potentially a 4th (uninstall rollback).
Of the things on this list it was interesting to see that in my experience on the Visual Studio and .NET Framework setup team, we ended up writing custom actions or equivalent code to do items 1, 2, 3, 4, 5, 6, 10, 11, 13 and 16. Also, the team is working on new custom actions for the SQL items (7, 8, 9).
In addition to the above, I would add the following to the list based on my experience:
I'm curious if there are other common custom actions that folks are using that would be useful to have available as standard actions.
For .NET Framework setup developers, I would also like to know if anyone is attempting to implement NGEN functionality within your setup, and if so if you have any feedback about your experiences doing so.
Thanks in advance!
I was looking of implementing copying files based on some condition (I my case I have to decide what kind of hardware platform it is - blade server type).
This also looks like more common scenario (Copying files based on condtion).
Hi Ramesh - You can use conditions in the Component table of the MSI to install files based on conditions like this. You shouldn't need a custom action to do that.