What’s New in InstallShield 2008

InstallShield 2016

New Features

InstallShield includes the following new features.

New End-User Dialog Themes for Basic MSI Projects

Dialog themes are predefined sets of images that give your end-user dialogs a unified and distinctive look. With the click of a button, you can now select one of the available themes for your project, and InstallShield applies that theme to all of the interior and exterior dialogs, as well as the Setup.exe initialization dialog, in your project. You can easily preview each dialog from within the Dialogs view to see how it looks with the selected theme.

Some of the themes are available in both the Premier and Professional editions of InstallShield, and some are available in only the Premier edition. For more information, see Available Themes and Corresponding Dialog Sizes.

For more information about this feature, see the Dialog Themes section of this documentation.

Digital Signing Improvements

InstallShield now lets you digitally sign any files—including your product’s executable files—in your project at build time. In addition, you can now use a personal information exchange file (.pfx) for digital signatures. All of the following project types support this functionality: Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module.

The new Signing tab in the Releases view is where you specify the digital signature information—including the digital certificate files that a certification authority grated to you—that InstallShield should use to sign your files. The Signing tab is also where you specify which files in your installation should be digitally signed. You can also use the Release Wizard to specify all of the digital signature information.

If you specify a .pfx file for signing, InstallShield uses SignTool.exe to sign your files. If you specify an .spc file and a .pvk file, InstallShield uses Signcode.exe to sign your files. Using a .pfx file is often the preferred method, since it is more likely to work in many different environments (such as locked build machines). If you specify the digital signature password in InstallShield, you will never see a password prompt if you are using a .pfx file. However, if you are using .spc and .pvk files, a password prompt may be displayed.

Previously, InstallShield included support for signing only the .msi, .hdr, and Setup.exe files. In addition, InstallShield allowed you to specify .spc and .pvk files for the digital signature, but not .pfx files.

To learn more, see the following:

Digital Signing and Security
Digitally Signing a Release and Its Files at Build Time
Signing Tab for a Release

InstallShield Best Practice Suite Available in Premier Edition

InstallShield includes a set of validators called the InstallShield Best Practice Suite. The InstallShield Best Practice (ISBP) validators in this suite alert you if your installation violates best-practice guidelines.

This feature is available for Basic MSI, InstallScript MSI, and MSI Database projects.

For more information, see:

InstallShield Best Practice Suite
Specifying Which ICEs, ISICEs, ISVICEs and ISBPs Should Be Run During Validation

Support for Internet Information Services (IIS) 7.0 and SSL

InstallShield now includes support for IIS 7.

In addition, InstallShield lets you include an SSL certificate for a Web site in your installation. Including an SSL server certificate enables users to authenticate the Web server, check the validity of the Web content, and establish a secure connection.

For more information, see:

Internet Information Services View
Specifying the SSL Certificate for a Web Site
Determining If a Target System Has IIS 6 or Earlier or the IIS 6 Metabase Compatibility Feature
Version-Specific Information for IIS Support in InstallShield

New Microsoft .NET Prerequisites Available

InstallShield now includes many new .NET-related setup prerequisites that you can add to Basic MSI and InstallScript MSI projects:

.NET Framework 2.0 (x64)
.NET Framework 2.0 (x64) Language Packs
.NET Framework 2.0 (IA64)
.NET Framework 2.0 (IA64) Language Packs
.NET Framework 3.0 (x64)

For more information, see Adding .NET Framework Redistributables to Projects.

Updated Microsoft .NET Object for InstallScript Projects

An updated Microsoft .NET object is available in InstallShield. This object includes support for versions 1.0 (SP3), 1.1 (SP1), 2.0, and 3.0 of the .NET Framework, including 32-bit, 64-bit x64, and 64-bit Itanium versions. The object also includes all supported language packs, and the latest service packs of 1.0 and 1.1.

In addition, the object launches and completes the .NET Framework installation as the feature containing the .NET object installs. This allows the .NET Framework to be available as early as possible, in case it is needed to install or configure files that are subsequently installed during the installation.

For more information, see Microsoft .NET Framework Object Wizard.

Visual C++ 8.0 SP1 Merge Modules Available

InstallShield now includes Visual C++ 8.0 SP1 merge modules (version 8.0.50727.762).

Support for the UAC Shield Icon on Dialog Buttons (Basic MSI Projects)

In the Dialog Editor of Basic MSI projects, a new Show UAC Shield Icon property is available for all button controls. If you select True for this property, the User Account Control (UAC) icon is displayed on the button when end users run the installation on Windows Vista systems. If you are using InstallShield on a Windows Vista system, you can see the shield icon on the button in the Dialog Editor as it will be displayed at run time. The shield icon signals to end users that elevated privileges may be required.

For any new Basic MSI projects that you create, the Show UAC Shield Icon property is set to True for the Install button on the ReadyToInstall dialog. If you upgrade a Basic MSI project that was created with InstallShield 12 or earlier to InstallShield 2008, the default value for the Install button’s Show UAC Shield Icon property is False. You can override the value for this button, or for any other buttons, as required.

Ability to Require End Users to Scroll Through the EULA in the LicenseAgreement Dialog

InstallShield includes support for disabling the Next button on the LicenseAgreement dialog until the end user reaches the end of the End-User License Agreement (EULA) text in the scrollable EULA control through mouse or keyboard scrolling.

The end user must also select the I accept the terms in the license agreement option before the Next button is enabled; this behavior is the same as with earlier releases of InstallShield.

The scroll requirement is not available in the LicenseAgreement dialog by default. To use this functionality, you must add to your project the new Windows Installer DLL custom action called WatchScroll. This custom action calls the EulaScrollWatcher.dll file. In addition, you must modify the Next button’s Control conditions and add an event to the Memo control.

This is available for Basic MSI projects.

For detailed instructions, see Requiring End Users to Scroll Through the EULA in the LicenseAgreement Dialog.

Microsoft SQL Server 2005 Express SP1 Setup Prerequisite Available

InstallShield now includes a setup prerequisite for Microsoft SQL Server 2005 Express Edition SP1. You can add this setup prerequisite to Basic MSI and InstallScript MSI projects.

Updated DirectX 9.0c Objects

Two DirectX 9.0c objects are available with InstallShield: a Windows Installer–based object that is available for Basic MSI and InstallScript MSI projects, and an InstallScript-based object that is available for InstallScript projects. Both of these objects install all of the latest DirectX 9.0c core and optional components, including 32-bit-specific and 64-bit-specific components.

In addition, some changes have been made to the DirectX 9 Object Wizard for Basic MSI and InstallScript MSI projects. The wizard now lets you specify whether the redistributable files should be included in the Disk1 folder or streamed into the .msi file. This change enables you to use the DirectX 9 object in compressed installations. Also, you can now use the DirectX 9 object in silent installations.

For Basic MSI and InstallScript MSI projects, the custom action that launches the DirectX installation is now sequenced in the Execute sequence and run in deferred system context so that it can be run with elevated privileges on Windows Vista systems.

To learn more, see:

Including the DirectX 9.0 Object
DirectX Object Wizard

DIFx 2.1 Support

InstallShield includes support for the latest version of Driver Install Frameworks for Applications (DIFx). This new version, which includes the latest binary files from Microsoft, is available for any Basic MSI, InstallScript, or InstallScript MSI projects that you create in InstallShield. This new version can be installed on Windows Vista systems. Earlier versions of InstallShield included an earlier version of DIFx that failed to install on Windows Vista in some cases.

Support for 64-Bit Self-Registration of COM Servers (Basic MSI Projects)

InstallShield now includes support for 64-bit self-registration of COM servers in Basic MSI projects. If you mark a component as 64 bit and then add a file to that component, you can select the file’s Self Register check box to enable 64-bit self-registration of that file during installation. In addition, InstallShield also supports 64-bit self-registration of dynamically linked COM servers. For more information, see:

Targeting 64-Bit Operating Systems with Basic MSI and InstallScript MSI Installations
File Properties Dialog Box
Adding Dynamic File Links to Components

Expanded Operating System Condition Settings in the Setup Prerequisite Editor

The Setup Prerequisite Editor now enables you to specify more details about operating system requirements when you are creating conditions for a prerequisite. The Prerequisite Condition dialog box, which is displayed when you are adding or modifying a condition for a prerequisite through the Setup Prerequisite Editor, lets you select a predefined operating system or select the custom option. With the new custom option, you can configure settings for operating system requirements such as platform, major and minor versions, processor architecture (64-bit or 32-bit), and service pack. If a target system does not meet the operating system requirements, the prerequisite is not installed.

For more information, see the following:

Adding an Operating System Condition for an InstallShield Prerequisite
Prerequisite Condition Dialog Box
Conditions Tab

Ability to Target Windows Server 2008 Systems

InstallShield enables you to specify that your installation requires Windows Server 2008. It also lets you build Windows Server 2008–related conditions for features and components.

Note that Windows Vista and Windows Server 2008 use the same major and minor version numbers. Therefore, if you want to use InstallScript to distinguish between Windows Server 2008 and Windows Vista, check whether SYSINFO.nOSProductType = VER_NT_WORKSTATION; for Windows Vista, this is TRUE; for Windows Server 2008, it is FALSE. For more information, see SYSINFO.

New MSXML 6 SP1 Setup Prerequisites Available

InstallShield now includes some new MSXML setup prerequisites that you can add to Basic MSI and InstallScript MSI projects:

MSXML 6.0 SP1
MSXML 6.0 SP1 (IA64)
MSXML 6.0 SP1 (x64)

To learn more about MSXML, see Run-Time Requirements for XML File Changes.

FlexNet Connect Support

You can add a redistributable for FlexNet Connect 6.1 to Basic MSI and InstallScript MSI projects.

The Update Notifications view in Basic MSI and InstallScript MSI projects lets you select which version of FlexNet Connect you want to include in your project. You can include version 6.1 or any version that is installed in any of the locations that are specified in the Merge Module Location area on the Merge Module tab of the Options dialog box.

The Update Notifications view includes a new Vendor Database setting, which FlexNet Connect 6.1 supports.

Enhancements

Usability Enhancements for Releases

The release settings are now organized by category on several different tabs in the Releases view.

In addition, you can now select Compressed or Uncompressed for the Compression setting from within the Releases view. Previously, the only way to modify this setting was to use the Release Wizard. Note that if you want to specify a custom compression setting (one .cab file per feature or one .cab file per component), you must still use the Release Wizard. The Compression setting is available in Basic MSI, InstallScript MSI, and Merge Module.

The settings in the Distribution view have been moved to the new Postbuild tab in the Releases view for Basic MSI, InstallScript MSI, and Merge Module projects. The Postbuild tab lets you configure settings for distributing releases to a folder or FTP site automatically at build time.

A new Distribute command is available when you right-click a release in the Releases view for Basic MSI, InstallScript MSI, and Merge Module projects. When you select this command, InstallShield copies all of the relevant files for your release to the locations that are specified on the Postbuild tab. Note that for InstallScript and InstallScript Object projects, InstallShield automatically copies the release to the locations that you specify on the Postbuild tab every time that you build the release.

To learn more, see:

Build Tab for a Release
Setup.exe Tab for a Release
Signing Tab for a Release
.NET/J# Tab for a Release
Internet Tab for a Release
Events Tab for a Release
Distributing Releases to a Folder or FTP Site Automatically

Usability Enhancements for Custom Actions and Sequences

The Custom Actions view and the Sequences view have been combined into a more robust view called the Custom Actions and Sequences view. The combined view supports drag-and-drop editing and copying:

To sequence a new custom action, drag it from the Custom Actions explorer to the appropriate location in a sequence under the Sequences explorer.
To move a dialog, standard action, or custom action to a different point in a sequence (or from one sequence to another), drag it from the old location to the new location.
To copy a custom action from one sequence to another, press and hold CTRL while dragging the custom action from one sequence to another sequence.

The Custom Actions and Sequences view is available in Basic MSI, InstallScript MSI, MSI Database, and Transform projects.

For more information, see:

Custom Actions and Sequences View (or Custom Actions View)
Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View)
Inserting Actions into Sequences
Copying a Custom Action from One Sequence to Another
Reordering a Sequence

Usability Enhancements for the Files and Folders view, the Registry View, and the Redistributables View

Several enhancements are available for the Files and Folders view:

You can right-click a file in the Destination computer’s files pane and then click the new Open Containing Folder command. Doing so opens a Windows Explorer window and displays the folder that contains the file that you right-clicked.
A new Add command is available when you right-click the Destination computer’s files pane. Use this command to display an Open dialog box that lets you browse to the file that you want to add to your project.
The upper-right corner of this view has a new link (either Show Source Panes or Hide Source Panes). Use this new link to show or hide the two top panes—the Source computer’s folders pane and the Source computer’s files pane—in this view. You can hide the two panes, open a Windows Explorer window, and drag and drop files from the Windows Explorer window to the two remaining panes in InstallShield.

The Registry view also has a new link (either Show Source Panes or Hide Source Panes) in the upper-right corner. Use this new link to show or hide the two top panes—the Source computer’s folders pane and the Source computer’s files pane—in this view.

Two enhancements have also been made to the Redistributables view for Basic MSI and InstallScript MSI projects:

The right pane in this view shows details about the merge module, object, or setup prerequisite that is selected in the upper-left pane. You can now hide or show the details pane by clicking the Show Details or Hide Details link in the upper-right corner of this view.
The Details pane that is displayed for setup prerequisites now shows complete information about the selected setup prerequisite. This includes conditions, command-line parameters, and other information that is configured for the prerequisite.

Automation Interface Enhancements

Many enhancements have been made to the automation interface.

CreateProject Method Now Enables Creation of Merge Module Projects

The CreateProject method for the ISWiProject object now enables you to create merge module projects. Previously, this method supported only Basic MSI, InstallScript, InstallScript MSI, and InstallScript Object projects.

To learn more, see CreateProject Method.

Support for Configuring Dynamic File Links

The automation interface includes a new object and a new collection for dynamic file links. In addition, the ISWiComponent object includes two new methods and a property that let you add (AddDynamicFileLinking) and remove (RemoveDynamicFileLinking) a component’s dynamic file link, as well as get the collection of dynamic file links (ISWiDynamicFileLinkings).

For more details, see:

ISWiDynamicFileLinking Object
ISWiDynamicFileLinkings Collection
ISWiComponent Object
AddDynamicFileLinking Method
RemoveDynamicFileLinking Method

Support for Configuring Path Variables

The automation interface includes a new object and a new collection for configuring path variables in a project. In addition, the ISWiProject object includes two new methods and a property that let you add (AddPathVariable) and remove (DeletePathVariable) a path variable from a project, as well as get the collection of path variables (ISWiPathVariables).

To learn more, see:

ISWiPathVariable Object
ISWiPathVariables Collection
ISWiProject Object
AddPathVariable Method
DeletePathVariable Method

Support for Modifying String-Table Entries

The automation interface includes new objects and collections for configuring languages and string entries in a project. The ISWiLanguage object includes two methods and a property that let you add (AddStringEntry) and remove (DeleteStringEntry) a string entry from a project, as well as get the collection of string entries (ISWiStringEntries). In addition, the ISWiProject object includes a new property (ISWiLanguages) that gets the collection of languages included in the current project.

For more information, see:

ISWiLanguage Object
ISWiLanguages Collection
ISWiStringEntry Object
ISWiStringEntries Collection
AddStringEntry Method
DeleteStringEntry Method
ISWiProject Object

Support for Configuring Environment Variables

The automation interface includes a new object and a new collection for environment variables. In addition, the ISWiComponent object includes two new methods and a property that let you add (AddEnvironmentVar) and remove (RemoveEnvironmentVar) a component’s environment variables, as well as get the collection of environment variables (ISWiEnvironmentVars).

ISWiEnvironmentVar Object
ISWiEnvironmentVars Collection
ISWiComponent Object
AddEnvironmentVar Method
RemoveEnvironmentVar Method

