What I would do if I didn’t continue to “fight the good fight” for setup?


For the past few weeks I’ve been slowly making progress on a follow-up blog entry about the Component Rules.  However, I just had all four of my wisdom teeth pulled so I think it is prudent to postpone working on a technical blog entry until more of the drugs wear off.  Instead, I thought I’d post something a bit more personal.  Note I’m probably mostly whinging here but I want to get it off my chest.

On Monday, I will have spent 5 years working as a full-time employee at Microsoft.  In those five years, one of my personal goals has been to improve the state of setup around the company and eventually the world.  All too often, I see teams ignore setup until it was very late in the ship cycle and then scramble to get something working.  Then they’d unleash those setups on our customers.  Never mind that there was no time to determine what the upgrade and patching plan would be for their product going forward.

Over the years, I have worked to spread my philosophy for approaching setup around the company.  I did most of that evangelizing via the WiX toolset and answering questions on internal mailing lists.  Now I’m out here in the public blogging about various aspects of setup and have released the WiX toolset to SourceForge.  And things are slowly improving.  More and more I see setup development being integrated into the daily process (at least in Microsoft, I haven’t been invited into any ISVs build labs yet).

However every once in a very long while, after constantly trying to do the "Right Thing" in the setup domain I get very discouraged.  That feeling usually comes after a week where a new employee or temporary contractor sends me email saying, "I have to get the setup for our product built in 2 weeks.  My manager says it should be really easy since all I should have to do is copy a few files and write a few registry keys and some other stuff.  How do I do that?"  Then someone tries to argue with me that "Rollback isn’t really important for my setup so I can use SelfReg.  If our registry keys are left behind on the user’s machine it probably doesn’t really matter."  Then someone starts berating me because, "The Windows Installer XML documentation is horrible.  It doesn’t tell me how to do anything that I want to do.  How can you live with yourself?"  Then someone says, "I’ve copied a file from some other product and tried to install it as part my product, but when I uninstall the file gets deleted.  Why does it do that?"  Then I realize that really it all just comes down to that fact that very few people care about writing a really good setup.  For some reason, they don’t seem to realize that the setup portion of their product probably has the highest chance of completely hosing their customers’ machines.

It’s days like that when I start thinking about what it would be like to work on a feature that people wanted to do correctly.  But what would I do if I didn’t continue to "fight the good fight" (as a few of my friends like to say) for setup?

Well, some time ago, I randomly decided that working on the Xbox team would be a place where I could deliver features people want use and use properly.  I mean seriously games are supposed to be fast and cool.  As a developer you would take great care to understand your code and the code you’re building on to ensure your game is fast and cool looking, right?  I’m sure it’s a very naive point of view, but games are considered far more "sexy" than setup

So, what does this have to do with anything?

Well, first I’m on Percocet so I’m not really sure any of this rambling as anything to do with anything.  Second, this morning the Xbox team did a presentation where they described some of the opportunities on their team.  I figured listening in would a good way to better understand what I really would be getting into if I followed my frustration at the end of one of those weeks when I say, "You know maybe I should just go and work on the Xbox." 

Now before my lead freaks out, let me just say that the Xbox presentation was a great way to put the impending doom of having four teeth removed from my head out of my mind for a couple hours.  I’m also a bit more informed about what it really would be like to be a developer on Xbox.  It was interesting but I’m sticking to the SDM Platform team for now.

What?!?  Why?!?

Because I believe that there is still a lot of work to be done to improve the state of setup and I want to be one of the guys that make those improvements happen.  Fundamentally, despite the frustrations related to working on what most developers consider a very un-sexy problem space, I am devoted to "fighting the good fight" for setup until developers no longer dread building the installation for their product and end-users no longer fear what setup will do to their machines.

I have a long road ahead of me, but I’ve (almost) always enjoyed the journey.  Keep coding, you know I am.

