Having been involved in a fair number of development projects over the years, I've often wondered what goes on during the process of setting up and configuring installation programs using authoring tools such as InstallShield. The task of generating a setup program was always assigned to some unsuspecting junior programmer on the team. How they were able to get all the various components, registry settings and so on set up in the tool and compressed into a single file was always a well-guarded secret (I always thought it had something to do with job security). Anyway, driven by curiosity and answering the call of duty, I accepted the offer to evaluate the new 3.0 version of InstallShield Java Edition.
InstallShield is the de facto standard for installing MS Windows-based software today. If you're a Windows user, you've probably used it on more than one occasion. With the increasing amount of software being developed in Java today, InstallShield Software Corporation has developed a product tailored toward deploying cross-platform applications.
The new 3.0 release introduces a more powerful user interface, making it even easier to deploy software to multiple platforms in a seamless manner. The 3.0 release also provides more control over your installations by allowing you to develop custom UI actions and conditional rules.
As I popped in the install CD, I found myself wondering how many chances you get in a lifetime to install a program that's used to create other install programs. It's like compiling compiler source code - it just doesn't happen too often. The question did enter my head about whether the company that has essentially standardized the software installation process might turn out, when it came to installing its own products, to suffer from the same problem as the cobbler - you know, that of not having decent shoes for his (or her) own children. On the contrary, though, except for some minor issues that I'll explain shortly, the install went flawlessly.
Some things that you might reasonably expect when installing software from a CD were missing. Most CDs today incorporate an auto-install feature that starts things up when you place the CD in the disk drive. After placing the InstallShield CD in the test machine, the drive clicked, hummed and made its normal assorted sounds giving the impression that the install would soon begin. After a minute or so of silence, I had to make the inevitable decision that most of us have come to at one time or another when installing something: Is the installer program still thinking or is it in some zombie-like state? After giving it another minute or two, I took the next logical step and checked for an autorun.exe file on the root directory of the CD. I found none.
It turns out that in order to install InstallShield you need to click on the setup.html file located in the root directory of the CD. (I know, I know: read the installation manual first!) Another thing that caught my attention was that the volume label for the CD was set to some identification code (presumably the release or version number) as well as using the default icon for a CD. Again, a cosmetic issue, but something that can be improved on.
To start the installation, I double-clicked on the CD's setup.html file in Windows Explorer. This opened a browser page containing full setup instructions. I was on my way. A Java applet on the browser performed the actual installation - one of the features provided in InstallShield 3.0.
The installation requires you to choose a default Java Virtual Machine for deploying Java-based software on target machines lacking a preexisting JVM install. You're provided with several options, including the ability to use one of the JVMs currently installed on your machine (it even has the ability to search for existing JVM installations on your PC), or you can use the JVM that comes preinstalled with the InstallShield software. The remainder of the installation continued without any difficulties.
InstallShield's core architecture relies on an extendable set of JavaBeans, each specializing in one aspect of the installation process. Authoring a setup program involves stringing together a series of both visual and nonvisual JavaBean components, the end result being the finished installation (see Figure 1).
Version 3.0 provides a totally rebuilt IDE that breaks up the authoring process into a set of manageable views; I found it easy to use and intuitive (see Figure 2). Version 3.0 also provides the ability to export your installation setup to multiple environments including Java applications, Java applets or self-extracting setup files. For UNIX installations you can export your setup to run as a UNIX shell script (limited to Sun Solaris for now).
As mentioned earlier, this version includes an IDE that provides you with an easy-to-use interface for authoring your installation. The IDE uses a user interface similar to that found in Microsoft Outlook and includes a project tree, several project views, menu choices, toolbars and integrated help.
The view bar contains several icons that represent the various views (or steps) in the setup and configuration process. Authoring your installation involves configuring each view according to your requirements followed by a build.
The first icon located on the top of the view bar is the Project setup. This is where you identify your work environment from a project level, similar to setting up a project in other IDE environments. Here you create the names of your project and of your work file directories.
Build Configuration- create the archive
The next icon, the Setup Design view, allows you to define the product you need to install and its features. Each feature can likewise be assigned one or more components. The products, features and components are represented in a hierarchical tree structure in the IDE. The components can be files, registry settings, user environment settings or program groups. It's in this view that you specify how a component is to be installed on the target machine. The decision about when and if a feature and its associated components are to be installed is specified later in the authoring process.
The Installer view also allows you to set up a design tree that includes the installation properties and the sequence of events that take place during the install process. Depending on conditional rules, the setup panels in the design tree will call on various features and their components.
One nice feature that version 3.0 provides is support for uninstalling a product. The Uninstaller view provides capabilities similar to those in the Installer view, except that the actions performed are designed toward uninstalling various components instead of installing them.
The next icon is the Resource view. This view allows you to attach additional resource class files to your setup including support for internationalization and customized JavaBeans.
The last view, the Build Configuration view, allows you to configure property values describing the setup program's appearance to the user. In addition to choosing the export file type, you can specify which hardware and/or software platforms are to be supported by the setup as well as providing optional languages.
Taking a Test Run
Authoring your installation requires the following steps:
- Create a new project.
- Set your project properties.
- Design your application setup.
- Create the install/uninstall sequence.
- Configure the build.
- Build the archive.
Although I'd never worked with InstallShield before, I was able to put together quite a polished self-extracting install package with little effort that looked and behaved like the real thing. I started off by simply configuring InstallShield to install the nearest file I could get my hands on - an unsuspecting readme.txt file located in the file browser. The setup program did a fine job of installing this file to the target directory on my PC. Not much of an install, but it did force me to go through each step in the authoring process.
The setup panels you'd normally see in an InstallShield setup program were easily identifiable as JavaBean components in the Installer view. Anybody who's used InstallShield would easily recognize the purpose for each JavaBean component.
Authoring my simple setup program was relatively easy and was done in one authoring session. To help you along the way, InstallShield provides you with step-by-step instructions and wizards. As I tried out the various install panels, I found myself repeatedly building a setup program, then executing the resulting setup to see how it looked. One thing not provided in this release, but which would be nice, is a preview button that would allow you to go through the install process without actually having to build and run the setup program. Maybe in the next release....
After several dozen build and test cycles, I started running into some memory problems on my PC - the JVM's garbage collection mechanism probably hadn't been able to catch up. After rebooting my machine, things were back to normal. I can't foresee experienced users, who can create a finished product with fewer development cycles, having this problem.
The ability to customize the installation process by assembling JavaBean components together is a nice feature. Each install panel and its functionality are represented in a separate JavaBean. For example, there are panels designed to allow the user to enter the install directory or display the legalese required for licensing (it also includes agree and disagree buttons). Each of the window frames typically found in an install program can be selected from a panel and assembled into the installation sequence. Although each JavaBean component available in the "Add Bean Wizard" did include help information describing its purpose, it would be nice to see an example of how the frame would look in the install program ahead of time. Also, the same icon was used to represent each JavaBean component in the IDE and didn't help you visualize what their representative panel looks like.
One additional note is that when I attempted to author a Web site installation involving approximately 10M of image and HTML files on a notebook computer with 128MB of RAM, the authoring process was problematic. When I performed the same operation on a more powerful desktop computer having 256MB of memory, it completed the authoring without any problems.
Ready-to-use projects templates
Another feature introduced in InstallShield 3.0 is the ability to install software on the Sun Solaris operating system using the same interface used for Microsoft Windows. I recently was involved in installing Solaris on a Sun Enterprise 450 Server. Being accustomed to UNIX installations in the past on other platforms, I wasn't looking forward to going through the ordeal. Instead of the usual set of command line instructions, buggy shell scripts and out-of-date documentation, I was pleasantly surprised to find InstallShield used in the Solaris Web Start program setup. It made installing Solaris a snap.
Support for custom and typical install types
This is actually one of the better examples of how Java's write once run everywhere architecture can be used to create standardized user interfaces across different hardware and software platforms. For UNIX administrators who have grown accustomed (and inured) over the years to the crude shell script-based install "programs" found in UNIX, InstallShield Java Edition comes as a welcome relief.
One-step Java Virtual Machine bundling
Some additional features include support for migrating version 2.5 projects to version 3.0 and additional language support for Chinese, Korean and Swedish. The IDE environment provides useful help information to guide you through the authoring process. You can also design custom JavaBean components and employ them in your setup, providing unlimited customization.
Installation UI Management
InstallShield 3.0 Java Edition introduces many new features and makes it even easier to author your installation programs. It provides out-of-the-box functionality that will cover the majority of your installation needs, as well as cross-platform support for deploying software to Windows- and UNIX-based systems. The InstallShield software is easy to install and to set up - as befits a company that specializes in installing software!
Joe Mitchko is a senior consultant with Computer Sciences
Corporation where he specializes in Internet architecture.