ISWiProject Object Properties for Setting the Company Name, Company URL, and Company Phone Number

The ISWiProject object includes several new properties that let you specify values for General Information view settings:

CompanyName
CompanyURL
CompanyPhone

ISWiRelease Object Properties for Digitally Signing Files

The ISWiRelease object includes several new properties that enable you to configure settings for digitally signing files for releases at build time. The new properties are:

CertificatePassword
SignFiles
SignFilesExclude
SignFilesInclude
SignSignedFiles

ISWiRelease Object Properties for Specifying Whether to Keep Unused Directories in the Directory Table

The ISWiRelease object includes a new KeepUnusedDirectories property that lets you specify whether you want to want InstallShield to remove unused directories from the Directory table of the .msi file when you build this release.

ISWiRelease Object Property for Configuring Whether to Postpone Any Reboot for Installing or Updating the .NET Framework

The ISWiRelease object includes a new DotNetDelayReboot property that lets you specify whether you want to postpone any reboot associated with installing or updating the .NET Framework on the target system until after your installation has completed.

ISWiRelease Object Property for Specifying Whether to Display a Message Box Asking the End User if They Want to Install the .NET Framework

The ISWiRelease object includes a new DisplayDotNetOptionDialog property. Use this property to specify if a message box should be displayed at run time to let end users indicate whether the .NET Framework should be installed.

ISWiRelease Object Properties for Configuring Build-Time Distribution Options

The ISWiRelease object now includes several new properties that enable you to configure settings for distributing releases to a folder or FTP site automatically at build time. The new properties are:

DistributeLoc
DistributeToURLLoc
DistributeToURLUserName
DistributeToURLPassword
DistributeAfterBuild

New RemoveSequenceRecord Method for the ISWiSequence Collection

The ISWiSequence collection has a new RemoveSequenceRecord method that enables you to delete an item from a sequence. To learn more, see RemoveSequenceRecord Method.

Basic MSI Projects Now Support Adding and Removing Support Files

The automation interface now includes support for the ISWiSetupFile and ISWiAdvancedFile objects in Basic MSI projects. These objects include methods (AddSetupFile, DeleteSetupFile, AddAdvancedFile, and DeleteAdvancedFile) that are now available in Basic MSI projects. Previously, these objects and methods were available in only InstallScript, InstallScript MSI, and InstallScript Object projects.

To learn more, see:

ISWiAdvancedFile Object
ISWiAdvancedFiles Collection
AddAdvancedFile Method
DeleteAdvancedFile Method
ISWiSetupFile Object
ISWiSetupFiles Collection
AddSetupFile Method
DeleteSetupFile Method
ISWiProject Object

XML File Change Enhancements

Support for XML file changes has been expanded in InstallShield:

Now you can test just the XML file changes that are configured for your project through the XML File Changes view without having to build and run your entire installation.
The XML File Changes view now supports namespaces in XML files.
InstallShield lets you specify the XML encoding of an XML file.

To learn more, see the following areas:

Testing Installation Changes to an XML File
Testing Uninstallation Changes to an XML File
Using Namespaces in XML Files
Declaring Namespace Mappings for an XML File
Adding a Namespace Prefix to an Element
XML File Changes View
Namespace Tab for an XML File

To learn more about XML file changes, see the Modifying XML Files section of the InstallShield Help Library.

Faster Direct Editor, String Table Editor, and Files Subview

Loading records in the Direct Editor and the String Table editor in InstallShield takes less time now. In addition, for projects that contain a large number of files, InstallShield now displays the files in the Files subview within the Components view more quickly than in earlier releases.

Enhanced User Account Control Support for InstallScript Projects

The Required Execution Level setting is now available on the Setup.exe tab in the Releases view for InstallScript projects. Use this setting to specify the minimum level required by your installation’s Setup.exe file for running the installation (the setup launcher) on Windows Vista platforms. InstallShield adds a manifest that specifies the required level.

Previously, InstallShield always included a Highest Available manifest for InstallScript projects, and the Required Execution Level setting was available in only Basic MSI and InstallScript MSI projects.

For more information, see Specifying the Required Execution Level for Your Setup Launcher on Windows Vista and Later Platforms.

Shortcuts View Enhancements

Some enhancements have been made to the Shortcuts view for Basic MSI, InstallScript MSI, and merge module projects.

To change the icon that is used for a shortcut, you can right-click the shortcut and then click the new Change Shortcut icon command. InstallShield opens the Change Icon dialog box, which enables you to select the icon file and associated icon index that should be used when the shortcut is created on target systems at run time.
Shortcuts that are listed in the Shortcuts explorer now show the icon image that will be used on the target system. Previously, the Shortcuts explorer used a different image for all types of shortcuts, even if an icon was specified for the shortcut.

For more details about these enhancements, see:

Specifying the Icon for a Shortcut
Shortcuts View

Windows Vista and Internet Explorer 7 Support for One-Click Install Installations

One-Click Install installations in InstallScript projects can now be used on Windows Vista systems and with Internet Explorer 7. The One-Click Install setup player is now an external .ocx file, instead of being embedded in the Setup.exe file. The setup player downloads and then launches the Setup.exe file with the appropriate command line. This enables end users who are using Windows Vista with limited privileges to run the installation; if elevated privileges are required because of the required execution level specified in the installation’s manifest, the appropriate User Account Control (UAC) prompt is displayed when the Setup.exe file is launched.

