The easiest way to customize Windows Installer package deployments

Even before Microsoft released Windows 2000, the OS's performance enhancements and new features had created a buzz, much of which centered on Active Directory (AD). Win2K's Microsoft Windows Installer technology didn't garner much attention; after all, application installation—even when you use the newest software management and deployment technology—isn't an administrator's most glamorous responsibility. But whether you consider application deployment glamour or grunt-work, you need to familiarize yourself with Windows Installer and the tools for exploiting it.

One such tool is InstallShield Software's InstallShield Tuner. This utility lets systems administrators easily create and validate transforms. A transform, or .mst file, is a record of the differences between two Windows Installer (.msi) packages, one of which is usually the vendor-supplied original and the other a copy you've customized.

When you deploy the .msi package, you direct the Windows Installer service to use the .mst file to modify the actions programmed into the original .msi file. In addition to modifying actions, .mst files can add items (e.g., files and registry entries) to an installation.

Transforms are the only practical means for extensively customizing and maintaining .msi package functionality, and Tuner is a tool for creating transforms. To read more about other available tools, see the sidebar "Other Helpful Tools."

Tuner is a unique intermediate tool that spans the gap between Windows Installer authoring tools designed for vendors and the collection of utilities available in the Windows Installer software development kit (SDK). Without having to learn the intricacies of Windows Installer technology, you can use this simple yet functional tool to customize your applications before you deploy them. However, the better you know Windows Installer, the more easily you'll learn Tuner's functionality. See the sidebar "Understanding Windows Installer" to learn more about Windows Installer functions and features.

Getting Started
Tuner ships on a CD-ROM with a thin Getting Started Guide. Installation is easy, and Tuner's browserlike UI is simple. The UI's first options include creating a new transform, editing an existing transform, and opening the online Help. I chose to create a new transform and browsed manually for an .msi package on a CD-ROM in my local drive. After I located the .msi file, Tuner prompted me to enter a name and destination for the transform I would create. One UI pane then displayed a hierarchical tree of the six steps I needed to take to create the .mst file, and another pane displayed HTML Help text describing each step.

The first step is MSI File Prevalidation. Before you create a transform, you can use this step to execute Internal Consistency Evaluators (ICEs) that search all aspects of the .msi database for potential problems. More than 70 interrelated tables comprise the .msi database. These tables contain installation instructions, configurations, and logic for .msi packages. Tuner executes the Full MSI Validation Suite (darice.cub) and Windows 2000 Logo Program Suite (logo.cub), both of which you can also find in the Windows Installer SDK. A .cub validation suite (commonly called a cube) contains several ICEs.

An output window in Tuner's UI displays the validation test results. Figure 1 shows the results of a prevalidation test I ran. Much like an event log, the report gives you informational, warning, and error messages. You can choose which of these three types of messages you want Tuner to display. Tuner lets you make transforms from .msi packages that produce warning messages (e.g., unsupported use of a registry key, use of a reserved .msi database attribute). However, whatever causes the warning message might later cause you trouble, so I recommend carefully evaluating these messages.

The .msi packages that produced only warning messages and the transforms I created from these packages didn't result in any problems later in my testing procedure. However, if something in an .msi package were to cause problems with an application rollout, the validation report would be a useful troubleshooting tool. The report points you directly to the .msi database table and field in which the problem exists. From that field, you can do a Help search.

Error messages indicate more serious problems, and an .msi package that produces an error message fails prevalidation. The Help text gives recommendations—including contacting the vendor responsible for the package—for dealing with invalid .msi packages.

An .msi package that fails prevalidation has problems that might ultimately cause failed installations or impair Windows Installer functionality. For example, the first .msi package I examined failed prevalidation because more than one package component claimed the same .dll file. Thus, uninstalling one of the application's features could render another feature—or the entire application—inoperable.

My prevalidation experience was an eye-opener. Not one .msi package I tested was free of warning messages, and several failed prevalidation. Even the .msi packages that the Windows Installer SDK includes produced warning messages.

I spoke with InstallShield and Microsoft about these excessive warnings, and both companies stated that warning messages simply point out potential, but not necessarily inevitable or definite, problems. A Microsoft Windows Installer team member said that the purpose of the validation suite's warning messages is to prompt developers to closely scrutinize their package constructions.

Creating the Transform
After I prevalidated my application's .msi package, I moved to step two in Tuner's transform creation process: Setup Organization. This step lets you set the application's default installation path and organization name. As Figure 2 shows, Setup Organization then lets you select whether a feature installs by default and is visible to the end user. Features are the components that make up an application and are most well known as the optional items you select during a manual setup routine. For example, when you set up Microsoft Word, you can choose whether to include the optional file-conversion filters.

You can use the default state and visibility settings to control end users' abilities to choose features. If you want to make an application feature mandatory, you can use Tuner to configure a transform that sets the feature as invisible and its default state as installed. Figure 2's center pane shows a list of features you can select to configure; the upper-right pane's list box shows the selected feature's configuration options.

