As a software developer you probably know how to get the latest version of your code from the source control repository, make a few changes and be able to debug it effectively. This is a muscle that we exercise every single day and we get pretty good at it. Something that we do less often is take a copy of our code and deploy it onto a target system and go through what it is going to be like getting that code up and running on a non-developer machine.
Continuous Integration tools doesn’t necessarily help here as they typically just run unit tests to ensure that the code is functioning at the unit level, not take the application installer (hopefully you have one) and roll it out onto some virgin infrastructure.
The truth is that a lot of teams don’t really consider what their finished product will look. So here are some questions to consider:
- How will you install your application? XCOPY or Windows Installer?
- How will you configure your application? Post installer configuration tool?
- How will you service your application?
- Windows Installer patching or something else?
- Do you need to uninstall first?
- What about your database schemas?
- Do you do them at installation time?
- Are they in a separate setup package?
- What about servicing for databases?
- Do you create maintenance plans?
- What about repair operations?
- Do you have some kind of health check mechanism?
Setup Packages Are Software Too!
The truth is that the setup package that you use to deliver your software is part of what you are building as well so you need to put as much thought into that as you do the application functionality.