Course Overview
InstallShield Refresher/Advanced

Review of Latest InstallShield Versions and Installation Techniques

InstallShield Refresher/Advanced Course (3 Days)

If you have been using InstallShield for some time and need a refresher on the latest versions of InstallShield, installation techniques and new target environments (OS, IE, etc.) then this course is for you. The further course provides you with a solid understanding of advanced techniques for customizing the appearance and behavior of your installation program.

The techniques used in this course involve Basic MSI projects in InstallShield, which use the Windows Installer service (MSI) for the installation's behavior and appearance. While the course does occasionally make use of InstallScript custom actions in Basic MSI projects, this course does not cover InstallScript MSI projects.

InstallShield MicroConsulting

InstallShield MicroConsulting provides assistance for specific, short-term needs like setup challenges or troubleshooting failed patches and updates. The service provides eight hours (over one business day) of dedicated consulting time on up to three installation topics, delivered remotely by our installation experts.

Learn More

Objectives

In this class you will learn how to:

  • Improve your installer's appearance using advanced control types
  • Provide detailed user feedback using billboards, progress information, and logging
  • Correctly create custom actions for extending Windows Installer functionality (and learn when not to!)
  • Avoid common pitfalls when coding custom actions
  • Work with InstallShield prerequisites and chained installations to handle multi-package requirements

Course Prerequisites

  • Successful completion of the InstallShield training course "InstallShield, MSI Projects"
  • Experience implementing at least 1 large installation project using the Basic MSI project type
  • Experience implementing at least 2 medium installations using the Basic MSI project type
  • Experience implementing at least 4 small installations using the Basic MSI project type

Note: Experience with InstallScript projects provides a sound basis for the Installation domain, but this experience alone is not a sufficient basis for the Advanced MSI course. At least one of the prerequisites above should be met before enrolling in this course, regardless of the amount of InstallScript experience the student possesses.

Many sections of the course assume familiarity with at least one of the programming or scripting languages C/C++, InstallScript, C#, or VBScript.

Course Curriculum

The following course sections and topics will be covered in the class. If you have a specific area that you think will need extra attention, mention it to your instructor on the first day of class. The course is more hands-on and a lot of practical examples will be used.

Introduction and Review

The course begins with a brief review of Windows Installer and InstallShield concepts and terminology used throughout the week:

  • About Windows Installer installation packages
  • Product organization: features, components, and key paths
  • Properties and conditions
  • Using the InstallShield environment
  • Package validation
  • Features introduced in recent InstallShield versions

Installing Files

The primary job of your installation program is to transfer files to the user's system. In this section, you will learn about the different methods for adding files and folders to your installation project, including:

  • Static and dynamic file linking
  • Working with destination folders
  • Best Practice fundamentals
  • "Key" resource usage
  • GUID usage
  • Restarts and the Windows Restart Manager
  • Creating shortcuts
  • Using merge modules and prerequisites

Building Releases

Before you can test your installation, you must build a set of disk images. In this section, you will learn how to use the InstallShield graphical tools and command-line tools for building release images for CD-ROM or DVD-ROM, a network location, or for the Web. In this section, you will learn about:

  • Using the Release Wizard
  • Media types
  • Web installations
  • Command-line builds
  • Using the InstallShield Automation interface
  • Digitally signing the installation and files
  • Using the Standalone build system

Deploying an Installation

Windows Installer-based installations support several different installation modes. In this chapter, you will learn how to run an installation from Windows Explorer or from the command prompt, how to perform silent and limited-user interface installations, and how to pass information to the running installation from the command line. In this section, you will learn about:

  • Running an installation
  • Understand how to interact with User Account Control (UAC)
  • Maintenance and uninstallation
  • Reducing installation time for large packages
  • Using msiexec.exe
  • Silent and reduced-UI installations
  • Passing properties from the command line
  • MSI Log Analyzer

Non-File System Changes

In addition to installing files, most installation programs need to make global changes to the user's operating system. In this section, you will learn how to install configuration data, such as:

  • Registry data
  • Text files
  • INI files, XML files, and arbitrary text files
  • Environment variables
  • File associations
  • Setting file, folder, and registry permissions
  • Scheduled tasks