Step three, Target System Configuration, lets you configure the transform to add, modify, and remove files, registry entries, shortcuts, and folders on the system on which you're installing the application's .msi package. This step's UI let me simply drag files, folders, shortcuts, and registry entries into the transform file I was creating. This drag-and-drop capability, common in many snapshot tools, gives you flexibility for customizing and standardizing installations for your organization.

Step four, Identify Additional Servers, lets you leverage the source file resiliency that Windows Installer technology offers (for more information about source file resiliency, see the sidebar "Understanding Windows Installer"). In this step, you can define the paths and the order in which Windows Installer searches these paths for the source files it needs to repair an application or install a feature. To designate paths, you can use Uniform Naming Convention (UNC) paths, drive letter designations, and path statements that use environment variables.

Application Configuration is step five. This step lets you configure, add, and remove transform settings. These settings affect the application's setup properties. As Figure 3 shows, the Setup Properties interface lets you modify the contents of the .msi package database's Property table. The Property table contains global application and installation settings that you can edit. Tuner also lets you add properties to the table. For example, you can add REBOOTPROMPT to suppress a prompt dialogue and automatically reboot the PC without user interaction. Be aware that adding or editing properties incorrectly can cause failed validation. Before you take such action, refer to Tuner's MSI Help, which explains the different properties and their values.

Working Through a Confusing UI
I enjoyed each step's helpful UIs—until I reached step five. The Application Configuration UIs don't adequately explain the different icons that represent transform settings and don't clearly specify which settings you can edit. Furthermore, many of the settings that you configure and create in other steps also appear in these UIs, which can be confusing if you're not familiar with these settings' names, functions, and relationships to other settings.

For example, in Application Configuration's Add/Remove Settings UI, you can modify what appears in the Control Panel Add/Remove Programs applet. I chose to disable my test application's Remove button. After I made this change, the ARPNOREMOVE property automatically appeared in the Add/Remove Settings UI. I then needed to hunt down an explanation of this setting and how it could affect my application. But Tuner's print documentation didn't explain the Application Configuration UI icons and the relationships between settings. I checked other Tuner Help sources, but found contradictory information. Tuner's MSI Help was the last place I looked. This online Help file contains the Windows Installer SDK's Help library, which provided abundant developer-focused information about Windows Installer but not the answers I needed.

I finally called InstallShield, and the product engineers and I worked through the details together to clarify what Tuner's Help sources didn't. The engineers also mentioned that they're improving the Help text. After I worked with Tuner a bit, I figured out the relationships between the .msi database's Properties table and Application Configuration's settings, but I still didn't find any rhyme or reason behind the icons Tuner uses to represent these properties. InstallShield's engineers are addressing this problem as well.

After working through the Application Configuration UIs, I moved on to the sixth and final step: Transform Postvalidation. This step is like the first step's prevalidation process, except that the last step validates the .mst file you've used Tuner to create rather than the .msi file with which you began. Transform Postvalidation let me run the same .cub files that I ran in the MSI File Prevalidation step.

When I ran the validation suites, Tuner displayed the results on a tabbed sheet in the output window (you can select another tab to view the .msi validation output). The postvalidation process was helpful for debugging problems I had created in the transform. (To debug, I returned to Tuner's transform creation steps and fixed the problems.) Tuner's transform validation features are especially useful because the only other tools that offer this capability are developer-focused authoring suites.

A Quick Quiz
Aside from my troubles with step five, Tuner met my expectations for a utility that simplifies creation of valid Windows Installer transforms. Your decision to buy Tuner will depend on your answers to several questions:

  • How many transforms do you need to create? If you need to create only an occasional transform, you might be hard-pressed to justify a $599 expenditure for Tuner. In this case, look over the alternative utilities that the sidebar "Other Helpful Tools" lists.
  • What level of Windows Installer expertise is available to you? If your organization has inhouse developers, they'll likely have the knowledge and tools to create .msi packages and transforms without Tuner's help. If you and your coworkers don't have Windows Installer expertise and you need to frequently create transforms, Tuner will save you enough time and trouble to make the product a worthwhile investment.
  • Do your applications' vendors provide tools for customizing their applications' installations? InstallShield intends to sell customized versions of Tuner to software vendors who will bundle it with their applications. (These customized versions will work only with the applications with which they're bundled.) And you don't need Tuner to customize Microsoft Office 2000 deployments; you can use Office 2000's Custom Installation Wizard to customize that product's .msi packages.
  • Do you plan to use Windows Installer functionality? Windows Installer has several benefits, but you might choose to stick with your established installation methods. After all, third-party installation engines still work with Win2K. However, to adhere to the Windows Logo program and take advantage of Windows Installer's features, more vendors are shipping applications in .msi file format.

As an administrator, you'll likely need a tool that quickly customizes Windows Installer packages for your environment. Tuner will meet that need.

InstallShield Tuner
Contact: InstallShield Software * 847-240-9111
Price: $599
Decision Summary:
Pros: Makes quick work of creating transforms of .msi files; includes validation features for .msi and .mst files; product documentation includes the Windows Installer SDK Help library
Cons: One step's UI and the Help text about it are confusing; to justify the product's cost, you need to use it to create a large number of transforms