Another Long Night
As if I wasn't trying to solve enough problems today, here's what I just got finished tackling:
- Article for Builder.com on my revised source control organization method.
- Article for Builder.com on getting your server control in the “Add References“ tab.
- Figured out how to use an XmlDocument to write to an app.config file. (it sucks that appSettings is not writeable, that's just lame)
- Finished Version Commander's “Options“ page using above code.
- Built a generic Custom Installer Action for registering any assembly in the “Add References“ dialog using parameters.
- Built a generic Custom Installer Action for registering any server control in the VS.NET Toolbox, taking into account multiple versions of VS.NET installed on a given machine.
Man, that may seem trivial, but between learing how to manipulate the EnvDTE object, learning how to build a Custom Installer Action that accepts parameters, and screwing with the XmlDocument object, my brain's fried. It may very well have been my most diverse day of coding ever. All this just to shave 13 seconds off the installation of ScrollingGrid... I guess it's no wonder that most server controls out there are difficult to use. I'd sure like to spend about 3 days with the Server Controls team over at Microsoft. It'd sure make any server control vendor's life a helluva lot easier. Why VS.NET doesn't come with a Server Control installation project is BEYOND me.
The good news is that I'll never have to write this code again, and neither will you. We'll be able to use it on all our controls from here on out, because we're making it a part of the Interscape Base Library, a free API library for doing cool thinks like hacking the sucky XmlWriter class to add encoding, generic Data Access Layers for demo applications using Access and SQL Server, and now some new installer classes. Yet another freebie we'll make available with the source code included. As soon as I can get around to documenting it, building an installer, and all the other stuff that goes along with deploying a product.