Installing Special Files

For most types of files, the installer's only responsibility is to transfer the files. However, some types of files require additional registration or configuration information to be written to the target system. In this section, you will learn how to install and configure the following types of files:

  • COM servers
  • Windows services
  • .NET Assemblies
  • Running SQL scripts
  • Forcing data removal

Creating and Consuming Reusable Installation Elements

InstallShield provides methods for creating elements that can be used by multiple installation projects, and for combining multiple complete product installations. In this section, you will learn about:

  • Creating merge modules
  • Creating InstallShield prerequisites
  • Working with repositories
  • Creating suite projects
  • Chaining MSI installations

Conditions and Actions

Unlike traditional installations, Windows Installer installations do not use an explicit script, but instead perform actions arranged into your product's sequence tables. In this section, you will learn about:

  • MSI properties
  • Condition syntax and examples
  • Installation sequences
  • Custom actions: action types and guidelines
  • Getting and setting properties
  • Launching executables
  • Calling DLLs
  • Managed code custom actions
  • Editing MSI tables directly

User Interface

Like standard Windows Installer actions, your installation's user interface is controlled by MSI tables and actions. In this section, you will learn about:

  • How MSI determines dialog order and conditions
  • Working with control events
  • Working with control conditions
  • MSI Debugger
  • Creating new dialog boxes
  • Subscription to Actions
  • Localization

Updates and Patches

Windows Installer supports different types of updates and different techniques for packaging them for distribution. In this section, you will learn about:

  • Types of updates
  • Creating minor upgrades
  • Creating major upgrades
  • QuickPatch projects
  • General patch projects
  • Patches and User Account Control
  • Uninstalling a patch

Custom Actions

Most of the system changes made by an installation program are handled by Windows Installer standard actions and tables: the files you install are handled by the File table and the InstallFiles action, registry data handled by the Registry table and the WriteRegistryValues action, and so forth. Because standard actions cannot handle every task an installation program needs to perform, Windows Installer supports custom actions. This section describes:

  • How to use Windows Installer functionality to avoid custom actions:
    • Copying, moving, and deleting files
    • Reading and deleting registry information
    • Using InstallShield extensions
  • Types of custom actions, and advantages and disadvantages of each
  • All about action scheduling:
    • Immediate and deferred actions, and deciding which type to use
    • Rollback and commit actions
    • User and system contexts
    • Detecting and handling installation, uninstallation, rollback, and uninstallation-rollback
  • "Simple" custom actions: launching executables, setting properties and Directory properties, and displaying error messages
  • Writing code for script, MSI DLL, InstallScript, and managed-code custom actions
    • Getting and setting property values
    • Getting property values during deferred execution
    • Returning success to Windows Installer
    • Triggering rollback
    • Additional interaction with the running installation

Additional Custom Action Techniques

Going beyond the basics, this section describes advanced techniques for working with standard and custom MSI database tables at run time, along with a collection of finishing touches that improve the appearance of-and user confidence in-your installer.

  • Accessing and modifying the running MSI package for dynamic effects such as:
    • Populating list-type controls at run time
    • Hiding features after CostFinalize
    • Changing shortcut descriptions at run time
  • Working with custom MSI tables
  • Writing to the Windows Installer log file
  • Additional user feedback during action execution:
    • Static action text
    • Detailed action data
    • Interaction with the progress bar control
    • Handling the Cancel button
    • Correctly displaying message boxes

Additional Topics

The course material ends with discussions of additional tools and techniques you can use to improve your installation behavior, including:

  • Windows Installer's reboots and files-in-use behavior
  • Working with InstallShield prerequisites
  • Working with the Directory table
  • Chained installations
  • Multi-instance packages

Putting the Pieces Together

At the end of class, you will work on a project that incorporates the main ideas of the course, such as:

  • Presenting dynamic data to the user
  • Writing an action that correctly handles installation, uninstallation, rollback, uninstallation-rollback, and cleanup
  • Logging the action's changes
  • Displaying detailed progress information