Dotnet Heaven
In my short career (6½ years, to be exact) working as a software developer I have been involved in the rollout of more systems than I can remember off the top of my gradually balding head. These installations were all pre-dotnet though, and since I moved over to dotnet I have been creating mostly server side stuff. Although I have done a fair bit off WinForms work, I have never been involved in an actual client-side deployment on the dotnet platform. I assure you, this is much more by design than pure good fortune. The days (and frequent nights) I spent in DLL hell are not a fond memory. Just the mention of the words "ActiveX can't create object" and my stomach starts to get queasy.
So, you can imagine how much I was looking forward to getting involved with a client-side rollout again and along the way it has been every bit as difficult as I anticipated - delayed flights, troublesome hardware, touchy sysadmins, illiterate users, you know - the usual.
There was one thing that was far from 'usual' though. The one thing that never gave us a single moment's trouble, at 10 different sites, on 10 different LANs was the application itself: Install the framework, run the MSI. Boom. Done. First time, every time.
And with our use of the app updater application block, if we need to release minor bug-fixes or add features, it is a simple case of copy-paste from our latest good CruiseControl.NET build, generate a new manifest and go make some coffee.
What a pleasure.