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++.
Special Reports: DevOps
Have projects in development that need help? Have a great development operation in place that can ALWAYS be better? Regardless of where you are in your DevOps process, Linux Journal can help!
With deep focus on Collaborative Development, Continuous Testing and Release & Deployment, we offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, advice & help from the experts, plus a host of other books, videos, podcasts and more. All free with a quick, one-time registration. Start browsing now...
- The Ubuntu Conspiracy
- A First Look at IBM's New Linux Servers
- Vigilante Malware
- Disney's Linux Light Bulbs (Not a "Luxo Jr." Reboot)
- Libreboot on an X60, Part I: the Setup
- System Status as SMS Text Messages
- Bluetooth Hacks
- Vagrant Simplified
- Dealing with Boundary Issues
- Non-Linux FOSS: Code Your Way To Victory!