Comments (16)

  1. Darrel Miller says:

    I just started using your Wix toolset to build the setup for the .Net version of our ERP product. It is early in the development cycle. I followed your getting started docs and after one evening I have nant build file that builds all my MSMs and my MSI file.

    I believe that badly designed installation programs were one of the major contributing factors to the web application craze. Too many applications that should have been desktop apps were built as web apps because people were afraid of supporting the deployment.

    With the rise of smart clients, installation is once again going to be extremely important. Your role in bringing awareness to the importance of well designed setups is critical to the success of smart clients. It may not be as sexy as the Xbox but it is a hell of a lot more important.

  2. setup victim says:

    One thing that gets me is that we have to create custom programs to setup databases in MS SQL and solve many other issues of creating Windows accounts and setting permissions.

    Will Microsoft help make it easier to create an install that creates databases, create Windows users, setup impersonation in asp.net, improve the user name and password prompt for a .NET windows service. I just wish setup was would automate much of the setup for the rest of the MS products.

  3. setup victim,

    Believe it or not, I’m on all that stuff you listed. Look in the Windows Installer XML toolset and you’ll see the initail thinkings for doing much of what you describe above. In the next two weeks I hope a lot of what you asked for is there for you.

  4. Alexei Boukirev says:

    Creating setup with WiX is now a pleasure. I did my first really complex one recently: multiple features, various custom dialogs that are skipped/displayed depending on what features are being installed and which were installed earlier.

    Once you grasp the idea, the rest is a cake.

    Well, I did use scripting for custom actions, and I do not regret it. It is to create/remove virtual directories in IIS. I did it all: install, rollback, uninstall, repair. The fun part is I can finally do it for proper site on a multisite hosting IIS.

    With all that excitement I’m going to redo with WiX several other setups for our company products.

    Thanks for very nice tool.

  5. Tom says:

    Rob, just wanted to thank you for the work you do in the (perceived) unsexy "packaging and setup" area of software development. Keep up this good work; there are also people out there that really appreciate it!

  6. Bill Arnette says:

    Rob, My company’s core work revolves around writing custom DirectShow filters and applications. Filters are registered using IFilterMapper2::RegisterFilter which registers some binary data for a filter. AFAIK, the format for the binary filter data is not published, although the data is specified in data structures defined by the DirectShow SDK. Since SelfReg is considered evil now, what would be your suggestion for creating a setup for DirectShow filters that does not use SelfReg?

  7. Steve Hicks says:

    Hi Rob,

    You make some good points, one thing I have found developing setups for the past 3 years is that the installation of a program really is a chance to make a good first impression on the customer/user. I have found that a smooth installation can really build trust in the actual application even if the app itself is a bit outdated.

    I think WIX is a great idea. Unfortunately although I can build setups with it they dont run on my machine at all. I think this is more to do with my machine though.

    Keep up the good work 😉

  8. Martins says:

    Keep on the work, Rob!

    We use your WiX tool for pretty compicated atomated build and it works like a charm. I can hardly image we could do it other way. And forget about those paying no decent attention to installation process. There will always be such people as there will be in other areas.

    Thanks.

  9. Cinthia says:

    Hi, Rob,

    Just want to tell you that I agree with you: setup is a lot more than copying the files…

    My first task at my first job was to figure out InstallShield: something other developers wouldn’t look at because they were too busy digging out other Microsoft secrets. But I managed to have a great time figuring out many details about the system and the setup process.

    After reading your blog, I now understand why setup is a lot nicer now than those days when there’s only InstallShield 3: Thank you and your team for making setup a "prettier" task. 🙂

  10. KC Lemson says:

    I enjoyed this post very much, I forwarded this to the exchange setup team 🙂

  11. Anonymous Coward /. says:

    <ObWhinge>

    All examples that you give, and all generated xml coming out of dark, starts with…

    <Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"&gt;

    Wouldn’t it be nice if that were available?

    </ObWhinge>

    Setup is hard, and it doesn’t pay. Although there may be cases where a product got a bad name for a bad setup, and consequently lost sales, I can’t think of a case where a review said: "Sharp, well-engineered setup. Buy this!"

    Thus, it really is just fighting the good fight, and saving problems for customers and support down the road

    Thanks for WiX

  12. Anonymous Coward,

    The WiX schema you mention is available in both the source download and the binary download of every release at http://wix.sourceforge.net (except maybe the first one when I was still working out bugs in my process). Look for wix.xsd. You’ll find it.

    Otherwise, I have to agree with you. The only time I saw setup features sell was Office2000 and that’s because installing Office97 (and before) in a corporation had reached an all time low.

  13. Anonymous Coward says:

    My point wasn’t that I didn’t know where the schema was, but rather that the autogeneration inserts the given line.

    Cheers

  14. In order for WiX to really take off there need to be more examples — the "view source" effect should not be underestimated. I’d love to see some IIS and SQL Server examples of WiX setups. The WiX CHM file is really helpful, but the learning curve is still rather steep.

  15. Imagine a blog entry where I discuss where I’m going after working on the SDM Platform team.

  16. Imagine a blog entry where I discuss where I’m going after working on the SDM Platform team.