To support this new behavior, a new Generate One-Click Install setting is available on the Internet tab in the Releases view and on the Internet Options panel in the Release Wizard. If you select Yes for this setting, InstallShield includes an .ocx file for the installation.

To learn more about One-Click Install installations, see the Typical Web Installation vs. One-Click Install section of the documentation. In addition, see the following:

Internet Tab for a Release
Internet Options Panel

Enhanced Support for the SecureCustomProperties Property

If you set a public property in the user interface sequence of an installation that requests elevated privileges for the execute sequence, and you want to pass the property’s value to the execute sequence, the property must be listed as a value for the SecureCustomProperties property, or it must be a restricted public property.

InstallShield now automatically adds to the SecureCustomProperties property properties that may need to be passed from the user interface sequence to the execute sequence. To learn more, see Specifying that a Public Property Should Be a Restricted Public Property.

This support applies to Basic MSI, InstallScript MSI, and Merge Module projects.

Automatic Downgrade Prevention Entries in Basic MSI and InstallScript MSI Projects

To prevent end users from being able to install the current version of your product over a future major version of the same product, the following conditions should be met: The Upgrades view should contain a major upgrade item, the major upgrade item should be properly configured to prevent the current version of your product from being installed over a future version, and your project should include a properly configured and scheduled type 19 custom action.

When you create a new Basic MSI or InstallScript MSI project, InstallShield automatically adds support for preventing the current installation from overwriting a future major version. To learn more, see the following:

Preventing the Current Installation from Overwriting a Future Major Version of the Same Product
ISICE19

Changes for ALLUSERS and for the CustomerInformation Dialog

Beginning with InstallShield 2008, the ALLUSERS property is set to 1 by default in all new Basic MSI projects. This is the recommended implementation, since most installations must be run in a per-machine context with administrative privileges.

If you upgrade a project that was created with InstallShield 12 or earlier to InstallShield 2016, InstallShield does not automatically change the value of the ALLUSERS property or add this property if it was not defined in the earlier project.

Also new with InstallShield 2008, by default, the CustomerInformation dialog in all new Basic MSI projects does not display the radio button group that enables end users to specify whether they want to install the product for all users or for only the current user. This is the recommended implementation for this dialog.

If you upgrade a project that was created with InstallShield 12 or earlier to InstallShield 2016, InstallShield does not automatically change the CustomerInformation dialog.

To learn more, see:

Per-User vs. Per-Machine Installations
ALLUSERS

Ability to Change the Product Version from the Command Line or Through an MSBuild Task Parameter

The -y command-line parameter is available for command-line builds with ISCmdBld.exe and IsSaBld.exe. Use this parameter to specify a product version from the command line.

In addition, the InstallShield task for MSBuild now includes a ProductVersion parameter, which you can use to specify the product version through MSBuild. This parameter is exposed as the property InstallShieldProductVersion when the default targets file is used.

Using the -y command-line parameter or the InstallShield task ProductVersion parameter is especially helpful if you want to increment the build version (the third field) of the product version.

To learn more, see:

ISCmdBld.exe
Standalone Command-Line Build
Microsoft Build Engine (MSBuild)

Ability to Override Windows Installer Property Values from the Command Line or Through an MSBuild Task Parameter

The -z command-line parameter is available for command-line builds with ISCmdBld.exe and IsSaBld.exe. Use this parameter to override the value of a Windows Installer property or create the property if it does not exist.

In addition, the InstallShield task for MSBuild now includes a PropertyOverrides parameter, which you can use to override the value of a Windows Installer property or create the property if it does not exist. This property is exposed as the InstallShieldPropertyOverrides ItemGroup passthrough to the PropertyOverrides property on the InstallShield task.

To learn more, see:

ISCmdBld.exe
Standalone Command-Line Build
Microsoft Build Engine (MSBuild)

Windows Installer Properties Used for IIS Data Are Stored in the Registry by Default

Installations that install IIS Web sites and use Windows Installer properties to dynamically set IIS data at run time now write the property and its value to the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield Uninstall Information\{ProductCode}

This change was made to make the value available during uninstallation and repair. Therefore, if your Web site is installed to an end user–specified site number, the Web site and its virtual directories can be successfully uninstalled from that site number. If you do not want the IIS data to be stored in the registry, set the IS_IIS_DO_NOT_USE_REG property in your project.

This change applies to Basic MSI and InstallScript MSI projects.

New Setting for Specifying Whether an IIS Web Server Should Allow the CMD Command to Be Used for SSI #exec Directives

You can configure an IIS Web server to prevent the CMD command for the #exec directive from being used to execute shell commands, or you can configure it to allow the CMD command to be used to execute this type of command. The SSIEnableCmdDirective registry value for the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters registry key is what determines whether the CMD command is permitted.

The Internet Information Services view in InstallShield includes a new SSIEnableCmdDirective registry value setting. This setting lets you specify how your installation should configure the SSIEnableCmdDirective registry value on target systems. This setting also lets you specify that the SSIEnableCmdDirective registry value should not be changed at installation run time; this is the default behavior.

For more information, see Specifying Whether a Web Server Should Allow the CMD Command to Be Used for SSI #exec Directives.

New Host Header Name Setting for IIS Web Sites

You can now use the new Host Header Name setting on the Web Site tab for a Web site in the Internet Information Services view to specify the host header name that identifies the IIS Web site that is installed during your installation. Previously, it was necessary to configure the ServerBindings property on the Advanced tab in this view in order to specify the host header name.

