Let’s face it: setup isn’t considered cool. It isn’t a career promoter, it doesn’t have everyone wanting to learn it, it’s viewed as an afterthought on most projects, yet it is as complicated as any other area of technology we deal with in our day-to-day jobs (especially when you consider application removal, servicing, upgrades, resiliency, and all the other aspects of getting setup done right). Given the available tools to mask the complexities and the fact that setup/deployment touches on every other technology we employ (.NET/GAC, Java, COM, One-Click, VC runtimes, shell & browser extensions, IIS, SQL, etc.) I would call it more complex, and less well taught/documented, than even COM in all its ugly glory.
In this blog, I will supply comments, thoughts, examples, gripes, complaints, and anything else that comes to mind to help uncover the world of deployment and servicing on Windows® platforms. I’ll also contribute some thoughts applicable to *NIX systems from time to time as well. (Linux and similar systems have suffered from their own version of DLL Hell as well.) I intend to cover everything from how to write reliable resilient setup packages to validation, custom actions, and build systems (since every “setup developer” at some point either was or will become a “build engineer” as well). I will give credit to others who have written much of this already, and build more on what they have done in a few cases.
To introduce myself, I am a software engineer with about 20 years experience, the last 6 at Microsoft (2003-2009). During that time, I have worked on and with everything from VAX, various vendor implementations of Unix, MSDOS 2.x, and Mac OS 6 to recent builds of Ubuntu, netBSD and Windows 7. I have crossed over between primary development platforms 5 times, learned an alphabet soup of technologies and paradigms, and been exposed to most (if not all) of the trends in computer programming in the past 3 decades (yes, I messed around with programming 10 years before my first ongoing job in it). And now, I am starting a firm to focus on Windows® deployment/servicing consulting and to provide paid support services for the WiX toolset. I will also supply utilities and extensions that will make your builds easier and/or more productive.
If I may start with one word of advice, it is that you must be very deliberate with your deployment testing, since it is easy to produce a setup package you can’t fix after you release. For you setup developers, that means you should never run a setup package you have built on your primary dev box until it has been fully tested on some other system (think virtual).
In conclusion, if you have found yourself in the position of being the designated setup developer, look here and I will steer you in the direction of easier-to-understand tutorials and other resources to teach you this area. Watch this space, and I’ll do my best to make this as fun as possible.
Since many of us spend approximately half of our waking hours at work (some of us much more than that), and since all work and no play makes for a very dull life, I will also do my best to make this learning adventure as fun as I can.
Until my next post: Have fun!
Blair Murri