As a heads-up, I am writing a tool to generate MSI files, I worked on it consistently for about 3 months to get the functionality up to the point of being able to incorporate the majority of features we needed. I've been working for another 3 months on-and-off to fine tune the behavior and add customizations to the installations.
A good portion of that time was spent reading and understanding the database tables:
http://msdn2.microsoft.com/en-us/library/aa368259.aspx and the installer object interface:
I didn't hear about WiX until afterwards and haven't used it, but it probably would have been wise to look at that first and then thought about building on its functionality.
Wow! 6 man months to write an MSI authoring tool that meets a `majority of features` we needed. Man, can you say NOT-INVENTED-HERE? Seriously, if I did this to a client it would basically cost them well over $130,000 based on my staff augmentation bill rates through my employer.
Guys, tools are cheap! Tools are fast and reliable. There are some really good case studies that show when you should decide to roll your own and when you should simply assimilate someone else's technology into your solution. If you are a company like Macrovision or InstallAware, then yes, you roll your own because that's your core business. That's your product line and your going to sell it. If your a company like Microsoft with many, many products to ship, it makes a lot of sense to roll your own because it's part of your core business. Heck, it makes even more sense if you can get a bunch of employees to write it for free on their own time!!
But if your the typical ISV or Enterprise IT department trying to author or repackage an install, think about it. Do you really want to go through 6 months pain trying to get a decent tool put together and spend $125,000 doing it? Heck, that's enough money to buy 50 copies of InstallShield 12 Professional and put them on Silver Maintenance for a year. That would be enough money to buy 325 copies of WiXAware.
Seriously, people often make fun of InstallShield ( one particular MS MVP loves to banter around the term InstallSucks or InstallCrap ). They'll call it buggy, they'll call it expensive, they'll banter around terms like `vendor lock in` or `proprietary`.... but at the end of the day the cost of one seat is only about 3 days of labor and you can start working on installation projects today, not in three months.
Call me pragmatic, but I get pride in delivering solutions to my customers, not in trying to reinvent the wheel and showing a vendor that I'm smarter then they are.