For more information, see Specifying the IIS Host Header Name for a Web Site.

Ability to Install an IIS Web Site and Its Virtual Directories to the Next Available New Site Number

InstallShield provides support for installing an IIS Web site and its virtual directories to the next available new site number. The implementation is slightly different, depending on which project type you are using. For more information, see Configuring the TCP Port and Site Numbers.

Ability to Specify Whether New SQL Connections Should Share the Same Windows Installer Properties

A new SQL Scripts tab on the Options dialog box lets you specify how InstallShield should create new database connections by default—either by using the same Windows Installer properties that were used by default for the first connection in your project, or by using a unique set of new Windows Installer properties.

This applies to the following project types: Basic MSI and InstallScript MSI.

For more information, see the following:

Specifying Whether New SQL Connections Should Share the Same Windows Installer Properties
SQL Scripts Tab

SQLLogin Dialog Enhancements

The SQLLogin dialog now includes a new control that enables end users to specify the name of the target database catalog. This dialog also has a Browse button next to the new control; the Browse button lets end users select from the list of database catalogs that are available on the target database server.

If you upgrade a Basic MSI project that includes SQL support from InstallShield 12 or earlier to InstallShield 2016, you need to manually import the SQLLogin.isd and SQLBrowse.isd dialogs into your project to use the new version of the SQLLogin dialog. The .isd files are installed in the following location: InstallShield Program Files Folder\Support. To use this updated SQLLogin dialog in InstallScript and InstallScript MSI projects, replace the SQLServerSelectLogin function call in your InstallScript code with a call to the new SQLServerSelectLogin2 function.

Database Import Wizard Enhancements

The Database Import Wizard has a new Advanced Scripting Options panel that lets you specify security script options such as script database, script database users and database roles, script SQL Server logins, and script object-level permissions.

For more information, see Advanced Scripting Options Panel.

New Windows Installer Property for Specifying SQL Connections That Should Not Be Installed or Uninstalled

InstallShield includes support for a new Windows Installer property called IS_SQLSERVER_CXNS_ABSENT_FROM_INSTALL. Use this property to specify one or more SQL connections that should be skipped during installation or uninstallation. To specify more than one SQL connection, separate each with a semicolon (;). To skip all of the SQL connections, set the value of this property to ALL. Using this property is helpful if you cannot uninstall a product because of a SQL scripting error.

For details about SQL-related properties, see Overriding the Default SQL Run-Time Behavior.

Ability to Remove Unreferenced Directories from the .msi File

The Build tab in the Releases view includes a new Keep Unused Directories setting. Use this setting to specify whether you want InstallShield to remove unused directories from the Directory table of the .msi file when you build the selected release. The default value is No.

This setting is available for Basic MSI, InstallScript MSI, and Merge Module projects.

For more information, see Build Tab for a Release.

Ability to Specify COM+ Component File Destinations from Within the Component Services View

The Component Services view has two new Destination fields on the Installation tab: one for a server type of installation, and one for a proxy type of installation. Use these fields to specify the target destination of the selected COM+ component files. Previously, the only way to specify the destination of the components associated with a COM+ application was in the Components view or the Setup Design view.

New Windows Installer Property for Specifying COM+ Applications to Be Installed After the InstallFinalize Action

InstallShield includes support for a new Windows Installer property called IS_COMPLUS_INSTALL_AT_FINALIZE. Use this property to specify one or more COM+ applications that should be installed by the ISComponentServiceFinalize action, which is called after the InstallFinalize action. To specify more than one COM+ application, separate each with a semicolon (;). To specify that all COM+ applications should be installed by the ISComponentServiceFinalize action, set the value of this property to ALL.

Using this property is helpful if you want to install a COM+ application that contains .NET assemblies to be installed to the GAC because Windows Installer does not commit the changes made in the in-script session to the GAC until the InstallFinalize action.

Additional Predefined System Searches for Basic MSI and InstallScript MSI Projects

InstallShield has several new predefined system searches:

Adobe Reader 7
Adobe Reader 6
Internet Explorer 7.0

If your installation requires any of these products, you can use the System Search view or the Installation Requirements page in the Project Assistant to add these system searches to your project. When end users launch your installation, Windows Installer checks the target system to see if the requirements are met; if they are not met, the installation displays the error message that is defined for the system search.

New and Enhanced Setup.exe and Update.exe Command-Line Parameters (InstallScript Projects)

Two new command-line parameters are available for Setup.exe and Update.exe:

/installfromweb
/media_path

In addition, the /L parameter now supports both hex and decimal language values.

To learn more, see Setup.exe and Update.exe Command-Line Parameters.

Downloader Web Release Type Supports More Location Options for .cab Files

The Downloader type of Web release now lets you specify whether InstallShield should create external .cab files that are downloaded at installation time as needed. Previously, .cab files were always streamed into the .msi package for the Downloader Web release type.

The new external .cab file options are available on the Downloader Options panel of the Release Wizard. This panel is displayed in the Release Wizard if the media type is Web and the Web type is Downloader. The Downloader Options panel has a new Create external .cab files check box. If you clear this check box, the behavior is the same as it was previously: the .cab files are streamed into the .msi package. If you select this check box, you can specify how .cab files should be created: one .cab file per feature, one .cab file per component, or multiple .cab files based on a particular size that you specify.

Downloader and Install from the Web Types of Web Releases Embed All Transforms

