Here are some techniques I have found useful in improving software installations.
They Don't Read the Manual
That's right: The people who install your software often don't read the manual. This is not an argument against installation manuals. They are vitally important, for no other reason than that they provide development and QA teams with a concrete, verifiable description of system behavior. Of course, I've found that great technical writers can substantially improve manuals and thus the odds that they'll be read.
More generally , users don't always do the things we recommend. While this may be unfortunate, it is also part of the reality you must deal with. There are other things you can do to make installation easy. One is to provide some kind visual roadmap of the installation process that can be combined with the checklist described earlier. This gives the installer the context for what is happening and provides them with an overall sense of what is happening at each step of the process. A well-done roadmap can also provide an estimate of how much time each step will take, which can help the installer manage his tasks .
Test the Install and Uninstall
Both installation and the uninstall must be thoroughly tested . Yes, I know this is common sense, but I've found that many QA teams don't adequately test one or both. This is a very poor choice given the adverse economic effects. Keep in mind the following when testing these options.
Test the Installer in the First Iteration
Agile development processes (XP, crystal, and SCRUM), and iterative-incremental development processes, share the idea that a system is developed in " chunks ." A best practice is to start the installation very early in the product development cycle, usually by the third or fourth iteration.
The benefits are substantial. Done properly, it can be included as a step in your automated build process. With each build, the "actual" installation program can be run and configured to install the product correctly. This allows you to begin testing the installation, using it more easily in sales demos, customer evaluations, or even alpha/beta programs. Developing the installation process early can shake out dependencies among system components , ensure that the build is working correctly, and reduce the installer's overall complexity (instead of trying to do it all at once, you're doing it like the rest of the systema little at a time).
Try Various Options
Your users will; your testers should. Hopefully, if the development team understands the complexities of testing the various options, they won't provide so many.
Complex installations alter the target machine in a variety of ways, from copying files to setting various parameters (such as registry parameters in Windows). The only way you can reliably check the effects of the installation is through automation. Write programs that can accurately assess the system before and after installation or uninstallation.
Follow Platform Guidelines
As stated earlier, modern operating systems offer guidelines for installing software. They also have guidelines for uninstalling it. Make certain you follow platform guidelines and properly remove what you add or change.
Make Installation Scriptable
If your product will be installed more than once by a single organization or person, provide automation scripts for your setup. Most installation generators allow you to feed a script to the setup apps they generate so that they run automatically.
Even better, provide a way for the installer to take the log from a successful install and generate the installation script from it for future ones. Anyone who has to do 200 identical installs will thank you.