A wise TV commercial once said, "You never get a second chance to make a first impression." That's spot on. An application's installer is the first (and oft times last) impression a program will make. If it's too complicated, counter-intuitive, buggy or worse -- non-existent, most users will give up and contact support or find another application. Developers frequently lambast so-called 'lusers' for failing to stick out mildly complicated installations but it is actually the designers that deserve the blame. Even patient and intelligent users will rightly choose not to bother with your application if the installation is not straightforward. Rather than view a crappy installer as a temporary setback, they'll see it as a preview of things to come. If the developer can't be bothered to make a decent installer, why would anyone expect the application itself to be any good?

Clarity

An installer should be clear and concise. The new Windows installer is unnecessarily confusing. It is totally unclear which selections can be changed, how to change an option and what the current state is. Confusing installer says 'what'

Back/Next

One of the sloppiest and most common problems with installation wizards is poorly implemented Back/Next functionality.

No backs allowed

CDs

If your installer requires a Windows CD, another application, a key or some other such thing, check for it at the beginning. It is extremely annoying to start an installation, put some effort into making decisions and then have to abort. It's even worse when the installer has started doing things and your machine is left with a half-installed application. Users know that computers are finicky beasts and from that moment on, they will never know if any problem they experience is related to the failed installation. An important corollary is that an uninstaller should never require a CD.

Defaults

Most users will race through your installation wizard by frantically pressing 'Accept', 'Next' and 'Finish'. This should result in a functional application with a reasonable configuration. If you're financing development with optional Spyware, it's understandable if you install that crap by default. Just be aware that you're essentially trading in a positive impression for financial gain. Note also that deceptive windows will really annoy users. By 'deceptive', we mean dialogs that use intentionally unclear language or pictures of native controls that actually hyperlink to sponsors. Real Pain

Environment

Installing an application should have minimal impact on the existing environment. Users get extremely PO'd when a new application breaks existing ones. This is especially frustrating if the breakage goes unnoticed for some time (which makes tracking down the problem exceedingly difficult).

Existing Installations

If a previous installation exists, make an attempt to handle the reinstall gracefully. You can choose to allow multiple, separate installations but a user should end up with a whole number of installed applications. Overwrite completely or not at all.