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:
Here's some other reading which is interesting if you are venturing into the Msi arena:
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.