Programming Tools: InstallShield X
InstallShield X creates universal software installers. It runs on any of the main platforms--Linux, Windows, Mac OS X, BSD and others. Using InstallShield X, it is possible to create cross-platform installation packages. Thus, I can create Windows executables on my Linux system, given that I have the requisite Windows libraries, as long as my application itself is not platform-dependent.
Although we have .rpm and .deb packages under Linux, it is clear they are not enough, which is the reason why I am reviewing this commercial product. Originally, I was going to review a major open-source system; let's call it P. This package has a good reputation and was recommended to me by several people. I downloaded P from its home Web site. I ensured I had all the prerequisites. I also checked that all dependencies were satisfied. Next, I installed P, and installation went smoothly.
Now, it was time to start P, which seemed to happen okay. So, I asked its status. What I got was a crash with a back-trace of some obscure key error. The program seemed to be accessing a non-existent file. Perhaps I had a bad RPM. I decided to RPM to uninstall the original P. I then went to a different source and did a reinstall. I repeated the same steps as above and got the same result. Because the error message itself was not too informative, I did what any of us would do today--I Googled the error message. There, I found a half dozen mentions of this error message, posted over the course of six months. However, there was no clear answer as to why this error occurred or how to fix it. One message response suggested that I rebuild the application from source. P needed a base package, however, which we shall call Z.
Using its latest stable RPM, Z installed flawlessly. Then the fun began. It asked me for a user name and password. I was more than willing to comply, but I had no idea what Z expected as a user name and password. I reviewed the documentation, reread a book on Z and Googled for the password. All to no avail. After three hours, I was unable to configure Z to serve as a base for P.
I was frustrated by the wasted time; I also felt terribly sad. Thousands of man hours, blood, sweat and tears went into developing P and Z, and it all was wasted because the installations did not work! Also, in the real world, application crashes are unacceptable. So too is not fixing the problem for over six months. Neither a fix nor a workaround were posted.
Which brings us to this review. By chance, I still had a copy of InstallShield X Universal Premier, which I had received at LinuxWorld earlier this year. Thus, I decided to review this product. If you can produce reliable installation packages using this package, then it is worth the money.
As one would expect, the installation went smoothly. Basically, I clicked through the complete installation, including agreeing to the license and accepting the default location for the product. It supported both basic and custom installs.
InstallShield X comes with excellent and complete documentation that is a pleasure to read. InstallShield X is a Java application, and I installed it on a SuSE 9.1 Professional system.
When creating a product for distribution, one fact stands out: an installation package requires as much design and effort as any other part of the product. Throwing it together at the last minute does not work.
An InstallShield X project is made up of a product and an optional wizard. A product is composed of one or more features. Each feature is made up of one or more components. Components are made of one or more files and actions--think data and function members in a class. Files are a grouping of files that belong in the same target directory.
A wizard is made up of a number of dialog and action elements. It is part of the sequences view that the user sees during installation. Dialogs can be created using Java or the built-in dialog editor. The latter is part of the Premier package. Wizard actions can run asynchronously before and/or after your product is installed.
This product's Universal version includes the platform packs facility to handle platform-specific installations. International localization also is a part of this product, so your installation package can respond to different locales. InstallShield X also supports incremental updates in the same install package as a full installation.
InstallShield X can create an uninstaller automatically. Because the software keeps track of the order in which it installs things, it can uninstall the elements of your product in the reverse order in which they were installed. While doing the uninstall, InstallShield X checks for dependencies and allows the user to resolve any conflicts. Incremental uninstalls also are supported, which allow users to remove individual features of their products.
A new powerful project wizard is a part of InstallShield X. Anything created using the wizard can be tailored further by the installation designer.
InstallShield X can create your installation package as a single executable, as a Java applet executable from your Web site or as a directory structure suitable for use in burning CD-ROMs.
Due to its genesis, InstallShield X is biased towards Java. However, it is fully capable of handling other languages, including C and C++.
Overall, I had some product concerns, not user concerns. Support is an issue: you get support only if you pay. Before obtaining assistance from InstallShield, I needed to have a support contract. My other option was to pay per bug report. For the price InstallShield charges for its product, I expected a minimum of 90 days of installation support. Furthermore, InstallShield prices may be a real issue for smaller users. Afterwards, though, I was told that free 30 day pre-sale support and 15 day post-sale support is offered.
The initial version of InstallShield I tested had a few problems. The built-in update facility did not work. From the contents of the home Web site, I do know that two updates are available. I was able to download the updates (both .jar files), but I had no idea how to apply them and there was no information about this step on the Web site. Also, I experienced a problem trying to incorporate the automatic update facility in the installation package for a non-Java application.
Perhaps as a consequence of being closed-source, no bug list is publically available. Thus, I could not find if these problems had already been reported.
Another issue is the patch process. It could be more automated. For example, there is no integrate diff facility.
A final minor nit: the tutorial help screens do not contain a simple way to go to the next or previous help topic. You must use the hierarchical table of contents.
If InstallShield X does nothing else, it gives you an opportunity to design your installation package. If, after all your hard work, your application does not install correctly, it is a terrible waste. InstallShield X can help prevent this, while giving your application a polished look. This does not mean the generated package is free from problems, but the creation of the installation package is less of a hassle.
For this review, I used the high-end version of the product, called InstallShield X Universal Premier. See the InstallShield Web site for a comparison showing the features of the various versions.
Almost the last word: in the Linux world, most of us are used to tweaking config files and compiling from source. This is not done in any other consumer OS. To be able to expand our user base, we need tools such as InstallShield X to make the experience of installing and upgrading as painless as possible.
Lastly, and ignoring some of the problems, it was pleasure working with this product.