Building Msi's is NOT a no-brainer
Having spent the greater part of last week writing a complex .msi installer I was heartened to see a nice listing of Msi tasks which are non-trivial to implement pop-up today:
http://weblogs.asp.net/astebner/archive/2004/06/06/149713.aspx
Here's some other reading which is interesting if you are venturing into the Msi arena:
- Building Custom Installer Classes in .NET
- Customizing your .NET deployment projects
- Customize User Interfaces and Pass User Input to Installer Classes
A couple of gripes that I have with .msi's... I was disappointed that I couldn't embed totally custom forms into the middle of an installer and that I was unable to programatically interract with CustomActions until the end of the process. It was also unintuitive as to how I could get the folderpath of where the user was installing the application. What would have been good was if I could pass the [TARGETDIR] to my custom installation code or at least access it from the saveState hashtable.