The Downloader type of Web release and the Install from the Web type of Web release now always embed all .mst and .ini files in the Setup.exe file.

Enhancements for Patch Display Information

The Identification tab, which was previously called the Uninstall tab, is where you specify information that should be displayed for a patch in Add or Remove Programs on systems running Windows Installer 3.0 or later. This tab in the Patch Design view of Basic MSI and InstallScript MSI projects and in the General Information view in QuickPatch projects has settings for items such as the display name, the manufacturer name, and the support URL. Now every time that you change the latest setup for a patch configuration in the Patch Design view or in a QuickPatch project, InstallShield uses the Add or Remove Programs information from the latest setup as the values for the Identification tab settings. You can override the values on the Identification tab as needed.

In addition, the Allow Patch to Be Uninstalled (Requires Windows Installer 3.0) check box is now available on the Common tab. This setting was previously available on the Uninstall tab.

For more information, see:

Common Tab (in the Patch Design view)
Identification Tab (in the Patch Design view)
Common Tab (in a QuickPatch project)
Identification Tab (in a QuickPatch project)

Ability to Specify the Minimum Initialization Time

InstallShield includes a new Minimum Initialization Time setting on the Setup.exe tab for a release in the Releases view. Use this setting to specify the minimum number of seconds that the installation should display the initialization dialog—as well as the splash screen, if one is included—when end users run this release.

InstallScript Language Enhancements and New Functionality

Several enhancements have been made to the InstallScript language.

New LaunchApplication and WaitForApplication Functions to Supersede LaunchAppAndWait for Launching Applications with Elevated Privileges

The LaunchApplication function uses either the Windows API function CreateProcess or the Windows API function ShellExecuteEx to launch the specified application. After the application is launched, the installation can optionally call the new WaitForApplication function to wait for the application to terminate.

The WaitForApplication function waits for a running application, and optionally all child applications that are launched by the running application, to terminate before returning.

Note that calling LaunchAppAndWait now calls the following:

LaunchApplication( szProgram, szCmdLine, "", LAAW_STARTUPINFO.wShowWindow, LAAW_PARAMETERS.nTimeOut, nOptions | LAAW_OPTION_CHANGEDIRECTORY | LAAW_OPTION_FIXUP_PROGRAM );

The new LaunchApplicationInit function is available. This function, which was added to match the naming convention of the LaunchApplication function, has the same behavior as the LaunchAppAndWaitInitStartupInfo function.

For more information, see:

LaunchApplication
WaitForApplication
LaunchAppAndWait
LaunchApplicationInit

Several new predefined constants are available:

LAAW_OPTION_CHANGEDIRECTORY
LAAW_OPTION_FIXUP_PROGRAM
LAAW_OPTION_USE_SHELLEXECUTE
LAAW_OPTION_WAIT_INCL_CHILD

In addition, the LAAW_OPTION_NO_CHANGEDIRECTORY is now obsolete. Passing this parameter has no effect.

The following script variables are also now available:

LAAW_SHELLEXECUTEINFO
LAAW_SHELLEXECUTEVERB

New SdRMFilesInUse Dialog and OnRMFilesInUse Event Handler for Minimizing Reboots Through the Restart Manager Infrastructure in InstallScript MSI Projects

A new SdRMFilesInUse function is available. This function displays a dialog that includes a list box containing a list of the applications that are open and are locking files. The dialog also includes two radio buttons that allow end users to specify whether the installation should attempt to use the Restart Manager to shut down the applications that are locking files or overwrite the locked files (which most likely results in the need for a reboot to complete the installation).

For InstallScript MSI projects, the new OnRMFilesInUse event handler displays the new SdRMFilesInUse dialog. This event handler is called when the Restart Manager is enabled and Windows Installer 4.0 sends an INSTALLMESSAGE_RMFILESINUSE message to the installation.

For more details, see:

SdRMFilesInUse
OnRMFilesInUse

Ability to Specify Additional Compiler Include Paths on a Per-Project Basis

The Compile/Link tab on the Settings dialog box, which is available from the Build menu in InstallShield, now has an Include Paths box. Use this Include Paths box to specify which directories InstallShield should search for source files that have been included in the main installation’s InstallScript code through #include statements. It corresponds with the -i option for Compile.exe, the command-line compiler.

To learn more, see Compile/Link Tab.

Enhancements for .NET Framework 3.0 Support

A new FOLDER_DOTNET_30 InstallScript variable is available. This variable stores the path of the .NET Framework 3.0. The corresponding text substitution for this variable is <FOLDER_DOTNET_30>.

The .NET Framework 3.0 writes the value InstallSuccess with value data of 1 to the registry to indicate that it is installed. To check for this InstallSuccess value, you can now use the Is function and pass the DOTNETFRAMEWORKINSTALLED constant. You can still pass this constant through the Is function to check for the value of Install, which is used by earlier versions of the .NET Framework. For more information, see Is.

Two new constants are available for use with the Is function:

REGDB_KEYPATH_DOTNET_30
REGDB_VALUENAME_INSTALLSUCCESS

New Is Constant for Checking for the Presence of a Minimum Service Pack Number of the .NET Framework

Use the new DOTNETSERVICEPACKINSTALLED constant with the Is function to determine whether a particular service pack—or a later version of the service pack—of the .NET Framework is installed. For more information, see Is.

New and Updated Functions for SQL Support

Several InstallScript functions for SQL support have been added or updated.

The following InstallScript functions are now available for InstallScript and InstallScript MSI projects:

SQLRTInitialize2—Loads the SQLRT.dll file for InstallScript projects and the ISSQLSRV.dll file for InstallScript MSI projects, and it uses the settings file to initialize the .dll file. This function supersedes the SQLRTInitialize function.
SQLServerSelectLogin2—Creates a login dialog that lets the targeted end user specify which SQL Server should be used for the current connection, as well as which login credential should be used. This dialog also optionally shows the connection name that is associated with the connection information. In addition, it optionally allows the end user to specify which database catalog should be used for the current connection. This function supersedes the SQLServerSelectLogin function.
SQLDatabaseBrowse—Creates a dialog that lets the end user display a list of all database catalogs available on the specified database server.
SQLBrowse2—Creates a dialog that lets an end user display a list of all database servers that are available on the network for the database technologies specified for a connection. This function supersedes the SQLBrowse function.
SQLRTPutConnectionInfo2—Sets the connection information (the default server, default database catalog, default user name, and default password). This function supersedes the SQLRTPutConnectionInfo function.

The following InstallScript functions are now available for InstallScript projects:

SQLRTGetLastError2—Returns detailed information about the last error encountered by the SQL run time and loads the proper SQL error message.This function supersedes the SQLRTGetLastError function.
SQLRTGetErrorMessage—Returns the descriptive message of the last error encountered by the SQL run time when a connection is being opened.
SQLRTGetScriptErrorMessage—Returns the descriptive message of the last error encountered by the SQL run time when a SQL script is executing.

The following InstallScript function is now available for InstallScript MSI projects:

SQLRTTestConnection2—Establishes a connection.This function supersedes the SQLRTTestConnection function.

The following InstallScript functions, which were previously available only for InstallScript projects, are now also available for InstallScript MSI projects:

SQLRTGetConnections
SQLRTGetConnectionInfo
SQLRTPutConnectionInfo
SQLRTGetConnectionAuthentication
SQLRTPutConnectionAuthentication

InstallShield still supports the functions that are superseded by new versions of the functions. However, if you upgrade a project that was created in InstallShield 12 or earlier to InstallShield 2016, InstallShield does not automatically update the existing InstallScript code to use the new functions.

For more information, see:

Using the SQL Run-Time Functions in InstallScript and InstallScript MSI Projects
SQL Functions

New Is Constant for Checking If a User Is in the Administrators Group

Use the new USER_INADMINGROUP constant with the Is function to determine whether a user is in the Administrators group, regardless of whether that user is running the installation with a standard access token. For more information, see Is.

Note that passing the USER_ADMINISTRATOR constant through the Is function now returns FALSE if the user is in the Administrators group but the group has the SE_GROUP_USE_FOR_DENY_ONLY security identifier (SID) attribute set (that is, the user is running with a standard access token).

New Functions that Enable a .NET Library Loaded Through InstallScript to Be Unloaded Before the Installation Completes

Two new InstallScript functions are available: DotNetCoCreateObject and DotNetUnloadAppDomain.

The DotNetCoCreateObject function calls functions in .NET assemblies without the assembly being registered for COM interoperability. This function lets you specify the .NET application domain in which the .NET assemblies should be loaded and run.

The DotNetCoCreateObject function is similar to the CoCreateObjectDotNet function. The only difference is that with DotNetCoCreateObject, you can specify the .NET application domain that should be loaded; the assembly is then run in this domain.

For CoCreateObjectDotNet, the .NET assembly is loaded into the default application domain after the installation completes; thus, the .NET assembly file is locked until the installation has finished.

The DotNetUnloadAppDomain function unloads the specified .NET application domain and releases any assemblies that are currently loaded into the specified application domain.

New RegDBDeleteItem Function

A new InstallScript function called RegDBDeleteItem is now available. The RegDBDeleteItem function deletes values under the per application paths key or the application uninstallation key, depending on the value of nItem. For more information, see RegDBDeleteItem.

New GetStatus Function for Objects

A new InstallScript function called GetStatus is now available for InstallScript Object projects. The GetStatus function retrieves the current status of the object; that is, the current value of Status.Number. For more information, see GetStatus.

Changes to the ListWriteToFileEx Function and Related Constants

The LWTF_OPTION_APPEND_TO_FILE constant has been added to the InstallScript language. You can pass this constant as the nOptions parameter for the ListWriteToFileEx function to append a list to an existing file.

In addition, two existing nOptions constants have been renamed:

LWFT_OPTION_WRITE_AS_ANSI is now LWTF_OPTION_WRITE_AS_ANSI.
LWFT_OPTION_WRITE_AS_UNICODE is now LWTF_OPTION_WRITE_AS_UNICODE.

To maintain backwards compatibility, the aforementioned two LWFT_* constants are still available, and they are defined the same way as the corresponding new LWTF_* constants.

For more information, see the following:

ListWriteToFileEx
LWTF_OPTION_APPEND_TO_FILE
LWTF_OPTION_WRITE_AS_ANSI
LWTF_OPTION_WRITE_AS_UNICODE

Expanded InstallScript Text Substitution Functionality

An InstallScript text-substitution association can now be embedded in another text-substitution association; for example, "<MYTEXTSUB1>" can be associated with "My Text Sub 1 Value" and "<MYTEXTSUB2>" with "Text Sub <MYTEXTSUB1> Embedded". Previously, if a local text-substitution association was embedded in a global text-substitution association, the local text substitution was not performed.

See Also