August 17, 2010 - A Most Useful Utility

I continue to build custom Windows applications and support the ones I've built over the years. For any programmer, an important step is creating an installation package that will set up the app on a particular PC and/or server. Most programmers use a third-party setup utility because the tools provided by Microsoft are inadequate.

The good news is that the aftermarket spawned a variety of excellent solutions. Very early on, InstallShield became the tool of choice and gained market domination, thus causing its price to rise. A second player, Wise, seized the opportunity with a very simple, extremely economical tool. I used Wise for years until its price started heading for the skies, joining InstallShield in the stratosphere.

When the cost of Wise became a problem for me, I started looking for alternatives. I found a program called Inno Setup written by Jordan Russell. Inno Setup is free (donations accepted) and it is very simple. Instead of focusing on a complex user interface, Russell devised a basic, declarative scripting language. He was thus able to deliver the core setup functionality in a much simpler package than would have otherwise been possible. Other folks have provided useful, visual front ends for Inno Setup; a list can be found at the Inno Setup site.

Inno Setup (IS) is great if you are a dyed-in-the-wool Windows programmer and know exactly all the files that are needed to assure your app will run. Unfortunately, knowing what to include and how to include it has gotten progressively more complex. For me, it eventually got so bad that the wizard included with Visual Basic 6 (yes, I still use it) was unable to correctly identify all the necessary file dependencies. Even if that had been perfect, a number of external packages were needed to install components that VB6 could not identify. Two critical examples are updates to the Jet Engine (aka MDAC) and the runtime files for Crystal Reports XI.

Ralph James, the proprietor of Randem Systems in Lahaina, Hawaii, likely bumped into the same problem about a decade ago. He decided to do something about it and the result was InnoScript. It began simply but over the years has become increasingly adept at handling the endless combinations of components. Today it handles Visual Basic, Visual C++, operating system updates, and Crystal Reports from version 8.2 to version 13.

Given your application project file and a selection of options, InnoScript creates the script needed by Inno Setup to generate an installation package. It does this much better than VB6's package deployment wizard, which is to say that InnoScript actually finds all the file dependencies. Over the years the program has had its bumps, but I have rarely seen the commitment and speed with which a commercial program's proprietor has reacted to fix bugs, make adjustments, tackle new functionality, and generally improve the product.

Once the script generation is complete, the click of one button will launch Inno Setup and one further click in Inno Setup will create the setup file, usually a single executable program. InnoScript also knows about ISTool and can launch it as well.

One of InnoScript's most impressive feats is its handling of Crystal Reports. Crystal was included as a component with Microsoft Visual Studio for many years, ending with version 4.6. This was a brilliant marketing move on Crystal's part because it captured tens of thousands of developers who started using the product for free and then became, shall we say, stuck with it. I'm one of those developers. But trying to understand the installation protocol for the runtimes was always difficult and in more recent years has become downright confusing. Randem seized on that as an opportunity and today, with one selection from a dropdown menu, InnoScript will include the precise scripting needed to perfectly install the Crystal runtimes. And even for older apps that still use versions of Crystal before 8.5, InnoScript properly finds all the file dependencies and generates the right script.

For me, InnoScript was a life saver. I was glad to pay the modest license fee. That fee, combined with a donation to Jordan Russell for Inno Setup, represents a fraction of the amount of money I would have needed to spend otherwise. Had I continued with Wise, I would have spent more on a product that did less for me.

Although InnoScript is technically brilliant, a tremendous time-saver, and probably the most valuable third-party development utility I own, it is otherwise a rough piece of work. The visual interface leaves a lot to be desired, with strange behaviors. For example, if the InnoScript window is reduced in size, the controls in the window do not resize and many controls are lost to view. In most apps, scroll bars would appear to deal with workspaces that were not amenable to resizing but not with InnoScript - the program is only happy when it is full screen. Typography is bad; most development products show code in monospace fonts but InnoScript uses Times New Roman for just about everything, making code harder to read and legends on controls sometimes nearly illegible. The underlying code must be convoluted by now because window redraw times are quite long.

The organization of the UI is questionable. InnoScript tends to present everything on one massive screen, some areas with tabs. The main toolbar contains all options even though when one has been chosen (e.g., VBP) many of the rest become irrelevant. The main toolbar is a mixed bag, with some buttons representing actions and others representing settings.

But while I would like to see InnoScript become prettier and better organized, my negatives mean nothing for a product that does what no other product can, does it so well, and is so actively supported. For all its warts, InnoScript is an excellent product, worthy of your consideration.

As a footnote, I should add that InnoScript would not exist were it not for the equally adroit and useful Inno Setup. I rate it excellent as well.

Tags: Excellence, Programming, Software

A total of 18 related articles were found. See them all...