Heath Stewart has posted an item on his blog that I wanted to link to here so that hopefully more setup developers will find it. The post, located at http://blogs.msdn.com/heaths/archive/2007/04/20/custom-action-guidelines.aspx, provides a set of high-level guidelines for creating custom actions if you find that they are necessary for your MSI-based setup.
Included in these guidelines are items such as the following:
- Schedule custom actions that change machine state as deferred custom actions. This is important in order to be able to correctly support rollback, plus it is necessary to avoid UAC elevation issues as I described in this blog post
- Architect custom actions to be driven by custom MSI tables
- Limit the dependencies needed for custom actions (such as managed code or script)
- Provide rich logging to make it easier to debug custom action failures
If you are a setup developer working with custom actions in an MSI-based setup, I encourage you to take a look at Heath's post for more detailed information about guidelines for creating custom actions.