Things are looking gravy again

Wednesday and Thursday were depressing days at work. All of the gains from last week crumbled into a crapular pit of despair on Wednesday afternoon.

And then I decided to rewrite an entire module from the ground up. This is different than refactoring in that I don’t have the time to make improvements, I’m only trying to fix references and get around whatever undocumented crufty magic lies in .sln, .csproj, and .wixproj files. Love IDEs until I don’t I guess.

So today was the grand test, and, the answer is yes. So now the remaining trick is to cobble together something that can be referenced by consumers without breaking consumers that don’t reference the new stuff. Additional fun factor: both versions use the same file names and namespaces.

FML!

But I believe we are finally out of unknown unknowns now. From here it is plumbing.

Wix is ruining my life

On the one hand, yay, job security!

On the other hand, holy hell! Probably more a factor of how we initially wrote the code, but the upgrade path has been abysmal going from v3.0 to v3.6. Just today I had to rewrite almost three years of custom actions just to get the damn things to compile. All of this to try to prove that it is running wix 3.0 compiled custom actions in a wix 3.6 msi that is causing all of the big explosions.

This explains why we are almost two years behind. Very much hoping the next upgrade cycle is not so ass bitey.

There comes a time…

When coding a largish application from the ground up there comes a time when things look bleak. This usually happens shortly after the application becomes too complex to hold the whole thing in your memory. Either the levels of abstraction get too disorienting or, if you’ve foregone abstraction, keeping all of the “meaningful indexes” straight feels daunting.

And then, perhaps a few hours of panic and toil later (if you’re lucky) it all kind of comes together. You’ve moved from running against test data and start running “live”. Not truly live, of course, unless you want to live dangerously but you get the point. If you’re unlucky it just bogs down into a horrible mess.

Today we are lucky. The thinger I’ve been pounding on for the past week and a half generates useful stuff. If I were a gambling man, I’d go ahead and make the changes to build something that other folks will see. But I’m not. So come Monday I’ll be rabbiting away at swotting up a production asset, doing some tweaking in the build system, and then releasing my WIX generator on the QA resources. This gets my team out of the game of slogging through an ever increasing number of modules when making across-the-board changes. New changes are as simple as writing a new IGenieJob.

It also forces strict standardization on a collection of installer products that have grown organically over the past three years. At the end of last year I managed to normalize a number of things. This is the final step to making this an automated, predictable, and easily troubleshot process for $COMPANY_NAME.

Not to mention, spinning up new installer projects just got a whole lot easier. Also, I get to check off one of my big 2012 annual review goals before it ever gets officially assigned to me. 🙂

A good way to end the week. I will possibly be quite intoxicated within the next five hours.

Major upgrades on instance transforms

Holy crap. The degree of dislike I have for Windows Installer service is already kind of pegged. An object lesson in overengineering for very little gain. Well, it could work awesomely if it wasn’t a backwater in Microsoftland and if the Microsoft supported authoring framework wasn’t an “open source” initiative that is completely understaffed.

Then there is the issue of instance transforms. Holy mother of god, these make vanilla installers look as attractive as your first crush. This is the way to kludge together support for upgrade installs of transformed installations that don’t unilaterally overwrite every other transformed installation on the target machine.

So—guess what I’ve been working on all day.