More InstallShield DevStudio 9 issues...
So needless to say, I don't like the product, however, it reached a new low for me this morning. I spent most of last night completing my really cool dialogs and getting them working in a sample project (why a sample project? Because it is faster to compile and test). I figured, hey, they have this cool dialog export function and then I can import them back into my other project.
Boy was I so frigin wrong. Turns out they link various dialog strings directly to the string table and they don't have a very good story for resolving these conflicts when importing your dialog. So what happens during the first link? Well, I import all of the 3 dialogs that I had changed. To my dismay, they step all over the local string table of my current installer. I start the installer run it, and everything is now broken since various labels share string identifiers.
So I attempt to fix this up. Doesn't take me long, but still the string table is pretty horked. So I restart the project and try again, this time only importing one of the dialogs, so I don't have to worry about conflicts from 3 of them. This works out a bit better and I only have to replace two string table entries. However, now I realize that feature installation variables are case sensitive, so all my dialogs are asking for &SERVER and the stuff is really stored in &Server. You see, they don't make it very easy to find out what is defined and what isn't. They also don't have any conditional builder utility that double checks your variables to make sure they actually exist.
When all was said and done, and import process that probably should have taken 10-15 minutes took over 6 hours. To test even small changes you have to completely rebuild the entire MSI most of the time. They have a rebuild tables only option, but I had little success with that, and the default when you simply run the MSI from within the DevStudio environment is to tell you things are out of date and then do a full compile. Hell, would they do the most performant option and only do a partial compile if I just changed a dialog and it was even possible to do a partial compile? Well, maybe, but I'm not getting my hopes up, so I still live through the 1 minute build process per tweak. Definitely not fun.
Someone recommended using NSSI on my last posting. I might give it a look, but I don't build installers very often. I'm a game developer, and it is more common now to build a shim loader, than it is to have a full on installer application. Almost all of the logic is now hand-written (at least in the work I do), and as a result I have a lot of installer type stuff already coded. I'm told that Click-Once is going to be really cool, but I was there when we did battle with the AppUpdater technology used in the .NET Terrarium, so I'm kind of wary. I know they coded their stuff from the ground-up, as did the Updater Application Block available from MSDN, but they still made reference to the monstrosity that is the AppUpdater. Enough of my ranting, I should actually post some good stuff for you guys.