My Wix Journey - Day 2 @ 4:54pm EDT
(Part of a multi-part story on WiX)
Well, it has certainly been a long day. Today, I've been working on reverse engineering my current install, written with InstallShield 9, using Windows Installer. WiX has a tool called 'dark.exe' that allows you to convert an MSI database into a valid WiX xml format.
So, after "Darking" my existing MSI, I find roughly 6,000 lines of rather dense XML. As I'm intimately familiar with the previous installation, reviewing this WiX-generated code gives me a good 'feel' for how WiX works. I'm afraid that I won't be able to use most of the generated code, however. We used InstallScript to write our custom actions, and since we are dumping Installshield, we have to dump many custom actions, too. Fortunately, WiX will perform the bulk of the work with it's built in Custom Action library. I'm particularly looking forward to using the database and IIS portions of the CA library.
There's one outstanding WiX bug where the Database gets 'dropped' during a rollback operation. I'll have to make certain to test heavily to make certain that rollback doesn't do this to my install - that's a pretty severe issue. The cool thing about this being an open source project is that if no-one else fixes it, I can always do so myself. (Not like InstallShield, where I'm still experiencing some of the same bugs left over from IS 7.0)
So, since I'm going to have to actually maintain this stuff in the future, I won't be using Dark.exe to 'copy' the previous installation.
The WiX community seems to be Anti-managed code for custom actions. That's unfortunate, as my C# skills are stronger than my C++ ones. I've looked at the current WiX CAs implemented in C++, and they certainly don't look fun to modify (or author, for that point). I'd much rather do managed CAs, and I'll probably use C++ custom actions as a wrapper around C# managed methods.
I think my next post will be a walk-through on how to take an existing Dialog from InstallShield and convert it into a WiX dialog.