InstallShield X in review

This article was originally published in VSJ, which is now part of Developer Fusion.

There really isn’t any need to give you the history of InstallShield, because even if you don’t use it for your own products, you will undoubtedly have encountered it when installing other people’s applications. It’s been a popular installation tool for many years, and InstallShield X is the very latest version – and in case you’re wondering, the “X” is a ten. You could call it the successor to InstallShield DevStudio/Multiplatform, but that would be downplaying the important new features to be found in X. With such a long track record you might think that there would be little left to improve on, but the whole issue of installation is such a tricky business that there is always something new to tackle. In this case the “big idea” is dealing with the entire lifecycle of a product.

Just recently the software “lifecycle” has become something of a buzzword, but for once this isn’t another case of “hype”. It seems that the tools that we use have finally matured enough to take notice of this important problem. You can think of it as a move from one generation of tools which focused on how to create and distribute an application, to the next generation, which also worries about how you are going to maintain and support that application.

In the case of installation tools, the big problem is in creating and managing updates. There have been facilities to create custom patches for products in the field before, but InstallShield X takes this much further.

As you would expect, there is good compatibility between this latest version and previous versions of InstallShield. You can expect to load DevStudio, Developer, Multiplatform 5 and Professional projects directly into version X. What is more, InstallShield guarantees that they will work, or it will fix it for you for free.

InstallShield X screenshot 1
There are so many supported project types that you need to scroll to see them all

Multiplatform and install anything!

InstallShield X has all of the multiplatform capabilities of InstallShield DevStudio. It can develop Windows Installer, InstallScript, Universal installer (Java) and mobile device installations. The platforms supported include versions of Windows from 98 and NT 4, through Me, to Windows XP and 2003. Non-Windows platforms include AIX, Generic Unix, HP-UX, Linux, Mac OS X, OS/400 and Solaris with a Java JRE later than 1.4.2. The Universal installer will run under JRE 1.2.2 or later. You can select from a wide range of project types that include the old, such as Visual Basic 6.0, and the new (C# .NET for example). There are always going to be problem machines and even problem application requirements, but InstallShield includes as many possibilities as standard types as is reasonable, and provides the flexibility for you to build custom workarounds for any uncommon requirements.

As well as providing extensive cross-platform support, InstallShield is strong on specific Windows support – which is understandable, given that this is the most common target environment. It will integrate with Visual Studio .NET, and you have a choice of running within the VS.NET IDE or in native mode.

As well as full support of the Windows Installer (MSI), it goes beyond simple desktop application support. It will create installations for web and database server applications that directly configure IIS and SQL Server. For example, the installer can create an entire web site for your application to use, or import schema from a SQL database. You can also allow the user to take control of some of the steps – selecting the server, authentication, and so on. COM+ components can also be installed and configured very easily. Server support has also been extended to non-Windows servers, and it can create installations for the Apache web server, ANT and J2EE servers.

In many cases you probably don’t need to delve too deeply into the process of the installation configuration. The Project Assistant asks you for an estimate of your level of expertise in using InstallShield, and then takes you step-by-step through building your installation package. Basically all you have to do for a minimal installer is to state the type of project and the type of distribution. The options can be as simple as “This installation will be deployed to end users” or as specific as “This installation will target a 64-bit operating system”. Once the Wizard has finished, you can customise what it has created for you. In most cases there are further Wizards to help, but in most cases going manual isn’t that difficult. The Project Assistant tab gives you simplified access, usually via a Wizard or a form to fill in. The Installation Designer tab gives you more direct access to the details of your project via a grouped hierarchy panel. Even so, it’s still easy to use.

InstallShield X screenshot 2
The project assistant makes the process of creating an installation step-by-step

Built on core strengths

Most of the basic facilities in earlier versions of InstallShield are still present, usually with additional enhancements. DevStudio performs file dependency scanning to make sure that DLLs, OCX’s etc. have access to the files that they explicitly depend upon. Conditional installation is also easy, and you can arrange for the installer to search for specific files on the user’s system and take action depending on what is found. Standard modules of third party distributables are available to make sure that your application will run without you having to take the trouble to find them. You can also make up your own modules.

The dialog box editor makes it very easy to create custom screens and to place them within the installation process. A good range of standard dialogs is provided, and all dialog boxes can be customised by “skins”, i.e. a complete set of parameter selections that control the way the dialog boxes appear. Overall an InstallShield generated installer looks clean and impressive.

InstallShield X will also handle the problems caused by the range of potential installation media. It can create a “one-click” installation file suitable for downloading from the web or it will span multiple volumes of diskette, CD or DVD. Installation for portable devices is just as easy. Windows Mobile, Smartphone 2002/2003, including SQL Server CE and .NET Compact are supported along with the Palm OS. The Smartdevice setup wizard can place the installer on a flash memory card, for example, so that it can be used to install your application directly onto the device.

All of this means that InstallShield shouldn’t let you down when you use it to create an installation package – it’s easy to use, it works and it looks good. But what happens when your application needs an urgent upgrade, perhaps to fix a security problem? When something serious happens to affect a Microsoft product, users are automatically notified and the service pack is downloaded and installed without them having to do anything much at all. You can give the same ease of update to your own application. The InstallShield Update service automatically detects what version of your application the customer is running and selects the updates that apply to them. This is not only easier for them, it also reduces the chances of them installing an inappropriate service patch, and hence reduces your need to untangle the mess that they would have created. As with InstallShield X, the Update Service is cross platform in the sense that it can update OCI, EXE, MSP, MSI, JAR files and more.

You can also target your user base by sending updates only to customers that satisfy a set of conditions. The updates are downloaded from the web automatically, and the user can opt to download now and update later. To reduce the load on the servers, and to make sure that the update is working, you can also stagger the rollout by targeting only a percentage of your user base. Equally you can rush an update out by marking it as “critical”.

Of course your updates don’t necessarily come for free, and you can make sure that customers still qualify for support by including customer authentication within the update service. The Update Service is fully integrated with InstallShield X, and it works by adding a .EXE module to your code – this adds 600k. You are responsible for hosting the update package on your own Web or File server, but InstallShield hosts the central database and web site to which the user connects to see if an update is required. The only minor problem is that the Update Service can’t do anything about updates that might become available to any third party components you might be using – this is a difficult problem and it really requires us to work out a standard way of doing updates.

InstallShield X screenshot 3
The upgrade feature is new – now your users can be informed when an upgrade or service pack is available [Click to enlarge]

Twin editions

InstallShield X is available in two versions – Professional and Premier. The Professional edition comes with a starter version of the Update Service with support for 50,000 users, which simply provides a link to your web site, which the user has to visit in order to manually download and install the update. The Premier edition comes with full support for automatic downloading and management. The only other differences between the two are that Premier supports multi-language installations, XML and Apache Ant, AIX and OS/400, has advanced JVM support, and will create an interactive CD.

You can find out more about InstallShield X from the company’s web site, where an evaluation version is available for download if you want to see for yourself how good it is before buying a copy._

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Programs must be written for people to read, and only incidentally for machines to execute.”