Beta documentation for the latest version of Windows Installer is now available for online reading. The online documentation for MSI 5.0 was built on January 15, 2009.
The Windows 7 SDK has been published about a week earlier. It includes an older version of the documentation, built on November 21, 2008, and new versions of tools like Orca.
Windows Installer 5 Documentation
The online documentation on MSDN is a convenient way to see what’s new in MSI 5.0 without having to download and install the SDK (see below).
(Note: Some MSDN pages don’t render properly for me today. Not sure what’s causing this.)
Some notable news in MSI 5:
As expected, VersionMsi is now “5.00”. Maybe a bit suprising, VersionNT for Windows 7 is ”601”. That’s because Windows 7 internally is version number 6.1. Microsoft did this to avoid compatibility problems with setups or applications that check the major version number of Windows and might refuse to run if it’s larger than 6.
A new Hyperlink control can be placed on dialogs. It will open the default browser and only supports HTML. When such a setup is run on an older version of the MSI runtime, the Hyperlink control is not displayed at all.
New control events MsiPrint to print the content of a ScrollableText control (typically used to display a license agreement) and MsiLaunchApp to start a program that has been installed by the package. The latter references the File table, so it can’t be used to start a program that’s not included in the setup.
There’s a new standard action called MsiConfigureServices and two related tables MsiServiceConfig and MsiServiceConfigFailureActions. I haven’t figured out yet how they work together with the other service related tables and actions.
Setting the new MSIINSTALLPERUSER will automatically redirect files and registry entries to per-user locations, as described in a previous post. For example, ProgramFilesFolder is automatically set to %localappdata%\programs if you do a per-user install.
The MsiLockPermissionsEx table is a replacement for the LockPermissions table. According to the documentation a package should not contain both tables. If this won’t be changed in the RTM version it will limit your ability to create msi packages that will also work with previous versions of the MSI runtime. Instead of Domain, User and Permission it uses security descriptor definition language (SDDL) to indicate permissions to apply to the selected object. A new column data type FormattedSDDLText has been added for this purpose. The MsiLockPermissionsEx also has a Condition column to decide whether to apply the specified permission.
Speeding up large install packages
The new MSIFASTINSTALL property can be set on the command line or in the Property table to avoid creation of a system restore point, skip some costing tasks, reduce the frequency of progress messages, or any combination of these.
Setting Shortcut Properties
According to the documentation, the MsiShortcutProperty table enables Window Installer to set properties for shortcuts that are also Windows Shell objects. (I have no idea what that means.)
Windows Installer API
There are three new installer functions: MsiEnumComponentsEx, MsiEnumClientsEx and MsiGetComponentPathEx.
ICE Validation and Automation Interface
Finally there are five new Internal Consistency Evaluators (ICEs) and some additions to the automation interface which you can find in the documentation.
Windows Installer 5 SDK
The SDK for MSI 5.0 is part of the Windows 7 SDK. It’s currently only available in form of a 1.3 GB .iso file download. You either have to burn this .iso to a DVD or mount it as a drive in Virtual PC or using some other tool. Then you can install the SDK from that drive.
Among other tools the SDK includes the Orca MSI table editor version 5.0.6764.0
Download the SDK .iso file:
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA