There are few areas of software development that programmers avoid more studiously than that of installer creation. It’s almost as if the creation of the software that actually deploys a given product is not seen as a development task worthy of attention. So, if there’s a choice between using the latest open source product or creating a cross-platform installer, the vast majority of developers will opt for the former. This is bad for a number of reasons.
The Area of Deployment
The first thing seen by users who buy your product is the installer. I’ve often installed products that feature installers with flashy graphics and attractive dialog boxes. Typically, such installers request a few details, such as the install directory, the host name, license keys, and so on.
The installer then carries out some tests for disk space and other platform issues. Finally, the installer gets down to the business of copying the software onto the host machine.
Everything seems to be going well until a cryptic message appears saying something like this: "An error occurred—see log for details". The problem is that there is no log, and I’m left scratching my head and a possibly incomplete installation.
Installation is, in fact, a very interesting area that presents unique challenges. For a start, it requires a broader overview of the software being deployed than would be the case for an application developer. An install engineer must have a reasonable grasp of most of the elements that make up the software: servers, GUI, clients, database, and so on. To work in deployment requires moving up the value chain .
AntInstaller is an open source package that helps take a lot of the pain out of creating installers. I’m not saying that you can’t ever get bad results with installers built using AntInstaller, but at least the latter takes care of many of the more time-consuming issues. And it does this using tried and tested Ant technology.
So, if you know Ant, you’re a long way down the road of being able to build an AntInstaller project.
Let’s take a quick look at some of the different installer technologies available today. This list is not meant to be comprehensive; it just illustrates the general approaches taken.