Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Install Shield User Guide

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2504

InstallShield User Guide

Version 2010

InstallShield 2010 User Guide


Part Number: ISP-1600-UG00 Product Release Date: 5-June-2008

Copyright Notice
Copyright 19962009 Acresso Software Inc. and/or InstallShield Co. Inc. All Rights Reserved. This product contains proprietary and confidential technology, information and creative works owned by Acresso Software Inc. and/or InstallShield Co. Inc. and their respective licensors, if any. Any use, copying, publication, distribution, display, modification, or transmission of such technology in whole or in part in any form or by any means without the prior express written permission of Acresso Software Inc. and/or InstallShield Co. Inc. is strictly prohibited. Except where expressly provided by Acresso Software Inc. and/or InstallShield Co. Inc. in writing, possession of this technology shall not be construed to confer any license or rights under any Acresso Software Inc. and/or InstallShield Co. Inc. intellectual property rights, whether by estoppel, implication, or otherwise. All copies of the technology and related information, if allowed by Acresso Software Inc. and/or InstallShield Co. Inc., must display this notice of copyright and ownership in full.

Trademarks
Acresso, AdminStudio, FLEXnet Connect, InstallShield, InstallShield Developer, InstallShield DevStudio, InstallShield Professional, OneClickInstall, and QuickPatch are registered trademarks or trademarks of Acresso Software Inc. and/or InstallShield Co. Inc. in the United States of America and/or other countries. All other brand and product names mentioned herein are the trademarks and registered trademarks of their respective owners.

Restricted Rights Legend


The software and documentation are commercial items, as that term is defined at 48 C.F.R. 2.101, consisting of commercial computer software and commercial computer software documentation, as such terms are used in 48 C.F.R. 12.212 or 48 C.F.R. 227.2702, as applicable. Consistent with 48 C.F.R. 12.212 or 48 C.F.R. 227.2702-1 through 227.7202-4, as applicable, the commercial computer software and commercial computer software documentation are being licensed to U.S. government end users (A) only as commercial items and (B) with only those rights as are granted to all other end users pursuant to the terms and conditions set forth in the Acresso Software standard commercial agreement for this software. Unpublished rights reserved under the copyright laws of the United States of America.

Contents

InstallShield 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Whats New in InstallShield 2010 SP1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Whats New in InstallShield 2010. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 What Was New in Earlier Versions of InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Whats New in InstallShield 2009 SP2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Whats New in InstallShield 2009 SP1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Whats New in InstallShield 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Whats New in InstallShield 2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Whats New in InstallShield 12 SP1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Whats New in InstallShield 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Target System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Targeting 64-Bit Operating Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Using Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Help Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Using Context-Sensitive Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Contacting Acresso Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Installation Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Application Lifecycle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Starting InstallShield. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 InstallShield Start Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Working with Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Installation Projects Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Determining Which Installation Project Is Right for You . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Creating Installations for Mobile Devices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Project Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 InstallScript Installation Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

InstallShield 2010 User Guide

ISP-1600-UG00

iii

Contents

Basic MSI Installation Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 InstallScript MSI Installation Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 InstallScript Object Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 MSI Database and MSM Database Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Merge Module Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 QuickPatch Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Smart Device Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Transform Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 ClickOnce Deployment Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Using Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Creating New Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Creating Projects and .dim Files from ClickOnce Deployments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Opening Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Opening Windows Installer Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Opening Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Opening Object Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Saving Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Converting from One Project Type to Another Project Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 GUIDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Changing the Default Project Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Reusing Project Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Using a Repository to Share Project Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Project Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Sample Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Project Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Using the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Using the More Options, Other Places, and Help Links Sections in the Project Assistant. . . . . . . . . . . . . . . . . . . . 115 Navigating in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Opening the Installation Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Showing or Hiding the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Application Information Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Add or Remove Programs in the Control Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Company Name and Product Name in Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Installation Requirements Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Specifying Operating System Requirements in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 When Does the Installation Check for Requirements? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Modifying the Run-Time Message for Software Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Creating Custom Installation Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Installation Architecture Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Adding Features in the Project Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Determining Whether to Create a Multiple-Feature Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Creating Installations with Multiple Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Default Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Defining Feature Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

iv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Application Files Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Adding Files to Features in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Removing Files from Features in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Adding Files to a Fixed Folder Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Viewing Additional Predefined Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Application Shortcuts Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 File Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Creating Shortcuts to Files Not Included in the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Modifying a Default Shortcut in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Associating a Shortcuts Target with a File Extension in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Application Registry Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Updating the Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Configuring Registry Data in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Modifying Registry Data Values in the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Associating Registry Data with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Using Variable Data Types in Registry Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Application Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Installation Interview Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Specifying Dialogs for Your Installation in the Project Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Allowing End Users to Modify the Installation Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 License Agreements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Creating Selectively Installable Installations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Installation Localization Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Localizing String Data from the Project Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 How Localized String Data Is Used in the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Build Installation Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Building Your Installation from the Project Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 After Completing the Project Assistant: Next Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Using the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Navigating in the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Using the More Options and Help Links Sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Application Information Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Specifying a Primary Application Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Specifying the Company Name and Application Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Choosing a Signing Certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Installation Requirements Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Specifying Software Requirements in the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Application Files Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Adding Application Files Using the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Using Reg-Free COM Registration in Your ClickOnce Deployment Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Removing Application Files Using the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Security Settings Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Specifying a Security Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

InstallShield 2010 User Guide

ISP-1600-UG00

Contents

Shell Integration Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Creating a Shell Presence for a ClickOnce Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Automatic Updates Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Specifying Automatic Update Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Build Installation Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Building Your Installation from the ClickOnce Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Working with the InstallShield Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Displaying the View List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Opening Views in the InstallShield User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Working with the Group Box Area in Various Views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Showing or Hiding Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Showing or Hiding Tooltips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Adding Buttons and Menus to a Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Removing Buttons and Menus from a Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Creating Custom Toolbars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Docking or Undocking the Output Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Configuring Advanced Settings for InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Modifying the List of Available Windows Mobile Platforms or their Associated Settings . . . . . . . . . . . . . . . . . . . . . . . 140 Configuring the Compression Level for Files that Are Streamed into Setup.exe and ISSetup.dll . . . . . . . . . . . . . . . . . 145 Configuring the Maximum Size for .cab Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Modifying the List of Portable Executable Files for the Standalone Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Adding Support for XML Encoding Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Specifying the Location Where All Virtual Packages Should Be Built . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Upgrading from Earlier InstallShield Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Upgrading Projects from InstallShield 2009 or Earlier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Upgrading Projects from InstallShield 2008 or Earlier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Upgrading Projects from InstallShield 12 or Earlier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Upgrading Projects from InstallShield 11.5 or Earlier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Upgrading InstallShield 11.5 or Earlier Basic MSI Projects that Have InstallScript Custom Actions. . . . . . . . . . . . . 179 Upgrading InstallShield 11.5 or Earlier InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Upgrading InstallShield 11.5 or Earlier InstallScript Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Upgrading InstallShield 11.5 or Earlier QuickPatch Projects that Have InstallScript Custom Actions. . . . . . . . . . . . 194 Creating Standard Patches for InstallShield 11.5 and Earlier InstallScript MSI Projects. . . . . . . . . . . . . . . . . . . . . 194 Upgrading InstallShield 11.5 or Earlier InstallScript MSI Object Projects or Projects that Contain This Type of Object194 Upgrading Projects Created with InstallShield Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Upgrading Projects Created with InstallShield Professional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Migrating from InstallShield Professional 6.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Migrating from InstallShield Professional 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Script Changes: Lexicon Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Adding Project Assistant Dialog Support to Projects Upgraded from InstallShield Professional . . . . . . . . . . . . . . . 209 Upgrading Projects Created with InstallShieldWindows Installer Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Post-Upgrade Changes in the Property Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Upgrading from Other InstallShield Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Upgrading from the Express Edition to the Professional or Premier Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

vi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Upgrading from the Professional Edition to the Premier Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Converting Visual Studio Projects to InstallShield Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Obtaining Updates for InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Run-Time Language Support in InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Code Page Requirements for Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Installing Supplemental Language Support on a Build Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Supported Application Programming Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

4 5

Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 InstallScript Project Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221


Step 1: Creating, Building, and Testing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Creating a Project with the Project Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Specifying Application Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Customizing the Installation Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Adding Files to Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Creating Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Configuring Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Selecting Dialogs with the Installation Interview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Choosing a Language for Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Building Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Running Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Working with the InstallShield Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Setting Feature Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Setting Setup Type Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Creating Components and File Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Building a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Naming the Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Selecting the Media Type and General Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Specifying a Password and Supported Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Specifying Setup Languages and Including Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Defining Media Layout and Dialog Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Specifying Internet Options and Digitally Signing Your Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Specifying Update and Postbuild Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Reviewing Your Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Troubleshooting Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Step 2: Shortcuts and Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Creating Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Creating Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Step 3: Registering COM Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Step 4: Conditions and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Step 5: Working with Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Step 6: Changing the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Handling User Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

InstallShield 2010 User Guide

ISP-1600-UG00

vii

Contents

Changing the Dialogs Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Using the Dialog Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Basic MSI Project Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241


Step 1: Creating, Building, and Testing Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Creating a New Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 Specifying Application Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Setting Installation Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Customizing Installation Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Adding Files to Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Creating Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Configuring Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Selecting Dialogs with the Installation Interview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Choosing a Language for Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Building Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Running Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Working in the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Setting Feature Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Creating Components and File Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Building a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Naming the Product Configuration and Release. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Specifying Filtering Settings and Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Selecting the Media Type and Disk Spanning Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Specifying Compression Settings and Setup Launcher Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Installing Windows Installer Engine Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Adding Digital Signature and Password Protection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Including .NET Framework Support and Choosing Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Reviewing Your Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Troubleshooting Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Step 2: Shortcuts and Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Creating Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Creating Registry Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Step 3: Registering COM Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Step 4: Conditions and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Step 5: Changing the End-User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Adding a New Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Modifying Dialog Layout in the Dialog Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

Globalization Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263


Opening the Project File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Selecting the Target Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Editing Language-Specific String Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Creating String Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Including Language-Specific Files and Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

viii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Specifying Component Installation Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Translating the Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Building the Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Running the Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Testing the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

Referencing a DIM in a Basic MSI Project Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271


Adding a DIM Reference to a Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Adding a DIM Reference Using the Setup Design View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Adding a DIM Reference Using the DIM References View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Reviewing the Contents of a Referenced DIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Building and Running the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Creating Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281


Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Requirements for the Certified for Windows Vista Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Introduction to Windows Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Minimizing the Number of User Account Control Prompts During Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Setting an Applications Disk Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 INSTALLDIR vs. TARGETDIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Preventing the Current Installation from Overwriting a Future Major Version of the Same Product . . . . . . . . . . . . . . . 291 Preparing Installations for Non-Administrator Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Settings for Platforms and Platform Suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

10

Specifying Installation Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297


Configuring General Project Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Saving an .ism Project in XML or Binary Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Specifying a Product Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Specifying the Product Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Product Version Numbers in InstallScript and InstallScript Object Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Setting the Product Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Setting the Product GUID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Setting the Upgrade Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Setting Product Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Setting the Default Product Destination Folder (INSTALLDIR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Securing Files, Folders, and Registry Keys in a Locked-Down Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Selecting the Locked-Down Permissions Type for a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Specifying Whether Windows Installer Installations Should Be Logged . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Running an InstallScript Installation Multiple Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Setting the Enable Maintenance Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 OnMaintenance Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations . . . . . . . . . . 310 Specifying the InstallScript User Interface Type for InstallScript MSI Installations . . . . . . . . . . . . . . . . . . . . . . . . . 315

InstallShield 2010 User Guide

ISP-1600-UG00

ix

Contents

Entering Summary Information Stream Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Accessing the Summary Information Stream Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Setting Summary Information Stream Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Using the Template Summary Property. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Configuring Add or Remove Programs Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Specifying a Readme File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

11

Organizing Files for Your Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321


Designing Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Separating Applications into Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Separating Applications into Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Using Path Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Predefined Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Creating and Defining a Path Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Deleting a Path Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Standard Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Registry Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Converting Static Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Including Files and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Files Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Working in the Files Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 File Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Installing Self-Registering Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 File Associations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Adding New File Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Removing File Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Setting File Extension Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Destination Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Creating Empty Folders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Specifying Hard-Coded Destination Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Dynamic File Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Limitations of Dynamic File Linking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Determining the Appropriate Component Creation Method for Dynamically Linked Files . . . . . . . . . . . . . . . . . . . . 342 Creating a Dynamic Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Adding Dynamic File Links to Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Setting a Key File for a Dynamic File Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Overwriting Files and Components on the Target System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Companion Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Finding Files and Folders in Your Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Configuring Permissions for Files and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Extracting COM Data When Files Are Added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 Installing Fonts Through InstallScript and InstallScript Object Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Installing Fonts to the Windows Fonts Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Enabling or Disabling Global Font Registration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Enabling or Disabling Registration of a Font File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Using Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Setup Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Component Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Using the Setup Design or Components Views to Create a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Using the Best Practices Option with the Component Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Using the Component Type Option with the Component Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Exporting Components to Other Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Deleting a Component in Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Component-Feature Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Associating New Components with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Associating Existing Components with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Disassociating Components from Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Adding Data to a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Adding Files to Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Changing the Value in the Link To Column for a Components File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Deleting a File from a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Adding Registry Data to Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Creating Shortcuts in the Components View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Adding Subfolders to Statically Linked Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Component Key Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Setting Component Key Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Clearing a Key File from a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 Component Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Component Destination vs. Feature Destination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Specifying Whether a Components Files and Other Associated Data Are Uninstalled During Uninstallation . . . . . . . 373 Configuring Component Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Reevaluating Component Conditions During Reinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 Managing Reference Counts for Shared Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 Checking File Versions Before Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Installing Files of the Same Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Setting a Components Remote Installation Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Extracting COM Registration at Build Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Scanning for .NET Dependencies and Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Specifying the .NET Application File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Reading Properties Passed to the .NET Installer Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 Enabling and Disabling Registry Reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Specifying Whether Shared Component Patching Should Be Enabled for a Component. . . . . . . . . . . . . . . . . . . . . 384 Advanced Component Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Configuring COM Registration Settings Manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Registering a File Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Installing, Controlling, and Configuring Windows Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Installing Assemblies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

InstallShield 2010 User Guide

ISP-1600-UG00

xi

Contents

Specifying an Application Path for a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Configuring Device Driver Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Publishing Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Defining Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Creating Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 Configuring Feature Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Setting a Features Destination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Setting Feature Conditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Displaying Features to End Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Conditionally Selecting Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Conditionally Hiding Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Requiring Features to Be Installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Advertising Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Configuring a Features Install Level Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Setting a Features Remote Installation Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Using Release Flags with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Assigning Release Flags to Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Removing Release Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Reordering Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Using the Required Features Setting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Working with Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Adding Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Editing Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Renaming Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Deleting Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Including Redistributables in Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Shipping Redistributable Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 Managing the Redistributables Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 Downloading Redistributables to Your Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Adding InstallShield Prerequisites to the Redistributables Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Removing InstallShield Prerequisites from the Redistributables Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Browsing for Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 What Happens When You Browse for a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Adding Merge Modules to the Redistributables Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Removing Merge Modules from the Redistributables Gallery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Registering Objects in InstallScript Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Incorporating InstallShield Prerequisites, Merge Modules, and Objects in Projects . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects . . . . . 425 Adding InstallShield Prerequisites, Merge Modules, and Objects to InstallScript Projects . . . . . . . . . . . . . . . . . . . 427 Removing InstallShield Prerequisites from a Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Removing Merge Modules and Objects from a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Determining the Files in InstallShield Prerequisites, Merge Modules, and Objects . . . . . . . . . . . . . . . . . . . . . . . . . 429 Working with InstallShield Prerequisites that Are Included in Installation Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Setup Prerequisites vs. Feature Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

xii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Associating an InstallShield Prerequisite with a Feature in a Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Disassociating an InstallShield Prerequisite from a Feature in a Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . 433 Specifying the Installation Order of InstallShield Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Configuring a Release that Includes InstallShield Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Specifying a Location for a Specific InstallShield Prerequisite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Assigning Release Flags to InstallShield Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Building a Release that Includes InstallShield Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Run-Time Behavior for an Installation that Includes InstallShield Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Uninstalling an Application Whose Installation Included InstallShield Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . 441 Working with Merge Modules that Are Included in Installation Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Overriding a Merge Modules Destination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Troubleshooting Merge Module Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Publishing a Merge Module to a Repository from Within an Installation Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Adding Windows Installer Redistributables to Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 Including Microsoft Windows Installer Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 Adding .NET Framework Redistributables to Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites . . . . . . . . . 447 Including the MySQL Connector ODBC Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 Including the InstallShield Prerequisite for the Oracle 10g Instant Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 Installing BDE Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 Including the DirectX 9.0 Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Including the DirectX 8.0a Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Including the MDAC Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Using the InstallShield MSDE 2000 Object for NT Platforms in an InstallScript MSI Project . . . . . . . . . . . . . . . . . . . . 453 Declaring a Script-Defined Variable for Access 97, ODBC 3.51, and DCOM Deployment Objects. . . . . . . . . . . . . . . . 454 Identifying Application Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Importing Visual Basic Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Filtering Files in Dependency Scanners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Registering COM Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Traditional COM Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Determining Whether a COM Server Supports Self-Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Extracting COM Information from a COM Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 Filtering Registry Changes for COM Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 Self-Registering COM Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Registry-Free COM Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Creating and Modifying Reg-Free COM Files for Your Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Sample Manifest File for a Reg-Free COM File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 Referencing DIM Files in a Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 Adding a New DIM Reference in the DIM References View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 Associating a DIM Reference with a Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Adding a New DIM Reference to a Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Inserting SQL Script Files Associated with a Referencing DIM File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Inserting DIM Virtual Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Creating a Shortcut to a File Referenced in a DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

InstallShield 2010 User Guide

ISP-1600-UG00

xiii

Contents

Editing Build and Run-Time Variables Referenced in a DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Identifying the Location of DIM Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

12

Configuring the Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473


Creating Shortcuts and Program Folders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 Types of Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 Creating Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Configuring Shortcut Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 Specifying the Icon for a Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 Creating Internet Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Creating Shortcuts to Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Specifying a Keyboard Shortcut for Accessing a Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 Renaming Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Setting Shell Properties for a Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Creating Uninstallation Shortcuts for Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Creating Uninstallation Shortcuts for InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Editing the Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Filtering Registry Entries by Component or Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Refreshing the Registry View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Creating Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Dragging and Dropping Registry Entries to Create Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Removing Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Creating Registry Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 Modifying Registry Value Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Removing Registry Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Registry Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Searching for Registry Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Setting Uninstall Behavior for Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Using Environment Variables in Registry Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Writing Property Values to the Registry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Importing Registry Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Exporting Registry Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Setting Key Paths for Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Configuring Permissions for Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Primary Keys for the Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Specifying a Primary Key for the Registry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Entering Multi-Line String Values for Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Writing Entries Under HKCU for a Per-User Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Setting or Getting Multi-Line Strings in the Windows NT Registry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Working with Registry Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Reading Data from the Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Changing .ini File Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Creating .ini File References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 Importing an Existing .ini File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

xiv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Specifying a Section in an .ini File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Specifying a Keyword in an .ini File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Reading Data from .ini Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Reading All Key Names from .ini Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Configuring ODBC Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Installing ODBC Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Including Additional ODBC Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Associating ODBC Resources with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Setting ODBC Resource Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 ODBC Attributes and Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Using Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Setting Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Environment Variables Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Modifying XML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Overview of XML File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Run-Time Requirements for XML File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Creating an XML File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Specifying the Location of the XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Associating an XML File Change Reference with a Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Adding a Root Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Adding a New Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Adding an Element for a .NET Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Adding an Attribute to an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Editing an Attributes Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Adding Content to an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Using XPath Expressions to Find XML Data in an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Using Windows Installer Properties to Dynamically Modify XML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Using InstallScript Text Substitution to Dynamically Modify XML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Using Reserved Characters (<, >, &, ', and ") Inside Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Using Namespaces in XML Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Declaring Namespace Mappings for an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Adding a Namespace Prefix to an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Adding a Namespace Prefix to an Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Removing a Namespace Prefix from an Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Removing a Namespace Prefix from an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Removing Namespace Mappings from an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Testing Installation Changes to an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 Testing Uninstallation Changes to an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Removing an Element or an XML File from the XML File Changes View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Modifying Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Creating a Text File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 Specifying Search-and-Replace Criteria for a Text File Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Changing the Order in Which Text File Changes Are Made . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Using Windows Installer Properties to Dynamically Modify Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

InstallShield 2010 User Guide

ISP-1600-UG00

xv

Contents

Specifying the Code Page that Should Be Used for Opening ANSI Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Removing a Replacement Item or a Replacement Set from the Text File Changes View . . . . . . . . . . . . . . . . . . . . . . 535 Per-User vs. Per-Machine Installations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536

13

Customizing Installation Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539


Using InstallScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Overview of ISSetup.dll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Editor Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 IntelliScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Syntax Coloring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 Function Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Checking the Insertion Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Going to a Line Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Bookmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Configuring the Script Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 Characters Not Properly Displayed Under Non-English Operating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Undoing or Redoing Actions in the Script Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Dragging and Dropping Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Maximizing the Script Editor Pane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Script Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 Creating InstallScript Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 Opening an InstallScript File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 Inserting and Importing Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 Inserting the Same Text in Multiple Lines of Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Compiling Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Debugging Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 Renaming an InstallScript File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Using String Entries in Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Removing InstallScript Files from Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 Creating Script Libraries (.obl Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 Publishing InstallScript Files (.rul and .h) to a Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Printing a Script File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 InstallScript Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Saving InstallScript Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 System Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 Getting and Setting Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Using Bit Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 String Comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Using Null-Delimited Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Relative Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Long File Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 Defining Constants Through the Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Using Windows Constants in a Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Coding Long String Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

xvi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Absolute Path. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Building Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 Calling Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 Calling a .dll File Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 Declaring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 Returning Values from Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Unsupported Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Writing Entry-Point Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Adding Function Calls with the Function Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Declared Windows API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Specifying a Non-Default Feature Event Handler Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Accessing Global Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Uninstalling Initialization (.ini) File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 General Limitations of Uninstalling Initialization (.ini) File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Uninstalling AddProfStrings Initialization (.ini) File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Uninstalling ReplaceProfStrings Initialization (.ini) File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Uninstalling WriteProfStrings Initialization (.ini) File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Extending Your Installation with COM Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Calling a Windows API Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 Embedding Custom Transfer File Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 Expressing Large Numbers in InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 Installing Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Checking the Compiler Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Checking the Authoring Environment with _ISCRIPT_ISDEV and _ISCRIPT_ISPRO . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Launching an Installation from Another InstallScript Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Language Support for InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 Preventing Color Distortion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 Using Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Using the Custom Action Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View) . . . . . . . . . . . . . 600 Configuring Custom Action Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 Custom Action Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 InstallScript Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Custom Action Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 In-Script Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 Documenting the Behavior of Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program . . . . . . . 605 Nested Installations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Creating Nested Installation Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Inserting Nested Installation Custom Actions into Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 Removing Child Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 Conditionally Launching Custom Actions Based on Release Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Cloning Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 Example: Calling MessageBoxA in an Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

InstallShield 2010 User Guide

ISP-1600-UG00

xvii

Contents

Calling Functions in Standard .dll Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 Calling Functions in Windows Installer .dll Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Passing Parameters to a .dll File Function in a Custom Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 Specifying Features and Subfeatures in Function Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 Calling a Public Method in a Managed Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 Run-Time Requirements for Managed-Code Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 Specifying the Signature for a Managed Method in an Assembly Custom Action. . . . . . . . . . . . . . . . . . . . . . . . . . 617 Launching Executable Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 Using Msiexec.exe to Launch a Second Windows Installer Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Exporting Custom Actions to Other Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 Searching for Files on the Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 Launching the Application After the Installation Is Complete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 Placing Files in the .msi Database and Extracting Them During Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 Accessing or Setting Windows Installer Properties Through Deferred, Commit, and Rollback Custom Actions . . . . . . 626 Exiting the Installation from Within a Custom Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 Changing ODBC Properties Through Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 Using the INSTALLDIR Property in a VBScript Custom Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 Using Action Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 Specifying an Action Description and a Template for Action Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 Displaying Action Descriptions on the Progress Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 Displaying Action Data on the Progress Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 Removing an Action Description or a Template for Action Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Defining Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Installation Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 Advertisement Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Administration Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 User Interface Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 Execute Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Inserting Actions into Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 Copying a Custom Action from One Sequence to Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 Reordering a Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 Removing Actions from Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Sequencing Rollback Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 Sequencing a Custom Action that Launches an .exe File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 Sequencing a Custom Action that Calls a Function in a .dll File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 Sequencing a Custom Action that Calls a Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Sequencing Custom Actions that Set Properties or Directory Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 Sequencing a Custom Action that Launches a Second .msi Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 ISSetAllUsers Custom Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Using Support Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 Adding Support Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 Adding a License File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 Sorting Support Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 Adding Files and Folders to the Disk1 Folder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

xviii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Removing Files or Folders from the Disk1 Folder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 Adding Files and Folders to the Last Disk Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 Removing Files or Folders from the Last Disk Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Adding Files and Folders to the Other Disk Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Removing Files or Folders from the Other Disk Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Removing Support Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661

14

Defining the End-User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663


Working with Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Working with Dialogs in Any Project Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Using the Dialog Wizard to Create a New Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Adding the Ability to Create or Set an Existing User Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Exporting a Dialog to an .isd File for Use in Other Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 Importing Dialogs from an .isd File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 Publishing a Dialog (.isd) File to a Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Exporting All Dialogs to an .rc File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Importing Dialogs from Resource .dll Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 Exporting Dialogs to Other Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Removing Dialogs from Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Creating and Configuring Custom Dialogs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 Undoing Changes in the Dialog Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Working with Dialogs in InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Displaying Dialogs During InstallScript and InstallScript MSI Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 Changing the Text on Dialogs in InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 Creating New Custom Dialogs in InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 Using the New Dialog Wizard to Add a New Custom Dialog to an InstallScript or InstallScript MSI Project . . . . . . . 674 Editing the Layout of a Dialog in an InstallScript or InstallScript MSI Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Using InstallScript to Implement Custom Dialogs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 Using InstallScript to Process Dialog Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 Editing Dialog Behavior in an InstallScript or InstallScript MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 Adding a Field That Contains a Product Name, Product Version, or Installed Version in Sd Dialog Static Text Fields 682 Using an HTML Control on a Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 Reverting to the Default Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Resource Compiler and Resource Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Dialog Sampler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Dialog Skins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 Working with Dialogs in Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688 Displaying Dialogs During Basic MSI Installations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 Using Control Events in Basic MSI Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 Creating New Dialogs in Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 Editing Dialog Layout in Basic MSI Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Editing Dialog Behavior in Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 Triggering Control Events in Basic MSI Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699

InstallShield 2010 User Guide

ISP-1600-UG00

xix

Contents

Launching Custom Actions from Dialogs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Viewing End-User Dialog Order in the Custom Actions and Sequences view (Basic MSI Projects) . . . . . . . . . . . . . . 701 CustomSetup Dialog Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 Dialog Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 Dialog Support for Right-to-Left Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Launching a File Open Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Requiring End Users to Scroll Through the EULA in the LicenseAgreement Dialog . . . . . . . . . . . . . . . . . . . . . . . . 724 Adding a Print Button to a Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 Minimizing Reboots on Windows Vista Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 Dialog Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 Billboard Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 Bitmap Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 Check Box Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 Combo Box Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 Custom Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Dialog Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 Directory Combo Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 Directory List Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 Edit Field Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 Group Box Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 Icon Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 Line Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 List Box Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 List View Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Masked Edit Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762 Path Edit Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 Progress Bar Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 Push Button Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 Radio Button Group Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 Radio Button Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 Scrollable Text Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 Selection Tree Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 Text Area Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 Volume Select Combo Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 Volume Cost List Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 Copying and Pasting Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 Cutting and Pasting Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 Localizing the End-User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 Working with String Entries in Projects that Support Multiple Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 Using String Entries in InstallShield. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 Adding a String Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 Editing a String Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 Searching for Instances of String Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 Finding and Replacing String Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

xx

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Removing a String Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 Removing String Identifiers from Localizable Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 Displaying Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 Displaying Billboards in Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 Billboard File Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 Types of Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 Adding an Adobe Flash Application File Billboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 Adding Image Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 Configuring Billboard Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 Previewing Billboards Without Building and Launching a Release. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 Setting the Billboard Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 Run-Time Behavior of an Installation that Includes Billboards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 Removing a Billboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804 Displaying Billboards in InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804 Naming Billboard Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 Adding Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 Setting the Billboard Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806 Removing Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806 Displaying Billboards with Special Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 Moving Billboards to a Different Screen Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 Displaying a Background Window in InstallScript and InstallScript MSI Installations . . . . . . . . . . . . . . . . . . . 808 Populating List Boxes at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Displaying File Browse Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Displaying Network Browse Dialogs in InstallScript Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809

15

Preparing Installations for Update Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811


Enabling Automatic Update Notifications for a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812 Disabling Automatic Update Notifications for a Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812 Files that Need to Be Installed for Automatic Update Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Creating a Shortcut to Check for Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 Adding a Check-for-Updates Check Box to the SetupComplete Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 Registering Your Application with FLEXnet Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815

16

Configuring Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817


Configuring SQL Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Specifying Whether New SQL Connections Should Share the Same Windows Installer Properties . . . . . . . . . . . . . . . 818 Using the SQL Run-Time Functions in InstallScript and InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 Adding a New SQL Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 Adding a New SQL Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 Inserting and Importing SQL Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 Importing a SQL Server Database and Generating a SQL Script File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 Editing a SQL Script File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 Specifying a Version Number for a SQL Script File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 Specifying the Order for Running Multiple SQL Scripts That Are Associated with a Connection . . . . . . . . . . . . . . . . . 823

InstallShield 2010 User Guide

ISP-1600-UG00

xxi

Contents

Overriding the Default SQL Run-Time Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Handling SQL Run-Time Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 Setting Up a Database Server Type Condition for SQL Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 Conditionally Launching a SQL Script in a Windows Installer-Based Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 Conditionally Launching a SQL Script in an InstallScript Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 Requiring that SQL Scripts Be Run Only Against a Full SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Requiring a SQL Server-Side Installation for a Windows Installer-Based Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Requiring a Server-Side Installation for an InstallScript Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831 Publishing SQL Script Files to a Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 Installing the MySQL ODBC Driver from a Windows Installer-Based Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 Installing the MySQL ODBC Driver from an InstallScript Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 Deleting a SQL Server Database During Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835 Connecting to an Instance of Oracle and Running SQL Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 Installing the Oracle 10g Instant Client from a Windows Installer-Based Installation. . . . . . . . . . . . . . . . . . . . . . . . 837 Installing the Oracle 10g Instant Client from an InstallScript Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838 Creating a Sample Installation that Creates a SQL Server Database by Running Customized SQL Script . . . . . . . . . . 840 Creating a Sample Installation that Creates an Oracle Schema by Running Customized SQL Script . . . . . . . . . . . . . . 842 Managing COM+ Applications and Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844 Managing COM+ Server Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 Managing COM+ Application Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 Including a COM+ Application that Targets Servers and Client Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 Managing Internet Information Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 Version-Specific Information for IIS Support in InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 Determining Which Version of IIS Is Installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 Run-Time Requirements for IIS Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 Specifying Whether a Web Server Should Allow the CMD Command to Be Used for SSI #exec Directives . . . . . . . . . 849 Creating a Web Site and Adding an Application or a Virtual Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 Scanning an IIS Web Site and Importing Its Settings into an InstallShield Project . . . . . . . . . . . . . . . . . . . . . . . . . 851 Creating a Nested Virtual Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854 Configuring the TCP Port and Site Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855 Specifying the IIS Host Header Name for a Web Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858 Specifying the SSL Certificate for a Web Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 Adding Files to an IIS Virtual Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 Removing Applications and Virtual Directories from the Internet Information Services View . . . . . . . . . . . . . . . . . . . . 860 Adding Application Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 Removing Application Pools from the Internet Information Services View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861 Adding Web Service Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861 Removing Web Service Extensions from the Internet Information Services View . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861 Feature and Component Associations for IIS Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862 Uninstalling Web Sites, Applications, and Virtual Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862 Uninstalling Web Service Extensions and Application Pools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 Setting the ASP.NET Version for a Web Site, Application, or Virtual Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864 Considerations for Supporting IIS 6 on 64-Bit Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 Defining Application Mappings for a Web Site, Application or Virtual Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867

xxii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Specifying Timeout Parameters for a Web Site, Application, or Virtual Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . 867 Determining If a Target System Has IIS 6 or Earlier or the IIS 6 Metabase Compatibility Feature . . . . . . . . . . . . . . . . 868 Configuring Advanced IIS Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 Configuring Custom Error Messages for a Web Site, Application, or Virtual Directory . . . . . . . . . . . . . . . . . . . . . . . . 870 Using Windows Installer Properties to Dynamically Modify IIS Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 Using InstallScript Text Substitution to Dynamically Modify IIS Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 Deploying Web Services on a Target Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 Adding IISROOTFOLDER Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 IIS_WEBSITE_NAME Property. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 IIS_PORT_NUMBER Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875

17

Adding Mobile Device Support to Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877


Adding an Installation for a Windows MobilePowered Device to Your Project . . . . . . . . . . . . . . . . . . . . . . . 878 Adding an Installation for a Palm OS Device to Your Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879 Targeting a Specific User or Slot ID for a Palm OS Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 Adding Existing .cab Files to Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 Special Considerations for Adding Multiple .cab Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881 Getting the Location of the Application Manager (CeAppMgr.exe) on the Target System . . . . . . . . . . . . . . . 882 Deploying Files to the Microsoft ActiveSync Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 Suppressing the Display Warning for Legacy Mobile Device Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 883 Modifying an Installation for a Mobile Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 Renaming an Installation for a Mobile Device. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 Removing an Installation for a Mobile Device from Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 Building an Installation for a Mobile Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885

18

Preparing Installations for Maintenance and Uninstallation. . . . . . . . . . . . . . . . . . . . . . 887


Preparing an InstallScript Installation for Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887 Executing Script Code Only During Uninstallation or Only During Installation. . . . . . . . . . . . . . . . . . . . . . . . 889 InstallScript Functions that Are Logged for Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889 Maintenance/Uninstallation Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891 Removing Files that Were Created by Your Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891 Removing Registry Data Created by Your Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892

19

Configuring Multiple Packages for Installation Using Transaction Processing . . . . . . . . 893


Overview of Multiple-Package Installations that Use Transaction Processing . . . . . . . . . . . . . . . . . . . . . . . . 893 Adding a New Chained .msi Package to Your Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 Assigning Release Flags to a Chained .msi Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896 Removing a Chained .msi Package from Your Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896

20

Building, Testing, and Deploying Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899


Creating and Building Releases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899 Working with Product Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 Working with Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900

InstallShield 2010 User Guide

ISP-1600-UG00

xxiii

Contents

Using the Release Wizard to Create and Build a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 Using the Releases View to Create and Build a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 Setting the Release Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 Building a Release from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 Rebuilding Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907 Performing Batch Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 Resolving Build Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 Canceling Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910 Standalone Build. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910 Microsoft Build Engine (MSBuild) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916 Configuring Release Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 Creating a Single Executable File for Distribution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 Specifying the Setup Launcher Type (Unicode or ANSI) for a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 Specifying the Required Execution Level for Your Setup Launcher on Windows Vista Platforms . . . . . . . . . . . . . . . 922 Specifying Whether a Product Should Be Advertised If Its InstallShield Prerequisites Are Run with Elevated Privileges924 Leaving Files Uncompressed in a Disk Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926 Password-Protecting Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926 Preparing a Trialware Release of Your Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 Excluding Trialware Protection from a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 Specifying the Location for InstallShield Prerequisites at the Release Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928 Digital Signing and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 Digitally Signing a Release and Its Files at Build Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 Manually Signing Files in a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 Digitally Signing a Release After It Has Been Built From the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933 Release Flags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934 Product Configuration Flags vs. Release Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935 Filtering Based on Release Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937 Using One Project to Create Installations for Multiple Product Configurations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938 Typical Web Installation vs. One-Click Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939 One-Click Install Installations in InstallScript Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940 One-Click Install Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940 Player Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941 Ether Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943 Digital Signatures for One-Click Install Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946 Replacing Obsolete Properties and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946 Default Web Page (Setup.htm) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948 System Requirements for One-Click Install Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 Alternate Ways to Call the Setup Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 HTTPS and One-Click Install Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 Creating One-Click Install Installations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950 Setup.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 The [Startup] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 The [Mif] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955 Cloning Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956

xxiv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Testing and Running Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 Test Running Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 Testing a Trialware Release of Your Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 Running Installations from the InstallShield Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958 Running Installations in Silent Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959 InstallScript MSI and InstallScript Silent Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959 Creating a Silent Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 Creating the Response File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 Running the Silent Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 Checking for Errors Using the Setup.log File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 MSI Silent Mode Installations for InstallScript MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 Validating Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 Validating an Installation Package or Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 Specifying Whether Validation Should Be Performed at Build Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 Specifying Which ICEs, ISICEs, and ISBPs Should Be Run During Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 Validating an Installation Package or Merge Module on Demand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 Viewing Validation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 ICEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 ISICEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 ISICE01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982 ISICE02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982 ISICE03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 ISICE04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984 ISICE05 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984 ISICE06 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985 ISICE07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986 ISICE08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987 ISICE09 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988 ISICE10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988 ISICE11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989 ISICE12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 ISICE16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 ISICE17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 ISICE18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992 ISICE19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 ISICE20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995 InstallShield Best Practice Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996 ISBP01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998 ISBP02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999 ISBP03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999 ISBP04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000 ISBP05 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001 ISBP06 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002 ISBP07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002

InstallShield 2010 User Guide

ISP-1600-UG00

xxv

Contents

ISBP08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003 ISBP09 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 ISBP10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 ISBP11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005 ISBP12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006 ISBP13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007 ISBP14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007 ISBP15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 ISBP16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 ISBP17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009 ISBP18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 ISBP19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 ISBP20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011 Understanding When an Installation or Uninstallation Restarts the Target System . . . . . . . . . . . . . . . . . . . 1012 Debugging Windows InstallerBased Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 Starting the MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 Setting Breakpoints in the MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014 Removing Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014 Viewing and Setting Properties in the MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 Step Into Actions in the MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 Step Through Actions in the MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016 Stopping the MSI Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016 Spanning Installations over Multiple Disks or CDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 Compressing Multi-Disk Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 Disk Spanning Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 Custom Disk Spanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018 Creating a Setup Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020 Distributing Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021 Distributing Releases to a Folder or FTP Site Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022 Preparing Installations for Internet Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022 Distributing Releases on Floppy Disks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 Redistributable Files that Are Distributed with an InstallScript Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024

21

Creating Trialware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027


Types of Trialware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 How InstallShield Protects Trialware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028 Trialware Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029 Adding a Trialware File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031 Specifying the Type of Trialware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032 Acquiring a License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032 Trial Limits and Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033 Expiration Dates for Trialware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034 Setting the Trial Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036 Setting or Changing a Trialware Expiration Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037

xxvi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Removing a Trialware Expiration Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037 Setting the Hyperlinks for the Trialware Run-Time Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038 Trialware Run-Time Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038 Try and Die Dialog (Trial Has Not Expired). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 Try and Die Dialog (Trial Has Expired). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040 Try and Die Dialog (Serial Number Required to Extend Trial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041 Try and Die Dialog (Trial Is Extended) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042 Trialware Message Box (System Clock Change) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043 Resetting the License During Development and Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044 Informing End Users How to Extend a Trial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044 Removing a Trialware File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045

22

Creating Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047


Creating a Transform by Comparing Two .msi Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048 Creating a Transform Based on a Single .msi Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049 Applying Transforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049 Editing Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050 Saving .msi Files as Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051 Saving Transforms as .msi Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051 Response Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051 Creating a Response Transform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052 Modifying a Response Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052 Testing a Response Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053 Configuring Server Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053 Adding Server Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053 Modifying Server Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054 Removing Server Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054 Changing the Order of Server Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055

23

Designing InstallShield Prerequisites and Other Redistributables . . . . . . . . . . . . . . . . 1057


Defining InstallShield Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 Creating an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 Modifying an Existing InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060 Setting Properties for an InstallShield Prerequisite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060 Specifying an Alternate URL for a .prq File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060 Setting Installation Conditions for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 Adding a New Installation Condition for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 Adding an Operating System Condition for an InstallShield Prerequisite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 Modifying an Installation Condition for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063 Removing an Installation Condition from an InstallShield Prerequisite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064 Specifying Files for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064 Specifying URLs for Downloading InstallShield Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 Specifying Parameters for Installing an InstallShield Prerequisite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066 Specifying Command-Line Parameters for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067

InstallShield 2010 User Guide

ISP-1600-UG00

xxvii

Contents

Restarting a Target Machine for InstallShield Prerequisite Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 Specifying Installation Behavior for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Specifying that an InstallShield Prerequisite Requires Administrative Privileges . . . . . . . . . . . . . . . . . . . . . . . . . 1070 Allowing End Users to Choose Whether to Install an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . 1071 Specifying Whether to Include the Name of a Prerequisite in the List of Setup Prerequisites to Be Installed on the Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071 Specifying Whether to Show the Progress of an InstallShield Prerequisite Installation at Run Time . . . . . . . . . . . . 1073 Planning for Issues that Could Occur with an InstallShield Prerequisite Installation . . . . . . . . . . . . . . . . . . . . . . . 1074 Specifying the Behavior for an InstallShield Prerequisite that Requires a Restart . . . . . . . . . . . . . . . . . . . . . . . . 1074 Specifying Dependencies for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 Adding a Dependency for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 Modifying a Dependency for an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 Removing a Dependency from an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075 Saving an InstallShield Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076 Designing Merge Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077 Creating a Merge Module Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077 Setting the Default Destination Folder for a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078 Selecting the Merge Module Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078 Adding Dependencies to Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079 Adding Exclusions to Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080 Referencing DIM Files in a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081 Publishing a Merge Module to a Repository from Within a Merge Module Project . . . . . . . . . . . . . . . . . . . . . . . . . . 1081 Creating InstallScript Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083 Designing Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084 Designing Features for Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085 Managing Object Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086 Designing an Objects Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087 Custom Object Wizards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 Localizing an Objects Design-Time Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 Preparing an Object for Internationalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 Making Your Object Compatible with Installations During Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 Properties and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 Creating the Objects Run-Time User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101 Unsupported Features in Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102 Building an Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 Building an Object from the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 Compiling and Building an Object from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104 Testing and Debugging an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104 Distributing an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Object Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Functions Not Supported in Object Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Constants Not Supported in Object Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 Functions Supported Only in Object Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 Adding a ScriptDefinedVar Property to Your Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108

xxviii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Using System Variables in Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110 Setting Your Objects Destination Through the Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110

27

Updating Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111


Upgrades Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 Major Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112 Minor Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113 Small Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113 Patching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114 QuickPatch Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114 Differential Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 Full Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 Determining the Best Upgrade Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 Major Upgrade vs. Minor Upgrade vs. Small Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 Automatic Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120 Patch vs. QuickPatch Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 Packaging Options for Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123 Differential vs. Full Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 Working with Upgrades, Patches, and QuickPatch Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125 Understanding File Overwrite Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125 Upgrade Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126 Configuring InstallShield to Automatically Determine the Upgrade Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127 Adding an Automatic Upgrade Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127 Configuring Automatic Upgrade Item Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127 Converting Automatic Upgrades to Major or Minor Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128 Removing Automatic Upgrade Items. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128 Creating Major Upgrades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 Adding a Major Upgrade Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 Configuring Major Upgrade Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130 Removing Major Upgrade Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130 Creating Minor Upgrades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130 Adding a Minor Upgrade Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132 Configuring Minor Upgrade Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132 Configuring Minor Upgrades to Remove Installed Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133 Removing Minor Upgrade Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134 Creating Small Updates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134 Patching Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134 Patch Sequencing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137 Patch Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139 Non-Administrator Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140 Creating and Applying Patches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 Adding a New Patch Configuration Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 Adding a New Latest Setup Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141 Adding a New Previous Setup Item. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142

InstallShield 2010 User Guide

ISP-1600-UG00

xxix

Contents

Adding an External File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142 Configuring Patch Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 Specifying Identification Information for a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 Enabling the Uninstallation of a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 Sequencing Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 Signing a Patch Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 Password-Protecting a Patch Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 Specifying Whether to Build an Update.exe Update Launcher for a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 Specifying the Update Launcher Type (Unicode or ANSI) for a Patch Package . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 Copying a Latest Setup Item to Another Patch Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 Removing Patch Configuration Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148 Removing Latest Setup Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148 Removing a Previous Setup Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 Building a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 Applying Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149 Creating a QuickPatch Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150 Creating a QuickPatch Project for an Existing QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151 Specifying Whether to Streamline the QuickPatch Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151 Specifying Target Releases for Patching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152 Specifying Custom Actions for the QuickPatch to Execute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 Adding Files to a QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 Specifying Identification Information for a QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 Enabling the Uninstallation of a QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 Sequencing QuickPatch Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 Signing a QuickPatch Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155 Password-Protecting a QuickPatch Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155 Specifying Whether to Build an Update.exe Update Launcher for a QuickPatch Package. . . . . . . . . . . . . . . . . . . 1156 Specifying the Update Launcher Type (Unicode or ANSI) for a QuickPatch Package . . . . . . . . . . . . . . . . . . . . . . 1156 Deleting Files from the Files To Patch Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 Modifying and Removing Installed Files with a QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 Adding, Modifying, and Deleting Registry Data with a QuickPatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158 Validating Upgrades, Patches, and QuickPatch Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158 Validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158 Patching Assemblies in the Global Assembly Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174 Working with Differential and Full Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 Creating an InstallScript Release to Update Previous Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 Notifying End Users about Upgrades Using FLEXnet Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177

28 29

Additional Installation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179 Creating Multilingual Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181


Globalization Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 Setting the Default Project Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 Settings for Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183

xxx

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Selecting the Installation Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 Marking Components as Language Dependent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 Installing Components Based on Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186 Including Languages in the Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 Translating String Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 Exporting and Importing String Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188 Modifying Dialogs for Each Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190 How InstallShield Determines Which Language the Installation Runs In . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191 Customizing Language Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191 Language Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192

30

Installing Multiple Instances of Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195


Run-Time Requirements for Multiple-Instance Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195 Configuring Multiple Instances in InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196 Adding an Instance to a Product Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197 Naming an Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197 Setting Properties for an Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198 Deleting an Instance from a Product Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 Special Considerations for Multiple-Instance Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200 Configuring and Building a Release that Includes Multiple-Instance Support . . . . . . . . . . . . . . . . . . . . . . . 1200 Creating Patches for Multiple Instances of a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201 Run-Time Behavior for Installing Multiple Instances of a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202

31

Detecting Conditions on the Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207


Building Conditional Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207 Conditional Statement Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209 Detecting Administrator and Elevated Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211 Detecting First-Time Installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 Triggering Behavior Only During a First-Time Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 Detecting If the End User Has Selected a Specific Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213 Detecting If the End User Is Running a Particular Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213 Detecting Whether the Installation Is Being Run on a Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214

32

Searching for Installed Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219


Adding a Predefined System Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219 Adding a System Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 Modifying a System Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 Publishing a System Search to a Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 Removing a System Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221 Searching for XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221

33

Editing Installation and Project Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225


Editing Project Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226

InstallShield 2010 User Guide

ISP-1600-UG00

xxxi

Contents

Adding New Tables Through the Direct Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 Adding Records to a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227 Finding and Replacing in the Direct Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1228 Editing a Table Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 Editing Fields in a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230 Exporting Tables from the Direct Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 Importing Tables with the Direct Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 Deleting Records from a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232 Removing Tables Through the Direct Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232 In-Place Windows Installer Database and Project File Differencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233 Entering Binary Data in a Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 Orphaned Directory Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235

34

Using the InstallShield Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1237


InstallShield MSI Diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238 Determining the Changes that a Transform (.mst File) Makes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238 Determining Whether a Patch Is Valid for an .msi Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239 Determining the Run-Time Effects of a Patch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239 Determining the Differences Between Two .msi Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240 Determining the Differences Between Two InstallShield Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240 InstallShield MSI Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240 Running a SQL Query for a Specific Windows Installer Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241 InstallShield MSI Sleuth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1241 Viewing Details about an .msi Package that Was Run on a Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242 Searching for All Installed Packages that Include a Specific Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1242 InstallShield MSI Grep. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243 Searching .msi Packages for Specific Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1243

35

Working with Windows Installer Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1245


Windows Installer Property Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1247 SETUPEXEDIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1262 Creating Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263 Changing an Existing Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264 Creating a Localizable Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265 Making an Existing Property Localizable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265 Preventing a Property Value from Being Written in Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 Specifying that a Public Property Should Be a Restricted Public Property. . . . . . . . . . . . . . . . . . . . . . . . . 1267 Getting or Setting Windows Installer Properties in InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268 Removing a Value from a Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268 Deleting a Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269

36

Directly Editing .msi and .msm Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271


Opening Windows Installer Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271

xxxii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Editing .msi and .msm Databases in Direct Edit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272 Adding Files in Direct Edit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272 Adding Merge Modules in Direct Edit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273

37

Integrating InstallShield with External Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 1275


Using Source Code Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275 Using Source Code Control Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276 Adding Projects to Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276 Checking Projects out of Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277 Checking Projects into Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277 Unlinking Projects from Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278 Integrating with Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278 Creating InstallShield Projects in Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278 Opening InstallShield Projects in Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280 Adding References to Visual Studio Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1280 Using the Toolbox to Add Dialog Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1281 Adding InstallShield Toolbars or Commands to the Visual Studio Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 Building and Uninstalling Releases in Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1283 Adding .NET Assemblies to Installation Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284 Adding Project Output from a Web Service or Web Application Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285

38

Automating Build Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287


Linking Subfolders to Features Using VBScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1287 Exporting and Importing String Entries Using the Automation Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . 1290 Running Project Reports Using the Automation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292 Source Code Control at the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293 Using the Automation Interface on a 64-Bit System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295

39 40

Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297 Menu, Toolbar, and Window Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299


Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 File Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 Edit Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 View Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301 Go Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302 Project Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303 Build Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305 Tools Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307 Window Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309 Help Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309 Toolbars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1310 Standard Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1310

InstallShield 2010 User Guide

ISP-1600-UG00

xxxiii

Contents

Controls Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1312 Layout Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313 MSI Debugger Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315 Output Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315

41

Dialog Box Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317


.NET Installer Class Arguments Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321 Add an Argument/Value Pair Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321 Add Existing Media Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1322 Add New Method Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1322 Add New Property Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323 Add Predefined Search Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324 Add to Source Control Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324 Application Extension Mapping Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325 Application Mappings Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326 Associate Components Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326 Batch Build Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1326 Browse for Directory Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327 Browse for Directory/Shortcut Target Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1328 Browse for File Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1330 Check In Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331 Check Out Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332 Component Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1333 File Linking Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334 Features Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335 Condition Builder Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335 Content Source Path Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336 Convert InstallScript MSI Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336 Create a New Component Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1338 Create a New Feature Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1339 Custom Error Handling Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340 Custom Errors Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340 Customize Validation Settings Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340 Delete Property Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341 Dependencies Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341 Destination Folder Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 Device Files Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 Processor/Platform Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1344 Dialog Images Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1345 Digitally Sign Setup Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1346 Differences Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347 Dynamic File Link Settings Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347

xxxiv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Edit Binary Value Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349 Edit Data Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349 Edit DWORD Value Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1350 Edit IIS Metabase Value Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1350 Edit Registry Data Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1351 Edit String Value Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1351 Error Mapping Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352 Exclusion Languages Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1353 Export Tables Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1353 Feature Condition Builder Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1353 File Association Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354 File Details Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355 File Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1356 File Properties Dialog Box (InstallScript Installation Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1358 Find and Replace Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359 Find String ID in Project Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359 Folder Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359 Function Signature Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1360 General Options - Advanced Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1363 General Options - Other Disk Files Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364 History Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364 Import Dialog Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365 Import InstallScript Files Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365 Import SQL Script Files Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366 Insert Action Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366 InstallShield Prerequisite Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368 Languages Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1370 Link Type Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1370 Logging Options for Windows Installer 4.0 and Later Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1372 Lowercase Component Directory Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1373 Media File Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1373 Merge Module Configurable Values Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1373 Merge Module Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374 Media Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374 Destination Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375 Method Browser Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375 Method Signature Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375 Modify Dynamic Links Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377 Modify Property Dialog Box/Release WizardPlatforms Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1378 Module Dependencies Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380 Module Exclusions Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1380 MSI Value Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381 MST SIS Settings Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381 Multi-Line String Value Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1382

InstallShield 2010 User Guide

ISP-1600-UG00

xxxv

Contents

New Dependency Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385 New File Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385 New Project Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385 Operating Systems Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387 Options Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388 File Locations Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1389 Path Variables Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1389 User Interface Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1390 Preferences Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1391 Merge Modules Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392 Quality Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1392 Updates Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1393 .NET Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1393 Files View Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1394 File Extensions Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395 DIMs Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1396 Source Control Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1396 Directory Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397 Resource Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398 Validation Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398 Repository Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399 SQL Scripts Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399 Configure Trialware Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1400 Other IIS Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1400 Other Window Styles Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401 Other Window Styles for Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401 Other Window Styles for Bitmap, Icon, Label, and Text Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1403 Other Window Styles for Button Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1404 Other Window Styles for Combo Box and Directory Combo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1406 Other Window Styles for Custom Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408 Other Window Styles for Directory List, List View, and Volume Cost List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408 Other Window Styles for Edit, List Box, Scrollable Text, Path Edit, and Masked Edit Controls . . . . . . . . . . . . . . . . . 1410 Other Window Styles for Line Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1412 Other Window Styles for Progress Bar Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1414 Other Window Styles for Selection Tree Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1414 Outputs Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1416 Overwrite Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417 Patch Sequence Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1418 Path Variable Recommendation Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419 Permissions Dialog Boxes for Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1420 Permissions Dialog Boxes for Registry Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1422 Platform Suites Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1424 Platforms Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1425

xxxvi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Prerequisite Condition Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427 Privileges Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1431 Product Condition Builder Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432 Project Settings Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1433 Project Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434 Application Tab (in Windows InstallerBased Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434 Application Tab (in InstallScript Projects). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435 Platforms Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437 Languages Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1438 Maintenance Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1439 Language-Independent Object Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1439 Language-Specific Object Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1440 Rename Key Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1441 Required Features Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1441 Resolve Conflict Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1442 Save As Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1444 Script Conversion Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1444 SCM Pre-shutdown Delay Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1445 Select File Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1445 Select Icon Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1446 Select Media Location Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1446 Select SQL Server Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1446 Select String Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447 Serial Number Violation Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1448 Server Locations Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1448 Service Options Dialog Box for a Time Delay of an Auto-Start Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 1449 Service Options Dialog Box for Running Recovery Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450 Service SID Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1450 Set File(s) URL Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1451 Settings Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1451 Compile/Link Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1452 Run/Debug Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1456 MSI Log File Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457 Setup DLL Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457 Setup Languages Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1458 Shortcut Properties Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1459 SQL Server Requirement Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461 Update Merge Module Search Path Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461 Window Properties Dialog Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1461 Color/Font Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1462 Language/Tabs Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1463 Keyboard Tab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464 Misc Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464

InstallShield 2010 User Guide

ISP-1600-UG00

xxxvii

Contents

42

Wizard Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467


Access 2000/2002/2003 Object Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469 Redistributable Path Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1469 Build Location Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1470 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1470 Access 97 Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1470 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1471 Access 97 Database File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1471 Additional Information Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1472 Workgroup File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 Acquire New License Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1473 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1474 Configure Trialware Credentials Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1474 Communicating with the License Server Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1474 BDE Designer Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475 INI File Location Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1476 Configure INI File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1476 BDE Merge Module Configuration Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1476 Add Alias Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477 ClickOnce Converter Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1477 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478 Specify File and Location Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478 Conversion in Process Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1479 Conversion Complete Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1479 Component Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1479 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1480 Setup Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1481 Destination Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482 Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1482 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1483 Component Type Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1484 COM Server Component Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485 Control Service Component Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1492 Install Service Component Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1496 Font Component Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1502 Component Wizard General Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1505 Convert Source Paths Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1505 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1505 Search Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506 Search Results and Recommendations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506

xxxviii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Updating Your Project Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506 Update Completed Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506 Create New QuickPatch Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507 QuickPatch Project Base Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508 Original Setup Package Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508 Location of Existing QuickPatch Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1509 Create Table Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510 Column Properties Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1511 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512 Crystal Reports 8, 8.5, and 8.5 SP Objects Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512 Crystal Reports 8 Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513 Engine Access Methods Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513 Export Formats Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1514 Export Destinations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1514 Database Connections Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515 Additional Components Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515 Crystal Reports 8.5 Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516 Engine Access Methods Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1516 Export Formats Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517 Export Destinations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517 Database Connections Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517 Additional Components Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518 Crystal Reports 8.5 SP Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1519 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1519 Specify Engine Access Methods Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1519 Export Formats Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1520 Export Destinations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1520 Database Connections Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1520 Additional Components Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1521 Other Requirements Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1521 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1522 Custom Action Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1522 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1523 Basic Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1523 Action Type Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1524 Function Definition Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528 Action Parameters Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1531 Managed Method Definition Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1534

InstallShield 2010 User Guide

ISP-1600-UG00

xxxix

Contents

In-Sequence Scripts Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536 Additional Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536 Respond Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1538 Insert into Sequence Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1539 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1540 Database Import Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1540 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1541 SQL Server Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1541 SQL Database Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1541 Database Tables Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1542 Objects to Script Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1542 Scripting Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1542 Advanced Scripting Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1545 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1546 Device Driver Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548 Device Driver Package Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548 Device Driver Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548 Device Driver Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548 Device Driver Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1549 Project-Wide Device Driver Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1550 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551 Dialog Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551 Dialog Template Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1552 User Interface Sequence Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1553 Dialog Position and Condition Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1553 DirectX Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1554 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1554 Object Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1555 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1555 Dynamic Scanning Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556 Filter Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556 Specify the Executable Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556 Specify Application File Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557 Launch the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557 Your Application is Running Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557 File Selection Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557 Scan Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558 Completing the Dynamic Scanning Wizard Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558 Export Components Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1559 Select Components Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1559

xl

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Select Target File Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1560 Target File Info Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1560 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561 Function Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561 Function Name Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561 Function Parameters Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1562 Import REG File Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1562 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563 Import Registry File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563 Import Conflict Options Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563 Import Progress Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1564 Import XML Settings Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1564 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1565 XML File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1565 XML Element Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1565 XML Progress Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566 XML Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566 InstallShield Merge Module for MSDE 1.0 Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567 SQL Data Paths Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567 Launcher Options Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569 Microsoft .NET Framework Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569 Step 1 Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1569 Step 2 Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1570 MSDE 2000 Object Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1571 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572 Functionality Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572 Directories Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572 Instance and Collation Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573 Upgrade and Security Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573 Service Pack 3 Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1574 Installing MSDE 2000 Merge Modules for Another Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575 New Language Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1577 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1578 Project Language Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1578 Project Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1578 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1579 Open MSI/MSM Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1580 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1580 File Locations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1581 Open MSP Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1581 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1581

InstallShield 2010 User Guide

ISP-1600-UG00

xli

Contents

Base MSI Package Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582 Open Transform Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1583 Transform Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1583 Additional Transforms Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1583 Create a Response Transform Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1584 Palm OS Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1585 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1586 Palm Application Files Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1586 Features Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1587 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588 Publish Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588 Repository Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588 Publishing Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1588 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1589 Redistributable Downloader Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1589 Reg-Free COM Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1590 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1590 Select an EXE File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1590 Select the Manifest File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591 Select Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591 Release Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592 Product Configuration Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592 Specify a Release Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593 Filtering Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1593 Merge Module Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1594 Setup Languages Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1594 Media Type Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1596 Disk Spanning Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597 Disk Spanning Advanced Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597 Web Type Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1599 Downloader Options Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1600 Install From The Web Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1601 One-Click Install Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1601 Local Machine Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1603 Release Configuration Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1603 Custom Compression Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604 Setup Launcher Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1605 Windows Installer Location Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1606 InstallShield Prerequisite Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1607 Digital Signature Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1608

xlii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Digital Signature Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1609 Netscape Digital Signature Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612 Password & Copyright Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1613 .NET Framework Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1613 .NET Run-Time Options Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1615 .NET Language Pack Run-Time Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1615 Visual J# Run-Time Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1616 Advanced Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1616 Release Settings Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1619 General Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1620 Features Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1621 Media Layout Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1622 Custom Media Layout Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623 User Interface Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623 Internet Options Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1624 Update Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1625 Object Difference Dialog Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1627 Postbuild Options Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1628 Setup Best Practices Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1629 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1629 Compliance Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1629 Static Scanning Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1630 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1631 Filter Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1631 Scanning Progress Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1631 File Selection Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1631 Scan Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1632 Completing the Static Scanning Wizard Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1632 System Search Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633 What do you want to find? Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633 How Do You Want to Look for It? (Defining Your System Search Method) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1635 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1635 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1636 Specify the Data That You wish to Find in the XML File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637 How do you want to look for it? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637 What do you want to do with the value?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637 What do you want to do with the value?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637 Transform Wizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1638 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1639

InstallShield 2010 User Guide

ISP-1600-UG00

xliii

Contents

Specify Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1639 Validation Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1639 Suppress Error Conditions Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1641 Specify Output File Name Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1641 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1642 Completing the Transform Wizard Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1642 Upgrade Validation Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1642 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1642 Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1643 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1643 Visual Basic Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1644 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1644 Specify Setup Project File Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1644 Specify Visual Basic Project File Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1645 Location of Visual Basic Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646 Scanning Progress Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646 Scanned Dependencies Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646 Scan Results Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 Completing the Visual Basic Wizard Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET . . . . . . . . . . . . . . . . . . . . 1647 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648 Solution Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648 Windows Mobile Wizard/Smart Device Setup Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648 Welcome Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1650 Application Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1650 Desktop Settings Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651 Add CABs Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651 Destination Folder Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652 Project Outputs Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653 Device Files Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1654 Shortcuts Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1656 Setup DLLs Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1657 File Associations Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1658 Registry Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1659 Desktop Icon Information Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1661 XML Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1662 Sign the .cab Files Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1663 .NET Compact Framework Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1664 Features Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 Summary Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665

43

View Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1667


Installation Information View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1667 General Information View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668

xliv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

General Information View Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 Update Notifications View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1694 Trialware View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1695 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1695 Advanced Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1696 Organization View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1700 Setup Design View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1701 Features View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702 Features Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 Components View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1711 Component Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712 Advanced Settings for a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728 Setup Types View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1752 DIM References View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1754 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1755 Variables Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1756 Meta Info Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1756 Data Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1757 Dependencies Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1757 Application Data View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1757 Files and Folders View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1759 Redistributables View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1761 Prerequisites View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1764 Objects View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1766 Mobile Devices View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1767 System Configuration View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1768 Shortcuts View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1771 Shortcut Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1773 Folder Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1782 Registry View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783 ODBC Resources View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 INI File Changes View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785 .ini File Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1786 Section Settings for an .ini File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1787 Keyword Settings for an .ini File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1787 Environment Variables View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1788 Environment Variable Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1788 XML File Changes View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1790 General Tab for an XML File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1792 Advanced Tab for an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1792 Namespace Tab for an XML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793 General Tab for an XML Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1794 Advanced Tab for an XML Element. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1795 Text File Changes View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1796

InstallShield 2010 User Guide

ISP-1600-UG00

xlv

Contents

Replacement Set Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1797 Replacement Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1799 Server Configuration View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 Internet Information Services View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1801 Web Site Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1801 Application and Virtual Directory Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 Application Pool Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1814 Web Service Extension Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 Component Services View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1818 Installation Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1820 SQL Scripts View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1821 General Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1822 Requirements Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1824 Advanced Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 SQL Script Level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1827 Behavior and Logic View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1830 InstallScript View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1832 Script Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1833 Custom Actions and Sequences View (or Custom Actions View) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1838 Custom Action Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1840 Custom Action Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1843 Action Text Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1847 Support Files View (Basic MSI and InstallScript Object Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 Support Files/Billboards View (InstallScript and InstallScript MSI Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1850 System Search View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1852 Property Manager View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853 User Interface View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1855 Dialogs View (InstallScript and InstallScript MSI Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 Dialogs View (Basic MSI Projects). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857 Billboards View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1858 Billboard Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1858 Settings for Adobe Flash Application File Billboards and Image Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1859 String Editor View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1862 Media View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865 Path Variables View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866 Upgrades View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 Common Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1872 Advanced Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1874 Automatic Upgrade Item Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1875 Minor/Small Upgrade Item Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1876 Common Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877 Advanced Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1878 Releases View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1880 Product Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1880

xlvi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Release Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887 Chained .msi Package Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1918 Patch Design View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1922 Patch Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1922 Latest Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1932 Previous Setups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933 Additional External Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935 Additional Tools View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1936 Dependency Scanners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1937 MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1938 Direct Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1939 InstallShield Table Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1942 InstallShield Columns in Standard Windows Installer Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1951 QuickPatch Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1953 Patch Settings View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1953 General Information View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1954 Files View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1961 Registry View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1962

44

InstallShield Prerequisite Editor Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1965


Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1966 Conditions Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1966 Files to Include Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1967 Application to Run Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1967 Behavior Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1969 Dependencies Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1972

45

Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973


Build Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1974 Media Build Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2033 Error 118. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2034 Error 129. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2035 Warning -5000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2036 Warning -5006 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2036 Warning -5020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2036 Warning -5021 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2036 Warning -5032 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2037 Warning -5050 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2037 Warning -5051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2037 Error -7040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2037 Error -7041 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 Error -7043 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 Error -7044 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 Error -7045 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038

InstallShield 2010 User Guide

ISP-1600-UG00

xlvii

Contents

Error -7126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2039 Error -7127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2039 Error -7273 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2039 Error -7274 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 Error -7275 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 Error -7276 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 Error -7380 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 Error -9008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2041 MSI/MSM Conversion Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2041 Run-time Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2044 Setup.exe Return Values and Run-Time Errors (InstallScript Projects). . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects) . . . . . . . . . . . . . 2047 Visual Studio Project Conversion Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2050 Upgrade Errors (Upgrading from InstallShield Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2056 Upgrade Warnings (Upgrading from InstallShield Professional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2062 Upgrade Warning 289: File Link Does Not Exist for Dynamically Linked File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2063 Upgrade Warning -305: Include In Build Property for the InstallShield Professional Component Could Not Be Directly Migrated 2063 Upgrade Warning -480: Incrementing the Shared .dll Reference Count for Files in a File Group . . . . . . . . . . . . . . . . 2064 Upgrade Warning -481: Incrementing the Shared DLL Reference Count for Dynamically Linked Files in a File Group . 2064 Upgrade Warning -486: Specifying Shortcut Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2065 Upgrade Warning -487: Overwriting Files Upon Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2065 Upgrade Warning -488: Obsolete Event Encountered in Script File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2066 Upgrade Warning 495: ODBC Core Not Installed by Default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2067 Upgrade Errors and Warnings (Upgrading from InstallShieldWindows Installer Edition) . . . . . . . . . . . . . . 2068 HRESULT Values for Windows Installer Run-time Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2069 DIFxAPI Errors (InstallScript Projects) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2070 "String PRODUCT_NAME was not found in string table" Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2072 InstallScript Error Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2072 InstallScript Syntax or Compiler Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 Error C8001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2076 Error C8002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2077 Error C8003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2077 Error C8004 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2077 Error C8005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2078 Error C8006 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2078 Error C8007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2078 Error C8008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2079 Error C8009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2079 Error C8010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2079 Error C8011 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2080 Error C8012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2080 Error C8013 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2080 Error C8014 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2080

xlviii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Error C8015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2081 Error C8016 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2081 Error C8017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2081 Error C8018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2082 Error C8019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2082 Error C8020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2082 Error C8021 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2083 Error C8022 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2083 Error C8023 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2083 Error C8024 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 Error C8025 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 Error C8026 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085 Error C8027 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085 Error C8028 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085 Error C8031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2085 Error C8032 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2086 Error C8033 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2086 Error C8034 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2086 Error C8035 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 Error C8036 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 Error C8037 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 Error C8038 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 Error C8039 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2088 Error C8040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2088 Error C8042 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2088 Error C8043 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2089 Error C8044 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2089 Error C8045 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2089 Error C8046 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2089 Error C8047 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2090 Error C8048 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2090 Error C8049 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2090 Error C8050 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2090 Error C8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2091 Error C8052 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2091 Error C8053 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2091 Error C8054 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2091 Error C8055 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092 Error C8057 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092 Error C8058 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092 Error C8059 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2092 Error C8062 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 Error C8063 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 Error C8064 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093

InstallShield 2010 User Guide

ISP-1600-UG00

xlix

Contents

Error C8065 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 Error C8066 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2094 Error C8067 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2094 Error C8068 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2094 Error C8069 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2094 Error C8070 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2095 Error C8071 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2095 Error C8072 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2095 Error C8073 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2095 Error C8074 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096 Error C8075 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096 Error C8076 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096 Error C8077 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 Error C8079 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 Error C8080 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 Error C8081 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 Error C8082 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2098 Error C8083 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2098 Error C8084 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2098 Error C8085 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 Error C8086 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 Error C8087 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 Error C8088 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 Error C8089 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2100 Error C8090 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2100 Error C8091 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2100 Error C8092 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2100 Error C8093 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2101 Error C8097 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2101 Error C8098 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2101 Error C8099 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2101 Error C8100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102 Error C8101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102 Error C8112 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2102 Error C8113 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103 Error C8114 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103 Error C8115 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103 Error C8126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2103 Error C8522 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2104 InstallScript Fatal Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2104 Error F8501. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2105 Error F8502. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2105 Error F8503. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2106 Error F8504. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2106

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Error F8505. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2107 Error F8506. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2107 Error F8508. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2107 Error F8509. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2108 Error F8510. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2108 Error F8511. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2108 Error F8512. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2109 Error F8513. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2109 Error F8514. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2109 Error F8515. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2109 Error F8516. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2110 Error F8517. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2110 Error F8518. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2110 Error F8519. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2110 InstallScript Internal Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 Error C9001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 InstallScript Warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 Warning C7501 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 Warning C7502 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112 Warning C7503 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112 Warning C7505 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112 Virtualization Conversion Errors and Warnings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2113 Error -9000: Unknown Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2113 Error -9001: Unknown COM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2113 Error -9002: Error Opening Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2113 Error -9003: Error Saving Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2114 Error -9004: Process Cancelled By User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2114 Error -9005: Error Creating Temporary Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2115 Error -9006: Error Decompressing Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2115 Error -9007: File With Extension Not Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2115 Error -9008: Error Extracting Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2116 Error -9009: Unknown Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2116 Error -9010: Invalid Target File Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2117 Error -9011: Error Reading MSI Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2117 Error -9012: Unexpected Error in Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2117 Error -9013: Type Library Not Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2118 Error -9014: ShellExecute Failed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2118 Error -9015: Unable to Determine Full Path for Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2118 Warning -9016: Contents of Table Ignored . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2119 Warning -9017: .NET 1.x Assembly Not Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2120 Warning -9018: Custom Actions Ignored. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2120 Warning -9019: Conditionalized Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 Error -9020: Directory With Null Parent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2122 Error -9021: Unable to Extract COM Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2122

InstallShield 2010 User Guide

ISP-1600-UG00

li

Contents

Error -9022: Complus Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2122 Error -9024: FileSFPCatalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123 Warning -9025: Font Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2123 Warning -9026: LaunchCondition Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2124 Warning -9027: LockPermissions Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2125 Error -9028: MoveFile Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2125 Error -9029: MsiDriverPackages Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 Warning -9030: ODBCTranslator Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 Warning -9031: RemoveFile Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2127 Warning -9032: RemoveIniFile Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2127 Warning -9033: RemoveRegistry Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2128 Error -9036: ISCEInstall Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2128 Error -9037: ISComPlusApplication Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2128 Error -9038: ISPalmApp Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 Error -9039: ISSQLScriptFile Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 Error -9040: ISVRoot Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2130 Error -9041: ISXmlFile Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2130 Error -9051: Package Decompression Canceled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2131 Error -9100: CreateInstance of Package Object Failed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2131 Error -9101: Create Operation of Package Object Failed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2131 Error -9102: Failed to Write Header Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132 Error -9103: Citrix Finalization Failed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132 Error -9104: Citrix Save Failed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2132 Error -9105: Error Initializing Citrix Writer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2133 Error -9106: Error Initializing Citrix Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2133 Error -9107: Error Writing Citrix File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2133 Error -9108: Error Determining Source File Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2134 Error -9109: Error Writing Citrix Folder Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2134 Error -9110: Error Writing Citrix Registry Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2134 Error -9113: Error Writing Citrix INI File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2135 Error -9114: Error Writing Citrix Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2135 Error -9115: Error Saving Citrix Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2135 Error -9116: Error Creating Empty Citrix Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136 Error -9117: Error Creating Intermediate Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136 Error -9118: Error Initializing Citrix Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136 Error -9119: Error Creating Default Target in Citrix Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2137 Error -9120: Error Deleting File From Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2137 Error -9121: Failed to Copy File into Citrix Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2137 Error -9122: Target Does Not Exist in Citrix Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2138 Error -9124: No Shortcuts Created for this Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2138 Error -9125: Error Writing Citrix File Type Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2139 Error -9126: Failed to Sign Profile Using Certificate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2139 Error -9127: Could Not Create Script Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2139 Warning -9128: Duplicate Shortcut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2140

lii

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

Warning -9129: Duplicate Shortcut Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2140 Warning -9130: Duplicate Shortcut Targets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2140 Warning -9131: Unable to Resolve Installer Variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2141 Warning -9132: 16 Color Shortcut Icon Not Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2141 Warning -9133: Shortcut Icon Not Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2142 Warning -9134: Failure to Extract Icon from Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2142 Error -9135: Shortcut Target is 16-Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2142 Warning -9136: Some Files May Not Be Decompressed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2143 Warning -9137: Destination Directory Cannot Be Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2143 Warning -9138: Ignoring a DuplicateFile Table Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2144 Warning -9150: Warning Building Windows Installer Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2144 Error -9151: Error Building Windows Installer Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2145 Error -9200: ThinApp Must Be Installed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2145 Warning -9201: Extension for Shortcut Files Must Be .exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2145 Error -9202: No Applications Were Created . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146 Error -9203: ThinApp Tool is Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146 Error -9204: Duplicate Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146 Error -9205: Identically Named Shortcut Already Exists, But With Different Parameters . . . . . . . . . . . . . . . . . . . . . 2147 Error -9206: Identically Named Shortcut Already Exists, But With a Different Target. . . . . . . . . . . . . . . . . . . . . . . . 2147 Error -9207: Error During Build Process (vregtool.exe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2147 Error -9208: Error Occurred During Build Process (vftool.exe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2148 Error -9209: Error Occurred During Build Process (tlink.exe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2148 Error -9300: Unhandled Exception During AdviseFile Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2149 Error -9301: Unhandled Exception During AdviseRegistry Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2149 Error -9302: Unhandled Exception During Command Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2149 Error -9303: Unhandled Exception During Alter File Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2150 Error -9304: Unhandled Exception During Alter Registry Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2150 Error -9305: Unhandled Exception During Create Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2150 Error -9306: Unhandled Exception During Execution of Rules Engine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2151 Error -9401: Error Initializing App-V Writer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2151 Error -9402: Error Initializing App-V Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2151 Error -9403: Error Writing App-V File Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152 Error -9404: Error Writing App-V Folder Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152 Error -9405: Error Writing App-V Registry Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152 Error -9406: Error Writing App-V INI File Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153 Error -9407: Error Writing App-V Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153 Error -9408: Error Writing App-V File Type Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153 Error -9409: Error Saving App-V Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2154 Error -9410: Error Determining Source File Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2154 Error -9411: OSD File Template Could Not Be Extracted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2154 Error -9412: OSD File Could Not Be Saved . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2155 Error -9413: App-V OSD Save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2155 Warning -9414: Local App-V Application Specified as a Dependency of the Primary Application . . . . . . . . . . . . . . . . 2155 Error -9415: Dependency Application Was Not Found . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2156

InstallShield 2010 User Guide

ISP-1600-UG00

liii

Contents

Warning -9416: Invalid Primary Application Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2156 Error -9417: Dependency Applications OSD File Contains an Invalid HREF Value . . . . . . . . . . . . . . . . . . . . . . . . . . 2156 Error -9418: Error While Privatizing Side-By-Side Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2157 Error -9419: Error Inserting Watermark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2157 Warning -9500: Shortcut Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2158 Error -10000: Process Cancelled By User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2158 Warning -10001: Suite File Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2158 Warning -10002: Suite File is Duplicate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2159 Warning -10003: Application File Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2159 Warning -10004: INI File Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2159 Fix 11000: Excluding TCPIP Registry Entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2160 Fatal Error 11001: Fail on VMware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2160 Warning 11003: Control Panel Applet - Citrix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2160 Fix 11004: Control Panel Applet - ThinApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161 Fatal Error 11005: QuickTime 7.4.1 Causes Fatal Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161 Fix 11006: Adobe Distiller Exclude AdobePDFSettings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161 Fix 11007: Exclude URL Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162 Steps to Take Before Calling Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162 Application Features Requiring Pre- or Post-Conversion Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2162

47

Automation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165


Automation Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165 ISWiProject Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2165 AddAdvancedFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2174 AddAutomaticUpgradeEntry Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2175 AddComponent Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2176 AddCustomAction Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2177 AddDimReference Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2178 AddFeature Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2178 AddLanguage Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2179 AddPathVariable Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2180 AddProductConfig Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2180 AddProperty Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181 AddSetupFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181 AddSetupType Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182 AddSQLServerConnection Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183 AddUpgradeTableEntry Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183 BuildPatchConfiguration Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184 BuildPCPFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186 CloseProject Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186 CreatePatch Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2187 CreateProject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2187 DeleteAdvancedFile Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2188 DeleteComponent Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2189

liv

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

DeleteCustomAction Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2190 DeleteDimReference Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2190 DeleteMergeModule Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191 DeletePathVariable Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191 DeleteProductConfig Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2192 DeleteProperty Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193 DeleteSetupFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193 DeleteSetupType Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2194 DeleteSQLConnection Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2195 DeselectLanguage Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2195 ExportProject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2196 ExportStrings Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2197 GenerateGUID Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2197 ImportProject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2197 ImportStrings Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2198 OpenProject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2199 RemoveFeature Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2201 SaveProject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2201 ISWiAdvancedFile Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2202 ISWiAutomaticUpgradeEntry Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2203 ISWiCustomAction Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2204 ISWiComponent Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2205 AddComponentSubFolder Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216 AddDynamicFileLinking Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217 AddEnvironmentVar Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2218 AddFile Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2218 DeviceDriverFlagsEx Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2219 DeviceDriverSetRedist Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2220 ImportINIFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2222 ImportRegFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2222 RemoveComponentSubFolder Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2223 RemoveDynamicFileLinking Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224 RemoveEnvironmentVar Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224 RemoveFile Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2225 ISWiComponentSubFolder Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2225 DeleteFile Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2227 ISWiCondition Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2227 ISWiDimDependency Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2228 ISWiDimReference Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2229 AddDimDependency Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2230 DeleteDimDependency Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231 ISWiDynamicFileLinking Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231 ISWiEnvironmentVar Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2232 ISWiFeature Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2234

InstallShield 2010 User Guide

ISP-1600-UG00

lv

Contents

AddCondition Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2239 AddMergeModule Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240 AddObject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240 AttachComponent Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2241 AttachDimReference Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2242 DeleteCondition Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2242 RemoveComponent Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243 RemoveDimReference Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243 RemoveMergeModule Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2244 RemoveObject Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2244 ISWiFile Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2245 ISWiFolder Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2249 AddShortcut Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2251 AddSubFolder Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2251 DeleteShortcut Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2251 DeleteSubFolder Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252 ISWiLanguage Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2252 AddStringEntry Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2253 DeleteStringEntry Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2253 ISWiObject Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2254 ISWiPathVariable Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2255 ISWiProductConfig Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2257 AddRelease Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2259 DeleteRelease Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2259 MSIPackageFileName Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2260 SetupFileName Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2260 ISWiProperty Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2260 ISWiRelease Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2261 Build Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283 BuildTablesOnly Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283 BuildTablesRefreshFiles Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283 CubFile Property. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2283 SignMedia Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284 ISWiSequenceRecord Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284 ISWiSetupFile Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285 ISWiSetupType Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286 ISWiShortcut Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287 ISWiSISProperty Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2292 ISWiSQLConnection Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 AddSQLRequirement Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 AddSQLScript Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 AddSQLScriptEx Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296 DeleteSQLScript Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296 GetDatabaseServer Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2297

lvi

ISP-1600-UG00

InstallShield 2010 User Guide

Contents

InsertSQLScript Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2297 RemoveSQLRequirement Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2298 ISWiSQLDatabaseServer Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2298 ISWiSQLReplace Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 ISWiSQLRequirement Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 SetPredefinedRequirement Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 ISWiSQLScript Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2302 AddSQLScriptReplacement Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304 DeleteSQLReplace Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304 ISWiStringEntry Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304 ISWiUpgradeTableEntry Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 Delete Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 Automation Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 ISWiAdvancedFiles Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 ISWiAutomaticUpgradeEntries Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 Delete Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2309 ISWiComponents Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2310 ISWiComponentSubFolders Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2311 ISWiConditions Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 ISWiCustomActions Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 ISWiDimDependencies Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2314 ISWiDimReferences Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 ISWiDynamicFileLinkings Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 ISWiEnvironmentVars Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 ISWiFeatures Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 ISWiFiles Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 ISWiFolders Collection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2320 ISWiLanguages Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2321 ISWiObjects Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 ISWiPathVariables Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 ISWiProductConfigs Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 ISWiProperties Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 ISWiReleases Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 ISWiSequence Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 InsertCustomAction Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 RemoveSequenceRecord Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 ISWiSetupFiles Collection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2330 ISWiSetupTypes Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2331 ISWiShortcuts Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2332 ISWiSISProperties Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2333 ISWiSQLConnections Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 ISWiSQLDatabaseServers Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2335 ISWiSQLReplaces Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2336 ISWiSQLRequirements Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2337

InstallShield 2010 User Guide

ISP-1600-UG00

lvii

Contents

ISWiSQLScripts Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338 ISWiStringEntries Collection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 ISWiUpgradeTableEntries Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2340

48 49

InstallShield Custom Action Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2343 Command-Line Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2357


Compile.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 ISCmdBld.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2364 ISBuild.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 IISscan.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2372 ReleasePackager.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 MsiExec.exe Command-Line Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 Setup.exe and Update.exe Command-Line Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 Setup.exe (InstallScript Projects). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 ClickOnce2Dim.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2392

50

Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2393 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2397 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2423

lviii

ISP-1600-UG00

InstallShield 2010 User Guide

1
InstallShield 2010
InstallShield lets you easily create Windows Installer and InstallScript installations and extend them to database servers, Web services, and mobile devices. The InstallShield Help Library contains information about the functionality and features of InstallShield. The Help Library contains the following sections:
Table 1-1: Help Library Sections Section Whats New in InstallShield 2010 SP1 Whats New in InstallShield 2010 What Was New in Earlier Versions of InstallShield Target System Requirements Using Help Getting Started Description Informs you about the changes in InstallShield 2010 SP1.

Informs you about the changes in InstallShield 2010. Informs you about changes that were made in earlier versions of InstallShield.

Lists the requirements for target systems. Provides information about the InstallShield documentation. Contains information to help you become familiar with InstallShield, begin creating an installation project, and customize the InstallShield user interface. Leads you step-by-step through the process of creating InstallScript and Basic MSI installation projects, creating global installations, and adding DIM references to a project. Explains how to create user-friendly, reliable installations and guides you through every step of the processfrom specifying information for Add or Remove Programs to building, testing, and deploying an installation. Introduces some basic concepts to help you get started designing your own InstallShield prerequisites, merge modules, and InstallScript objects that can be used in any of your installation projects or distributed for use by other installation developers.
1

Tutorials

Creating Installations

Designing InstallShield Prerequisites and Other Redistributables

InstallShield 2010 User Guide

ISP-1600-UG00

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010 SP1

Table 1-1: Help Library Sections (cont.) Section Updating Applications Description Leads you through steps for planning and implementing the various types of upgrades and patches for updating a product. Also explains how you can use FLEXnet Connect to notify end users about upgrades and patches that are available. Explains how to use InstallShield to create customized virtual applications.

Creating Customized Virtual Applications Additional Installation Options

Discusses a broad range of options available in InstallShield: creating multilingual installations, installing multiple instances of a product, building conditional statements, searching for installed data, editing installation tables, and more. Contains details about integrating InstallShield with third-party tools such as source code control software and Microsoft Visual Studio. Provides information about the InstallShield automation interface, which enables you to automate processes for creating installation projects without having to directly open the InstallShield user interface. Contains comprehensive reference information for the InstallShield user interface; the InstallScript language; errors and warnings that might occur when you create, compile, build, or run your installation; tools that you can use from the command line to perform tasks such as building a release and running an installation; the InstallShield custom actions that are added to projects; and objects, methods, properties, and collections used to modify an installation project through the automation interface. Directs you to help topics that answer many commonly asked questions about InstallShield and project creation. Contains a collection of terms and their meanings.

Integrating InstallShield with External Applications Automating Build Processes

Reference

Frequently Asked Questions

Glossary

Note: Because the InstallShield Help Library is designed to interact with InstallShield, it is recommended that you open the help from within InstallShield. Copying the help files to another folder or system causes many of its features to work incorrectly.

For answers to many commonly asked questions and new information about InstallShield that do not appear in the documentation, visit the Knowledge Base.

Whats New in InstallShield 2010 SP1


InstallShield 2010 Service Pack 1 (SP1) includes changes that offer support for the final released versions of Windows 7, Windows Server 2008 R2, and Windows Installer 4.5. It also includes additional changes.

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010 SP1

Setup.exe Manifests Now Have Compatibility Section to Avoid Triggering Program Compatibility Assistant on Windows 7 and Windows Server 2008 R2 Systems
If you configure your InstallShield project to create a setup launcher for your installation, the manifest that InstallShield creates for the setup launcher now includes a compatibility section. Previously, without this compatibility section, a Program Compatibility Assistant (PCA) dialog box may have appeared at the end of an installation on Windows 7 and Windows Server 2008 R2 systems. The PCA dialog box indicated that the program might not have installed correctly. This dialog box was displayed if the installation did not create the application uninstallation key. This may happen if the end user cancels the installation or the installation fails to complete successfully.

Support for Creating App-V Package Upgrades and for Compressing App-V Packages
InstallShield now has support for creating App-V package upgrades. The Package Information page in the Microsoft App-V Assistant has a new Upgrade Settings link. Click this link to specify whether you want to create an upgrade. If you specify that you do want to create an upgrade, you can specify additional information about the upgrade, such as whether to append the version number to the App-V package file name. By default, App-V package upgrades are not created. The Build Options page in the Microsoft App-V Assistant has a new setting that lets you specify whether you want to use compression for the data files in the App-V package. If you select Yes for this setting, InstallShield uses zlib compression for your App-V package. The App-V upgrade and compression functionality is available in the following project types: Basic MSI and MSI Database. The Microsoft App-V Assistant is available if you purchase InstallShield with the Virtualization Pack. For more information, see:

Specifying Upgrade Package Information Specifying Whether to Compress the Data Files in an App-V Package

Windows Installer 5 Support for Configuring New Customization Options for Windows Services, Plus Other Service-Related Improvements
InstallShield now includes support for configuring extended customization options for Windows services. The customization options include a new delayed auto-start capability to help system startup performance, improved failure detection and recovery options to improve system reliability, and more. Windows Installer 5 supports these new options; earlier versions of Windows Installer ignore them. To configure the new service-related settings, use the new Services node in the Advanced Settings area for a component in the Setup Design view (in installation projects) or the Components view. All of the services for a component are now grouped and listed by service name under the Services node. In addition, the previously available service-related settings are now consolidated in the same grid with the new settings. In earlier versions of InstallShield, these previously available service-related settings were split among separate subviews for the Install NT Services and Control NT Services nodes. The consolidated grid of settings makes it easier to create a component that installs, configures, starts, stops, or deletes a new or existing service during installation or uninstallation. This functionality is available in the following project types: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform. For more information, see:
InstallShield 2010 User Guide ISP-1600-UG00 3

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010 SP1

Installing, Controlling, and Configuring Windows Services Services Settings

Validation for the Windows 7 Logo Program


InstallShield includes two new validation suites: InstallShield Validation Suite for Windows 7 and InstallShield Merge Module Validation Suite for Windows 7. These validation suites can help you verify that your Windows Installerbased installation or merge module meets the installation requirements of the Compatible with Windows 7 logo program. If you want to be able to use the Windows 7 logo artwork, your products installation must meet the programs requirements. If you want to configure InstallShield to perform validation with these validation suites each time that a release is successfully built: On the Tools menu, click Options. On the Validation tab, select the appropriate check boxes. If you want to perform validation separately from the build process: On the Build menu, point to Validation, and then click the appropriate new suite.

Windows Installer 5 Support for Setting Windows Shell Properties for a Shortcut
The Shortcuts view in InstallShield now lets you specify one or more shortcut properties that need to be set by the Windows Shell at run time. For example, if you do not want the Start menu entry for one of your shortcuts to be highlighted as newly installed after end users install your product, you can set a property for that shortcut. You might want to use this property with shortcuts that are for tools and secondary products that are part of your installation. Windows Installer 5 includes support for setting Shell shortcut properties. Earlier versions of Windows Installer ignore those properties. For more information, see Setting Shell Properties for a Shortcut.

Ability to Specify a Custom .png Shortcut Icon for the Start Screen on Windows Mobile 6.5 ProfessionalPowered Devices
If you are creating a mobile device installation for Windows Mobilepowered devices and you plan to distribute your product through Windows Marketplace for Mobile, you need to use a 9090 pixel Start screen icon (.png file) for your product. Both the Windows Mobile Wizard and the Smart Device Setup Wizard in InstallShield enable you to select the .png file that you want to use. When the shortcut is installed and displayed on Windows Mobile 6.5 Professionalpowered devices, the Windows Mobile Shell scales down the shortcuts icon as necessary, depending on the DPI of the device. The Shortcut Properties dialog box has a new Use a Start screen icon (.png) check box. If you want to use a .png file, select this check box, and then click the browse button to specify the file. The Shortcut Properties dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you and you add a new shortcut or change the properties of an existing shortcut on the Shortcuts panel. This functionality is available in the following project types: Basic MSI, InstallScript MSI, and Smart Device. For more information, see Shortcut Properties Dialog Box.

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Windows Installer 5 Support for the MsiPrint and MsiLaunchApp Control Events
When you are adding a control to a dialog in your project, you can select one of the new events that is now available for Windows Installer 5:

MsiPrintYou can add this event to a push button control that is on a dialog that has a scrollable text

control. When an end user clicks the push button control, the contents of the scrollable text control are printed.

MsiLaunchAppYou can add this event to a check box control on a dialog, and select the file that you want to be launched in the events Argument setting. The check box enables end users to choose whether to run the file at the end of the installation. This event is typically used with a check box control that is on the SetupCompleteSuccess dialog. The check box control should include a condition that prevents the control from being displayed during uninstallation.

Windows Installer 5 includes support for these control events. Earlier versions of Windows Installer ignore these events. Therefore, if your installation is run on a system that has Windows Installer 4.5 or earlier and you want to use one or both of these new events, add a condition to the dialog controls so that they are not displayed on systems that have Windows Installer 4.5 or earlier. This functionality is available in Basic MSI projects. Note that if you want to add the print or launch support to your project but your installation targets systems that have Windows Installer 4.5 or earlier, consider using the support that InstallShield provides. For information on adding the print support, see Specifying Dialogs for Your Installation in the Project Assistant. For information on adding the print support, see Adding a Print Button to a Dialog. The support that is available with InstallShield does not require Windows Installer 5.

Additional Changes
For a list of issues that are resolved in InstallShield 2010 SP1, see the release notes. The release notes are available from the Help menu in InstallShield.

Whats New in InstallShield 2010


New Features
InstallShield includes the following new features. Support for Creating Customized Virtual Applications Now you can use InstallShield to create customized virtual applications in the Microsoft App-V format. Virtualization enables you to isolate an application in its own environment so that it does not conflict with existing applications or modify the underlying operating system. Virtual applications run in virtual environments that keep the application layer and the operating system layer separate. Each application includes its own configuration information in its virtual environment. As a result, many applications can run side-by-side with other applications on the same computer without any conflicts. To create a virtual application, use the new Microsoft App-V tab that is available in the following project types: Basic MSI and MSI Database. The virtualization support is available if you purchase the InstallShield with the Virtualization Pack.

InstallShield 2010 User Guide

ISP-1600-UG00

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

InstallShield also includes InstallShield prerequisites for the Microsoft App-V 4.5 Desktop Client installation and the Microsoft Application Error Reporting installation. The Application Error Reporting prerequisite is a dependency of the App-V prerequisite. The redistributable files for these InstallShield prerequisites are not available for download from within InstallShield, since you must obtain them from Microsoft. Once you obtain them from Microsoft, place them in the location that is displayed when you are editing these prerequisites in the InstallShield Prerequisite Editor. For more information, see:

Creating Customized Virtual Applications About Virtualization Creating Microsoft App-V Applications

Ability to Target Windows 7 and Windows Server 2008 R2 Systems InstallShield enables you to specify that your installation requires Windows 7 or Windows Server 2008 R2. It also lets you build feature and component conditions for these operating systems. Windows 7 and Windows Server 2008 R2 Support for Displaying Installation Progress on the Taskbar Installations that are run on Windows 7 and Windows Server 2008 R2 now show a progress bar on the Windows taskbar during file transfer. This applies to InstallScript and InstallScript MSI installations. In addition, it applies to Basic MSI installations that display billboards that were configured in the Billboards view. Note that a progress bar is not displayed on the taskbar on earlier versions of Windows. It is also not displayed during setup initialization or while InstallShield prerequisites are being installed. Beta Windows Installer 5 Support for Per-User Installations The General Information view has a new Show Per-User Option setting. This setting lets you specify whether you want the ReadyToInstall dialogin certain scenariosto include buttons that let end users indicate how they want to install the product: for the current user or for all users. The per-user button sets the new Windows Installer property MSIINSTALLPERUSER equal to 1 to indicate that the package should be installed for the current user. The MSIINSTALLPERUSER property is available with the beta of Windows Installer 5. This feature is available in Basic MSI projects. To learn more, see Per-User vs. Per-Machine Installations. Beta Windows Installer 5 Support for Reducing the Time for Installing Large Packages Use the new Fast Install setting in the General Information view to select one or more options that may help reduce the time that is required to install a large Windows Installer package. For example, you can specify that you do not want a system restore point to be saved for your installation. You can also specify that you want the installation to perform file costing, but not any other costing. This setting configures the new Windows Installer property MSIFASTINSTALL, which can be set at the command line. Windows Installer 5 includes support for this property. Earlier versions of Windows Installer ignore it. This setting is available in the following project types: Basic MSI, InstallScript MSI, MSI Database, and Transform. To learn more, see the description of the Fast Install setting.

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Beta Support for Additional Windows Installer 5 Features The Director Editor in InstallShield includes beta support for the new Windows Installer 5 tables (MsiLockPermissionEx, MsiServiceConfig, MsiServiceConfigFailureActions, and MsiShortcutProperty). This feature is available in the following project types: Basic MSI and InstallScript MSI. Ability to Detect the Presence of a Virtual Machine InstallShield lets you determine whether an installation is running on any of the following types of virtual machines:

Microsoft Hyper-V A VMware product such as VMware Player, VMware Workstation, or VMware Server Microsoft Virtual PC

Two new Windows Installer properties are available when you add an MSI DLL custom action to your project to detect virtual machines: IS_VM_DETECTED and IS_VM_TYPE. The custom action should be configured to call the ISDetectVM function in the SetAllUsers.dll file, which is installed with InstallShield. In addition, the InstallScript language has been expanded to support the detection. The structure SYSINFO contains a new bIsVirtualMachine member, and a new VIRTUAL_MACHINE_TYPE constant is available for use with the InstallScript function GetSystemInfo. This feature is available in the following project types: Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module. For more information, see Detecting Whether the Installation Is Being Run on a Virtual Machine. Support for 64-Bit COM Extraction InstallShield now supports 64-bit COM extraction. If you are using InstallShield on a 64-bit operating system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. InstallShield must be installed on a 64-bit operating system in order to perform 64-bit COM extraction. This feature is available in the following project types: Basic MSI, InstallScript MSI, and Merge Module. To learn more, see:

Targeting 64-Bit Operating Systems Extracting COM Information from a COM Server

New Support for Setting Permissions for Files, Folders, and Registry Keys InstallShield offers two new ways to secure files, folders, and registry keys for end users who run your product in a locked-down environment:

Custom InstallShield handlingIn Windows Installerbased projects, you can choose to use custom support for setting permissions at run time. With this option, InstallShield stores permission information for your product in the custom ISLockPermissions table of the .msi database. InstallShield also adds custom actions to your project to set the permissions. This support is available in the following project types: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform.
ISP-1600-UG00 7

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

SetObjectPermissions, an InstallScript FunctionYou can use the new SetObjectPermissions function in InstallScript events and InstallScript custom actions to set permissions at run time. You can use this function in the following project types: InstallScript, Basic MSI, InstallScript MSI, and Merge Module.

With the custom InstallShield handling option, the file, folder, or registry key for which you are setting permissions must be installed as part of your installation. With the SetObjectPermissions function, the file, folder, or registry key can be installed as part of your installation, or it can be already present on the target system. Previously, the only option that InstallShield offered for setting permissions was to use the traditional Windows Installer handling. With this option, the permission information is stored in the LockPermissions table of the .msi database. The new custom InstallShield handling option and the SetObjectPermissions function offer several advantages over the traditional Windows Installer handling:

The custom option and the SetObjectPermissions function include support for many well-known security identifiers (SIDs) that are not supported by the traditional Windows Installer handling option. The custom option and the SetObjectPermissions function support the use of localized user names for the supported SIDs, unlike the traditional option. With the traditional option, if you try to use a localized name to set permissions on a non-English system, the installation may fail. The custom option and the SetObjectPermissions function let you specify that you want to deny a user or group from having the permissions that you are specifying. The traditional handling does not allow you to do this. The custom option and the SetObjectPermissions function let you add permissions to a file, folder, or registry key that already exists on the target system, without deleting any existing permissions for that object. With the traditional handling, the existing permissions are deleted. The custom option and the SetObjectPermissions function let you configure permissions for a folder (or a registry key), and indicate whether you want the permissions to be applied to all of the folders subfolders and files (or the registry keys subkeys). With the traditional handling, if you want to configure permissions for a subfolder or a file in a folder (or a subkey under a registry key), the parent that is created on the target system automatically inherits the permissions of its child. The custom option and the SetObjectPermissions function let you configure permissions for a new user that is being created during the installation. The traditional handling does not allow you to do this; the user must already exist on the target system at run time.

The General Information view has a new Locked-Down Permissions setting that lets you specify whether you want to use the new custom InstallShield handling or the traditional Windows Installer handling for all new permissions that you set for files, folders, and registry keys in your project. If you have already configured some permissions in your project and then you change the value of this setting, InstallShield lets you specify whether you want to use the alternate handling method for those already-existing permissions. In all new projects, the default value for this setting is the custom InstallShield handling option. If you upgrade a project from InstallShield 2009 or earlier to InstallShield 2010, the traditional Windows Installer handling option is the default value of this setting. This new setting is available in the following project types: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform. For more information, see the following:

Securing Files, Folders, and Registry Keys in a Locked-Down Environment

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Selecting the Locked-Down Permissions Type for a Project SetObjectPermissions SetObjectPermissions Example

Support for InstallShield Prerequisites in InstallScript Projects InstallShield now enables you to add InstallShield prerequisites to InstallScript projects. Previously, only Basic MSI and InstallScript MSI projects included support for this type of redistributable. InstallShield prerequisites are redistributables that usually install a product or technology framework that is required by your product. Now you can add any of the InstallShield prerequisites that are provided with InstallShieldor any of your own custom-designed InstallShield prerequisitesto InstallScript projects. If you work on a mix of different project types, InstallShield lets you simplify your testing matrix by enabling you to reuse this type of redistributable in all of your Basic MSI, InstallScript, and InstallScript MSI projects. To add an InstallShield prerequisite to an InstallScript project, use the new Prerequisites view. InstallScript projects include support for the setup prerequisite type of InstallShield prerequisite, which is run before the main installations user interface is run. InstallScript projects do not have support for feature prerequisites, which are InstallShield prerequisites that are associated with features. For more information, see:

Adding InstallShield Prerequisites, Merge Modules, and Objects to InstallScript Projects Run-Time Behavior for an Installation that Includes InstallShield Prerequisites Specifying the Installation Order of InstallShield Prerequisites Specifying a Location for a Specific InstallShield Prerequisite Specifying the Location for InstallShield Prerequisites at the Release Level Designing InstallShield Prerequisites and Other Redistributables Prerequisites View

New InstallShield Prerequisites for Windows Installer, .NET Framework, Crystal Reports, and Other Redistributables InstallShield includes a number of new InstallShield prerequisites that you can add to Basic MSI, InstallScript, and InstallScript MSI projects:

Windows Installer 4.5 (The InstallShield prerequisites for Windows Installer 4.5 include the fix that is described in Microsoft KB958655.) Windows Installer 4.5 Update (The InstallShield prerequisites for the Windows Installer 4.5 Update include the fix that is described in Microsoft KB958655. Windows Installer 4.5 must already be installed on the target system for this update.) Windows Installer 3.1, Windows Installer 3.0, and Windows Installer 2.0 (These versions of Windows Installer redistributables were previously available if you added Windows Installer to your project in the Releases view. These versions were not previously available as InstallShield prerequisites.) .NET Framework 3.0 SP1

InstallShield 2010 User Guide

ISP-1600-UG00

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

.NET Framework 2.0 SP2 Internet Explorer 8 Microsoft SQL Server 2008 Express SP1 Microsoft SQL Server 2005 Express SP3 Microsoft Visual C++ 2005 SP1 Redistributable Package Oracle 11g Instant Client 11.1.0.7 (Oracle does not provide an installer for the Oracle Instant Client files, so you need to create an .msi package before you can use this InstallShield prerequisite in your projects. You can do so easily by using the Oracle Instant Client installation project that is installed with InstallShield (InstallShield Program Files Folder\Support\Oracle Instant Client.) Crystal Reports Basic for Visual Studio 2008 (Use this prerequisite with the Crystal Reports Basic installation that is installed with Visual Studio 2008. Note that you may need to change the path of the Crystal Reports Basic installation in the .prq file, depending on where the .msi package is located on your system.)

Microsoft SQL Server 2008 SP1 Support InstallShield now includes support for running SQL script on SQL Server 2008 SP1. In addition, InstallShield includes SQL Server 2008 SP1 in the predefined list of database servers that you can select when you are specifying in the SQL Scripts view the target database servers that your product supports. Oracle 11g Support InstallShield now includes support for running SQL script on Oracle 11g. In addition, InstallShield includes Oracle 11g in the predefined list of database servers that you can select when you are specifying in the SQL Scripts view the target database servers that your product supports. SQL Server Compact Edition 3.5 SP1 Support Now Available for Mobile Devices InstallShield now includes support for SQL Server Compact Edition 3.5 SP1. If you have SQL Server Compact Edition 3.5 SP1 installed on your build machine and you select the SQL Server Compact 3.5, SQL Server Compact 3.5 Replication, or SQL 3.5 Client options in the Windows Mobile Wizard or the Smart Device Setup Wizard, InstallShield includes .cab files of SQL Server Compact Edition 3.5 SP1 in your installation at build time. Note that you need to obtain the SQL Server Compact Edition 3.5 SP1 redistributable from the MSDN Web site and install it on your build machine. This feature applies to the following project types: Basic MSI, InstallScript MSI, and Smart Device. New Tool for Scanning an IIS Web Site, Recording Its Settings, and Importing Those Settings into an InstallShield Project InstallShield includes an IIS scanner (IISscan.exe), a new command-line tool for scanning an existing IIS Web site and recording IIS data about the Web site. The IIS scanner creates an XML file that contains all of the settings for the Web site, its virtual directories, its applications, and its application pools. You can use the XML file to import the IIS data into the Internet Information Services view in InstallShield. Once you have imported the IIS data into a project, you can use the Internet Information Services view to make changes to the IIS settings as needed. The ability to import the IIS data into an InstallShield project is available only in the Premier edition of InstallShield. For more information, see:
10 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Scanning an IIS Web Site and Importing Its Settings into an InstallShield Project Filtering IIS Data When Importing a Web Site and Its Settings into an InstallShield Project IISscan.exe

Ability to Add IIS Web Applications to Web Sites, Plus Other IIS-Related Improvements InstallShield now lets you add IIS Web applications to Web sites. You can do so by right-clicking a Web site in the Internet Information Services view and clicking New Application. Once you have added a new application, you can configure its settings in the right pane. InstallShield also lets you create a virtual directory without an application. Previously whenever you created a virtual directory, an application was also created automatically. In addition, InstallShield has new IIS settings:

Managed Pipeline ModeThis setting enables you to specify the appropriate request-processing

pipeline modeeither integrated or classicfor an application pool.


Enable 32-Bit ApplicationsThis setting lets you specify whether you want to allow 32-bit

applications in the selected application pool to be run on 64-bit systems.


.NET Framework VersionThis setting is where you specify the version of the .NET Framework that

an application pool should load.


ASP.NET PlatformIf your installation may be run on a 64-bit version of Windows with the .NET

Framework, use this setting to specify which ASP.NET platform should be used to map a Web site, application, or virtual directory to the ASP.NET version. This feature is available in the following project types: Basic MSI, InstallScript, and InstallScript MSI. To learn more, see:

Creating a Web Site and Adding an Application or a Virtual Directory Internet Information Services View

New View for Configuring Run-Time Text File Changes InstallShield has a new Text File Changes view, which enables you to configure search-and-replace behavior for content in text filesfor example, .txt, .htm, .xml, .config, .ini, and .sql filesthat you want to modify at run time on the target system. The text files can be part of your installation, or they can be files that are already present on target systems. You can use Windows Installer properties to specify the names of the text files that you want to include in or exclude from your search. You can also use properties to specify the search strings and the replacement strings. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified on the target system. For example, if your project includes a dialog in which end users must specify an IP address, your installation can search a set of files for a token, and replace it with the IP address that end users enter. Note that the Text File Changes view offers an alternative for configuring XML file changes in the XML File Changes view. Using the Text File Changes view offers some advantages. For example, this new view does not have any run-time requirements; however, changes that are configured through the XML File

InstallShield 2010 User Guide

ISP-1600-UG00

11

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Changes view require MSXML to be present on the target system. In addition, configuring changes in the Text File Changes view does not require you to enter XPath queries, as is required in the XML File Changes view. The Text File Changes view is available in the following project types: Basic MSI and InstallScript MSI. For more information, see:

Modifying Text Files Creating a Text File Reference Specifying Search-and-Replace Criteria for a Text File Change Changing the Order in Which Text File Changes Are Made Using Windows Installer Properties to Dynamically Modify Text Files Specifying the Code Page that Should Be Used for Opening ANSI Text Files

New String Editor View InstallShield has a new String Editor view. This view contains a spreadsheetlike table that shows the collection of language-independent identifiers and corresponding language-specific values for your project. In the String Editor view, you have complete and centralized control over the localizable text strings that are displayed at run time during the installation process. The view replaces the string tables that were previously available as nodes within the General Information view. Following is a list of some of the highlights of the new view:

The view has a toolbar with buttons that let you add, edit, delete, find, replace, export, and import string entries. It also has a button that lets you search the project to identify all of the instances in which a specific string identifier is used. The top of the view has a new group box area; you can drag and drop column headings onto this area to organize the rows in the view in a hierarchical format. This functionality makes it easy to sort string entries by categories such as language and by modified date. This view has support for dynamic searchesas you are typing a string in the search box, InstallShield hides all of the string entries that do not contain it.

This feature is available in the following project types: Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module. For more information, see:

String Editor View Localizing the End-User Interface

Support for Unicode InstallShield takes a three-pronged approach to fully supporting modern multilanguage installations: Windows Installer databases can now be built in a Unicode format, InstallShield projects are now stored in a Unicode format, and the InstallShield interface now supports entering and viewing Unicode characters from multiple character sets at the same time.

12

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Unicode (UTF-8) Databases

The Build tab in the Releases view has a new Build UTF-8 Database setting that lets you specify that a Windows Installer database, along with any instance or language transforms, be built using the UTF-8 encoding. The UTF-8 encoding supports characters from all languages simultaneously, enabling you to mix and match, for example, Japanese and German, or Russian and Polish, both in text shown to end users and in file names and registry keys. These mixed languages work correctly regardless of the current language of the target system. Unicode support has also been added to key parts of the installation run times, including IIS support and changes to text and XML files. The default value for the new Build UTF-8 Database setting is No. The automation interface now includes support for this new setting. The ISWiRelease object includes a new BuildUTF8Database property that lets you specify whether you want to use the UTF-8 encoding. This feature is available in the following project types: Basic MSI, InstallScript MSI, and Merge Module projects. To learn more, see the description of the Build UTF-8 Database setting.
Unicode Project Files (*.ism)

InstallShield now uses the UTF-8 encoding when saving both binary and XML project files. Because of this change, the files, registry data, and other strings that are used in the project can include characters from all languages simultaneously. With this encoding, InstallShield no longer needs to use an unreadable Base64 encoding for strings that are stored in the ISString table. Instead, as you add or modify strings in a project, InstallShield now saves them as human-readable Unicode strings that you can easily examine for changes across revisions of your project. Therefore, InstallShield uses only Unicode strings for all new projects that are created in InstallShield 2010; for upgraded projects, InstallShield uses Unicode for new and modified strings, as well as for strings that have been exported and reimported. If you use Unicode values that cannot be represented in the target build (for example, an InstallScript installation, or a Basic MSI installation in which No is selected for the Build UTF-8 Database setting), a new build error points to the item that needs to be changed. In some instances, this reveals invalid string entries that were silently allowed in earlier versions of InstallShield. This feature applies to all project types.
Unicode Views in InstallShield

Many views in InstallShield have been enhanced to display and allow you to enter characters from all languages. For example, in the Files and Folders view, Chinese file names from your local English system are no longer displayed with question marks for their names, and now you can add these files to your project. Similarly, the Registry view no longer converts Thai registry keys or values to question marks, and you can install them with your Windows Installerbased projects. In addition, you can view and edit strings from all languages in the String Editor view, a new separate view; previously, string entries were available from separate language nodes in the General Information view. Examples of other enhanced views include the Property Manager, Path Variables, Direct Editor, General Information, and Setup Design views. Note that whenever No is selected for the Build UTF-8 Database setting, all file names, registry keys, and other strings must still consist of characters from the code page of all target languages that will use it. In this scenario, if an item uses a character that is not available on the code page of a target language, InstallShield reports a new build error that points to this item; the Chinese file name cannot be used in an English installation unless Yes is selected for the Build UTF-8 Database setting. This feature applies to all project types.
InstallShield 2010 User Guide ISP-1600-UG00 13

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

New Billboard Support in Basic MSI Projects Basic MSI projects now include support for billboards. You can add billboards to your projects to display information to end users during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is a file that you or your companys graphics department creates for complete control over the look and feel of the file transfer. Following are some of the highlights regarding billboard support in Basic MSI projects:

You can add an Adobe Flash application file (.swf) as a billboard in your project. Flash application files can consist of videos, movies, sounds, interactive interfaces, games, text, and moreanything that is supported by the .swf type of file. InstallShield lets you use .bmp, .gif, .jpg, and .jpeg files as billboards. InstallShield includes a Billboard Type setting that lets you specify which style of billboard you want to use in your installation. For example, with one style, the installation displays a full-screen background, with billboards in the foreground, and a small progress box in the lower-right corner of the screen. With another style, the installation displays a standard-size dialog that shows the billboards. The bottom of this dialog shows the progress bar. InstallShield lets you preview a billboard to see how it would be displayed at run time, without requiring you to build and run a release. Previewing a billboard lets you see how your billboard will look with the background color, position, and related settings that are currently configured for your billboard.

The Billboards view in InstallShield is where you add billboard files, configure billboard-related settings, and preview billboards. To learn more, see:

Displaying Billboards in Basic MSI Projects Billboard File Types Types of Billboards Adding an Adobe Flash Application File Billboard Adding Image Billboards Configuring Billboard Settings Previewing Billboards Without Building and Launching a Release Setting the Billboard Order Run-Time Behavior of an Installation that Includes Billboards

Previously, only InstallScript and InstallScript MSI projects included support for billboards. Note that billboard support in these project types is different than support in Basic MSI projects. For more information, see Displaying Billboards.

14

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Expanded Billboard Support in InstallScript and InstallScript MSI Projects InstallScript and InstallScript MSI projects now let you use .gif, .jpg, and .jpeg files as billboards. Previously, only .bmp files were supported. Use the Support Files/Billboards view to add billboards to your project. Billboard files in InstallScript and InstallScript MSI projects must follow a designated naming convention. Each file name must begin with bbrd, followed by the number of the billboard (from 1 through 99); each must end with a supported file extension (.bmp, .gif, .jpg, or .jpeg). Note that it is no longer necessary for the file name numbers to be contiguous; that is, you can add bbrd1.jpg, bbrd3.jpg, and bbrd5.jpg to your project, and each image is displayed at run time in order. Previously, there could not be any numbers missing from the file name sequence for your billboards. For example, if you added bbrd1.bmp, bbrd2.bmp, and bbrd4.bmp to your installation project, then bbrd1.bmp and bbrd2.bmp were displayed at run time; however, bbrd4.bmp was not displayed, since bbrd3.bmp was missing from the sequence. For more information, see:

Displaying Billboards in InstallScript and InstallScript MSI Projects Naming Billboard Files Adding Billboards

Ability to Play an Adobe Flash Application File (.swf) with the InstallScript Function PlayMMedia The InstallScript function PlayMMedia now includes support for playing an Adobe Flash application file (.swf) on a background window during InstallScript and InstallScript MSI installations. Flash application files can consist of videos, movies, sounds, interactive interfaces, games, text, and more anything that is supported by the .swf type of file. If you are using a Flash file, you can use SizeWindow and PlaceWindow to control the size and placement of the background window that displays the Flash file. For more information, see:

PlayMMedia SizeWindow PlaceWindow Displaying a Background Window in InstallScript and InstallScript MSI Installations

Support for HTML Controls on Dialogs During InstallScript and InstallScript MSI Installations InstallShield includes support for HTML controls on dialogs in InstallScript and InstallScript MSI projects. HTML controls enable you to use HTML markup for dialog controls. You can include on dialogs links to Web pages, installed HTML files, and HTML support files. If an end user clicks the hyperlink on the run-time dialog, you can have the HTML page open in an Internet browser, or you can trigger other behavior that you have defined through your InstallScript code. The HTML control lets you use any valid HTML markup, including styles to control their appearance. The HTML control also lets you display the HTML content directly on a dialog if the content is an installed HTML file or HTML support file. A new InstallScript function called CtrlGetUrlForLinkClicked is available. This function retrieves the URL for a link that an end user clicked.

InstallShield 2010 User Guide

ISP-1600-UG00

15

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

For more information, see:

Using an HTML Control on a Dialog CtrlGetUrlForLinkClicked CtrlGetUrlForLinkClicked Example

Ability to Add Unsupported Languages to InstallScript Projects The InstallShield Premier edition includes default run-time strings for InstallScript projects in 33 different languages. The InstallShield Premier edition also lets you use the New Language Wizard to add unsupported languages, beyond the built-in 33 languages, to InstallScript projects. Once you have added unsupported languages to an InstallScript project, you can use the String Editor view to provide translated strings for the unsupported languages. As an alternative, you can export a languages string entries to a file, translate the string values in the file, and then import the translated file into your project. Previously, the New Language Wizard enabled you to add unsupported languages to only Basic MSI and InstallScript MSI projects. For more information, see:

Run-Time Language Support in InstallShield New Language Wizard String Editor View

Ability to Specify Paths for Libraries to Which the InstallScript Compiler Should Link The Compile/Link tab on the Settings dialog box has a new Additional Library Paths box that lets you specify the locations where the InstallScript compiler should search for InstallScript libraries (.obl files) that should be linked to your script. In addition, when you specify your custom libraries on this tab, you can now specify just the file name, without the full path. These changes enable you to move your libraries to different directories but still successfully compile your script without manually changing the path for libraries on the Compile/Link tab. For more information, see Compile/Link Tab. New FLEXnet Connect 11.6 Redistributables Available InstallShield includes support for FLEXnet Connect 11.6 in Basic MSI and InstallScript MSI projects. Use the Update Notifications view in InstallShield to include one of the two FLEXnet Connect 11.6 merge modulesone has the Common Software Manager, and the other does not. These merge modules replace the FLEXnet Connect 11 merge modules. DIFx 2.1.1 Support InstallShield includes support for the latest version of Driver Install Frameworks for Applications (DIFx 2.1.1). This new version, which includes the latest binary files from Microsoft, is available for the following project types: Basic MSI, InstallScript, and InstallScript MSI.

Enhancements
InstallShield includes the following enhancements.

16

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Usability Enhancements Many of the views in InstallShield have been enhanced to improve productivity and usability. For example, several views contain new toolbars that make options easier to find. Some of the views that contain grids let you customize how the rows in a grid are organized. Searches are performed more quickly in the views that offer search capabilities. Following are examples of some of the highlights:

Direct Editor viewWhen you select a table in this view, a new toolbar is displayed. The toolbar has buttons that let you add, cut, copy, paste, find, and replace data in the table. This view also has support for dynamic searchesas you are typing a string in the search box, InstallShield hides all of the table records that do not contain it. When you are adding or editing a record, InstallShield displays help text for each field. Property Manager viewThis view contains a new toolbar that has buttons for performing tasks such as adding and deleting properties. This view also has support for dynamic searchesas you are typing a string in the search box, InstallShield hides all of the table records that do not contain it. The top of the view has a new group box area; you can drag and drop column headings onto this area to organize the rows in the view in a hierarchical format. You can now select multiple properties in this view (by using the mouse and the SHIFT or CTRL button) and then delete them all at once. Redistributables viewThe new toolbar and the new group box area in this view provide robust search and organizational functionality. You can drag and drop column headings onto the group box area to organize the list of redistributables in a hierarchical format. In addition, you can type a string in the toolbars search box, and InstallShield hides all of the redistributables that do not contain it. Internet Information Services viewThis view has been redesigned to look similar to IIS 7: the settings are now displayed in grids, instead of on tabs. The grids have buttons that let you sort the grid settings by category or alphabetically. When you select a setting in one of the grids in this view, InstallShield displays help information for that setting in the lower-right pane. General Information viewAll of the settings in this view are displayed in one grid, instead of as separate grids that are associated with nodes within this view. The settings are grouped into several categories to make it easy to find a particular setting. In addition, the grid has a button that lets you sort the grid settings by category or alphabetically. The string tables that were previously in this view have been moved to a new String Editor view. Path Variables viewThis view contains a new toolbar that has buttons for performing tasks such as adding and deleting path variables. This view also has support for dynamic searchesas you are typing a string in the search box, InstallShield hides all of the rows that do not contain it. The top of the view has a new group box area; you can drag and drop column headings onto this area to organize the rows in the view in a hierarchical format. You can now select multiple path variables in this view (by using the mouse and the SHIFT or CTRL button) and then delete them all at once.

In addition, the Output window, which is displayed when you are building a release, performing validation, or compiling script, has been enhanced. The Output window or its individual tabs can be docked to any side of the workspace in InstallShield, or they can be dragged to free-floating positions. If you drag the Output window or one of its tabs to the edge of the InstallShield interface, it becomes a docked window. If you drag the Output window or one of its tabs away from any of the edges of the InstallShield interface, it becomes undocked. For more information, see the following:

Working with the Group Box Area in Various Views Docking or Undocking the Output Window

InstallShield 2010 User Guide

ISP-1600-UG00

17

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Support for Specifying Action Progress Messages To keep end users informed, installations commonly display text on the progress dialog to describe the installations current activity. This usually accompanies the progress bar as a means of installation status. As each standard action and custom action is encountered, a message about the action is displayed on the progress dialog. This may be especially useful for actions that take a long time to execute. The same action text is also written to the installations log file if one is created. The Custom Actions and Sequences view has a new Action Text area that lets you specify action descriptions and details. This is available in the following project types: Basic MSI, InstallScript MSI, MSI Database, and Transform. For more information, see:

Using Action Text Specifying an Action Description and a Template for Action Data Displaying Action Descriptions on the Progress Dialog Displaying Action Data on the Progress Dialog

Ability to Detect Whether a 64-Bit System Allows 32-Bit IIS Applications to Be Run At run time, you may need to have your installation check the Enable32bitAppOnWin64 property on systems that have IIS 6. Depending on the requirements for your product and the results of that check, you may want the installation to skip a particular component that contains a 32-bit IIS 6 application, or a 64-bit IIS application, for example, and proceed with the rest of the file transfer. InstallShield includes a sample Windows Installer DLL file that detects how the Enable32bitAppOnWin64 property is set on a target system. You can add a custom action for this DLL to your project. If 32-bit applications are allowed, the Windows Installer property ISIIS6APPPOOLSUPPORTS32BIT is set to a value of 1; if they are not allowed, this property is not set. You can use this property in conditions to prevent or trigger certain behavior. For example, you can create a launch condition if you want the installation to exit if the ISIIS6APPPOOLSUPPORTS32BIT is set or not set. This feature is available in the following project types: Basic MSI and InstallScript MSI. For instructions on how to add the custom action to your project, see Considerations for Supporting IIS 6 on 64-Bit Platforms. Ability to Detect Whether the IIS 6 Metabase Compatibility Feature Is Installed At run time, you can have your installation detect if the IIS Metabase and IIS 6 Configuration Compatibility feature is installed on a target system, or if IIS 6 or earlier is installed. Depending on the requirements for your product and the results of that detection, you may want the installation to exit and display an error message. For example, Web service extensions can be installed on systems that have IIS 6. On systems that have IIS 7, Web service extensions can be installed only if the IIS Metabase and IIS 6 Configuration Compatibility feature is installed. Thus, you might want to configure your installation to verify that IIS 6 is present or the IIS 6 compatibility feature is installed; if either of those conditions are false, the installation would exit and display an error message. InstallShield includes a sample Windows Installer DLL file that detects whether the IIS Metabase and IIS 6 Configuration Compatibility feature is installed. You can add a custom action for this DLL to your project. If the IIS Metabase and IIS 6 Configuration Compatibility feature is installed, the Windows
18 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Installer property ISIISMETABASECOMPATPRESENT is set to a value of 1; if it is not installed, this property is not set. You can use this property in conditions to prevent or trigger certain behavior. For example, you can create a launch condition if you want the installation to exit if the ISIISMETABASECOMPATPRESENT is set or not set. This feature is available in the following project types: Basic MSI and InstallScript MSI. For instructions on how to add the custom action to your project, see Determining If a Target System Has IIS 6 or Earlier or the IIS 6 Metabase Compatibility Feature. Ability to Associate a Namespace Prefix with an Attribute of an XML Files Element InstallShield now lets you add a namespace prefix to an attribute in the XML File Changes view. To do so, you can type the prefix, followed by a colon (:), in front of the attribute name. Previously, if an attribute contained a namespace prefix, the installation failed. This enhancement applies to the following project types: Basic MSI, InstallScript, and InstallScript MSI. For more information, see Adding a Namespace Prefix to an Attribute. Ability to Specify Whether an XML File Should Be Formatted After Run-Time Changes The Advanced tab for an XML file in the XML File Changes view has a new Format XML after changes check box that lets you specify whether you want the XML file to be formatted after the runtime changes are made to the file. When formatting the file, the installation adds indentations to the file and replaces empty-element tags with start tags and end tags. This may cause problems for web.config files, so you may want to clear this check box for your project. This enhancement applies to the following project types: Basic MSI, InstallScript, and InstallScript MSI. For more information, see Advanced Tab for an XML File. Predefined System Searches for the .NET Framework and Internet Explorer 8 InstallShield has two new predefined system searches:

Microsoft .NET Framework 3.5 SP1 Internet Explorer 8

If your installation requires any of these, 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. This enhancement applies to Basic MSI and InstallScript MSI projects. Custom Properties Are Now Listed in Condition Builder The Properties list on the Condition Builder dialog box now includes properties that are added in the Property Manager view. It also includes properties from searches that are created through the System Search Wizard. Therefore, when you are creating or editing a condition in InstallShield, you can now select your own custom properties without having to manually type them. This enhancement applies to the following project types: Basic MSI, InstallScript MSI, Merge Module, and Transform.

InstallShield 2010 User Guide

ISP-1600-UG00

19

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

Ability to Specify a Maximum Service Pack Number and 64-Bit Locations for InstallShield Prerequisite Conditions The Prerequisite Condition dialog box, which is displayed when you are adding or modifying a condition for an InstallShield prerequisite in the InstallShield Prerequisite Editor, has a new field that lets you specify the maximum service pack number. Previously, it was possible to specify a minimum service pack number, but not a maximum service pack number. In addition, the Prerequisite Condition dialog box now includes the following 64-bit locations in the box that is displayed when you are specifying file-related conditions: [CommonFiles64Folder], [ProgramFiles64Folder], and [System64Folder]. You can select any of these properties if you want to use 64-bit locations in the file path. At run time, the installation checks these 64-bit locations if the target system is 64 bit. For 32-bit systems, the installation checks the 32-bit location equivalents. For more information, see Prerequisite Condition Dialog Box. Enhancements to MSBuild Support The InstallShield task for MSBuild includes several new parameters:

RunMsiValidatorUse this parameter to specify the .cub file that you want to use for validation. This

parameter is exposed as the ItemGroup InstallShieldMsiValidators when the default targets file is used.

PatchConfigurationUse this parameter to specify the patch configuration that you want to build

through MSBuild. This parameter is exposed as the property InstallShieldPatchConfiguration when the default targets file is used.

PathVariablesUse this parameter to override the value of a path variable. This parameter is exposed

as the ItemGroup InstallShieldPathVariableOverrides when the default targets file is used.


PreprocessorDefinesUse this parameter to specify preprocessor definitions for compiling

InstallScript. This parameter is exposed as the ItemGroup InstallShieldPreprocessorDefines when the default targets file is used. For more information, see Microsoft Build Engine (MSBuild). Automation Interface Enhancements
OSFilter Property Values for Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, and Windows Server 2003

The following constants are now available for use with the OSFilter member of the ISWiComponent and ISWiRelease objects in the automation interface:

eosWin7 (33554432)This is for Windows 7 and Windows Server 2008 R2. eosWinVista (16777216)This is for Windows Vista and Windows Server 2008. eosWinServer2003 (8388608)

In addition, the value for the eosAll constant is now 64028880; previously, it was 5308624. The OSFilter member applies to the ISWiComponent object in InstallScript, InstallScript MSI, and InstallScript Object projects. The OSFilter member applies to the ISWiRelease object in InstallScript and InstallScript Object projects. For more information, see the following:

20

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

ISWiComponent Object ISWiRelease Object

New IsPlatformSelected Property Values

The list of available property values for the IsPlatformSelected property of the ISWiComponent object has been expanded. This property now has values for 32-bit, 64-bit Itanium, AMD64, and Windows Server 2003 R2. This applies to the following project types: InstallScript and InstallScript Object. Note that some of the values for the existing constants have changed. To learn the new values, see ISWiComponent Object.
New AddSQLScriptEx Method for Adding a SQL Script to a Connection

The AddSQLScriptEx method has been added to the ISWiSQLConnection object. Use this method to add an ISSQLScriptFile entry and generate a valid name from the passed string. The method ensures that the names of the entries in the ISSQLScriptFile table are unique and less than 47 characters in length.
New RunOnLogon and Condition Properties for the ISWiSQLScript Object

The read-write RunOnLogon property has been added to the ISWiSQLScript object. This property corresponds with the Run Script During Login check box on the Runtime tab for a SQL script in the SQL Scripts view. The read-write Condition property has also been added to the ISWiSQLScript object. This property specifies the condition that is evaluated at run time to determine whether the SQL script should be run during installation or uninstallation. If the condition evaluates to true, the script is run. This property is available for the following project types: Basic MSI and InstallScript MSI.
New DisplayName Property for the ISWiUpgradeTableEntry Object

The read-write DisplayName property has been added to the ISWiUpgradeTableEntry object. This property gets or sets the name of an upgrade entry. This is the internal name that is displayed for an upgrade item in the Upgrades view. This property is available for the following project types: Basic MSI and InstallScript MSI. Enhancements to the InstallScript Language for Operating Systems The following structure members and predefined constants were added to the InstallScript language:

SYSINFO.WINNT.bWin7_Server2008R2This is a new SYSINFO structure member. If the operating

system is Windows 7 or Windows Server 2008 R2, this value is TRUE.


SYSINFO.bWinServer2003R2This is a new SYSINFO structure member. If the operating system is

Windows Server 2003 R2, this value is TRUE. (Note that the value of SYSINFO.WINNT.bWinServer2003 is also TRUE on this operating system.)

ISOSL_WIN7_SERVER2008R2This is a new predefined constant that is available for use with the FeatureFilterOS function and the SYSINFO structure variable. It indicates that the target system is

running Windows 7 or Windows Server 2008 R2.

ISOS_ST_SERVER2003_R2This is a new operating system suite that is available for use with the FeatureFilterOS function and the SYSINFO structure variable. It indicates that the target system is

running Windows Server 2003 R2. In addition, some items were renamed:

InstallShield 2010 User Guide

ISP-1600-UG00

21

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

The SYSINFO.WINNT.bWinVista structure member does not distinguish between Windows Vista or Windows Server 2008. Therefore, the new member SYSINFO.WINNT.bWinVista_Server2008 is now available. The old alias is still available, but the new one may be preferred for clarity in code. The ISOSL_WINVISTA predefined constant does not distinguish between Windows Vista or Windows Server 2008. Therefore, the new constant ISOSL_WINVISTA_SERVER2008 is now available. The old alias is still available, but the new one may be preferred for clarity in code.

For more information, see FeatureFilterOS function and the SYSINFO. Ability to Easily Override InstallScript Dialog Source Code in the InstallScript View The event category drop-down list in the InstallScript view has a new Dialog Source option. If you select this option, the event handler drop-down list shows all of the built-in InstallScript dialogs. You can select any dialog in this list to modify its code. This functionality applies to the following project types: InstallScript, InstallScript MSI, and InstallScript Object. For information about built-in InstallScript dialog functions that are available when you select the Dialog Source option, see:

Built-In Dialog Functions Sd Dialog Functions

Changes to the Major and Minor Version Registry Entries for the Uninstall Key of InstallScript Installations InstallScript installations now create VersionMajor and VersionMinor registry values in the Uninstall key; the names of these values now match the entries that are created during Basic MSI and InstallScript MSI installations. This applies to new installations that are created in InstallShield 2010, as well as installations that are upgraded from InstallShield 2009 or earlier. Previously, in InstallShield 2009 and earlier, the names of the values that InstallScript installations created were MajorVersion and MinorVersion; these are no longer created. In order to use the new registry values, the values of the following InstallScript constants have been changed:

REGDB_VALUENAME_UNINSTALL_MAJORVERSION is now VersionMajor instead of MajorVersion. REGDB_VALUENAME_UNINSTALL_MINORVERSION is now VersionMinor instead of MinorVersion.

When the MaintenanceStart function is called, it creates the updated value names in the registry. By default, it also deletes the old value names if they exist. If you do not want the old value names to be deleted from target systems, you can use the new REGDB_OPTIONS option called REGDB_OPTION_NO_DELETE_OLD_MAJMIN_VERSION. If REGDB_UNINSTALL_MAJOR_VERSION or REGDB_UNINSTALL_MINOR_VERSION is used with the RegDBGetItem function, RegDBGetItem first checks for the new value; if the new value is found, the function returns the value data from the new value. If the new value is not found, the function automatically checks for the old value; if the old value is found, the function returns the value data from the old value. To provide backwards compatibility, the following new constants are available:

22

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

REGDB_UNINSTALL_MAJOR_VERSION_OLD REGDB_UNINSTALL_MINOR_VERSION_OLD

You can specify these constants with the RegDBGetItem, RegDBSetItem, and RegDBDeleteItem functions to get, set, and delete the old values. The following new string constants are also available:

REGDB_VALUENAME_UNINSTALL_MAJORVERSION_OLD is defined as MajorVersion. REGDB_VALUENAME_UNINSTALL_MINORVERSION_OLD is defined as MinorVersion.

For more information, see the following: REGDB_VALUENAME_UNINSTALL_MAJORVERSION REGDB_VALUENAME_UNINSTALL_MAJORVERSION_OLD REGDB_VALUENAME_UNINSTALL_MINORVERSION REGDB_VALUENAME_UNINSTALL_MINORVERSION_OLD REGDB_UNINSTALL_MAJOR_VERSION_OLD REGDB_UNINSTALL_MINOR_VERSION_OLD REGDB_OPTIONS RegDBSetItem RegDBGetItem RegDBDeleteItem

New CtrlGetDlgItem Function for Retrieving the Window Handle of a Control in a Custom InstallScript Dialog

A new InstallScript function called CtrlGetDlgItem is now available. The CtrlGetDlgItem function retrieves the window handle of a control in a custom dialog. CtrlGetDlgItem is similar to the Windows API GetDlgItem, except that with CtrlGetDlgItem, you can specify the InstallScript dialog name instead of the dialogs window handle. For more information, see CtrlGetDlgItem.
New InstallScript Constant for Passing a Null Pointer for an InstallScript String to an External DLL Function

You can use the IS_NULLSTR_PTR variable to pass a null pointer to an external DLL function or Windows API through a parameter that has been prototyped as an InstallScript string. This functionality works for byval string, byref string, wstring, and binary data types. For more information, see IS_NULLSTR_PTR.
New StrConvertSizeUnit Function for Converting an InstallScript Size Unit Constant to a Display String

A new InstallScript function called StrConvertSizeUnit is now available. The StrConvertSizeUnit function returns the appropriate display string for the InstallScript size unit constant that is specified.For more information, see StrConvertSizeUnit.
New StrTrim Function for Removing Leading and Trailing Spaces and Tabs from a String

A new InstallScript function called StrTrim is now available. The StrTrim function removes the leading and trailing spaces and tabs from a string. For more information, see StrTrim.

InstallShield 2010 User Guide

ISP-1600-UG00

23

Chapter 1: InstallShield 2010 Whats New in InstallShield 2010

New SdLicense* Dialog Functions to Supersede Existing SdLicense* Dialog Functions

Two new InstallScript dialog functionsSdLicenseEx and SdLicense2Exare now available. They both display a dialog that contains a license agreement in a multi-line edit field. The license agreement can be stored in a text file (.txt) or a rich text file (.rtf).

SdLicenseExdisplays a dialog that shows a question in a static text field. The end user responds by clicking the Yes or No button.
SdLicenseEx supersedes SdLicense and SdLicenseRtf.

SdLicense2Exdisplays a dialog that has two radio buttons (one for accepting the terms of the license agreement, and one for not accepting them). The Next button becomes enabled when the end user clicks the appropriate button to accept the terms of the license agreement.
SdLicense2Ex supersedes SdLicense2 and SdLicense2Rtf.

New ListFindKeyValueString Function for Searching Lists of Key-Value Pairs

A new InstallScript function called ListFindKeyValueString is now available. The ListFindKeyValueString function searches a string or number list for a specified value. It returns a value from an additional list that corresponds with the position of the found string in the first list. This enables you to search lists of key-value pairs for a particular key and retrieve the corresponding value. For more information, see ListFindKeyValueString. New InstallScript Code Examples The InstallShield documentation now has sample code for the following InstallScript functions:

AdminAskPath CharReplace FormatMessage LogReadCustomNumber LogReadCustomString LogWriteCustomNumber LogWriteCustomString

You can copy this code from the InstallShield documentation, paste it into your InstallScript code, and customize it as necessary. Expanded InstallScript Cabinet File Viewer The Cabinet File Viewer now provides additional information about .cab files for InstallScript projects.

For features that were built by InstallShield, the viewer has the following new fields: Password Protected, Split Before, Split After, Split Not Allowed, and Split Before Not Allowed, and Image Index. For InstallScript Objects that are included in the InstallScript installation, the viewer has a new Object version field. For components, the viewer has the following new fields: Encrypted, Data as Files, and .NET Assembly.
ISP-1600-UG00 InstallShield 2010 User Guide

24

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

For media, the viewer has the following new field: Executable File.

What Was New in Earlier Versions of InstallShield


This section describes features and enhancements that were released in earlier versions of InstallShield:

Whats New in InstallShield 2009 SP2 Whats New in InstallShield 2009 SP1 Whats New in InstallShield 2009 Whats New in InstallShield 2008 Whats New in InstallShield 12 SP1 Whats New in InstallShield 12

Whats New in InstallShield 2009 SP2


InstallShield 2009 Service Pack 2 (SP2) includes the following changes:

Microsoft Visual Studio 2008 SP1 Support


InstallShield now supports Microsoft .NET Framework 3.5 SP1 and Microsoft SQL Server 2008, as described below. In addition, InstallShield integration with Visual Studio supports Visual Studio 2008 SP1, enabling development of installations and products within the Visual Studio interface.

Microsoft .NET Framework 3.5 SP1 Prerequisite Available


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

Microsoft .NET Framework 3.5 SP1 (Web Download) Microsoft .NET Framework 3.5 SP1 (Full Package)

To learn more, see Adding .NET Framework Redistributables to Projects.

Microsoft SQL Server 2008 Support


InstallShield now includes support for running SQL script on SQL Server 2008. In addition, InstallShield includes SQL Server 2008 in the predefined list of database servers that you can select when you are specifying in the SQL Scripts view the target database servers that your product supports.

Microsoft SQL Server 2008 Express Prerequisites Available


InstallShield now includes InstallShield prerequisites for Microsoft SQL Server 2008 Express Edition. You can add these InstallShield prerequisites to Basic MSI, and InstallScript MSI projects. In order to support these new prerequisites, the InstallShield Prerequisite Editor has a new registry condition type.

InstallShield 2010 User Guide

ISP-1600-UG00

25

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

New Registry Condition Type in the InstallShield Prerequisite Editor


The InstallShield Prerequisite Editor has a new type of condition option called A registry entry has a specified version value. Use this condition type when you want the installation to check the target system to see if a version number that is stored as the value data of a particular registry entry is greater than, less than, or equal to a version number that you specify in the InstallShield Prerequisite Editor. For more information about this new condition, see Prerequisite Condition Dialog Box.

Microsoft SQL Server 2005 Express SP2 (x86 and x64 WOW) Prerequisite Available
InstallShield now includes a new InstallShield prerequisite for Microsoft SQL Server 2005 Express Edition SP2. This prerequisite installs Microsoft SQL Server 2005 Express Edition SP2 on 32-bit and 64-bit (WOW) systems. You can add this InstallShield prerequisite to Basic MSI and InstallScript MSI projects.

New FLEXnet Connect 11.0.1 Redistributables Available


InstallShield includes support for FLEXnet Connect 11.0.1 in Basic MSI and InstallScript MSI projects. Use the Update Notifications view in InstallShield to include one of the two FLEXnet Connect 11.0.1 merge modulesone has the Common Software Manager, and the other does not. These merge modules replace the FLEXnet Connect 11 merge modules. For details about the changes in the updated merge modules, see the FLEXnet Connect release notes.

Additional Changes
For a list of issues that are resolved in InstallShield 2009 SP2, see the release notes. The release notes are available from the Help menu in InstallShield.

Whats New in InstallShield 2009 SP1


InstallShield 2009 supports a beta version of Windows Installer 4.5. InstallShield 2009 Service Pack 1 (SP1) includes changes that offer support for the final released version of Windows Installer 4.5:

InstallShield Prerequisites for Windows Installer 4.5


InstallShield now includes the following InstallShield prerequisites for the final released version of the Windows Installer 4.5 redistributables:

Windows Installer 4.5 for Windows Vista and Server 2008 (x86) Windows Installer 4.5 for Windows Vista and Server 2008 (x64) Windows Installer 4.5 for Windows Vista and Server 2008 (IA64) Windows Installer 4.5 for Windows Server 2003 SP1 and later (x86) Windows Installer 4.5 for Windows Server 2003 and XP (x64) Windows Installer 4.5 for Windows Server 2003 (IA64) Windows Installer 4.5 for Windows XP SP2 and later (x86)

You can add these InstallShield prerequisites to Basic MSI and InstallScript MSI projects if you want Windows Installer 4.5 to be installed at run time.
26 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

For more information, see Adding Windows Installer Redistributables to Projects.

Additional Changes
For a list of issues that are resolved in InstallShield 2009 SP1, see the release notes. The release notes are available from the Help menu in InstallShield.

Whats New in InstallShield 2009


New Features
InstallShield includes the following new features. Ability to Associate InstallShield Prerequisites with Features for Chaining Installations InstallShield now enables you to associate InstallShield prerequisites with one or more features. This new type of InstallShield prerequisite is called a feature prerequisite. It is installed if a feature that contains the prerequisite is installed and if the prerequisite is not already installed on the system. Including InstallShield prerequisites in your project enables you to chain multiple installations together, bypassing the Windows Installer limitation that permits only one Execute sequence to be run at a time. The Setup.exe setup launcher serves as a bootstrap application that manages the chaining. The Redistributables view is where you add InstallShield prerequisites to a project and specify whether you want them to run before your main installation or be associated with one or more features in your main installation. Previously, all InstallShield prerequisite installations were run before the main installation ran, and the InstallShield prerequisites could not be associated with any features. This type of prerequisite, which is still available, is called a setup prerequisite. Basic MSI projects include support for this feature. To learn more, see:

Setup Prerequisites vs. Feature Prerequisites Associating an InstallShield Prerequisite with a Feature in a Basic MSI Project Run-Time Behavior for an Installation that Includes InstallShield Prerequisites Working with InstallShield Prerequisites that Are Included in Installation Projects

Beta Windows Installer 4.5 Support for Installation of Multiple Packages Using Transaction Processing InstallShield lets you add Windows Installer packages to Basic MSI and InstallScript MSI projects as chained .msi packages. If your Basic MSI or InstallScript MSI installation includes chained .msi packages and Windows Installer 4.5 is present on the target system, the Windows Installer installs the multiple packages using transaction processing. The packages are chained together and processed as a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all of the packages to restore the system to its earlier state.

InstallShield 2010 User Guide

ISP-1600-UG00

27

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

The Chained .msi Packages area of the Releases view is where you add to your project one or more .msi packages that you want to be chained to your main installation. This area is also where you can assign release flags to the chained .msi packages, configure settings such as the properties that should be passed to the chained packages, and specify conditions. For more information, see:

Configuring Multiple Packages for Installation Using Transaction Processing Overview of Multiple-Package Installations that Use Transaction Processing Adding a New Chained .msi Package to Your Project Chained .msi Package Settings

Beta Windows Installer 4.5 Support for Using the InstallScript Engine as an Embedded User Interface for InstallScript MSI Installations For InstallScript MSI projects, you now have the option to use the InstallScript engine as an embedded custom user interface (UI) handler, rather than as an external custom UI handler, as it has traditionally been used. Windows Installer 4.5 includes support for this new capability. Use this new embedded option if you want end users to be able to launch your installation directly from an .msi package, but you also want your installation to include a highly customized user interface that you have defined through InstallScript. To specify whether you want to use the new embedded InstallScript UI functionality or the traditional external InstallScript UI functionality, use the new InstallScript User Interface Type setting; this is a project-wide setting in the General Information view. By default, InstallShield uses the traditional style for all InstallScript MSI projects; a Setup.exe setup launcher is required for this traditional option. A new INSTALLSCRIPTMSIEEUI variable is available. This variable is set to True at run time if the new style is used; otherwise, it is set to False. Note that the new style does have some limitations that the traditional style does not. For example, some of the InstallScript functions and command-line parameters are not supported or behave differently with the new style. For detailed information about the two styles, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations. For additional information, see:

Specifying the InstallScript User Interface Type for InstallScript MSI Installations InstallScript MSI Installation Projects INSTALLSCRIPTMSIEEUI

Beta Windows Installer 4.5 Support for Shared Component Patching InstallShield includes support for the new shared component patching feature that is available with Windows Installer 4.5. The new Multiple Package Shared Component setting in the Components view lets you specify whether you want to enable shared component patching for the selected component. Selecting Yes sets a new component attribute that is designed to prevent Windows Installer from downgrading files when patches that contain components shared across multiple packages are uninstalled. The intent is to keep the highest version of a component present on the target system, even if the patch that contains that highest version is being uninstalled. The default value for this option is No.

28

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Windows Installer 4.5 supports this new functionality; earlier versions of Windows Installer ignore this new setting. In addition, if the DisableSharedComponent policy is set to 1 on a target system, Windows Installer ignores this setting for all packages. This feature applies to Basic MSI, InstallScript MSI, Merge Module, and Transform projects. To learn more, see Specifying Whether Shared Component Patching Should Be Enabled for a Component. Beta Windows Installer 4.5 Support for Superseding Components Use the new Uninstall Superseded Component setting in the Components view to specify how you want Windows Installer 4.5 to handle the selected component during installation of a superseding patch under certain conditions. To specify that this component in the current patch should be flagged for uninstallation in order to avoid leaving this component orphaned on the target system after a superseding patch is applied, select Yes. If a subsequent patch is installed and it is flagged to supersede the first patch, Windows Installer can unregister and uninstall this component if appropriate. If you select No, the superseding patch can leave an orphaned component on the target system, and none of the features remaining components can be maintained. The default value for this setting is No. Windows Installer 4.5 supports this new functionality; earlier versions of Windows Installer ignore this new setting. This feature applies to Basic MSI, InstallScript MSI, Merge Module, and Transform projects. For more information, see the description of the Uninstall Superseded Component setting. To learn more about patch sequences, see Patch Sequencing. Beta Windows Installer 4.5 Support for Running a Custom Action Only During Patch Uninstallation Use the new Run During Patch Uninstall setting for a custom action to indicate whether Windows Installer should run the selected custom action only when a patch is being uninstalled. This setting is available in the Custom Actions and Sequences view of Basic MSI, InstallScript MSI, MSI Database, and Transform projects. It is also available in the Custom Actions view of Merge Module and MSM Database projects. You can also use the Run During Patch Uninstall check box on the Additional Options panel in the Custom Action Wizard to configure the behavior of a custom action. For details about this new functionality, see Run During Patch Uninstall. Beta Support for Windows Installer 4.5 Redistributables InstallShield includes several InstallShield prerequisite files (.prq) for Windows Installer 4.5. This feature applies to Basic MSI and InstallScript MSI projects. For more information, see Adding Windows Installer Redistributables to Projects. Ability to Create Unicode Versions of the Setup.exe and Update.exe Bootstrappers InstallShield now enables you to specify whether you want to create a Unicode version or an ANSI version of the Setup.exe setup launcher for a Basic MSI project. Previously, if your Basic MSI project included a setup launcher, InstallShield always built an ANSI version; it did not include support for building a Unicode version.

InstallShield 2010 User Guide

ISP-1600-UG00

29

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

A Unicode setup launcher can correctly display double-byte characters in the user interface of the setup launcher, regardless of whether the target system is running the appropriate code page for the doublebyte-character language. An ANSI setup launcher displays double-byte characters in the setup launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page. Use the new Setup Launcher Type setting on the Setup.exe tab for a release in the Releases view to specify whether you want to use Unicode or ANSI. Unicode is the default type for all new Basic MSI projects. InstallShield also now enables you to specify whether you want to create a Unicode version or an ANSI version of the Update.exe update launcher for a patch or a QuickPatch package. Use the new Update Launcher Type setting on the Advanced tab for a patch configuration in the Patch Design view to specify whether you want to use Unicode or ANSI. For a QuickPatch project, the Update Launcher Type setting is on the Advanced tab in the Build Settings area of the General Information view. Unicode is the default type for all new patch configurations and QuickPatch packages. For more information, see:

Specifying the Setup Launcher Type (Unicode or ANSI) for a Release Specifying the Update Launcher Type (Unicode or ANSI) for a Patch Package Specifying the Update Launcher Type (Unicode or ANSI) for a QuickPatch Package

Ability to Create a Log File for the Setup.exe Bootstrapper A new /debuglog command-line parameter is available for the Setup.exe setup launcher for Basic MSI and InstallScript MSI projects. Use this command-line parameter to generate a log file for debugging. For more information, see /debuglog. Support for Managed-Code Custom Actions InstallShield lets you add managed-code custom actions to Basic MSI, InstallScript MSI, and Merge Module projects. This type of custom action calls a public method in a .NET assembly that is written in managed code such as Visual Basic .NET or C#. For detailed information, see:

Calling a Public Method in a Managed Assembly Run-Time Requirements for Managed-Code Custom Actions Specifying the Signature for a Managed Method in an Assembly Custom Action Configuring Custom Action Settings

Support for Installing Multiple Instances of a Product InstallShield now includes support for creating an installation that allows an .msi package to be used to install multiple instances of a product in the same context on the same machine. Use the new Multiple Instances tab for a product configuration in the Releases view to define different instances of your product and configure the properties that are associated with each instance.

30

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

At build time, InstallShield creates a product codechanging instance transform for each instance and streams the instance transforms into the .msi package. At run time, the setup launcher displays a new instance selection dialog that lets end users specify whether they want to install a new instance, or update or maintain an already installed instance. In addition, if you build a patch in the Patch Design view for a product whose installation includes multiple-instance support, InstallShield now creates a patch that enables end users to update a specific instance or all instances. At run time, the Update.exe file displays a patch version of the instance selection dialog. A new /instance command-line option is available for Setup.exe and Update.exe. This option lets you specify which instance you want to install, update, or uninstall; it also lets you suppress the instance selection dialog. Multiple-instance support is available for Basic MSI projects. For more information, see:

Installing Multiple Instances of Products Run-Time Requirements for Multiple-Instance Support Configuring Multiple Instances in InstallShield Special Considerations for Multiple-Instance Support Configuring and Building a Release that Includes Multiple-Instance Support Creating Patches for Multiple Instances of a Product Run-Time Behavior for Installing Multiple Instances of a Product Creating a Setup Launcher Multiple Instances Tab for a Product Configuration Setup.exe and Update.exe Command-Line Parameters

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

Microsoft .NET Framework 3.5 (Web Download) Microsoft .NET Framework 3.5 (Full Package) Microsoft .NET Framework 3.5 Language Packs (x86, x64, IA64) Microsoft .NET Framework 3.0 SP1 (Web Download) Microsoft .NET Framework 3.0 Language Packs Microsoft .NET Framework 2.0 SP1 (x86, x64, IA64)

In addition, an updated Microsoft .NET Framework object is available in InstallShield for InstallScript projects. This object includes support for versions 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1 SP1, and 1.0 SP3 of the .NET Framework, including 32-bit, 64-bit x64, and 64-bit Itanium versions. The object also includes all supported language packs, as well as the Web downloader redistributables where available.

InstallShield 2010 User Guide

ISP-1600-UG00

31

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

For more information, see:

Adding .NET Framework Redistributables to Projects Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites Microsoft .NET Framework Object Wizard

New .msi Package Tools InstallShield includes several new tools:

InstallShield MSI Diff enables you to quickly compare two .msi, .msm, .msp, or .pcp files. It lets you apply one or more .msp and .mst files to an .msi file and see the changes in the resulting .msi database. You can also use this tool to compare two InstallShield project files (.ism or .ise) that are saved in binary format. This tool uses color coding to show additions, modifications, deletions, and schema differences. You can easily integrate it with most source code control systems. InstallShield MSI Query lets you test SQL statements using the Windows Installer version of SQL before you run them in your build script. You can quickly see if a SQL statement is formatted correctly and view the results that it generates. InstallShield MSI Sleuth is a diagnostic tool that lets you view the current installed state of a target system. InstallShield MSI Sleuth displays a list of all of the .msi packages that are installed. You can click any .msi package in the list to see the status of its features and components, its known source locations, as well as tables and binary streams within the database. This tool also helps you identify the installed product or products whose packages contain a specific component code. InstallShield MSI Grep searches a collection of .msi and .msm packages for specific text. You can narrow the search to show results for only certain tables or columns.

You can launch any of these tools from the InstallShield Tools subfolder on the Windows Start menu. These InstallShield MSI tools are included with the Premier and Professional editions of InstallShield. The Premier edition also includes a separate installation and extra licenses that let you install just the tools, without InstallShield, on separate machines. For specific terms, see the InstallShield End-User License Agreement. For more information, see Using the InstallShield Tools. Ability to Compress Files that Are Streamed into Setup.exe and ISSetup.dll and to Specify the Compression Level If you build a release that uses a Setup.exe setup launcher or a ISSetup.dll file (which contains the InstallScript engine), InstallShield now compresses files that it streams into the Setup.exe file or the ISSetup.dll file. The default compression level that InstallShield uses offers a balance between file size and time that is required to extract the compressed files at run time. If you want to change the compression level or you do not want to use any compression, you can override the default level through a machine-wide setting. By default, InstallShield does not compress any files that have a .cab file extension when it is streaming them into the Setup.exe file at build time, since .cab files are already a compressed type of file. You can modify this default compression exclusion list to include other file types or specific files as needed. The exclusion list is a machine-wide setting. This feature applies to Basic MSI and InstallScript MSI projects.

32

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

For more information, see Configuring the Compression Level for Files that Are Streamed into Setup.exe and ISSetup.dll. Support for Multi-Part .cab Files The .cab file type has some limitations. For example, the maximum size of a single .cab file is 2 GB. In addition, some users have had trouble signing large .cab files and verifying the digital signature of large signed .cab files. To work around these limitations, InstallShield now has a new default limit of 600 MB for a .cab file. When InstallShield is creating the .cab files for your release and it reaches the limit, it splits the data into two or more .cab files, creating multi-part .cab files. You can modify the maximum size limit if necessary. In addition, if you do not want InstallShield to create multi-part .cab files, you can configure it to create single .cab files. This functionality applies to Basic MSI and InstallScript MSI projects. In addition, it is applicable only if you are building a compressed network image release in which all of the files are embedded in the singlefile .msi package or the Setup.exe setup launcher. This functionality does not apply to custom compression, where only the files that are associated with one or more features are compressed into .cab files. For more information, see Configuring the Maximum Size for .cab Files. Support for Adding an Open Dialog to a Basic MSI Installation to Let End Users Browse to a File InstallShield includes support for launching the Open dialog from one of the dialogs in your Basic MSI installation. End users click a browse button in one of your dialogs, and this launches the Open dialog. The Open dialog lets the end user browse for a file. When the end user selects the file and clicks the Open button, the Open dialog closes, and the installation writes the full path and file name in an edit field on the dialog. The installation also sets the value of the IS_BROWSE_FILEBROWSED property to the path and file name of the file that the end user selected. To use this functionality, you must add to your project the new Windows Installer DLL custom action called FileBrowse. This custom action calls the FileBrowse.dll file. In addition, you must add an edit field control and the browse button that launches the Open dialog, and set a related dialog event. For complete instructions, see Launching a File Open Dialog. Support for Installing IIS 7 Web Sites on Windows Server 2008 InstallShield now lets you create and manage IIS 7 Web sites, virtual directories, Web service extensions, and application pools on Windows Server 2008 systems. This functionality is available in Basic MSI, InstallScript, and InstallScript MSI projects. Microsoft SQL Server 2005 Express SP2 Prerequisite Available InstallShield now includes an InstallShield prerequisite for Microsoft SQL Server 2005 Express Edition SP2. You can add this InstallShield prerequisite to Basic MSI and InstallScript MSI projects. MySQL 5.0 Support InstallShield now lists the 5.0.x versions of MySQL in the predefined list of database servers that you can select when you are specifying in the SQL Scripts view the target database servers that your product supports. Previously, it was necessary to create a custom version requirement. Microsoft Visual Studio 2008 Support InstallShield is now integrated with Visual Studio 2008, enabling development of installations and products within the same Visual Studio interface.
InstallShield 2010 User Guide ISP-1600-UG00 33

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Ability to Convert Visual Studio Setup and Merge Module Projects to InstallShield Projects InstallShield now lets you convert a Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, or Visual Studio .NET setup project (.vdprj) to a Basic MSI project (.ism). In addition, InstallShield enables you to convert a Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, or Visual Studio .NET merge module project (.vdprj) to an InstallShield Merge Module project (.ism). Converting these Visual Studio projects to InstallShield projects enables you to modify the layout of dialogs through a visual Dialog Editor, manage features and components, and use other functionality that is available in InstallShield. To learn more, see Converting Visual Studio Projects to InstallShield Projects. Windows Mobile 6.x Support InstallShield now enables you to specifically target installations for devices with Windows Mobile 6.x Professional, Windows Mobile 6.x Classic, and Windows Mobile 6.x Standard. This applies to Basic MSI, InstallScript MSI, and Smart Device projects. Digital Signing Improvements for Windows MobilePowered Device Installations InstallShield now lets you use a personal information exchange file (.pfx) for digitally signing .cab files that are included in installations for Windows Mobilepowered devices. In addition, you can now specify the password for the digital signature. The Sign the CAB Files panel in the Windows Mobile Wizard and the Smart Device Setup Wizard is where you specify the .pfx file and the password. 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 allowed you to specify .spc and .pvk files for Windows Mobilepowered device files, but not .pfx files. This functionality applies to Basic MSI, InstallScript MSI, and Smart Device projects. Ability to Update or Modify the List of Supported Windows Mobile Platforms The Windows Mobile Wizard and the Smart Device Setup Wizard let you set platform requirements for files that are to be installed to mobile devices. You can select platforms from a predefined list of platforms. If you want to target a platform that is not in the predefined list, or if you want to modify any of the configuration settings that are associated with one of the predefined platforms, you can now do so by editing the Settings.xml file that is installed with InstallShield. Previously, the platform list was not configurable in the Settings.xml file, so it was necessary to upgrade to a new version of InstallShield that included support for new platforms. This applies to Basic MSI, InstallScript MSI, and Smart Device projects. For more information, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings.

34

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Ability to Compress .cab Files for Windows MobilePowered Device Installations The Device Files panel in the Windows Mobile Wizard and the Smart Device Setup Wizard now lets you specify whether you want to compress the .cab files that are created for Windows Mobilepowered devices at build time. Previously, InstallShield did not have any support for building compressed .cab files. This functionality applies to Basic MSI, InstallScript MSI, and Smart Device projects. .NET Compact Framework 3.5 and SQL Server Compact Edition 3.5 Redistributables Now Available for Mobile Devices Several new redistributables are available for mobile device installations: .NET Compact Framework 3.5, SQL Server Compact 3.5, SQL Server Compact 3.5 Replication, and SQL 3.5 Client. This applies to Basic MSI, InstallScript MSI, and Smart Device projects. Arabic (Saudi Arabia) and Hebrew Language Support, and Dialog Editor Support for Right-to-Left Languages InstallShield now includes support for Arabic (Saudi Arabia) and Hebrew languages, which are written and read from right to left. All of the default end-user dialog strings are available in these languages. Since these languages are read from right to left, InstallShield also includes support for mirroring Arabic and Hebrew dialogs; that is, InstallShield uses a right-to-left layout for Arabic and Hebrew dialogs. Thus, for example, buttons that are on the right side of dialogs in English and other left-to-right languages are moved to the left side of right-to-left-language dialogs. In addition, InstallShield uses mirror-image versions of the dialog images that are displayed for the built-in dialog themes. The right-to-left layouts and reversed images are used in the Dialog Editor pane in the Dialogs view of InstallShield, and also at run time. The Arabic and Hebrew support is available in the InstallShield Premier Edition. The Premier edition now includes support for 35 different languages. The following project types include support for this feature: Basic MSI and Merge Module. For more information, see Dialog Support for Right-to-Left Languages. String Entry Validation in InstallScript Files (.rul) When you build a project that includes an InstallScript file (.rul) and the InstallScript code contains one or more references to string entries that use the string constant operator (@), InstallShield now validates the string entries at build time. If a string identifier in the projects InstallScript file is not defined for one of the projects string entries, InstallShield displays build warning -7174. This applies to the following project types: Basic MSI with InstallScript custom actions, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module with InstallScript custom actions. To learn more, see:

Description of build warning -7174 String Constant Operator (@)

InstallShield 2010 User Guide

ISP-1600-UG00

35

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

New FLEXnet Connect 11 Redistributables Available InstallShield includes support for FLEXnet Connect 11 in Basic MSI and InstallScript MSI projects. Use the Update Notifications view in InstallShield to include one of the two FLEXnet Connect 11 merge modulesone has the Common Software Manager, and the other does not.

Enhancements
InstallShield includes the following enhancements. Best Practice Dynamic File Linking When you add or modify a dynamic file link in your project, you can now specify which component creation method you want InstallShield to use: a new best practice method, or the previously available one-component-per-directory method. When best practices for component creation are followed, InstallShield creates a separate component for each portable executable (PE) file in the dynamically linked folder and sets each PE file as the key file of its component. If you later want to create a patch that updates one of the dynamically linked PE files, it is easier to do so than it would be if you had used the one-component-per-directory method. Previously, any time that you added dynamic file links to a project, InstallShield automatically created one component for all of the dynamically linked files at build time. However, if your dynamic file link included PE files, Windows Installer best practices for component creation were not followed. By default, InstallShield considers the following file types to be PE files: .exe, .dll, .ocx, .vxd, .chm, .hlp, .tlb, and .ax. You can modify this list through the new File Extensions tab on the Options dialog box. The automation interface includes support for this new best practice method. The ISWiDynamicFileLinking object includes a new CreateBestPracticeComponents property that lets you specify whether you want to use the best practice method, or the previously available one-componentper-directory method for a dynamic file link. When you create a new dynamic file link using the AddDynamicFileLinking method, the best practice method is used by default. The best practice dynamic file linking applies to Basic MSI, InstallScript MSI, and Merge Module projects. To learn more, see:

Determining the Appropriate Component Creation Method for Dynamically Linked Files Dynamic File Link Settings Dialog Box File Extensions Tab ISWiDynamicFileLinking Object AddDynamicFileLinking Method

Ability to Hide Setup Prerequisites from the List of Prerequisites to Be Installed If a target system needs one or more setup prerequisites to be installed, the setup prerequisite dialog is displayed at run time before the main installation runs. The Behavior tab in the InstallShield Prerequisite Editor has a new check box that lets you specify whether you want a setup prerequisite to be hidden from the list of prerequisites in the prerequisite dialog. If a prerequisite is hidden, it is installed when the conditions require it, even though it is not listed as one of the prerequisites that needs to be installed.

36

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

New prerequisites and existing prerequisites that were created before this functionality was available are not hidden by default. You can change this behavior by selecting the new check box on the Behavior tab. For more information, see Specifying Whether to Include the Name of a Prerequisite in the List of Setup Prerequisites to Be Installed on the Target System. Ability to Show the Progress of an InstallShield Prerequisite Installation at Run Time The Behavior tab in the InstallShield Prerequisite Editor has a new check box that lets you specify whether you want the prerequisite installation to show installation progress messages from Windows Installer at run time. This augments the progress bar to reflect the current progress status of the .msi installation. This functionality is available only if the prerequisite launches an .msi file; it is not possible if the prerequisite launches a Setup.exe file. For more information, see Specifying Whether to Show the Progress of an InstallShield Prerequisite Installation at Run Time. For new prerequisites and existing prerequisites that were created before this functionality was available, the progress is not shown by default. You can change this behavior by selecting the new check box on the Behavior tab. Note that if you specify that you want to show the progress, only some of the available command-line parameters are supported. To learn more, see Specifying Command-Line Parameters for an InstallShield Prerequisite. Ability to Use Windows Installer Properties in Command-Line Statements for InstallShield Prerequisites Basic MSI and InstallScript MSI installations now can substitute and pass the following properties on setup prerequisite command lines: ProductLanguage, ISPREREQDIR, SETUPEXEDIR, and SETUPEXENAME. You can use these properties to identify the launching installation ("[SETUPEXEDIR]\[SETUPEXENAME]"), to identify full paths to files that are included in the prerequisite ("[ISPREREQDIR]myconfig.ini"), or to pass the selected language to multilingual prerequisites such as an InstallShield setup launcher (/l[ProductLanguage]). The new feature prerequisites include commandline support for any Windows Installer property, including the aforementioned properties. You can specify the command lines on the Application to Run tab of the InstallShield Prerequisite Editor. For more information, see Specifying Command-Line Parameters for an InstallShield Prerequisite. New Option for Reboot Behavior of InstallShield Prerequisites The Behavior tab of the InstallShield Prerequisite Editor is where you specify how an InstallShield prerequisite installation should proceed if it appears that the target machine needs to be restarted. The If the prerequisite appears to need a reboot list is where you specify the behavior. This list has a new option, called Note it, fail to resume if the machine is rebooted, and reboot after the installation. If it appears that a restart is required at run time but you want to postpone it until the end of the main installation (or until a subsequent prerequisite triggers a restart), select this new option. For more information, see Behavior Tab. Support for Single-File, Compressed InstallScript Installations of up to 4 GB A single-file, compressed InstallScript installation can now be up to 4 GB in size. Previously, when end users ran large single-file, compressed InstallScript installations, the installations crashed during setup initialization.

InstallShield 2010 User Guide

ISP-1600-UG00

37

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Note that Setup.exe files cannot exceed 4 GB because Windows will not load an executable file that is larger than 4 GB. Ability to Install IIS Web Sites Without Virtual Directories and to Associate Web Sites with Components InstallShield now includes support for installing IIS Web sites without any virtual directories. In addition, the General tab that InstallShield displays when you select a Web site in the Internet Information Services view now has a Component setting; use this setting to associate the selected Web site with a component. As a result of these enhancements, a Web site is created on a target machine if a virtual directory or a component that is associated with it is installed. If a Web site is associated with a component, the Web sites Delete Web Site on Uninstall check box corresponds with the Permanent setting for that component in a Basic MSI or InstallScript MSI project, or with the Uninstall setting for that component in an InstallScript project. That is, if you select or clear the Delete Web Site on Uninstall check box for a Web site, InstallShield automatically updates the value of the components Permanent setting or Uninstall setting, as appropriate. Previously, InstallShield did not include support for associating Web sites with components. Therefore, if a Web site in an installation did not have any virtual directories, the Web site would not be created at run time. If you add a new Web site through the Internet Information Services view in InstallShield 2009, InstallShield automatically associates that Web site with a component. If you upgrade an InstallShield 2008 or earlier project that already has an IIS Web site, InstallShield does not automatically associate that Web site with a component. The following project types support these IIS enhancements: Basic MSI, InstallScript, and InstallScript MSI. Note that if a Web site is associated with a component in an InstallScript project, any virtual directories that are added to that Web site must be associated with the same component. Therefore, if you try to change the component for a Web site that contains one or more virtual directories, InstallShield displays a message box to inform you that it will also make the same component change for all of that Web sites virtual directories; InstallShield also displays this message box if you try to change the component for any virtual directories in a Web site. In either case, the message box enables you to proceed or cancel the component change. For Basic MSI and InstallScript MSI projects, keeping a Web site in the same component as all of the Web sites virtual directories is not required, but it is recommended. To learn more, see:

Creating a Web Site and Adding an Application or a Virtual Directory Feature and Component Associations for IIS Support Uninstalling Web Sites, Applications, and Virtual Directories

Simplification of QuickPatch Packages InstallShield now offers the ability to build streamlined QuickPatch packages, which typically have fewer new subfeatures and built-in InstallShield custom actions than those built in earlier releases of InstallShield. A new Streamline QuickPatch setting on the Advanced tab in QuickPatch projects lets you specify whether InstallShield should create this new simpler type of QuickPatch package. For more information, see:

38

Specifying Whether to Streamline the QuickPatch Package

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Advanced Tab

Ability to Build a Patch from the Command Line and from MSBuild The -patch_config command-line parameter is available for command-line builds (including the Standalone Build command-line builds) with ISCmdBld.exe. Use this parameter to build a patch from the command line. If you use an .ini file to pass parameters to the command line, you can use the new PatchConfigName parameter in the [Project] section of your .ini file to indicate the patch configuration that you want to build. In addition, the InstallShield task for MSBuild now includes a PatchConfiguration parameter, which you can use to specify the patch configuration that you want to build through MSBuild. To learn more, see:

ISCmdBld.exe Passing Command-Line Build Parameters in an .ini File Microsoft Build Engine (MSBuild)

Ability to Password-Protect Patches and QuickPatch Packages InstallShield now has new password settings that let you password-protect patches and QuickPatch packages. These settings are on the Advanced tab in the Patch Design view of Basic MSI and InstallScript MSI projects, and on the Advanced tab of QuickPatch projects. If you password-protect a patch or QuickPatch package, any end user who wants to install the package must enter a case-sensitive password to launch your update. To learn more, see the following:

Password-Protecting a Patch Package Password-Protecting a QuickPatch Package Advanced Tab (for a patch configuration in the Patch Design view) Advanced Tab (for a QuickPatch project)

Patch and Upgrade Validation Support in QuickPatch Projects When you build QuickPatch projects, InstallShield now runs patch and upgrade validation. This validation helps identify some common problems that may be encountered when attempting to upgrade a product with a QuickPatch package. Previously, the patch and upgrade validation was available only for Basic MSI projects and InstallScript MSI projects, and patches that were created in the Patch Design view. To learn more, see Validating Upgrades, Patches, and QuickPatch Packages. Ability to Select Multiple .cub Files for Performing Validation at Build Time The Validation tab on the Options dialog box in InstallShield now lets you specify more than one .cub file that should be used to validate your installation package or merge module when it is built from within InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

39

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

In addition, you can now pass more than one .cub file through the -m command-line parameter for command-line builds (including the Standalone Build command-line builds) with ISCmdBld.exe. If you use an .ini file to pass parameters to the command line, you can now specify more than one .cub file for the CubFile parameter in your .ini file. The RunMsiValidator parameter of the InstallShield task for MSBuild has been enhanced to accept more than one .cub file. For more information, see:

Requirements for the Certified for Windows Vista Program Validating an Installation Package or Merge Module Specifying Whether Validation Should Be Performed at Build Time Validating an Installation Package or Merge Module Validation Tab (on the Options dialog box) Build Menu ISCmdBld.exe Passing Command-Line Build Parameters in an .ini File Microsoft Build Engine (MSBuild)

New Validator for the InstallShield Best Practice Suite ISBP20 is a new validator that is available with the InstallShield Best Practice Suite. ISBP20 verifies that no registry entries contained in the Registry table attempt to remove root-level registry keys or other keys that would cause adverse issues on target machines during uninstallation. The InstallShield Best Practice Suite is available in the Premier edition of InstallShield for Basic MSI, InstallScript MSI, and MSI Database projects. Ability to Use the /v Command-Line Parameter More than Once to Pass More than One Parameter from Setup.exe to the .msi File If you want to pass more than one argument from Setup.exe to Msiexec.exe, you can use the /v option multiple times at the command line, once for each argument. Previously, the /v option could be used only once, and all parameters were passed through this instance. The following project types include support for this enhancement: Basic MSI and InstallScript MSI. For more information, see Setup.exe and Update.exe Command-Line Parameters. Improved Compatibility Between the Standalone Build and InstallShield The Standalone Build that is available with InstallShield Premier Edition now uses the same directory structure that InstallShield uses for its program files. Therefore, if you need to copy a redistributable or some other file from a machine that has InstallShield to a machine that has the Standalone Build, use the same relative path. Previously, the directory structures were different and inconsistent. In addition, the ISCmdBld.exe file that is used for command-line builds with InstallShield is now installed with the Standalone Build. Previously, the Standalone Build used IsSaBld.exe, a different file, for command-line builds. ISCmdBld.exe now supports parameters that previously only IsSaBld.exe supported:
40 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

-o <merge module search path>Specifies one or more comma-delimited folders that contain the merge module (.msm) files referenced by your project. -t <Microsoft .NET Framework path>Specifies the path to the Microsoft .NET Framework. The path is the location of the .NET Framework that is installed on the build machine.
-hIndicates

that you want to skip the upgrade validators at the end of the build. the minimum version of Windows Installer that the

-g <minimum target MSI version>Specifies

installation requires on the target machine.


-j <minimum target Microsoft .NET Framework version>Specifies the minimum version of the .NET Framework that the installation requires on the target machine.

Also as part of this enhancement, the Standalone Automation Interface uses the same that InstallShield uses, but it is installed to a different location. If you have existing automation scripts that work with the InstallShield Automation Interface, you no longer need to change the library name from IswiAutoN to SAAutoN throughout the scripts in order to use them with the Standalone Automation Interface. Note that with this change, the ISWiProject object includes support for several properties that were previously available for only the Standalone Automation Interface:
ISWiAutomation15.dll file

DotNetFrameworkPath MergeModuleSearchPath MinimumTargetDotNetVersion MinimumTargetMSIVersion SelfRegistrationMethod SkipUpgradeValidators

An advantage of these compatibility improvements is that only one set of binaries, rather than two separate sets, is built for the Standalone Build and InstallShield; if an InstallShield hotfix or service pack is released, it can be used to update the Standalone Build and InstallShield. Previously, separate hotfixes and service packs were required. To learn more, see:

Installing the Standalone Build on a Build Machine Adding Redistributables to the Build Machine for the Standalone Build Standalone Command-Line Build Standalone Automation Interface Installing the Standalone Build and InstallShield on the Same Machine ISCmdBld.exe ISWiProject Object

Support for Browsing to Local, Remote, and Alias SQL Servers in the SQLBrowse Run-Time Dialog The filter functionality of the SQLBrowse dialogs has been enhanced.

InstallShield 2010 User Guide

ISP-1600-UG00

41

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

To show only remote servers in the SQL Server browse combo box and list box controls in Basic MSI and InstallScript MSI installations, you can set the new Windows Installer property IS_SQLSERVER_REMOTE_ONLY. To show only server aliases in the SQL Server browse combo box and list box controls in Basic MSI and InstallScript MSI installations, you can set the new Windows Installer property IS_SQLSERVER_ALIAS_ONLY. Previously, the only filtering that was available was showing only local servers; this is available if you set the IS_SQLSERVER_LOCAL_ONLY property. You can now set any combinations of these properties to display multiple types of servers in the SQL Server browse combo box and list box controls. To learn more, see Overriding the Default SQL Run-Time Behavior. Two new InstallScript functions are available for InstallScript projects:

SQLRTSetBrowseOptionThis function lets you specify whether the SQL Server browse combo box and list box controls show local servers, remote servers, server aliases, or a combination of these types. SQLRTGetBrowseOptionThis function returns the current value of the browse option for the SQL Server browse combo box and list box controls, which can display local servers, remote servers, server aliases, or a combination of these types.

Ability to Continue an Installation If the Minimum SQL Database Server Requirements Are Not Met The Requirements tab that is displayed when you select a SQL connection in the SQL Scripts view has a new Allow installation to continue when minimum requirements are not met check box. If you select this check box and the minimum database server requirements are not met on a target system, the run time skips the SQL connection and all of its SQL scripts, and continues with the installation. If you clear this check box and the minimum requirements are not met, the installation does not allow the end user to continue with the rest of the installation. This is the default behavior. This enhancement applies to Basic MSI, InstallScript, and InstallScript MSI projects. For more information, see Requirements Tab. SQL Server Alias Support The SQL run-time support has been enhanced: installations can now list SQL Server alias names in the SQLBrowse dialog. In addition, the SQLLogin dialogs let end users use an alias name to connect to a SQL Server. This enhancement applies to Basic MSI, InstallScript, and InstallScript MSI projects. To learn more, see Adding a New SQL Connection. Predefined System Searches for the .NET Framework InstallShield has several new predefined system searches:


42

Microsoft .NET Framework 3.5 Microsoft .NET Framework 3.0 SP1 Microsoft .NET Framework 3.0 Microsoft .NET Framework 2.0 SP1 Microsoft .NET Framework 2.0
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Microsoft .NET Framework 1.1 Microsoft .NET Framework 1.0

If your installation requires any of these, 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. This enhancement applies to Basic MSI and InstallScript MSI projects. DIM Dependency Enhancements A new DIMs tab on the Options dialog box lets you specify the location where InstallShield should search for DIM dependencies when you add a DIM reference to a project. In addition, InstallShield now automatically adds any of the DIM references dependent DIM files to your project. To learn more, see:

Identifying the Location of DIM Dependencies DIMs Tab

Expanded Support for the Error Type of Custom Action The Custom Action Wizard now includes support for a type 19 custom action, which displays a specified error message, returns failure, and ends the installation. Previously, the only way to create this type of custom action was to right-click the Custom Actions explorer in the Custom Actions and Sequences view and then click Error, or to use the Direct Editor to manually enter the custom actions table entry. The following project types now support the error custom action: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform. Previously, only Basic MSI and InstallScript MSI projects included support. Ability to Specify Whether to Digitally Sign Source Files The Signing tab in the Releases view has a new Sign files in their original location check box. This check box lets you specify whether you want InstallShield to sign your original source files or just the files that are built into the release. This check box is also available on the Digital Signature Options panel in the Release Wizard. The check box is cleared by default. The benefit of selecting this check box for a Basic MSI or InstallScript MSI project is that it helps create one patch that updates both compressed and uncompressed versions of a release that contains originally unsigned files. Previously, the check box was not available, and InstallShield never enabled you to sign the files in their original location. The automation interface now includes support for this new digital signing functionality. The ISWiRelease object includes a new SignFilesInPlace property that lets you specify whether you want InstallShield to sign your original source files or just the files that are built into the release. To learn more, see:

Signing Tab for a Release Digital Signature Options Panel Digital Signing and Security
ISP-1600-UG00 43

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

ISWiRelease Object

Improved Static COM Extraction If you use static COM extraction, InstallShield now uses an MD5 algorithm when generating primary keys for the Registry table. Therefore, if the COM data does not change, the primary keys do not change between different versions of a package and when the extracted COM data is refreshed. Previously, InstallShield used random values for the primary keys that it created during static COM extraction. As a result, if the COM data were refreshed or a patch were built, it was possible for new primary keys to be created, even if the COM data had not changed. In the patch scenario, the COM data would be included in the patch if the primary keys changed. If a patch updated a component with unchanged COM data, the COM data could be removed during patch uninstallation, and this could cause issues in the earlier version of the product. This enhancement applies to Basic MSI and InstallScript MSI projects. Rollback Support for Windows Mobile Device Installations InstallShield now includes support for rolling back a Windows Mobilepowered device installation that is included in a desktop-to-device installation. Thus, if an end user clicks the Cancel button during the installation of a product for a Windows Mobilepowered device, the installation is rolled back, and any associated .ini files, .cab files, and .ico files are deleted. ProjectSchemaVersion Property Value for Saving the Current Project as an InstallShield 2008 Project You can save an InstallShield 2009 project as an InstallShield 2008 project (.ism) through the automation interface by using the new epv140 value for the PropertySchemaVersion property of the ISWiProject object. For more information, see the description of the ProjectSchemaVersion property. InstallScript Language Enhancements and New Functionality Some enhancements have been made to the InstallScript language.
Enhancements for .NET Framework 3.5 and .NET Framework 3.0 SP1 Support

A new FOLDER_DOTNET_35 InstallScript variable is available. This variable stores the path of the .NET Framework 3.0 files. Two new constants are available for use with the function Is:

REGDB_KEYPATH_DOTNET_35 REGDB_KEYPATH_DOTNET_30_SP

You can use the REGDB_KEYPATH_DOTNET_30_SP variable when querying whether SP1or a later service packof the .NET Framework 3.0 is installed. To detect whether the RTM version of the .NET Framework 3.0 is installed, use REGDB_KEYPATH_DOTNET_30.
New GetTempFileNameIS Function that Calls the Windows API GetTempFileName to Create a Temporary File

A new InstallScript function called GetTempFileNameIS is available. This function calls the Windows API GetTempFileName to create a temporary file and perform related actions. To learn more, see GetTempFileName.

44

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Whats New in InstallShield 2008


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 filesincluding your products executable filesin 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 signature files granted to you by a certification authoritythat 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. Note that InstallShield does not support not support using .pfx files to sign media header files (.hdr files), which are used for the One-Click Install type of installation for InstallScript projects. For this type of installation, consider one of the following alternatives:

Use .spc and .pvk files instead of a .pfx file for your digital signature. Build a compressed installation, which would enable you to sign with a .pfx file.

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
ISP-1600-UG00 45

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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, 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.

46

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 buttons 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 buttons 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. Windows Embedded CE 6.x Support InstallShield now enables you to specifically target installations for Windows Embedded CE 6.x. This applies to Basic MSI, InstallScript MSI, and Smart Device projects. In addition, the Windows Mobile Wizard now enables you to specify configuration XML files for any Windows Mobile device installations. Previously, only Smartphone device installations could include configuration XML files. Windows Mobile 5.0 for Smartphone Support InstallShield now enables you to specifically target installations for Windows Mobile 5.0 for Smartphone devices. Previously, you had to select the Smartphone 2003 option if you wanted to include support for Windows Mobile 5.0 for Smartphone devices in your installation. This applies to Basic MSI, InstallScript MSI, and Smart Device projects.

InstallShield 2010 User Guide

ISP-1600-UG00

47

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Updated DirectX 9.0c Objects Two DirectX 9.0c objects are available with InstallShield: a Windows Installerbased 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 files 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 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

48

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 2008related 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. Support for .NET Compact Framework 2.0 SP1 InstallShield now adds to your project the .NET Compact Framework 2.0 SP1 if you select .NET Compact Framework 2.0 in the Windows Mobile Wizard, and if .NET Compact Framework 2.0 SP1 is available on your system. The .NET Compact Framework 2.0 SP1 must be installed, or it must be added to the Support folder in the InstallShield Program Files folder. This applies to Basic MSI, InstallScript MSI, and Smart Device projects. 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. Updated MSDE 2000 SP4 Object for InstallScript Projects The MSDE 2000 object for InstallScript projects now contains the MSDE 2000 SP4 files. For more information about objects, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects. 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.

InstallShield 2010 User Guide

ISP-1600-UG00

49

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 Postbuild 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:

50

Custom Actions and Sequences View (or Custom Actions View)


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 computers 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 computers 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 panesthe Source computers folders pane and the Source computers files panein 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 upperright corner. Use this new link to show or hide the two top panesthe Source computers folders pane and the Source computers files panein 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.
PropertySchemaVersion Property Value for Saving the Current Project as an InstallShield 12 Project

You can now save an InstallShield 2008 project as an InstallShield 12 project (.ism) through the automation interface by using the new epv120 value for the PropertySchemaVersion property of the ISWiProject object. For more information, see the description of the PropertySchemaVersion property.
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.

InstallShield 2010 User Guide

ISP-1600-UG00

51

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 components 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:


52

ISWiLanguage Object ISWiLanguages Collection ISWiStringEntry Object ISWiStringEntries Collection AddStringEntry Method DeleteStringEntry Method
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 components 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.

InstallShield 2010 User Guide

ISP-1600-UG00

53

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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.

54

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 installations 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 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

InstallShield 2010 User Guide

ISP-1600-UG00

55

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 installations 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 propertys 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 permachine context with administrative privileges.

56

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

If you upgrade a project that was created with InstallShield 12 or earlier to InstallShield 2010, 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 2010, 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
IsSaBld.exe.

The -y command-line parameter is available for command-line builds with ISCmdBld.exe and 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
IsSaBld.exe.

The -z command-line parameter is available for command-line builds with ISCmdBld.exe and 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)

InstallShield 2010 User Guide

ISP-1600-UG00

57

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 userspecified 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 defaulteither 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:
58 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 2010, 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 by default: C:\Program Files\InstallShield\2010\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 Add DIM References to Merge Module Projects Merge Module projects now include the DIM References view, which was previously available in only Basic MSI projects. The DIM References view lets you add .dim files that were created with InstallShield Collaboration or InstallAnywhere Collaboration to your project. InstallShield enables you to add a merge module that contains .dim files to any project type that supports merge modulesfor example, Basic MSI, InstallScript, and Direct MSI projects. You can also add a merge module that contains .dim files to another merge module as a dependency. For more information, see:
InstallShield 2010 User Guide ISP-1600-UG00 59

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Referencing DIM Files in a Project DIM References View

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.

60

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 dialogas well as the splash screen, if one is includedwhen 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.

InstallShield 2010 User Guide

ISP-1600-UG00

61

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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

62

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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 installations 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 packor a later version of the service packof 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:

SQLRTInitialize2Loads 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. SQLServerSelectLogin2Creates 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. SQLDatabaseBrowseCreates a dialog that lets the end user display a list of all database catalogs available on the specified database server. SQLBrowse2Creates 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.

InstallShield 2010 User Guide

ISP-1600-UG00

63

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

SQLRTPutConnectionInfo2Sets 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:

SQLRTGetLastError2Returns 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. SQLRTGetErrorMessageReturns the descriptive message of the last error encountered by the SQL run time when a connection is being opened. SQLRTGetScriptErrorMessageReturns 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:

SQLRTTestConnection2Establishes 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 2010, 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.

64

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

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.

InstallShield 2010 User Guide

ISP-1600-UG00

65

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Whats New in InstallShield 12 SP1


InstallShield 12 supports a beta version of Microsoft Windows Vista. InstallShield 12 SP1 includes changes that offer support for the RTM version of Microsoft Windows Vista.

New Microsoft .NET 3.0 Prerequisite Available


InstallShield now includes a .NET Framework 3.0 setup prerequisite that you can add to Basic MSI and InstallScript MSI projects. To learn more about setup prerequisites, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects.

Ability to Minimize the Number of UAC Prompts by Advertising as Part of Prerequisite Installation
Use the new Advertise If Prerequisites Are Elevated setting in the Releases view to specify whether your .msi file should be advertised and run after the setup prerequisites in the installation have been successfully installed with elevated privileges on Windows Vista machines. The advertisement may allow end users to avoid the User Account Control (UAC) prompt that would otherwise be displayed for an .msi package that requires elevated privileges. For more information, see Specifying Whether a Product Should Be Advertised If Its InstallShield Prerequisites Are Run with Elevated Privileges. The Advertise If Prerequisites Are Elevated setting is one of several settings in InstallShield that affect whether an installation triggers UAC consent or credential prompts for elevated privileges. Understanding these different settings will help you create the appropriate UAC experience for your installation when end users run it on Windows Vista systems. It will also enable you to try to minimize the number of UAC prompts that are displayed during your installation. To learn about all of these settings, see Minimizing the Number of User Account Control Prompts During Installation.

Enhanced Validation for the Certified for Windows Vista Program


InstallShield includes several new InstallShield internal consistency evaluators (ISICEs) that help you ensure that your installation follows the best practices outlined in the Certified for Windows Vista program. The new evaluatorsISICE11 through ISICE20check that all .exe files have embedded manifests, that none of the protected registry keys have been modified, that the .dll and .exe files do not use any obsolete API calls, and more. In addition, ISICE02 now verifies that .ocx, .sys, .cpl, .drv, and .scr files are signed. Previously, ISICE02 verified only that .exe files are signed. ISICE06 now checks the destination path of files that are in your installation and that have the same name as a Windows Protected File. If the destination path for the file in your installation does not match the location of the Windows Protected File, ISICE06 now displays a validation warning instead of a validation error. When you validate your package, InstallShield lists any validation messages on the Tasks tab of the Output window. Now you can double-click a validation message on the Tasks tab to jump to the area of the Direct Editor that corresponds to the validation message. This functionality is available for ISICEs, as well as for standard ICEs. Previously, it was available only for standard ICEs. For more information, see:

ISICEs Viewing Validation Results

66

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Additional Changes
For a list of issues that are resolved in InstallShield 12 SP1, see the release notes. The release notes are available from the Help menu in InstallShield.

Whats New in InstallShield 12


New Features
InstallShield includes the following new features. Ability to Target Windows Vista Systems InstallShield enables you to specify that your installation requires Windows Vista. It also lets you build Windows Vistarelated conditions for features and components. Validation for the Certified for Windows Vista Program To provide the best possible installation experience for end users, ensure that your installation follows the best practices outlined in the Certified for Windows Vista program. InstallShield now includes a validation suite that helps you verify that your installation meets the installation requirements of the Certified for Windows Vista program for Basic MSI and InstallScript MSI projects. If you want to be able to use the Windows Vista Logo artwork, your applications installation must meet the programs requirements. In addition, InstallShield now lets you customize the list of internal consistency evaluators (ICEs) that should be used for installation package validation and merge module validation. This is helpful if you do not want to pursue logo certification but you still want to ensure that your installation or merge module meets specific best practices that are verified during validation. To configure validation settings: on the Tools menu, click Options and select the Validation tab. To learn more, see the following:

Specifying Whether Validation Should Be Performed at Build Time Specifying Which ICEs, ISICEs, and ISBPs Should Be Run During Validation ISICEs

User Account Control Support InstallShield includes support for the User Account Control functionality that Microsoft added for Windows Vista. Use the new Require Administrative Privileges setting in the General Information view to specify at a project-wide basis whether administrative privileges are required for an installation. Also, use the Required Execution Level setting in the Releases view to specify the minimum level required by your installations Setup.exe file for running the installation (the setup launcher, any setup prerequisites, and the .msi file) on Windows Vista platforms. For details, see:

Entering Summary Information Stream Data Specifying the Required Execution Level for Your Setup Launcher on Windows Vista Platforms

InstallShield 2010 User Guide

ISP-1600-UG00

67

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Support for Minimizing Reboots Through the Restart Manager Infrastructure Restarting the system after an installation is inconvenient for end users. One of the Certified for Windows Vista program requirements is that all installations must contain an option that enables end users to automatically close applications and attempt to restart them after the installation is complete. To support this quality guideline, an MsiRMFilesInUse dialog is available in all Basic MSI projects. The installation displays this dialog if one or more files that needs to be updated are currently in use during the installation. To learn more, see Minimizing Reboots on Windows Vista Systems. Digital Signature Enhancements If you specify digital signature information for your installation, InstallShield automatically adds the necessary information to the MsiDigitalCertificate and MsiPatchCertificate tables. The MsiPatchCertificate table contains the information that is needed to enable User Account Control (UAC) patching. This enables you to create patches that can be installed by non-administrators. In addition, the Build Installation page in the Project Assistant now offers the ability to specify digital signature information for your installation. For more information, see:

Preparing Installations for Non-Administrator Patches Digital Signing and Security

Support for Documentation about Custom Action Behavior The intended behavior of each custom action must be documented for the Certified for Windows Vista program. This is especially helpful if system administrators deploy your product to enterprise environments; they sometimes need to know what the custom actions do. InstallShield now has a new Help File Path setting in the Custom Actions view to help you meet this requirement. Use this setting to specify the path of a document that describes the behavior of a custom action that you create for your project. For details, see:

Documenting the Behavior of Custom Actions Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program

This documentation now describes each of the built-in InstallShield custom actions that are added automatically to InstallShield projects to support different functionality. See InstallShield Custom Action Reference. Setup Prerequisite Enhancements Many enhancements have been made to the Setup Prerequisite Editor:

The user interface has been improved; it now has menus that list easy-to-access commands. The new Behavior tab lets you specify whether end users may skip the prerequisite installation. You can also specify how the prerequisite installation should proceed if it appears that the target machine does or does not need to be restarted. Now you can create prerequisite installation conditions for DWORD registry comparisons. You can also create conditions for 64-bit machines.

For more details, see:

68

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Behavior Tab Allowing End Users to Choose Whether to Install an InstallShield Prerequisite Planning for Issues that Could Occur with an InstallShield Prerequisite Installation Specifying the Behavior for an InstallShield Prerequisite that Requires a Restart

Redistributing setup prerequisites is now more flexible than ever. You can specify different methods for supplying each individual setup prerequisite in your installation. This enables you to store some of the setup prerequisite files on the source media; compress some of the setup prerequisite files into Setup.exe, to be extracted at run time; and download some of the setup prerequisite files. In addition, you can now assign release flags to setup prerequisites. Then you can include and exclude any combinations of setup prerequisites when you build different releases. To learn more, see:

Specifying a Location for a Specific InstallShield Prerequisite Specifying the Location for InstallShield Prerequisites at the Release Level Assigning Release Flags to InstallShield Prerequisites

Windows Installer 4.0 Log File Support on a Project-Wide Basis InstallShield provides support for the option to easily log installations run with Windows Installer 4.0 on a project-wide basis without having to use the command line or configure log parameters through the registry. To enable logging, specify Yes in the new Create MSI Logs setting in the General Information view. To override the default logging parameters, edit the MsiLogging property in the Property Manager view. If the installation is run on a target system that has Windows Installer 4.0, the installer creates a log file and populates the MsiLogFileLocation property with its path. In addition, a Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. For more information, see Specifying Whether Windows Installer Installations Should Be Logged. Registry Reflection Support for 64-Bit Systems InstallShield includes support for the new Windows Installer 4.0 attribute called msidbComponentAttributesDisableRegistryReflection in the Component table. To easily configure this attribute, set the Disable Registry Reflection setting for a selected component in the Components view. Registry reflection keeps the 32-bit registry view and the 64-bit registry view in sync on a target machine. Only 64-bit systems with Windows Installer 4.0 support this setting. Other systems ignore it. For more specific information, see Enabling and Disabling Registry Reflection. Multilingual User Interface (MUI) Support If you are preparing an installation for a multilingual application and Windows Installer 4.0 will be running the installation, you can now use InstallShield to create shortcuts that include support for the Windows multilingual user interface (MUI). Four new settings are available in the Shortcuts view for a selected shortcut:

Display Resource DLL Display Resource ID Description Resource DLL

InstallShield 2010 User Guide

ISP-1600-UG00

69

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

Description Resource ID

These new settings correspond with the four new columns in the Shortcut table for Windows Installer 4.0. To learn more, see Shortcuts View. Pocket PC Windows Mobile 5.0 and Windows CE .NET 5.0 Support InstallShield now enables you to specifically target installations for Pocket PC Windows Mobile 5.0 and Windows CE .NET 5.0 mobile devices. For more information about installations for mobile devices, see Windows Mobile Wizard/Smart Device Setup Wizard. .NET Compact Framework 2.0 and Other Mobile Device Redistributables Now Available Several new redistributables are available for mobile device installations: .NET Compact Framework 2.0, SQL Mobile 2005, SQL Client 2.0, and SQL Mobile 2005 Replication. In addition, installations for Smartphone 2002 and 2003 now support redistributables. Expanded Digital Signing for Mobile Devices All mobile device platforms now support digital signing. Previously, digital signing was available for Smartphone 2002 and 2003 only. Repackager Project Conversion Tool Available in Premier Edition Installations created for the Windows Installer service dramatically differ from traditional installations, making it impossible to reuse legacy installations without a repackaging tool. Repackager assists you by capturing the data placed on your system during installation and converting it into a Windows Installer package, which you can then customize and distribute according to your organizations needs. To learn more, see the help library that is included with this tool. Additional InstallShield Collaboration Licenses for Premier Edition InstallShield Premier Edition now includes a five-pack of licenses for InstallShield Collaboration for Visual Studio. You can use these licenses to install InstallShield Collaboration on development systems that do not have InstallShield but do have Visual Studio .NET 2002, Visual Studio .NET 2003, or Visual Studio 2005. InstallScript Rearchitecture Enhancements for InstallScript MSI Projects and Basic MSI Projects with InstallScript Custom Actions The InstallScript MSI architecture has had a number of issues with security (COM/DCOM) and other areas that can cause some installations to fail for various reasons. The architecture has been improved dramatically for InstallShield 12 to resolve these issues and to make InstallScript MSI a more reliable project type. The improvements also help increase the reliability of Basic MSI projects that include InstallScript custom actions. To learn more, see the following:

Run-Time Behavior for Basic MSI Installations with InstallScript Custom Actions Run-Time Behavior for InstallScript MSI Installations Upgrading Projects from InstallShield 11.5 or Earlier

70

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 What Was New in Earlier Versions of InstallShield

DIFx 2.01 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. Enhancements for Setup.exe and Update.exe Command-Line Parameters Some of the command-line parameters for Setup.exe and Update.exe were added or modified:

/clone_wait

(InstallScript only) MSI, InstallScript, and InstallScript MSI) only)

/runfromtemp (Basic

/v"ISSCRIPTCMDLINE=\"<Option1> <Option2>\"" (Basic MSI

/hide_progress (Basic MSI, InstallScript, and InstallScript MSI projects) /hide_splash (InstallScript and InstallScript MSI projects)

For more information, see Setup.exe and Update.exe Command-Line Parameters. Registry and File Filtering Enhancements for COM Extraction and Dependency Scanners To prevent InstallShield from extracting undesired COM data from a COM server, you can edit a new
Filters.xml file that is installed with InstallShield. Editing this Filters.xml file enables you to customize

the list of registry keys that will be excluded from COM extraction. The Filters.xml file also now lists files that the Static, Dynamic, and Visual Basic dependency scanners will exclude or include. Previously, two different filesUserscan.ini and Iswiscan.iniwere used to list excluded and included files. For more information, see:

Filtering Registry Changes for COM Extraction Filtering Files in Dependency Scanners

Internet Explorer 7.0 Compatibility Several areas of InstallShield have been revised so that it is now compatible with Internet Explorer 7.0. The Transform Wizard, Custom Action Wizard, the String Table Editor, the Distribute view, and the General Information view are all examples of areas that have been updated. Enhanced Start Page The list of recently opened projects that are displayed on the Start Page now includes a column that shows the project type. In addition, the maximum number of projects that are listed has been increased from four to eight. InstallScript Enhancements and New Functionality Several enhancements have been made to the InstallScript language. New and revised variables, functions, and constants are now available.
System Variable Changes and Text Substitution Additions

A system variable called DISK1SETUPEXENAME has been added. Two system variables have new default values:
InstallShield 2010 User Guide ISP-1600-UG00 71

Chapter 1: InstallShield 2010 Target System Requirements

UNINST UNINSTALL_STRING

Two new InstallScript text substitutions are available: DISK1SETUPEXENAME SELECTED_LANGUAGE

For more information, see System Variables.


Script Variable Additions

Two new script variables are available:

INSTALLSCRIPTMSI BASICMSI

Function and Predefined Constant Changes

A new LANGUAGE_SUPPORTED predefined constant is available for use with the Is function. To learn more, see Is. A new ISOSL_WINVISTA predefined constant is available for use with the FeatureFilterOS function and the SYSINFO structure variable. For more information, see FeatureFilterOS function and the SYSINFO. The DoInstall function is now similar to the LaunchAppAndWait function. For more details, see DoInstall.

Upgrade Details
For InstallShield 12, a number of improvements were made to the InstallScript MSI architecture to resolve issues with security (COM/DCOM) and other areas that can cause some installations to fail for various reasons. The architecture was improved for InstallShield 12 to resolve these issues and to make InstallScript MSI a more reliable project type. The improvements also help increase the reliability of InstallScript projects, as well as Basic MSI projects that include InstallScript custom actions. In addition, the merge module project type has been enhanced: it now has the same InstallScript view that is available in Basic MSI projects. This enhanced version of the merge module project type replaces the InstallScript MSI object project type, which is no longer available in InstallShield. To learn more, see Upgrading Projects from InstallShield 11.5 or Earlier.

Target System Requirements


You can use InstallShield to rapidly build, test, and deploy installations that target Windows-based systems and mobile devices.

Requirements For Desktop Computers


Operating System Target systems must meet the following minimum operating system requirement:


72

Windows 2000 Windows XP


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Target System Requirements

Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 Windows Server 2008 R2

Installer Engine Requirements The minimum target system requirements for the various installer engines are as follows.
Table 1-2: Target System Requirements for Desktop Computers Installer Engine Windows Installer 5.0 (This is not available as a redistributable.) Windows Installer 4.5 Windows Installer 4.0 (This is not available as a redistributable.) Windows Installer 3.1 Windows Installer 3.0 Windows Installer 2.0 Windows 2000 SP3 or later, Windows Server 2003 or later Windows 2000 SP3 or later, Windows Server 2003 or later Windows 95 or later (Note that InstallShield does not include support for Windows 95, Windows 98, Windows NT 4, or Windows Me.) InstallScript ClickOnce Windows 2000 or later Windows 98 or later .NET Framework 2.0 (Note that InstallShield does not include support for Windows 98, Windows NT 4, or Windows Me.) Windows XP SP2 or later, Windows Server 2003 SP1 or later Windows Vista Operating System and Other Requirements Windows 7 or later, Windows Server 2008 R2 or later

For more information about Windows Installer redistributables, see Adding Windows Installer Redistributables to Projects.

Requirements For Mobile Devices


InstallShield includes support for adding mobile device installations to desktop installations that use Microsoft Windows Mobile Device Center or Microsoft ActiveSync to transfer files to a mobile device. InstallShield also includes support for straight-to-device installations that do not use Windows Mobile Device Center, ActiveSync, or any other desktop component.
InstallShield 2010 User Guide ISP-1600-UG00 73

Chapter 1: InstallShield 2010 Target System Requirements

For an overview of the different options that InstallShield supports, see Creating Installations for Mobile Devices. Windows Mobile Device Requirements InstallShield supports many Windows Mobile platforms and processors. The Windows Mobile platforms are:

Windows Mobile 6.x Professional and Classic Windows Mobile 6.x Standard Windows Embedded CE 6.x Windows Mobile 5.0 for Pocket PC Windows Mobile 5.0 for Smartphone Windows CE .NET 5.0 Windows CE .NET 4.x Pocket PC 2003 Pocket PC 2002 Pocket PC Palm-size PC 2.11 Palm-size PC 2.01 Handheld PC 2000 Handheld PC Pro Handheld PC 2.0 Smartphone 2003 Smartphone 2002

Note that if a platform is not included in the list, it does not mean InstallShield does not support it. It simply means that you cannot set conditions for that specific platform by default. To add support for additional platforms or to change the conditions for targeting a specific platform, you can modify the Settings.xml file that is installed with InstallShield. For more information, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings. InstallShield includes support for the following Windows Mobile processors:


74

ARM920 ARM820 ARM720 Common Executable Format Hitachi SH4 Hitachi SH3E
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Target System Requirements

Hitachi SH3 i686 i586 i486 MIPS R4000 MIPS R3000 MIPS R2000 SHx SH4 SHx SH3 StrongARM-XScale

Palm OS Device Requirements InstallShield supports Palm OS 3.5 and later.

Desktop Requirements for Windows Mobile Device Installations


Requirements for the desktop computers that are used to install applications on Windows Mobile devices are:

Microsoft ActiveSync 3.x or later on Windows XP (ActiveSync 4.x is required for Windows Mobile 5.x or later devices) Microsoft Windows Mobile Device Center on Windows Vista Administrative privileges

Desktop Requirements for Palm OS Device Installations


Palm HotSync is required for the desktop computers that are used to install applications on Palm OS devices.

Targeting 64-Bit Operating Systems


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Note that if you create an InstallScript MSI project and change the Template Summary property from Intel to x64, InstallShield creates a 64-bit MSI installation combined with a 32-bit InstallScript MSI installation at build time. InstallScript installations do not support reading or writing Add or Remove Programs information in the 64-bit part of the registry. Therefore InstallScript installations always install Add or Remove Programs information in the 32-bit part of the registry. Note, however, that InstallScript installations can install to 64-bit folder locations.

InstallShield 2010 User Guide

ISP-1600-UG00

75

Chapter 1: InstallShield 2010 Target System Requirements

If you are writing applications for 64-bit Windows-based systems, you will need a way to install your 64bit files and other data. Although 32-bit installations run on 64-bit machines, they cannot install to 64bit locations. The Windows Installer service provides support for 64-bit installations. These installations can be designed and built on 32-bit machines, but they can run only on 64-bit machines. Through the use of release flags, you can build two installations (one 32 bit and one 64 bit) from a single project.

Configuring the Template Summary Property


If your installation targets 64-bit systems, configure the Template Summary property with the appropriate 64-bit value (x64 or Intel64). This allows end users to install your product in 64-bit locations on 64-bit systems; it also prevents end users from installing your product on 32-bit systems. To learn more, see Using the Template Summary Property.

Creating 64-Bit Components


To specify that a component is 64 bit, select Yes for the components 64-Bit Component setting. If you build a release that has at least one 64-bit component and the Template Summary property is set to a 64-bit value, the result is a 64-bit package. For more information about the 64-Bit Component setting, as well as additional component settings, see Component Settings.

Extracting COM Data from 64-Bit COM Servers


If you are using InstallShield on a 64-bit operating system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. Note that if you use InstallShield on a 32-bit system, 64-bit COM extraction is not available. To learn about extracting COM data, see Extracting COM Information from a COM Server.

Self-Registering 64-Bit COM Servers


InstallShield supports 64-bit self-registration of COM servers. If you mark a component as 64 bit and then add a file to that component, you can select the files Self Register check box to enable 64-bit selfregistration of that file during installation. The Self Register check box is on the files Properties dialog box. InstallShield also supports 64-bit self-registration of dynamically linked COM servers. To enable this, select the Self-Register all files check box on the Dynamic File Link Settings dialog box when you add the files dynamically to a 64-bit component. For more information, see Adding Dynamic File Links to Components.

Enabling or Disabling Registry Reflection


InstallShield includes support for the Windows Installer 4.0 attribute msidbComponentAttributesDisableRegistryReflection in the Component table. To use this attribute, set the Disable Registry Reflection setting for a selected component in the Components view to Yes. Registry reflection keeps the 32-bit registry view and the 64-bit registry view in sync on a target machine. Only 64-bit systems with Windows Installer 4.0 support this setting. Other systems ignore it. For more specific information, see Enabling and Disabling Registry Reflection.

76

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Using Help

Adding Other 64-Bit Elements


InstallShield includes support for additional 64-bit elements. For example, InstallShield includes 64-bit .NET Framework redistributables that you can add to your project. Custom actions can include 64-bit JScript or VBScript code, and 64-bit folder properties give you access to essential operating system folders such as the 64-bit Program Files folder. In addition, you can use the Setup Prerequisite Editor to configure setup prerequisites that have conditions that check for 64-bit requirements on the target system.

Note: 64-bit support requires Windows Installer version 2.0 or later.

Using Help
Acresso understands the importance of having useful information and help resources at your fingertips. In addition to the inline help embedded within various views of the InstallShield interface, InstallShield includes the Help Library (the online help library that is installed with InstallShield) and HelpNet.

InstallShield Help Library


When you have questions about your Acresso product, first consult the InstallShield Help Library. The Help Library is the complete users guide for using InstallShield. You can access the InstallShield Help Library from the Help menu in InstallShield, by pressing F1, or by clicking Help buttons in the interface. No Internet connectivity is required to view the online help. Essentially, the online help viewer is a tool that you can use to display, search, and filter technical information based on your personal needs.

Web-Based Online Help


Web-based online help is available to you 24 hours a day, seven days a week, on our Web site at http:// helpnet.installshield.com. This help resource center provides near real time updates to documentation.

Help Conventions
In this documentation, reader alert and style conventions are used to bring your attention to specific information or help you identify information.

Reader Alert Conventions


Reader alerts are used throughout this documentation to notify you of both supplementary and essential information. The following table explains the meaning of each alert.
Table 1-3: Reader Alert Conventions Image Alert Name Best Practices Description Best Practices alerts instruct you on the best way to accomplish a task.

InstallShield 2010 User Guide

ISP-1600-UG00

77

Chapter 1: InstallShield 2010 Using Help

Table 1-3: Reader Alert Conventions (cont.) Image Alert Name Caution Description Cautions indicate that this information is critical to the success of the desired feature or product functionality. Edition-specific notes indicate that the information applies to a specific edition of a product (such as Professional or Premier edition). Important notes are used for information that is essential for users to read.

Edition-Specific Note

Important Note

Note

Notes are used to draw attention to pieces of information that should stand out.

Project-Specific Note

Project-specific notes are used to highlight information that may vary depending on the project type used (such as a Basic MSI or Merge Module project). Security alerts identify security issues.

Security

Task

The Task graphic indicates that procedural instructions follow.

Tip

Tips are used to indicate helpful information that could assist you in better using the desired function or feature. Version-specific notes indicate that the information applies to a specific version of a product (such as Version 9.0 or Version 11.0). Windows Logo Guideline alerts accompany Microsoft logo compliance requirements and recommendations.

Version-Specific Note

Windows Logo Guideline

Style Conventions
The following style conventions are used throughout this documentation.
Table 1-4: Style Conventions Style User Interface Elements Variables Code Example On the File menu, click Open.
fileName #define HWND_BROADCAST 0xffff

Description User interface elements appear in bold when referenced in tasks. Variables appear in italics. Code snippets appear in a monospace typeface.

78

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 1: InstallShield 2010 Using Help

Table 1-4: Style Conventions (cont.) Style User Inputted Text Example Type $D(install). Description Text that is to be entered as a literal value is displayed in a monospace typeface, in bold, and in blue. File names and directory paths are presented in a monospace typeface. Text in .INI files is presented in a monospace typeface.

File Name and My files are located in the Directory Paths C:\MyDocuments\SampleCode directory. .INI File Text Insert the line LimitedUI=Y into the file to display only the Welcome dialog box when the Windows Installer package is run. To run the installation silently, enter:
Setup.exe /s /v/qn

Command-Line Statements Environment Variables Examples

Command-line statements and parameters are presented in a monospace typeface. Environment variables are presented in a monospace typeface. Examples are presented in bold.

Set the value of the windir environment variable to your Create two groups, one called Admins and the other called General. FeatureAddItem adds a new feature to a scriptcreated feature set. In the Name property, enter a name for this custom control that is unique among all of the controls in your project. If you type an incorrect parameter, the message
The system cannot find the path specified. is displayed.

Functions

Functions are presented in bold.

Properties

Properties are presented in bold.

Screen Output

Screen output (from a log file or from the console) is displayed in a monospace typeface, and in blue.

Using Context-Sensitive Help


While working on a project, clicking a software object displays its help information in the Help window. This is also called context-sensitive help. Help information is also available for each of the properties of a selected software object displayed in the Explorer window, which provides instructions for setting that property.

InstallShield 2010 User Guide

ISP-1600-UG00

79

Chapter 1: InstallShield 2010 Using Help

80

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 2: Contacting Acresso Software

Contacting Acresso Software


Acresso Software is headquartered in Schaumburg, Illinois, and has offices worldwide. For more information about Acresso Software, including office locations and contact information, visit http://www.installshield.com.

InstallShield 2010 User Guide

ISP-1600-UG00

81

Chapter 2: Contacting Acresso Software

82

ISP-1600-UG00

InstallShield 2010 User Guide

3
Getting Started
InstallShield provides powerful features and time-saving tools that make authoring reliable Windows Installer and InstallScript installations easy. The InstallShield Help Library is a resource that will help you harness the full potential of InstallShield. The help topics you might want to read first depend upon your previous experience with InstallShield installation-authoring software. The table below directs you to various topics based on your level of experience.
Table 3-1: Getting Started Road Map Level of Familiarity You have not created installations previously. Top Help Topics To learn general information about installations, refer to the following topics:

Installation Fundamentals Application Lifecycle

You are new to InstallShield.

If you have created installations previously but you do not have experience using InstallShield, see the following topics:

Working with the InstallShield Interface Working with Projects Basic MSI Project Tutorial Globalization Tutorial InstallScript Project Tutorial Creating Installations for Mobile Devices Run-Time Language Support in InstallShield Supported Application Programming Languages

InstallShield 2010 User Guide

ISP-1600-UG00

83

Chapter 3: Getting Started Installation Fundamentals

Table 3-1: Getting Started Road Map (cont.) Level of Familiarity You have used other Acresso products. Top Help Topics If you have used other products from Acresso Software, refer to any of the following topics:


You are an intermediate-level or advanced-level user of InstallShield.

Upgrading from Earlier InstallShield Versions Upgrading from Other InstallShield Editions Project Assistant Installation Projects Overview

If you are familiar with InstallShield, you may want to review the following topics:

Command-Line Tools Errors and Warnings InstallScript Language Reference Running Installations in Silent Mode Configuring Advanced Settings for InstallShield

Installation Fundamentals
An installation, in its simplest terms, is the package used to install your files and programs onto your users machine. It is a complete collection of the application files, as well as logic that interacts with the installer engine. The primary task of any installation is to transfer the application files from the source medium to the end users computer. The complexities of the Windows operating system make it anything but simple to create an effective, coherent installation without the aid of a utility such as InstallShield. An installation is divided into three levels: products, features, and components. The following diagram illustrates this hierarchy:

Figure 3-1: Installation Hierarchy

A product is the highest level of organization in an installation project. A product is usually one main application (for example, a word processor) and all of the files and data that the application requires; a suite of applications may also be a product.

84

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Application Lifecycle

A feature is the smallest installable part of a product, from the end users perspective. As the designer of an installation program, you usually allow the user to choose which features to install and which features to leave on the source media. In a word processor product, the main executable may be one feature, and optional dictionaries may be a separate feature. A feature should be self-contained, in the sense that a feature should not require sibling features. For example, a thesaurus feature should not require a dictionary feature that the user can choose not to install. However, you can design features to contain subfeatures, which allow the end user finer control over which files and data to install. Each feature in a project is made up of one or more components. A component is the smallest installable part of a product from the installation developers perspective; components are invisible to the end user. Each component contains files (and other resources) with similar properties. For example, all of the files in a component will be installed in the same directory on an end users machine, and all of the files in a component should apply to the same operating system or language. A dictionary feature might contain several language-specific dictionary components. In addition to containing files, components generally contain registry data, shortcuts, file extension information, and other system data to write to a users machine. When you are designing an installation, the overall task is to separate the products files into components based on the files destination, operating system, language, and other properties, and to associate each component with one or more features.

Application Lifecycle
Your application lifecycle should not end when your customer installs your application. As a software vendor, the success of your application goes well beyond the initial installation on the customers desktop. Customers expect to have easy access to product updates, enhancements, and critical information. Your ability to communicate with your customers and monitor the health of your application is vital to your ongoing growth and profitability. Too often, software vendors require their customers to initiate communication. Vendors who are not proactively creating an ongoing dialog are missing a tremendous opportunity. Unless the customer is an active visitor to your Web site or public user communities, they miss important information about updates, upgrades, hot fixes, and general technical bulletins. You miss revenue and service opportunities.

InstallShield 2010 User Guide

ISP-1600-UG00

85

Chapter 3: Getting Started Starting InstallShield

Figure 3-2: How FLEXnet Connect Manages the Application Lifecycle

The above diagram illustrates how FLEXnet Connect is used to manage the application lifecycle:
1. 2. 3. 4. 5. 6. Create InstallInstallShield makes it easy for software developers to create installations that run on

any platform.
Run InstallInstallations created with InstallShield technology have successfully installed on over 400 million machines worldwide. Create UpdateInstallShield enables software developers to rapidly build patches and updates. Notify UserFLEXnet Connect notifies every user that a new update is ready to be installed. Download & InstallFLEXnet Connect downloads the update and installs it in one seamless,

integrated process.
View ReportingFLEXnet Connect provides immediate feedback on the updates adoption rate.

Starting InstallShield
Each time you open InstallShield (with the exception of the initial launch after installing the product), you are taken directly to the InstallShield Start Page. The Start Page provides quick access to product information, to recently opened projects, and to InstallShield resources.

86

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Starting InstallShield

InstallShield Start Page


The InstallShield Start Page provides quick access to product information, to recently opened projects, and to InstallShield resources. The Start Page includes the following sections:
Table 3-2: Sections on the Start Page Section Project Tasks Description Click a project task to quickly create a new project, open an existing project, or browse to one of the sample projects included with the InstallShield installation. Frequently accessed help topics are listed in this section. To access the entire InstallShield Help Library from the Start Page, press F1 or click the Help Library link in the Resources section. The section in the middle of the Start Page lists your most recently accessed projects, the project types, and the dates on which they were last modified. Click the Getting Started heading for guidance on what areas of the InstallShield Help Library to read, based on your level of experience with InstallShield and installation-authoring tools. The Resources section contains a number of links to connect you to helpful InstallShield information.

Help Topics

(Recently Opened Projects) Getting Started

Resources

Help LibraryDisplays the InstallShield documentation. InstallShield CommunityProvides a Web-based forum where you can join other InstallShield users, post questions, and search for answers. WebinarsDirects you to free Web-based seminars that help you evaluate InstallShield and gain the most from your Acresso products. DownloadsOffers a place where you can download the latest InstallShield prerequisites, InstallShield merge modules, and objects; service packs; patches; and more for the version of InstallShield that you are using. Release NotesConnects you to the release notes that are posted to the Knowledge Base on the Acresso Web site. Known IssuesDisplays the Knowledge Base article that lists the known issues for the version of InstallShield that you are using and provides information about workarounds and resolutions. Upgrade AlertsDisplays the Knowledge Base article that provides information about possible issues that may occur when you upgrade projects that were created with earlier versions of InstallShield to InstallShield 2010. It also alerts you to possible changes in behavior that you may notice between new InstallShield 2010 projects and projects that are upgraded from earlier versions. RSS FeedsDirects you to the Web page where you can subscribe to RSS feeds of InstallShield Knowledge Base articles.

Contact Us

To access the Support area of the Acresso Web site or join the Acresso Customer Experience Improvement Program, click one of the links listed in this section.

InstallShield 2010 User Guide

ISP-1600-UG00

87

Chapter 3: Getting Started Working with Projects

Working with Projects


An InstallShield project specifies the files, folders, and operations that make up the projects output. A projects output is one of the following (depending on the project type):

Installation: creates or updates a copy of your application on the target system Redistributable (merge module or InstallShield object): contains logic and files needed to install distinct pieces of functionality when included in an installation Transform: enables an administrator to apply modified settings to an Windows Installer installation when deploying the installation

A project can be as simple or as complex as you need to meet your requirements. A simple project might consist of files, components, features, and registry entries. More complex projects might consist of these items plus redistributables, initialization file changes, and calls to external DLL functions.

Installation Projects Overview


With InstallShield, you have the ability to choose between a variety of different installation project typesthose that use InstallShields powerful InstallScript programming language (InstallScript), those that use the Windows Installer database (Basic MSI), or a combination of the two (InstallScript MSI). The installation project type you choose depends on the needs of your software installation. InstallShield provides the same intuitive user interface for all project types, so your applications needs can dictate the project type and your authoring experience does not change. Additionally, the knowledge gained by learning how to create projects of one type is applicable to projects of the other types.

Similarities Between Project Types


All InstallShield installation project types create installations that have the same professional, industrystandard look and feel that your end users have come to expect from InstallShield. All enable you to create customized installations to meet the needs and expectations of your end users. Despite the similarities in the project types feature sets, there are some important differences between themespecially between the InstallScript and Basic MSI projects. See Determining Which Installation Project Is Right for You to learn which of these project types is right for your software installation needs.

Determining Which Installation Project Is Right for You


InstallShield enables you to create different types of projects, but for the beginner there is just one significant choice to make: Do you want to build your installation with Windows Installer or InstallScript technology? Deciding which project type is right for you depends on your experience with InstallShield software and installation development and on your installation and deployment needs. The three main project types are described below.

Tip: For an overview of all of the available project types, see Project Types. For an overview on creating an installation for a mobile device, see Creating Installations for Mobile Devices.

88

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Basic MSI Projects


Basic MSI projects use the Windows Installer service to drive the entire installation, including calls to any custom actions (InstallScript, VBScript, JScript, .exe files, .dll files, managed code). The Basic MSI project type is recommended when you want to do any of the following:

You want to meet the Certified for Windows Vista program requirements. You want to maximize compatibility with administrative tools such as SMS, or if your software will be customized by corporate system administrators prior to deployment. The Basic MSI project type gives them the flexibility to create transforms for the installation package and its associated properties, without repackaging your installation. You want to avoid writing scripting code and want to instead set properties and make table entries. You want to upgrade an existing Basic MSI project.

InstallScript Projects
InstallScript projects use InstallScript to control the installation. This project type is recommended for any of the following scenarios:

You have advanced requirements for the end-user experience (the end-user dialogs), such as multimedia elements. You want to use full-screen billboards during the run time of your installation. You prefer authoring the project using a procedural language at its core rather than a set of database tables. You want to perform actions before or after the main installation has been run. You want to upgrade an existing InstallScript project.

InstallScript MSI Projects


InstallScript MSI projects use both the Windows Installer engine and the InstallScript engine to drive the installation. This project type is recommended when you want to do any of the following:

You want to meet the Certified for Windows Vista program requirements. You have advanced requirements for the end-user experience (the end-user dialogs), such as multimedia elements. You prefer authoring the project using a procedural language at its core rather than a set of database tables. You want to perform actions before or after the main installation has been run. You want to upgrade an existing InstallScript MSI project.

Tip: Repackager is a project conversion tool that is available in the Premier Edition of InstallShield. You can use this tool to convert InstallScript projects and InstallScript MSI projects to Basic MSI projects.

InstallShield 2010 User Guide

ISP-1600-UG00

89

Chapter 3: Getting Started Working with Projects

Creating Installations for Mobile Devices


InstallShield includes support for creating installations for mobile devices: Windows Mobilepowered devices and Palm OS devices.

Windows MobilePowered Devices


InstallShield lets you create installations that install products on Windows Mobilepowered devices. InstallShield supports different delivery methods. The delivery method that you want to use helps determine what type of project you should use to create the installation. Creating a Straight-to-Device Installation A straight-to-device installation installs a product directly to the Windows Mobilepowered device. This type of installation does not use Microsoft Windows Mobile Device Center, Microsoft ActiveSync, or any other desktop component. This type of installation also supports the deployment of a product through a storage card that is inserted into a Windows Mobilepowered device. If you want to create a straight-to-device installation, create a Smart Device project. When you create or edit this project type, InstallShield launches the Smart Device Setup Wizard, which leads you through the process of identifying the files and other data for Windows Mobilepowered devices. Creating a Desktop-to-Device Installation A desktop-to-device installation installs a product to the end users desktop computer first. The installation launches the Application Manager or uses either Windows Mobile Device Center or ActiveSync to install the mobile device product onto the Windows Mobile device when it is connected with the desktop computer. The installation can also optionally register an icon file on the desktop computer with Windows Mobile Device Center or ActiveSync, so that the icon is displayed within the Application Manager window. If you want to create a desktop-to-device installation, do one of the following:

Create a Basic MSI or InstallScript MSI project for your desktop installation. In this project, use the Mobile Devices view to add support for one or more mobile device installations to your project. For more information, see Adding an Installation for a Windows MobilePowered Device to Your Project. If you have Windows Mobilecompatible .cab files that have already been built from a Basic MSI or InstallScript MSI project, you can add them to your desktop installation. For more information, see Adding Existing .cab Files to Your Project. The Windows Mobile Wizard, which InstallShield launches when you add or edit Windows Mobile support through the Mobile Devices view, leads you through the process of identifying the files and other data for Windows Mobilepowered devices. It lets you target certain platforms and processors as needed.

Create an InstallScript project for your desktop installation. Use the Objects view to add the Windows Mobile object to one or more features in your project. To learn more, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects.

90

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

When you add the Windows Mobile object to your project or modify its settings, InstallShield launches the InstallShield Object for Windows Mobile Wizard, which leads you through the process of identifying the files and other data for Windows Mobilepowered devices. It lets you target certain platforms and processors as needed.

Project: In some areas, Basic MSI and InstallScript MSI projects have more extensive support for desktop-to-device installations than InstallScript projects:

InstallScript projects include support for targeting the following platforms:

Pocket PC 2003 Pocket PC 2002 Pocket PC Palm-size PC 2.11 Palm-size PC 2.01 Handheld PC 2000 Handheld PC Pro Handheld PC 2.0 ARM920 ARM820 ARM720 Common Executable Format Hitachi SH4 Hitachi SH3 i686 i586 i486 MIPS R4000 MIPS R3000 MIPS R2000 StrongARM-XScale

In addition, InstallScript projects include support for targeting the following processors:

However, Basic MSI and InstallScript MSI projects include support for targeting additional platforms and processors. For a full list, see Target System Requirements.

If you have existing Windows Mobilecompatible .cab files, you can add them to a Basic MSI or InstallScript MSI project. InstallScript projects do not include this support. Basic MSI and InstallScript MSI projects include support for installing the .NET Compact Framework and for CE SQL, but InstallScript projects do not. Basic MSI and InstallScript MSI projects include support for signing the mobile device .cab files, but InstallScript projects do not.

InstallShield 2010 User Guide

ISP-1600-UG00

91

Chapter 3: Getting Started Working with Projects

Palm OS Devices
InstallShield lets you create installations that install products on Palm OS devices. The product files can be deployed through HotSync to the Palm OS device. You can target either the devices memory or a storage card. If you want to create a straight-to-device installation, do one of the following:

Create a Basic MSI or InstallScript MSI project for your desktop installation. In this project, use the Mobile Devices view to add support for one or more mobile device installations to your project. For more information, see Adding an Installation for a Palm OS Device to Your Project. The Palm OS Wizard, which InstallShield launches when you add or edit Palm OS support through the Mobile Devices view, leads you through the process of identifying the files and other data for Palm OS devices.

Create an InstallScript project for your desktop installation. Use the Objects view to add the Palm OS object to one or more features in your project. When you add the Palm OS object to your project or modify its settings, InstallShield launches the Palm OS Object Wizard, which leads you through the process of identifying the files and other data for Palm OS devices. To learn more, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects.

Project Types
InstallShield offers a number of different project types to assist you in creating the optimal project for your end users.
Table 3-3: Project Type Descriptions Project Type InstallScript Icon Description The InstallScript installation project provides the flexibility afforded by the InstallScript language and is driven by the proven InstallScript engine. Using the InstallScript Object project, you can create an InstallShield merge module that uses InstallScript. This type of merge module, however, can be consumed only by InstallShield. A Basic MSI project uses Windows Installer to provide the user interface for the installation. When you choose this project type, you need to create features and components, and specify all application files and other distributable data. Select this option to create your own merge modules. You need to create any components and file associations. This project type is recommended for installation authors who want to ship small, single updates to their end users. QuickPatch authoring provides an alternative to creating a patch configuration in the Patch Design view even though it provides less customization. Creation of a QuickPatch begins with the Create New QuickPatch Wizard.

InstallScript Object

Basic MSI

Merge Module

QuickPatch

92

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Table 3-3: Project Type Descriptions (cont.) Project Type MSI Database Icon Description Select MSI Database to edit your installation project in Direct Edit mode. This means that you can directly edit the Windows Installer tables within InstallShield to configure your installation. Select MSM Database to edit your merge module in Direct Edit mode. This means that you can directly edit the Windows Installer tables within InstallShield to configure your merge module. A transform (.mst file) is a simplified Windows Installer database that contains the differences between two Windows Installer databases. Creating a new transform project launches the Open Transform Wizard. An InstallScript MSI project uses both InstallScript and Windows Installer tables. With this project type, you need to create features and components, and specify all application files and other distributable data. Select this option to launch the Visual Basic Wizard. Select this option to launch the Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET. Select this option to launch the Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET. Select this option to launch the Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET. The Smart Device Setup Wizard guides you through the process of creating installations for smart devices. A Compact project uses a special small installer engine to provide the user interface for an installation. Although Compact installation projects have some limitationsfor example, English is the only language available for the end-user interfacethey enable you to create a very small executable file (Setup.exe) that you can distribute to end users. This Setup.exe file is a compressed, self-extracting file that contains all of the application files, as well as the Compact installer engine.

MSM Database

Transform

InstallScript MSI

Visual Basic 6.0 Wizard Visual Basic .NET Wizard

C# .NET Wizard

Visual C++ .NET Wizard

Smart Device Setup Wizard

Compact Project

Note: InstallShield does not enable you to create new Compact projects. If you created a Compact project in an earlier version of InstallShield, you can upgrade it to InstallShield 2010, and then make changes to it and build Compact releases. You can also use InstallShield 2010 to convert the Compact project to a Basic MSI project. For more information, see Converting Compact Projects to Basic MSI Projects. ClickOnce Deployment Project A ClickOnce Deployment project is a lightweight application deployment mechanism that is easy to use. It includes support for security sandboxed execution of an application with virtually no installation footprint, as well as full installation and upgrade manageability.

InstallShield 2010 User Guide

ISP-1600-UG00

93

Chapter 3: Getting Started Working with Projects

InstallScript Installation Projects


The InstallScript installation project type provides the power and flexibility of the InstallScript programming language and the familiarity of the InstallShield Professional project. Windows Installer is not used at all. The installation is completely script driven and very flexible, and it uses the InstallScript engine, the same trusted engine used by InstallShield Professional.

Note: InstallScript installations are generally less desirable to systems administrators because they require the use of Setup.exe, rather than being self-contained in an .msi file, and may not be fully customizable prior to deployment. If your software will be customized by corporate systems administrators prior to deployment, create a Basic MSI installation project.

The InstallScript Engine


With InstallScript projects, the run-time user interface is rendered and its flow controlled by InstallScript, and the changes that are made to the target operating system are done through InstallShields trusted InstallScript engine, with no reliance on Windows Installer. Using InstallScript as the installation driver has many benefits. The first is that InstallScripts event model enables you to create a script-driven installation without writing a single line of code. If you want to add custom functionality, you need to implement only the events whose functionality you want to change. The user interface abilities for Basic MSI projects are somewhat limited with regard to the types of controls you can use or the kind of control you have over dialog events. InstallScript projects have no such limitationoffering a wide range of standard controls along with the ability to add custom dialog controls. Dialog messaging in the script enables you to have complete control over how your end-user dialogs behave.

Upgrading Projects Created Using InstallShield Professional


Installation projects created using InstallShield Professional (version 5.5 and later) upgrade to the InstallScript project type.

Additional Features for InstallScript Projects


InstallScript projects provide a few additional features that are not available in Basic MSI projects:
Table 3-4: Additional InstallScript Project Features Feature Setup Types view Description This view enables you to easily create different installation configurations for your application. This view also lets you select the defaults for the Custom setup type. Run-time billboard support is available only for InstallScript projects. Billboards let you show bitmaps to the end user while files are being transferred to their machine. You can use these bitmaps to entertain or educate user.

Billboard Support

94

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Basic MSI Installation Projects


Basic MSI is the Windows Installer-based project type in InstallShield. Basic MSI projects are recommended in cases where the Windows Installer service should drive the entire installation. They allow you to author your installation using only the native Windows Installer feature set. The geometry of your end user dialogs as well as the flow of your setup user interface (UI) is authored directly in the MSI package, and the Windows Installer Service uses its native user interface rendering capabilities to display the UI to your end users. The advantages of this project type are fully realized if you need to author your installation in an open format.

Note: Create a Basic MSI project if your software will be customized by corporate systems administrators prior to deployment. It gives them the flexibility to create transforms for the installation package and its associated properties, without repackaging your installation.

Basic MSI projects have the ability to run InstallScript code in the form of custom actions. As with InstallScript projects, Basic MSI projects take advantage of other robust features provided by InstallShield such as dialog authoring, the ability to call custom actions in standard Windows .dll files, and the ability to specify support files.

Run-Time Behavior for Basic MSI Installations with InstallScript Custom Actions For InstallShield 12 and Later Projects
The following steps outline the run-time behavior for Basic MSI installations that include InstallScript custom actions:
1. 2.

The package is launched by the Windows Installer service. Any sequenced InstallScript custom actions execute as follows.
a. b. c. d.

The Windows Installer calls the relevant entry point in ISSetup.dll (loaded from the Binary table).
ISSetup.dll ISSetup.dll

extracts its Setup.inx resource to a temporary location. executes relevant script code.

Windows Installer unloads ISSetup.dll.

The run-time behavior for InstallShield 12 and later Basic MSI projects that have InstallScript custom actions is much different than the behavior for InstallShield 11.5 and earlier because of some architecture enhancements. For more information about the enhancements, see Upgrading Projects from InstallShield 11.5 or Earlier.

For InstallShield 11.5 and Earlier Projects


For installations created with InstallShield 11.5 and earlier, the run-time behavior is as follows:
1. 2. 3.
Setup.exe installs ISScript.msi. Setup.exe launches MsiExec.exe to

install the primary .msi file. (Setup.exe must be included in the installation, or it must already be present on the target system.)

ISMsiServerStartup (immediate custom action) starts and initializes IDriver.exe.


ISP-1600-UG00 95

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

4.

Any sequenced InstallScript custom actions execute as follows.


a. b. c.

The Windows Installer finds the relevant entry point in ISScriptBridge.dll.


ISScriptBridge.dll finds

the running IDriver.exe instance using the running object table

(ROT). IDriver.exe executes relevant script code.

5.

ISCleanUpSuccess shuts down IDriver.exe.

If you upgrade an InstallShield 11.5 or earlier project to InstallShield 2010, the run-time behavior is updated to the behavior described for InstallShield 12 and later projects.

InstallScript MSI Installation Projects


InstallScript MSI installations use two different installer engines:

The Windows Installer engine runs the standard Execute sequence of the .msi package. This is the sequence that typically modifies the target system. The InstallScript engine serves as the custom user interface (UI) handler of the installation. It also executes the InstallScript code. The advantage of using the InstallScript engine for the UI is that it offers support for highly customized run-time dialogs.

In addition, InstallShield offers two different styles for the UI of InstallScript MSI installations:

Traditional styleThis style lets you use the InstallScript engine as an external UI handler for your

InstallScript MSI installation. With this style, your installation must include a Setup.exe setup launcher. The setup launcher serves as a bootstrap application that initiates the InstallScript engine to display the UI and run the InstallScript code, and the Windows Installer to run the Execute sequence of the .msi package.

New styleThis style lets you use the InstallScript engine as an embedded UI handler for your

InstallScript MSI installation. For this style, InstallShield embeds the InstallScript engine within the .msi package. The Windows Installer calls the InstallScript engine to display the UI. The Windows Installer also runs the Execute sequence of the .msi package. This option requires Windows Installer 4.5 on the target machine. This option also has some limitations that require careful planning if you decide to use this style. For detailed information about these two styles, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations.

Note: Because this project type uses two different engines, it is more complex than pure InstallScript or Basic MSI installation projects. It is recommended only for advanced users. Traditional-style InstallScript MSI installations are less desirable to systems administrators than Basic MSI installations or new-style InstallScript MSI installations. That is because traditional-style InstallScript MSI installations require the use of Setup.exe, rather than being self-contained in an .msi package, and they may not be fully customizable prior to deployment. If your software will be customized by corporate systems administrators prior to deployment, create a Basic MSI project. As an alternative, you could consider using the new-style InstallScript MSI installations, but your must ensure that any system changes that need to be made are done with custom actions in the Installation Execute sequence. To

96

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

ensure that sufficient privileges are available, custom actions should have an in-script execution setting of deferred in system context.

Additional Features for InstallScript MSI Projects


InstallScript MSI projects provide a few additional features that are not available in Basic MSI projects:
Table 3-5: Additional InstallScript MSI Project Features Feature Setup Types view Description This view enables you to easily create different predefined installation configurations for your application, such as Typical or Compact. This view also enables you to select the defaults for the Custom setup type. Run-time billboard support is available for InstallScript MSI installations, but not Basic MSI installations. Billboards enable you to show bitmaps while files are being transferred to an end users machine. You can use these bitmaps to entertain or educate end users.

Billboard Support

Run-Time Behavior for InstallScript MSI Installations For InstallShield 12 and Later Projects
The following steps outline the run-time behavior for InstallScript MSI installations:
1. 2.
Setup.exe initializes ISSetup.dll. ISSetup.dll

does the following:

a. b. c. d.

Loads Setup.inx. Executes pre-installation InstallScript events (for example, OnBegin). Launches the Windows Installer (and the InstallScript engine for the external user interface). Each InstallShield custom action executes as follows (for example, OnMoved). (Note that this essentially the same mechanism that is used in Basic MSI with InstallScript custom actions.)
i. ii.

The Windows Installer calls the relevant entry point in ISSetup.dll. (This is a different instance of ISSetup.dll, loaded from the Binary table.)
ISSetup.dll

extracts its Setup.inx resource to a temporary location.

iii. ISSetup.dll executes relevant script code. iv. Executes post-installation InstallScript events (for example, OnEnd).

The run-time behavior for InstallShield 12 and later InstallScript MSI projects is much different than the behavior for InstallShield 11.5 and earlier because of some architecture enhancements. For more information about the enhancements, see Upgrading Projects from InstallShield 11.5 or Earlier.

InstallShield 2010 User Guide

ISP-1600-UG00

97

Chapter 3: Getting Started Working with Projects

For InstallShield 11.5 and Earlier Projects


For InstallScript MSI installations created with InstallShield 11.5 and earlier, the run-time behavior is as follows:
1. 2. 3.
Setup.exe installs ISScript.msi. Setup.exe launches IDriver.exe. IDriver.exe

does the following:

a. b. c.

Loads Setup.inx. Executes pre-installation InstallScript events (for example, OnBegin). Launches the Windows Installer (and the InstallScript engine for the external user interface). Each InstallScript custom action executes as follows (for example, OnMoved). (Note that this is the same mechanism used in Basic MSI installations with custom actions.)
i. ii.

The Windows Installer calls the relevant entry point in ISScriptBridge.dll.


ISScriptBridge.dll finds

the running IDriver.exe instance using the running object table

(ROT).
iii. IDriver.exe executes relevant script code. d.

Executes post-installation InstallScript events (for example, OnEnd).

InstallScript Object Projects


Using InstallShield objects, you can easily install key Windows technologies. To install a technology, simply include the corresponding InstallShield object in your installation. If a technology is required by a particular component, you can associate the corresponding InstallShield object with the feature.

MSI Database and MSM Database Projects


The MSI Database and MSM Database project types allow you to edit Windows Installer installation databases and merge module databases directly, rather than working through an intermediate project format (.ism file). These project types extend the Direct Editor functionality to include different views that are supported in standard installation and merge module projects. The views that are supported in these project types are intended to function as they do for an .ism project.

Project: There is no string entry or path variable support in an MSI Database or MSM Database project.

You can directly edit an existing .msi file or .msm file, or directly create a new database by opening a new MSI Database or MSM Database project. The data in this file should match what you would get if you created a blank Basic MSI or Merge Module project and built a database from that project.

98

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Merge Module Projects


Merge modules allow you to add existing pieces of functionality to your installation. For example, if your application requires the VB Run-Time DLL, you can add Microsofts Visual Basic Virtual Machine module to your setup application. Traditionally, you would have to create registry entries, set the target folders, custom actions and any other necessary steps yourself. With merge modules, all you need to do is associate an existing merge module with your installation and move on to your next task. InstallShield provides you with the ability to create your own merge modules to distribute with your installations or give away to other developers. This can be useful if you are going to include certain pieces of functionality in all of your installation projects. Rather than having to recreate that part of the installation every time, you can create it once as a merge module and then associate that module with all of your installation projects.

InstallScript Custom Actions in Merge Module Projects


Merge modules can contain InstallScript custom actions. However, you must manually create the Module**Sequence table entries to make sure that the custom actions are merged properly.

How Merge Modules Work


When a merge module is associated with an installation project, it is merged into the .msi database at build time. As a result, you are merging two distinct projects (your new installation and the existing merge module) into one .msi file. The merge module behaves like a component in that it is not installed unless the feature with which it is associated is installed. Therefore, if you have a feature that requires VB run-time DLLs, and that feature is not selected for installation, the VB merge module will not be installed.

QuickPatch Projects
A QuickPatch project is a specific type of project recommended for installation authors who want to ship small, single updates to their users. Changes that are more extensive such as adding custom actions and changing .ini data typically require a standard patch. QuickPatch authoring provides a simple alternative to creating a patch configuration in the Patch Design view, even though it provides less customization. Fundamentally, both patch creation methods produce the same deliverable types: .msp and .exe files. With a QuickPatch, you can do any of the following:

Add new files to the original installation or an earlier QuickPatch. Delete files in the original installation. Delete files that were added with a previous QuickPatch. Perform the same set of above operations on registry entries. Remove custom actions that were included with the original installation but that do not apply to the current QuickPatch project.

The creation of a QuickPatch project always begins with the Create New QuickPatch Wizard. After you have completed the wizard, you can configure the QuickPatch project settings once the project opens in InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

99

Chapter 3: Getting Started Working with Projects

Smart Device Installations


InstallShield provides the functionality to develop installations for the latest smart devices from within Microsoft Visual Studio and from within InstallShield. InstallShield Smart Device installations can be added to your smart device solution in Visual Studio, enabling your installation to be built automatically along with your smart device solution.

What Is a Smart Device?


Smart devices are the breed of devices that are based on Windows Mobile technology. These devices include Windows Mobilepowered smartphones and Windows Mobilepowered PDAs. While these devices have Windows Mobile technology at their core, all have different requirements for software development and installation.

What Is the .NET Compact Framework?


The .NET Compact Framework is a scaled-down version of the .NET Framework designed to run on resource-constrained devices, such as Windows Mobilepowered smartphones and Windows Mobile powered PDAs.

How Is Software Installed on Smart Devices?


Depending on the device, there are a number of ways to install software. For example, a Smartphone might have software installed over a general packet radio service (GPRS) Internet connection. Pocket PCs can have software installed by tethering the device to a desktop computer and synching. Other devices install software automatically when a storage card is inserted. InstallShield supports all of these scenarios.

Creating Smart Device Installations


InstallShields Smart Device Setup Wizard generates the .cab files that are used to install the application to the smart device. These .cab files can be deployed directly to the smart device or by using a storage card. The Smart Device Setup Wizard also includes the necessary .cab files for the Microsoft .NET Compact Framework redistributables, as well as the Autorun.exe file required for memory card installations.

Project: The Smart Device project type should be used only for straight-to-device installations that do not use Microsoft ActiveSync, Microsoft Windows Mobile Device Center, or any other desktop component.

Using the Smart Device Setup Wizard


Use the Smart Device Setup Wizard to:

Create an installation that will be installed directly to the device without being installed to a desktop computer firstfor example, software installed from a storage card, such as a Compact Flash or Secure Digital card. Create an installation where you want only the .cab files that can then be installed to the smart device.

100

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Running the Smart Device Setup Wizard


You can run the Smart Device Setup Wizard from inside InstallShield or Microsoft Visual Studio. If you are creating an installation for a smart device solution in Visual Studio, it is best to run the Smart Device Setup Wizard from within Visual Studio. If you are creating an installation for an application authored using some other tool, you can run the Smart Device Setup Wizard from within InstallShield. InstallShield

Task

To run the Smart Device Setup Wizard from within InstallShield: 1. 2. 3.

On the File menu, click New. The New Project dialog box opens. On the All Types tab, select the Smart Device Setup Wizard project type. Enter a project name and location, and click OK. The Smart Device Setup Wizard opens.

Visual Studio

Task

To run the Smart Device Setup Wizard from within Visual Studio: 1. 2.

After creating a smart device solution in Visual Studio, right-click the root of the Solution Explorer, point to Add, and select New Project. The Add New Project dialog box opens. In the project types list, select the Smart Device Setup Project from the InstallShield Projects group. The Smart Device Setup Wizard opens.

Building a Smart Device Installation


If you launched the Smart Device Setup Wizard from within InstallShield, the smart device installation is built when you build your installation in InstallShield. If you added your smart device installation to a Visual Studio smart device solution, the installation is built when you choose to build the solution from inside Visual Studio. In either case, the .cab file required to install your application is placed in the root of the build image. If you chose to redistribute the .NET Compact Framework, create an Autorun.exe file, or include native code, folders for each processor-platform combination are created. These folders contain the appropriate .cab files and executable files for that particular platform-processor ID. This exact folder structure should be copied to your storage card in order for the auto-run mechanism to work.

Transform Projects
A transform (.mst file) is a simplified Windows Installer database that contains the differences between two .msi databases. Transforms enable an administrator to apply modified settings to a database when deploying an installation package. InstallShield has a transform project type that enables you to edit .msi packages without having to convert them to an InstallShield (.ism) project. You can save the changes made as a transform (.mst) file. When you create a transform project or open a transform in InstallShield, the Open Transform Wizard launches to gather information about the base .msi file and any additional transform files that you want applied to the base .msi file.
InstallShield 2010 User Guide ISP-1600-UG00 101

Chapter 3: Getting Started Working with Projects

ClickOnce Deployment Projects


A ClickOnce Deployment project is a lightweight application deployment mechanism that targets simplicity. It includes support for security sandboxed execution of an application with virtually no installation footprint, as well as full installation and upgrade manageability. A ClickOnce Deployment project is traditionally started from a Web link pointing to a setup.exe, which launches a .application manifest file. From the information in this file, the engine knows what permissions to request from the user, and whether an upgrade is pending. The possible installation media include remote Web sites, internal Web sites and network shares, and traditional removable media (CD-ROM). All except the last run in the security sandbox until a user permits additional access to the system. When you create a new ClickOnce Deployment project, in InstallShield, the ClickOnce Assistant appears. The ClickOnce Assistant provides a framework of installation project tasks to guide you through the project creation process and provides pertinent information along the way.

Using Projects
InstallShield allows you to create, edit, upgrade, and save numerous project typesfrom installation projects to InstallShield object projects that allow you to reuse functionality within InstallShield. The pages in this section cover a variety of topics, including how to create a particular project type, how to create project templates, and what to expect when you upgrade from a different InstallShield product.

Creating New Projects


There are a number of ways to create a new InstallShield project.

Task

To create a new project, do one of the following:

Click the New Project button on the toolbar or on the InstallShield Start Page. Press Ctrl+N. Select New from the File menu.

Any of these steps launches the New Project dialog, from which you can select the project that you want to create. If you select an installation project in the New Project dialog, the Project Assistant launches to help you create your project.

Using a Template to Create a New Project


Your project templates are listed in the New Project dialog on the appropriate tab. For more information, see Basing New Projects on Templates.

Creating a Project From Within Microsoft Visual Studio


You can create an InstallShield project from within the Microsoft Visual Studio workspace.

102

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Creating Projects and .dim Files from ClickOnce Deployments


You can use InstallShield to convert a ClickOnce package to a Basic MSI project with an associated .dim file.

Note: In order to convert a ClickOnce package, you must have the .NET Framework redistributable and the Visual J# .NET redistributable installed on your machine. Note that the version numbers of these two redistributables must match.

Task

To create a .dim file and an InstallShield project from a ClickOnce package: 1. 2.

On the Tools menu, click Convert a ClickOnce Package. The ClickOnce Converter Wizard opens. Complete the wizard, which will guide you through the conversion process.

Tip: As an alternative, you can convert the ClickOnce package without using the wizard by running the
ClickOnce2Dim.exe application from the command line and specifying the appropriate command-line parameters. For

more information, see ClickOnce2Dim.exe.

Opening Projects

Task

To open an existing InstallShield project, do one of the following:

Click the Open Project button on the toolbar. On the File menu, click Open. In the Open dialog box, navigate to the project file. Press Ctrl+O. Click the Open an existing project link or click a recently opened project link on the InstallShield Start Page. Double-click a project file (.ism) on the desktop or in Windows Explorer.

With the exception of clicking a specific file or file link, all of the above options launch the Open dialog box, which enables you to browse to your project file.

Opening Projects from Source Code Control


An option on the Open dialog box enables you to get the latest version of a project folder from your source control application.

InstallShield 2010 User Guide

ISP-1600-UG00

103

Chapter 3: Getting Started Working with Projects

Task

To open a project from source control: 1. 2. 3.

On the File menu, click Open. The Open dialog box opens. Click the Source Control button. A login dialog box for your source control program opens. Log on to your source control program and browse to your project folder or database.

InstallShield gets the latest versions of every file in that project to a working directory.

Note: If you do not have a source control application on the system that has InstallShield, the Open dialog box does not display the Source Control button.

Opening Patch Creation Properties Files in Direct Edit Mode


You can open a previously created patch creation properties file from the Open dialog box.

Task

To open a patch creation properties (.pcp file): 1. 2. 3.

On the File menu, click Open. The Open dialog box opens. In the Files of type list, click Patch Creation Properties Files (*.pcp). Select the .pcp file you want to edit and click Open.

Your patch project file opens in the Direct Editor.

Opening Windows Installer Packages


InstallShield provides the option to either edit MSI packages directly in the IDE in Direct Edit Mode or convert it to an InstallShield project (.ism), and then edit it as a Basic MSI project in the IDE.

Note: Some functionality may be limited when editing an MSI package in Direct Edit Mode.

Task

To open an MSI package in Direct Edit Mode of the IDE: 1. 2. 3. 4.

Click the Open Project button on the toolbar. A browse dialog opens. Select Windows Installer Packages (*.msi) from the Files of Type list. Select the MSI package that you want to open. Ensure that the Open as field is set to Auto, and click Open.

104

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Note: By default, the IDE opens an MSI package in Direct Edit Mode.

The Open MSI/MSM Wizard can convert an existing Windows installer (.msi) package to an InstallShield project (.ism) file, and open the new project to modify in the IDE.

Note: You can also open Patch Creation Project files (.pcp files) in InstallShield and edit them in the Direct Editor.

Opening Merge Modules


The Open MSI/MSM Wizard can convert an existing Windows Installer merge module (.msm file) to an InstallShield project (.ism) file, and open the new project in the InstallShield IDE.

Task

To launch the Open MSI/MSM Wizard: 1. 2. 3.

Click the Open Project button on the toolbar. A browse dialog opens. Select Windows Installer Modules (*.msm) from the Files of Type list. Go to the merge module and click Open.

The Open MSI/MSM Wizard prompts for specific information about the project you are creating, and then opens your new merge module project in the IDE.

Opening Object Projects


You can open an object project (.ipo or .ipr) that you created using InstallShield Professional. When you open this project in InstallShield, it is migrated to a merge module (.msm) project.

Placing Merge Modules in the Redistributables View


To associate your merge module with InstallShield installation projects, you can automatically place your merge module project in the Modules folder so it is available in the Redistributables view for use in setup projects.

Task

To automatically place your merge module project in the Modules folder:

Select the Add to local merge module catalog option in the Merge Module Options panel of the Release Wizard.

Saving Projects
When you create a new project, it is saved automatically with the name and location that you provide in the New Project dialog box.

InstallShield 2010 User Guide

ISP-1600-UG00

105

Chapter 3: Getting Started Working with Projects

InstallShield enables you to save a copy of the open project as a template or as a new project with a different name and location.

Saving a Project with a New Name and Location


When you save your project with a new name and location, a copy of the renamed project file and all of its associated files and folders are saved in the new location. The next time that you save your project, all changes are saved to this new location.

Task

To save your project with a new name and location: 1. 2. 3.

On the File menu, click Save As. The Save As dialog box opens. In the Save in box, select the appropriate location. Select or clear the Create Project Name subfolder and save the project in the created folder check box as appropriate. In both cases, a <Project Name> subfolder is created in the Project Location box (on the File Locations tab of the Options dialog box). If you select the Create Project Name subfolder and save the project in the created folder check box, the project file (.ism) is saved in the <Project Name> subfolder. If you clear the check box, the project file is saved in the location specified in the Project Location box.

4.

If the new projects GUID should be different than the GUID of the original project, select the Create and assign a new project GUID to the saved project check box. If the new projects GUID should be the same GUID of the original project, clear this check box. To use the name that you specified in the File name box as the value for the Product Name setting (in the General Information view) of the new project, select the Update the project settings appropriately based on the new project name check box. If the new projects Name property should be the same as that of the original project, clear this check box.

5.

Note: When you save a project with external dependencies, such as InstallScript files, your new project points to the original copies of these files. Duplicate copies are not made. Therefore, before you delete your original project, ensure that you do not delete any files that may be used by the new project.

Converting from One Project Type to Another Project Type


InstallShield offers support for converting some types of projects to other types of projects.
Table 3-6: Project Converters Project Converter Convert Basic MSI project to InstallScript MSI project Convert InstallScript MSI project to InstallScript project How-To Information See Converting a Basic MSI Project to an InstallScript MSI Project.

See Converting an InstallScript MSI Project to an InstallScript Project.

106

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Table 3-6: Project Converters Project Converter Convert InstallScript project to Basic MSI project How-To Information Use Repackager to convert an InstallScript project to a Basic MSI project.

Edition: Repackager is available in the Premier edition of InstallShield. It is also included with AdminStudio. Convert InstallScript MSI project to Basic MSI project Use Repackager to convert an InstallScript MSI project to a Basic MSI project.

Edition: Repackager is available in the Premier edition of InstallShield. It is also included with AdminStudio. Convert InstallScript project to InstallScript MSI project This conversion is a two-step process: 1. Use Repackager to convert an InstallScript project to a Basic MSI project. 2. Use InstallShield to convert the Basic MSI project to an InstallScript MSI project. See Converting a Basic MSI Project to an InstallScript MSI Project.

Edition: Repackager is available in the Premier edition of InstallShield. It is also included with AdminStudio. Convert Compact project to Basic MSI project Convert Visual Studio setup project to InstallShield Basic MSI project Convert Visual Studio merge module project to InstallShield Merge Module project See Converting Compact Projects to Basic MSI Projects.

See Converting Visual Studio Projects to InstallShield Projects.

See Converting Visual Studio Projects to InstallShield Projects.

Tip: InstallShield also includes a command-line tool that converts a ClickOnce package to a Basic MSI project with an associated Developer Installation Manifest (.dim) file. To learn more, see ClickOnce2Dim.exe.

Converting a Basic MSI Project to an InstallScript MSI Project


Converting your Basic MSI project to an InstallScript MSI project allows you to take full advantage of the scripting capabilities that are available in InstallShield.

Caution: This conversion is irreversible. After you convert your Basic MSI project to an InstallScript MSI project and save it, you cannot easily convert your project back to a Basic MSI project. Before you convert your Basic MSI project, it is generally good practice to first create a back-up copy of it.
InstallShield 2010 User Guide ISP-1600-UG00 107

Chapter 3: Getting Started Working with Projects

Converting Projects

Task

To convert your Basic MSI project to an InstallScript MSI project: 1. 2.

Open your Basic MSI project. On the Project menu, point to Project Converters, and click Convert to InstallScript MSI project.

Converting Dialogs
Because an InstallScript MSI project uses resource-based dialogsinstead of using the Windows Installer dialogrelated tablesno Windows Installerbased dialogs from your original project are available after the migration. You need to manually add any custom dialogs. Your converted installation project contains the default InstallScript MSI dialogs. To review the default dialogs, go to the InstallScript view and view the dialogs displayed in the OnFirstUIBefore and OnFirstUIAfter events.

Converting an InstallScript MSI Project to an InstallScript Project


InstallScript MSI projects created using InstallShield, InstallShield DevStudio, or InstallShield Developer can be easily converted to the InstallScript project type.

Task

To convert an existing InstallScript MSI project to an InstallScript project: 1. 2.

Open the InstallScript MSI project. On the Project menu, point to Project Converters, and click Convert to InstallScript project.

Converting Compact Projects to Basic MSI Projects

Note: InstallShield does not enable you to create new Compact projects.

If you created a Compact project in an earlier version of InstallShield and you decide that you want your installation to include any of the functionality that is offered in a Basic MSI project, you can convert your Compact project to a Basic MSI project.

Caution: Converting a project from a Compact project type to a Basic MSI project type is irreversible.

108

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Task

To convert a Compact project to a Basic MSI project: 1. 2.

Open the Compact project. On the Project menu, point to Project Converters, and then click Convert Compact Project to Basic MSI Project.

GUIDs
GUID stands for globally unique identifier. A GUID is 128 bits long, and the algorithm used to generate a GUID guarantees each GUID to be unique. Because GUIDs are guaranteed to be unique, they can be used to identify COM classes, Product Codes, and various other codes. For example, after a product is installed, a key is created under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall and is named after the installations Product Code. At one time, this key was named after the Product Name. However, this caused a potential conflict. If two installations were installed on the same machine, and both shared the same Product Name, they would also share the same registry key. Because a GUID is now used, it guarantees that this conflict does not occur. An example GUID is {5D607F6A-AF48-4003-AFA8-69E019A4496F}. Any letters in a GUID must be in uppercase.

GUIDs in Your Project


When you create an installation project, there are a number of different GUIDs that are relevant to your project.
Table 3-7: GUIDs GUID Name Product Code or Product GUID Package Code or Package GUID Description The product GUID uniquely identifies your application. (Windows Installer based projects only) The package code uniquely identifies your installation package. (Windows Installer based projects only) The patch GUID uniquely identifies a patch package. (Windows Installer based projects only) The upgrade GUID uniquely identifies a family of products for upgrade purposes. It is important for major upgrades.

Patch GUID

Upgrade Code or Upgrade GUID

Project: For information on when you need to change GUIDs in a Basic MSI or InstallScript MSI project, see Major Upgrade vs. Minor Upgrade vs. Small Update.

InstallShield 2010 User Guide

ISP-1600-UG00

109

Chapter 3: Getting Started Working with Projects

Changing the Default Project Location


All new projects are saved by default in the following location:
C:\InstallShield 2010 Projects

To specify a new default location for your installation projects, use the File Locations tab on the Options dialog box.

Note: Although this folder is used for all new installation projects, any existing projects remain in the previous location.

Reusing Project Elements


You can save several elements in your project to reuse in another project. In some cases, the data must be saved to an intermediary file and in others you can export it directly to another .ism file. The manner in which you can reuse each element is described below.

Entire Projects
By saving a project as an InstallShield project template, you can create a project from the template that is almost identical to the original project.

Registry Entries
When you export registry entries to a REG file, you can import that file into another components registry data in the same project or an entirely different one.

String Entries
You can export a projects string entries for a specific language to a tab-delimited text file. Typically, you would send the text file out for translation and then import the string entries back into the project for another language. However, you could also add the exported string entries to another project by importing the file into the other project.

End-User Dialogs
You can save all of your dialogs to an .rc file, export them individually to InstallShield dialog template files, or export them directly to another project.

Components
To export a component to another project, right-click on the component and select Export Components Wizard. Follow through wizard and the component and all of its data are added to the specified project.

Custom Actions
You can export a custom action to another project by right-clicking on the custom action in the Custom Actions explorer and clicking Export. The Custom Actions explorer is in the Custom Actions and Sequences view (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) and the Custom Actions view (in Merge Module and MSM Database projects).

110

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Using a Repository to Share Project Elements


InstallShield supports the use of repositories. A repository is a collection of common elements that can be shared and reused in different installation projects. Elements that can be stored in a repository include:

End-user dialogs InstallScript files Merge modules Project templates SQL scripts System searches

Repositories provide you with the ability to reuse project elements in multiple projects and strive for consistency. They also save you from having to duplicate work. For example, if many of the installations for your organizations products include a particular custom dialog, you can create that custom dialog once and then publish it to your repository. Any time you want to use that dialog in another installation, simply add the dialog from your repository to your project. Two types of repositories are available in InstallShield:

Local repositoryA local repository is your own collection of installation elements that you want to be able to reuse in multiple projects. A local repository is stored on your local machine, and it is not available to other installation authors. Network repositoryA network repository is a collection of installation elements that multiple installation authors can access and reuse in their projects as needed. A network repository fosters collaboration among installation authors; it is stored on a network. For information on configuring a network repository, see Setting up a Network Repository.

Edition: Network repositories are available in the Premier edition of InstallShield only. Local repositories are available in both the Premier and Professional editions of InstallShield.

Setting up a Network Repository

Edition: Network repositories are available in the Premier edition of InstallShield only.

To configure a network repository, or to change the network repository settings, use the Repository tab on the Options dialog box.

Project Templates
A project template (.ist file) contains all of the default settings and design elements that you want to use as a starting point when you create an installation project or merge module project.

InstallShield 2010 User Guide

ISP-1600-UG00

111

Chapter 3: Getting Started Working with Projects

You can open a template in InstallShield and edit it as you would a project. To create a template, save any project as an .ist file. For more information, see Creating Project Templates. For instructions on starting a new project based on a template, see Basing New Projects on Templates. InstallShield project templates serve only as a starting point for new projects. After you have created a project based on a template, there is no link between the current project and the existing template. If you change an element in the template, it does not affect the project that you created based on that template. However, you can modify the template and create another project based on the updated version of the template.

Creating Project Templates


You can create a project template from any installation project or merge module project (.ism) file.

Task

To create a template: 1. 2. 3. 4. 5. 6. 7.

Edit the project to include the desired default properties, dialogs, features, and components. In the View List under Installation Information, click General Information. In the Project Comments setting, type a description of your template. The comments will be displayed for this template in the New Project dialog box. On the File menu, click Save As. The Save As dialog box opens. In the Save As type box, select InstallShield Template (*.ist). Type a file name (with the .ist extension) and select a location for the new template. The recommended location for templates is a Templates folder within the project location folder. Click OK.

You can open the template in InstallShield and make additional changes. You can use the final version of your template to create a new project.

Basing New Projects on Templates


To save time, you can base multiple projects on a single project template that contains default settings and design elements. The template can be stored somewhere on your system. It can also be stored in a repository.

Task

To create a project using a template as a starting point: 1. 2. 3.

On the File menu, click New. The New Project dialog box opens. Click the All Types tab. Select the template that you want to use.

112

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with Projects

Note: To display templates that are stored in a repository, right-click in the box of project types and ensure that Show Templates in Repository is enabled. To add a template to the tab, right-click in the box of project types and then click Add New Template. Then browse to the desired template file (.ist file). 4. 5. 6.

In the Project Name box, type a name for your project. In the Location box, type the path to the directory where you want to store your template, or click the Browse button to find it. Click OK. InstallShield creates the new project based on the template that you selected, and the new project is opened in InstallShield.

The new project is virtually identical to the project template, except that InstallShield generates a new product code (for installation projects), package code, and upgrade code (for Windows Installerbased installation projects), and a module ID for merge module projects.

Publishing Project Templates to a Repository


If you have an existing template that you would like to reuse for other projects or share with other users, you can publish it to a repository.

Task

To publish a template to a repository: 1. 2. 3. 4.

On the File menu, click New. The New Project dialog box opens. Click the All Types tab. Right-click the template that you want to publish and then click Publish Template to Repository. The Publish Wizard opens. Complete the panels in the Publish Wizard.

After you have created a project that is based on a template in your repository, there is no link between the current project and the existing repository template. If you make a change to the template and then republish it to the repository, it does not affect the project that you created based on the template. However, you can create a new project based on the updated version of the template in the repository.

Sample Projects
A number of example project (.ism) files have been included with the InstallShield installation. These projects are stored in the Samples folder in the following location by default: C:\Program Files\InstallShield\2010. These projects show you how a certain aspect of an installation projectsuch as release flagscan be implemented.

InstallShield 2010 User Guide

ISP-1600-UG00

113

Chapter 3: Getting Started Project Assistant

Project Assistant
Project: The Project Assistant does not appear in the following project types:

InstallScript Object Merge Module MSM Database QuickPatch Smart Device

InstallShield provides a Project Assistant to help you quickly and easily build a basic installation project. The Project Assistant provides a framework of installation project tasks to guide you through the project creation process and provides pertinent information along the way.

How the Project Assistant Works


When you create a new installation project or transform, the Project Assistant view automatically opens. The Project Assistant is available for the following projects: Basic MSI, InstallScript, InstallScript MSI, MSI Database, and Transform. Information that you enter in the Project Assistant is saved directly to the underlying project file. Therefore, you can switch to the Installation Designer (described below) and view or modify your information using the full power of the InstallShield Installation Development Environment (IDE). In this way, you can use the Project Assistant to create the foundation for a more advanced installation where you use the Installation Designer, as needed, to customize your installation.

Integration with the Installation Designer


The Installation Designer tab displays all of the views in the InstallShield IDE that are available for your project type. Here you can add more complex and powerful elements to your installation project. You can create your installation project using the Project Assistant and then use the Installation Designer to fine-tune project elements. The Installation Designer and the Project Assistant run simultaneously. Any changes that you make in one are reflected instantly in the other. For example, if you remove a feature while using the Installation Designer tab, that feature is no longer present in your installation project and does not appear in the Project Assistant.

Using the Project Assistant


When you create a new installation project, the Project Assistant is automatically displayed. The home page has an installation design diagram to help you visualize the steps that are involved in creating an installation. You can work within the Project Assistant to create your project or click the Installation Designer tab to further define a basic installation project.

Note: To learn how to use the Project Assistant to create an InstallScript or Basic MSI installation project, go through the appropriate project tutorial. The tutorials take you step-by-step through the Project Assistant to create a basic installation project.
114 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Using the More Options, Other Places, and Help Links Sections in the Project Assistant
The left column on each Project Assistant page contains one or more lists of links to help you in creating your installation and finding information:

More OptionsProvides additional configuration options relating to the specific area on the Project

Assistant page. These are less common options that complete the functionality of the Project Assistant.

Other PlacesThe view in the Installation Designer that corresponds to the current Project Assistant

page. Clicking the link launches the full Installation Designer and activates that view.
Help LinksThis list provides links to help topics pertinent to the current Project Assistant page.

Navigating in the Project Assistant

Task

To navigate from one page of the Project Assistant to another, do one of the following:

To navigate directly to a specific page, click the appropriate icon in the navigation bar at the bottom of the page. To follow the Project Assistant steps sequentially, do one of the following:

Click the Next or Back arrow buttons to move forward or backward. Press CTRL+TAB to move to the next page and CTRL+SHIFT+TAB to move to the previous page.

To move back to the Home page and view the installation design diagram, click the Home button on the navigation bar.

Opening the Installation Designer


The Installation Designer tab displays the views in the InstallShield Installation Development Environment (IDE). You can use this tab to add more complex and powerful elements to your installation project than you can with the Project Assistant. To open a view in the Installation Designer, click the Installation Designer tab.

Note: The Installation Designer and the Project Assistant run simultaneously. Any changes that you make in one are reflected instantly in the other.

Showing or Hiding the Project Assistant


The Project Assistant provides a simplified view of installation project tasks. You can perform all of the same tasksand also further customize your projectthrough the Installation Designer.

InstallShield 2010 User Guide

ISP-1600-UG00

115

Chapter 3: Getting Started Project Assistant

If you prefer to create your InstallShield project entirely from within the Installation Designer, you can hide the Project Assistant so that its tab is not displayed in the InstallShield interface. Similarly, if the Project Assistant is hidden, you can choose to display it.

Task

To show or hide the Project Assistant:

On the View menu, click Project Assistant. When the Project Assistant command has a check mark next to it, the tab for the Project Assistant is shown in the InstallShield interface. When the check mark is not displayed, the Project Assistant is hidden. If the Project Assistant command does not have a check mark, the Installation Designer becomes the default tab whenever you create a new project.

Application Information Page


The Application Information page is where you specify general information about the application your project will install, including the applications name and version, your companys name and Web address, and the application icon.

Add or Remove Programs in the Control Panel


The Add or Remove Programs in the Control Panel provides a list of the applications that are installed on a computer system. You can view information about particular programs and add, modify, or remove programs from Add or Remove Programs. Systems running Microsoft Windows 2000 or later display more information in Add or Remove Programs. The information you provide in the Application Information page of the Project Assistant is used to populate information for your applications Add or Remove Programs information when your application is installed.

Company Name and Product Name in Your Installation


Your company name and product name are used in several places in your installation project.

How Your Company Name Is Used Throughout Your Installation Project


Your company name is used to set the default installation directory for your application. It is also used in Add or Remove Programs in the Control Panel for your application on the end users system.

How Your Product Name Is Used Throughout the Installation Project


Your product name is used in your applications entry in Add or Remove Programs (in the support information link) on the target system. It is also used in setting the default installation directory.

116

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Installation Requirements Page


The Installation Requirements page enables you to easily set installation requirements for the target system. For example, if your application requires a specific operating system in order to run properly, you can indicate that in the first section of this page.

Specifying Operating System Requirements in the Project Assistant

Project: The ability to specify operating system requirements in the Project Assistant is available in the following project types:

Basic MSI InstallScript MSI

When you specify operating system requirements on the Installation Requirements page of the Project Assistant, InstallShield creates launch conditions. These conditions are added to the LaunchCondition table of your .msi file; you can view and edit this table in the Direct Editor.

How InstallShield Creates the Operating System Launch Conditions


When you specify operating system requirements on the Installation Requirements page, you are essentially excluding operating systems that do not support your application. For example, if you select only the check box for the latest Windows operating system, InstallShield creates a launch condition to exclude the operating systems that you did not select on the Installation Requirements page. With this type of launch condition, future versions of Windows operating systems are supported automatically because they are not excluded in the launch condition.

When Does the Installation Check for Requirements?


InstallShield checks that the required software or operating system is present on the target system during the beginning of the installation, before any files are transferred.

Modifying the Run-Time Message for Software Requirements


If your installation has software requirements and the target system does not have the selected software, a run-time message is displayed during the installation. You can modify the message that is displayed.

Task

To modify the run-time message: 1. 2. 3. 4.

In the Project Assistant, open the Installation Requirements page. Select Yes in answer to the software requirements question. Select the software that your application requires. The default run-time message is displayed to the right. Click the run-time message to edit it.
ISP-1600-UG00 117

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Creating Custom Installation Requirements


For Basic MSI installation projects, you can create customized installation requirements in the Installation Designer by using the products Install Condition property. For this property, you can create conditions that the Windows Installer must evaluate before launching the installation. For more information, see Setting Product Conditions. You can also use the System Search Wizard to search for a particular file, folder, registry key, or .ini value on the target system. The System Search Wizard enables you to create a condition with the search value.

Installation Architecture Page


The Installation Architecture page lets you specify the features you want your installation program to display to the end user. A feature is the smallest separately installable piece of your product from the end users standpoint. Individual features are visible to end users when they select a Custom setup type during installation.

Note: Features can contain subfeatures, subsubfeatures, and so forth, to as many levels as your installation program requires.

Adding Features in the Project Assistant

Task

To add a feature: 1. 2. 3.

In the Project Assistant, open the Installation Architecture page. Select Yes in answer to Do you want to customize your Installation Architecture? To add a main feature, click the Installation Architecture explorer. To add a subfeature, click the feature that you want to be the parent feature, and then click New. The Project Assistant creates the new feature. Name the feature or click Rename to name it later.

4.

Determining Whether to Create a Multiple-Feature Installation


Features are the building blocks of an installation, from the end users perspective. Because of this, features should represent distinct and discrete pieces of functionality within your installation. If your application has different blocks of functionality, you should create a multiple-feature installation. For example, if your installation contains your application (.exe file) and a help library (.hlp file), your installation project should contain at least two featuresone for each piece of functionality. To learn more about creating a multiple-feature installation within the Project Assistant, see Creating Installations with Multiple Features.

118

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Creating Installations with Multiple Features


You can create an installation with multiple features using the Project Assistant or in the Installation Designer (IDE).

Task

To create a multiple-feature installation in the Project Assistant: 1. 2. 3. 4. 5.

In the Project Assistant, open the Installation Architecture page. Select Yes to indicate you want to customize your installation architecture. Click the Installation Architecture explorer and then click New. The Project Assistant creates a new feature. Press F2 or right-click the feature and select Rename to provide a name for the new feature. To add another feature at the same level, click the Installation Architecture explorer and then click New. To create a subfeature, click the feature that you want to be the parent feature, and then click New. The Project Assistant creates the new feature. Continue adding features and subfeatures as needed.

6.

To learn about working with features in the Installation Designer, see Creating Features.

Default Features
The default feature concept exists only in the Project Assistant. All resources (for example, files or registry data) that are added to an installation project need to be associated with a feature. If a resource is not associated with a feature, it is not installed to the target system at run time. Using a default feature simplifies the authoring experience in the Project Assistant. You do not need to worry about associating project resources with a feature to ensure that they are installed. When you add registry data, create new shortcuts, or add files when All Application Data is selected, all of these resources are added to the default feature.

Setting the Default Feature


You can set the default feature in the Installation Architecture page of the Project Assistant.

What Happens If There Are No Features or No Default Feature Is Selected?


When you navigate to the Installation Architecture page or add data to the Application Files, Application Shortcuts, or Application Registry pages, InstallShield selects the first root feature as the default feature. If there are no features, InstallShield creates one silently.

Defining Feature Hierarchy


Top-level features are the highest level in the feature hierarchy. Top-level features might include the application you want to install, a help library feature, and a sample projects feature. Beneath the top-level features are subfeatures or child features. This is a feature that is dependent upon another feature for installation purposes. If the parent (or top-level) feature is not installed to the target system, the child feature is not installed.
InstallShield 2010 User Guide ISP-1600-UG00 119

Chapter 3: Getting Started Project Assistant

Application Files Page


The Application Files page lets you specify the files you want to associate with each of your features.

Adding Files to Features in the Project Assistant

Task

To add a file to a feature: 1. 2. 3. 4. 5. 6. 7.

In the Project Assistant, open the Application Files page. In the feature list at the top of the page, select the feature that should contain the file. In Destination Computer explorer, select the folder to which you want to add the file. Click Add Files. The Open dialog box opens. Browse to the file that you want to add. Click Open to add the file to the selected feature. The The file you have added ... may have dependencies message appears. Click Yes if you want to have those dependencies automatically added to your installation project.

Removing Files from Features in the Project Assistant

Task

To remove a file from a feature: 1. 2.

In the Project Assistant, open the Application Files page. Click the file you want to remove and press Delete.

Adding Files to a Fixed Folder Location


If you know exactly where you want the installation to install your project files on the target system, you can hard-code a fixed folder destination.

Task

To add files to a fixed folder location in the Project Assistant: 1. 2. 3. 4.

In the Project Assistant, open the Application Files page. Right-click Destination Computer and click New Folder. For the new folders name, type the drive in which the destination is locatedfor example, C:. Beneath the drive letter folder, further define the destination path by adding subfolders.

120

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Viewing Additional Predefined Folders


The Project Assistants Application Files page displays the more commonly used predefined folders. You can view and hide predefined folders in this page.

Task

To display additional predefined folders: 1. 2. 3.

In the Project Assistant, open the Application Files page. Right-click Destination Computer and click Show Predefined Folder. In the list of predefined folders, select the folder you want to display.

Tip: To hide predefined folders, deselect them in the list of predefined folders.

Application Shortcuts Page


The Application Shortcuts page lets you specify shortcuts for your applications files on the target systems desktop or Start menu. By default, this page displays a shortcut for each executable that you have included in your installation project. You can delete these, and add shortcuts to other files that you have included in your installation project.

File Extensions
Filename-extension associations, or file associations, are registry settings that tell Windows what application to use to open files of a certain type. For example, Windows typically opens text files (files with the .txt extension) with Windows Notepad, and opens bitmap files (files with the .bmp extension) with Microsoft Paint. A file extension allows someone to identify the type of file without accessing the file. A suffix (.abc) is appended to the file name. The file extension is also useful in that another application can recognize whether the application can work with the file (for example, open the file or modify it), based on the extension. In InstallShield, you can register your own file extensions in the File Types view. Registering your file extension instructs the target machines operating system to use your application to open files with your file extension when an end user clicks on a file.

Creating Shortcuts to Files Not Included in the Installation


You can configure your installation to create a shortcut that points to a file that already exists on the target system. This file does not have to be included in your installation project.

InstallShield 2010 User Guide

ISP-1600-UG00

121

Chapter 3: Getting Started Project Assistant

Task

To create a shortcut to a file not included in the installation: 1. 2. 3. 4. 5.

Open the Shortcuts view in the Installation Designer. Right-click on the node where you want to create the shortcut on the target system and select New Shortcut to Preexisting File. The Browse for Shortcut Target dialog appears. Browse to the target files location and the files name in the File Name field. Click OK. Define the shortcuts properties.

Modifying a Default Shortcut in the Project Assistant

Task

To modify a default shortcut: 1. 2. 3.

In the Project Assistant, open the Application Shortcuts page. Click the shortcut to activate the shortcut options. Select the shortcut location (Start Menu and/or Desktop) and browse to an alternate icon, if necessary.

Associating a Shortcuts Target with a File Extension in the Project Assistant


You can associate a shortcuts target with a file extension. When you do this, Windows will use the target file to launch files with the specified file extension. For example, if you enter .txt, when the end user opens a .txt file, the target file of this shortcut is launched to open the .txt file.

Task

To associate a shortcuts target with a file extension: 1. 2. 3. 4.

In the Project Assistant, open the Application Shortcuts page. Click the shortcut to activate the shortcut options. Select the Associate shortcut with file extension option. Type the file extension that you want to associate with this shortcuts targetfor example, txt. You can add multiple extensions by separating them with a comma.

Application Registry Page


The Application Registry page lets you specify any registry data that your application requires.

122

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Updating the Registry


The registry is a database for your computers configuration information. Information included in a computers registry includes user profiles, hardware and software installed on the computer, and property settings.

How Do I Know What Registry Data My Application Requires?


The application developer should be able to provide registry information for you. Specifically, you will need to know if the application you are installing requires any user-specific (HKEY_CURRENT_USER) or machine-specific (HKEY_LOCAL_MACHINE) settings. The developer can provide a .reg file that you add to your installation. InstallShield allows you to import .reg files into your installation project.

Configuring Registry Data in the Project Assistant

Task

To configure registry data: 1. 2. 3. 4. 5.

In the Project Assistant, open the Application Registry page. Select Yes in answer to the question about configuring registry data. Right-click the registry item to which you want to add the data, select New, and point to Key. Name the key. Right-click the key, select New, and point to the appropriate command. You can pick Default Value, String Value, Binary Value, DWORD Value, Multi-String Value, or Expandable String Value, depending on the type of data you want to register.

Modifying Registry Data Values in the Project Assistant

Task

To modify registry data: 1. 2.

In the Project Assistant, open the Application Registry page. Double-click the data. If you double-clicked a multi-line string, the Multi-Line String Value dialog box opens. If you double-clicked any other type of registry data, the Edit Data dialog box opens.

3.

Edit the data and click OK.

Associating Registry Data with Features


For Basic MSI projects, all the registry data that you add in the Project Assistants Application Registry page is added to your projects default feature. You can associate your registry data with another feature in the Installation Designer.
InstallShield 2010 User Guide ISP-1600-UG00 123

Chapter 3: Getting Started Project Assistant

Task

To use the Installation Designer to associate registry data with a feature other than the default feature (Basic MSI projects only): 1. 2. 3.

In the View List under System Configuration, click Registry. In the View Filter list, select the feature with which you want to associate the registry data. Create or drag and drop the registry data in the appropriate registry location.

Using Variable Data Types in Registry Data


InstallShield allows you to use variable data types or properties when creating registry data for your installation project.

Task

To use INSTALLDIR as a variable in the registry (Windows Installer-based projects only): 1. 2. 3. 4. 5. 6. 7. 8.

In the Project Assistant, open the Application Registry page. Select Yes to indicate that you want to configure the registry data that your application will install. Right-click HKEY_CLASSES_ROOT, point to New, and select Key. Name the key Installation Location. Right-click the Installation Location key, point to New, and select String Value. Name the string value My Installation Location. Double-click the My Installation Location key. The Edit Data dialog box opens. In the Value Data field, type [INSTALLDIR].

At run time, the value of [INSTALLDIR] is replaced with the installation directory.

Application Paths
The application path registry key contains data that Windows uses as a private search path for the specified applications .dll files. If you install an applications .dll files into a directory not found in the PATH environment variable (and not into the applications directory), you should set the appropriate application path to include the .dll file directory during installation. Application path information is stored in the registry under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AppName.exe.

Installation Interview Page


The Installation Interview page lets you specify the dialogs you want the end user to see when your installation program runs. Based on your answers to the questions on this page, the Project Assistant adds the corresponding dialog to your installation project.

124

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Specifying Dialogs for Your Installation in the Project Assistant


The questions that are displayed on the Installation Interview page of the Project Assistant help you specify which dialogs you want the end user to see when your installation program runs.

Task

To specify dialogs for your installation: 1. 2. 3. Do you want to display a License Agreement Dialog?Select Yes to browse to your license agreement

file.
Do you want to prompt users to enter their company name and user name?Select Yes to display a

dialog requesting this information.


Do you want your users to be prompted to modify the installation location of your application?Select

Yes to present a dialog that allows end users to change the installation location. See Allowing End Users to Modify the Installation Location for more information.
4. Do you want users to be able to selectively install only certain parts of your application?Select Yes to allow end users to select which parts of the application they want to install. See Creating Selectively Installable Installations for more information. Do you want to give users the option to launch your application when the installation completes?Select Yes and browse to your application file. When this option is set to Yes, the final dialog in the installation presents a check box that allows end users to immediately launch your application upon clicking the Finish button.

5.

Tip: To add a custom graphic to your installation dialogs, click the link in the More Options section of this page to launch the Dialog Images dialog box.

Allowing End Users to Modify the Installation Location


If you want to provide end users with control over where your software is installed on their system, you can allow them to modify the installation location. In a Windows Installer-based installation, the Windows Installer property INSTALLDIR serves as the default installation directory. When you allow users to modify the installation location, the CustomSetup dialog is presented during the installation. In an InstallScript project, TARGETDIR serves as the default installation directory. When you allow users to modify the installation location, the SdSetupType2 dialog is presented during the installation.

License Agreements
In order to install your product, you may require that your end users agree to certain legal requirements. For example, most software vendors do not allow end users to copy or distribute their software to others. Your installation can present an End User License Agreement (EULA) in the License Agreement dialog at run time. The EULA is a legal contract between you and the end user, with regard to the use of your product.

InstallShield 2010 User Guide

ISP-1600-UG00

125

Chapter 3: Getting Started Project Assistant

The License Agreement dialog displays your license agreement text and contains a radio button group (Yes or No). If the end user does not agree to accept the EULA, your software is not installed and the installation ends.

Task

To add a License Agreement dialog to your project in the Project Assistant: 1. 2. 3.

In the Project Assistant, open the Installation Interview page. Select Yes to indicate that you want to add a License Agreement dialog. Type the path to your license agreement file or browse to the file:

Project: For Basic MSI projects, the file must be a rich text file (.rtf). For InstallScript and InstallScript MSI projects, the file type depends on which license dialog that you are using and which parameters you are passing to it. The SdLicenseExand SdLicense2Exfunctions have support for .rtf files and text files (.txt).

Creating Selectively Installable Installations


You can allow your end users to select which portions of your installation they want to install to their systems. This is a custom installation, which provides a list of the available features within your installation. The end user can select the features to install in a dialog presented at run time. For example, your installation might contain your applications executable (.exe) file, a documentation (.chm) file, and a samples file. All of these files are contained in different features, which are provided in an option list to the end user. If the end user needs only the application, they can select to install the executable file, but not the documentation or samples file.

Installation Localization Page


The Installation Localization page lets you specify the languages your installation supports, and specify string values and associated identifiers, which you can use in your end user interface to make your installation more easily localizable in other languages.

Project: Multilingual language support is available in the Premier edition of InstallShield. For more information, visit the Acresso Web site.

Note: You can specify the set of string data that you want to edit in the drop-down menu at the top of the page.

126

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Project Assistant

Localizing String Data from the Project Assistant


Much of the text in your installation project is stored as string entries. To make localizing your installation easier, InstallShield provides the capability to export your strings for translation and import the translated strings back into your project.

Task

To export all of the string data in your project for translation: 1. 2. 3. 4. 5. 6.

In the Project Assistant, open the Installation Localization page. In the data list at the top of the page, select All String Data. In the list of languages, select a language. In the More Options area, click Export localizable strings. The File Name dialog box opens. Save the text (.txt) file to the location you want. Send the text file to your translation company or department.

Task

After the strings in your text file are translated, you can import the strings back into your project: 1. 2. 3. 4. 5.

In the Project Assistant, open the Installation Localization page. In the data list at the top of the page, select All String Data. In the list of languages, click the language that matches the strings that you want to import. In the More Options area, click Import localizable strings. The File Name dialog box opens. Browse to your .txt file and click Open. The translated strings are imported back into your project.

How Localized String Data Is Used in the Installation


There are two types of string data in an installation projectstring data that is specific to your installation and string data that is specific to your application. The majority of the string data in an InstallShield project is used at run time when an end user runs the installation. However, some of the string data is installed to the target system. For example, a localized shortcut is localized string data that is installed to the end users system.

Build Installation Page


The Build Installation page lets you specify what type of distribution you want to build and, optionally, the location to which you want to copy the distribution files. It also enables you to digitally sign the package.

InstallShield 2010 User Guide

ISP-1600-UG00

127

Chapter 3: Getting Started Project Assistant

Building Your Installation from the Project Assistant

Task

To build your installation: 1. 2.

In the Project Assistant, open the Build Installation page. Select the installation image types you want to build.

Note: The Single MSI Package option should be selected for machines that already have Windows Installer installed them since no attempt will be made to check and install the engine if it is not there. 3.

If you want InstallShield to automatically copy your installation to another location after the build finishes, click the Optional distribution settings link for each build option and specify the location. If you want InstallShield to distribute your installation after the build finishes, click the Optional distribution settings link for each build option and select the Distribute After Build check box.

4.

To digitally sign your Setup.exe file to assure your end users that the code within your application has not been modified or corrupted, click the Digitally Sign Setup hyperlink. The Digitally Sign Setup dialog box opens. Configure the settings as needed. Click Build Installations.

5.

The Output window opens, and the Build tab displays information about the progress of the build. The build is finished when the Build tab displays the log file information.

Tip: The Signing tab in the Installation Designer lets you specify which portions of your installation should be digitally signed at build time. InstallShield enables you to sign any and all of the following files in a release, depending on what type of project you are using:

Windows Installer package (.msi file) for Basic MSI, InstallScript MSI, and Merge Module projects
Setup.exe file for Basic MSI and InstallScript MSI projects

Media header file for InstallScript projects Package (self-extracting single-executable file) for InstallScript projects Any files in your release, including your application files

To learn more, see Digitally Signing a Release and Its Files at Build Time.

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

128

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started ClickOnce Assistant

After Completing the Project Assistant: Next Steps


After going through the Project Assistant pages and completing the fields, you have an installation project framework that you can use as a functional installation or you can further customize to fit your needs.

Further Customizing Your Project


The Installation Designer provides an easy way to access all of the installation creation views available in InstallShield. Click the Installation Designer tab at the top of the Project Assistant workspace to display the views. Within the Installation Designer, you can see the View List, which is a list of all available views for the project type that you are creating. To display the View List on the left side of the workspace, press F4.

Learning About InstallShield Views


For detailed information about each of the InstallShield views, refer to the topics in the View List section of the InstallShield Help Library.

ClickOnce Assistant
Project: The ClickOnce Assistant applies to the ClickOnce Deployment project type.

The ClickOnce Assistant makes creating and building a ClickOnce installation project quick and easy. The ClickOnce Assistant provides a framework of installation project tasks to guide you through the project creation process and provides pertinent information along the way. The ClickOnce Assistant framework includes these components:

Application Information Page Installation Requirements Page Application Files Page Security Settings Page Shell Integration Page Automatic Updates Page Build Installation Page

Using the ClickOnce Assistant


When you create a new ClickOnce Deployment project, the ClickOnce Assistant automatically opens. Information that you enter in the ClickOnce Assistant is saved directly to the project file.

InstallShield 2010 User Guide

ISP-1600-UG00

129

Chapter 3: Getting Started ClickOnce Assistant

Navigating in the ClickOnce Assistant

Task

To navigate from one page of the ClickOnce Assistant to another, do one of the following:

To navigate directly to a specific page, click the appropriate icon in the navigation bar at the bottom of the page. To follow the ClickOnce Assistant steps sequentially, do one of the following:

Click the Next or Back arrow buttons to move forward or backward. Press CTRL+TAB to move to the next page and CTRL+SHIFT+TAB to move to the previous page.

Using the More Options and Help Links Sections


The left column of each ClickOnce Assistant page contains one or two lists of links, where appropriate, to assist you in creating your installation and finding information:

More OptionsProvides additional configuration options relating to the specific area on the

ClickOnce Assistant page. These are less common options that complete the functionality of the ClickOnce Assistant.

Help LinksThis list provides links to help topics pertinent to the current ClickOnce Assistant page.

Application Information Page


The Application Information page is where you specify general information about the application your project will install, including the path to the primary application assembly, your companys name, the applications name and version, and the signing certificate.

Specifying a Primary Application Assembly


ClickOnce Deployment projects require that you specify a primary application assembly. A primary application assembly is the executable file that is run to start the application.

Specifying the Company Name and Application Name


The company name and application name are used in Add or Remove Programs in the Control Panel for the application on the end users system. The application name is used in the applications entry in Add or Remove Programs (in the support information link) on the target system.

Choosing a Signing Certificate


All ClickOnce deployments must be signed with a digital certificate. A digital certificate is a file that contains a cryptographic public/private key pair. The file also contains metadata that describes the publisher who was issued the certificate and the company that issued the certificate.
130 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started ClickOnce Assistant

Once you have specified the primary application assembly, a list of existing digital certificates appears. The certificates listed are those in the computers certificate store. If you decide to choose an existing digital certificate, this certificate must also be installed on the development and build machine. You can also choose to have InstallShield generate a new certificate during the build process.

Installation Requirements Page


The Installation Requirements page enables you to easily set installation requirements for the target system. For example, if your application requires a specific software application in order to run properly, you can indicate that on this page. For information on creating a custom requirement that is not listed on the Installation Requirements page, see Defining InstallShield Prerequisites.

Specifying Software Requirements in the ClickOnce Assistant


When you specify software requirements on the Installation Requirements page, InstallShield creates an installation bootstrap (Setup.exe) to install the software applications that you select to be distributed in addition to the primary application assembly. For information on creating a custom requirement that is not listed on the Installation Requirements page, see Defining InstallShield Prerequisites.

Important: ClickOnce applications require the .NET Framework, so this is selected by default. It is strongly recommended that you include the .NET Framework with your ClickOnce application.

Application Files Page


Use the Application Files page to add application files to the installation. The directories in the Destination Computer folder represent how the application accesses the files.

Adding Application Files Using the ClickOnce Assistant

Task

To add an application file: 1. 2. 3. 4.

In the tree control (with top node Destination Computer), select the folder node to which you want to add the file. Click Add Files. An Open dialog is displayed. Browse to the file that you want to add. Click Open to add the file to the selected folder.

InstallShield 2010 User Guide

ISP-1600-UG00

131

Chapter 3: Getting Started ClickOnce Assistant

Using Reg-Free COM Registration in Your ClickOnce Deployment Project


You can launch the Reg-Free COM Wizard to create and modify Reg-Free COM manifest files to be included in your ClickOnce Deployment project. Before you use the Reg-Free COM Wizard, you should add the COM libraries (.dll and .ocx files) and the executable file that uses them to your project.

Task

To use Reg-Free COM registration in your ClickOnce Deployment project: 1. 2. 3.

Open the Application Files page. In the More Options area, click Add a Reg Free COM .manifest file to include in your deployment. The Reg-Free COM Wizard opens. Complete the panels in the wizard.

The Reg-Free Wizard creates a new component with the manifest file set as the key file. The manifest component has the same destination and condition as the associated executable-file component.

Removing Application Files Using the ClickOnce Assistant

Task

To remove an application file: 1. 2.

Select the file you want to remove. Right-click the file and click Delete.

Security Settings Page


The Security Settings page enables you to specify limited, full or custom privileges that your application requests to avoid unauthorized misbehavior.

Specifying a Security Set


The Internet Zone security set is selected by default when the Security Settings page appears. Applications that do not have a shell presence are adhere to the Internet Zone security set despite what selections you make on this page. If you choose to select an alternative security set, select the security set with the smallest number of permissions required for your application to run. There are two other predefined security sets that you can select including Local Network and Full Trust. The permissions for these security sets are selected by default and cannot be changed. If you need to include a custom list of permissions, select the Custom security set and select the permissions you want to include with the ClickOnce installation.

132

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started ClickOnce Assistant

Tip: Once the .NET Framework is installed, the More Options section includes the option to automatically compute the privileges your primary application assembly requires. This automated detection has limitations, so you should test the detected settings for completeness.

Shell Integration Page


The Shell Integration page provides the tools to design a shell presence for a ClickOnce application. A shell presence includes a shortcut in the Start menu and an icon in the Add or Remove Programs panel. You also have the option to include a link to a support URL that is listed in the Add or Removes Programs entry for the application.

Creating a Shell Presence for a ClickOnce Application


If you want the user to be able to launch the ClickOnce application from the Start menu, click Yes. This also creates an entry for the application in the Add or Remove Programs panel. Click Browse to select the icon you want to appear in the Start menu and the Add or Remove Programs panel. If you want to include a link to a support URL for the application, click Yes and type the URL in the text box provided.

Automatic Updates Page


Note: This page is only configurable if you chose to design a shell presence for the application on the Shell Integration Page.

The Automatic Updates page provides a way to have your application automatically check for updates when it is installed on a local machine. You can also make these updates required and specify an Internet location for the application to look for updates.

Specifying Automatic Update Settings


If you have decided to deploy a ClickOnce application on a local machine, you can enable the application to automatically check for updates. Once you choose to have your application check for updates, you also have the option to make these updates required for anyone using the application. While ClickOnce applications are designed to check their original source location for updated installation packages, you can also specify an alternate location if the updates are available in a location different from the original.

Build Installation Page


Use the Build Installation page to specify the location for your installation files and select what type of distribution you want to build.

InstallShield 2010 User Guide

ISP-1600-UG00

133

Chapter 3: Getting Started Working with the InstallShield Interface

Building Your Installation from the ClickOnce Assistant


When you are ready to build your ClickOnce installation, first browse to the location on the build machine where you want the installation files to output. Then specify the type of distribution you intend for the application. A ClickOnce application can be deployed via the Internet, CD-ROM, or on a file share network. Select as many as three deployments then click Build Installations.

Note: If you want InstallShield to distribute your installation after the build finishes, right-click the deployment type and select Distribution options. Select the Distribute After Build check box and specify either a network or FTP location.

The Build tab on the output window displays information about the progress of the build. The build is finished when the Build tab displays the log file information. To open the release folder containing the installation files, right-click the deployment type and select Open Release Folder.

Working with the InstallShield Interface


The InstallShield interface is a graphical user interface with conventional Windows-based elements such as a menu bar, a toolbar, and dialog boxes. This section includes topics that explain how to perform basic tasks using these elements and how to customize the interface.

Displaying the View List


Task To see the View List in the InstallShield interface: 1. 2.

Click the Installation Designer tab at the top of the InstallShield interface. Do one of the following to display the View List:

On the View menu, click View List. The View List appears on the left side of the InstallShield interface. Click the toolbars View List button. Press F4 to hide or show the View List.

Opening Views in the InstallShield User Interface


The first step in many InstallShield procedures is to open a particular view in the Installation Development Environment (IDE).

134

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with the InstallShield Interface

Task

To open a view: 1. 2.

Click the Installation Designer tab. The View List is displayed along the left side of the IDE. If the View List is not displayed, see Displaying the View List. In the View List, select the view you want to open. To see all available views, expand the View List folders.

Working with the Group Box Area in Various Views


A number of views in InstallShield have a group box area that lets you organize the rows in the view. The views that contain this group box support multiple levels of grouping simply by dragging the column headers and dropping them onto the group box (the area that says, Drag a column header here to group that column). InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. Examples of views that contain the group box are the String Editor, Property Manager, the Redistributables, Prerequisites, and Path Variables views. Note the following tips for working with the group box:

To move a column header to the group box area, drag the column header and drop it onto the group box. To copy a column header onto the group box area, press CTRL while dragging the column header and dropping it onto the group box. When you do this, the column header is displayed as a column header, and in the group box. When you are dropping group box headers onto the group box area, you can drop them onto other column headers. This enables you to organize rows hierarchically. To remove a column header from the group box, drag it from the group box area and drop it onto the row of column headers. When you are dragging it over the row of column headers, InstallShield displays arrows to indicate where in the row the column header would be displayed if you dropped it. To sort the items in the grid by a particular column header, click the column header in the group box or in the row of column headers.

The following examples demonstrate different ways for using the group box to organize content in views.

Default Behavior: Empty Group Box Area


By default, no column headers are displayed in the group box. The following screen shot shows part of the Redistributables view. Items are sorted by the Name column.

InstallShield 2010 User Guide

ISP-1600-UG00

135

Chapter 3: Getting Started Working with the InstallShield Interface

Figure 3-3: Empty Group Box Area

Grouping by One Column Header


If you press CTRL while dragging and dropping one column header onto the group box, InstallShield arranges the rows in the grid into groups of items. The following screen shot shows part of the String Editor view. Rows are organized to help identify the recently added and modified strings that need to be translated.

Figure 3-4: Grouping Rows by One Column Header

Grouping by Two Column Headers


If you press CTRL while dragging and dropping one column header onto another column header in the group box, InstallShield arranges the rows in the grid into multiple groups of items. The following screen shot shows part of the Redistributables view. Rows are organized to help identify the InstallShield prerequisites and merge modules that have been added to the project.

136

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Working with the InstallShield Interface

Figure 3-5: Sorting Rows by the Check Box Column and Then the Type Column

Showing or Hiding Toolbars


Task To show or hide a toolbar, do one of the following: 1. 2.

Right-click a toolbar and select the toolbar that you want to be displayed or hidden. On the Tools menu, click Customize. The Customize dialog box opens. Select the check box for each toolbar that you want to be displayed. Clear the check box for each toolbar that you want to be hidden.

Showing or Hiding Tooltips


Task To show or hide tooltips: 1. 2.

On the Tools menu, click Customize. The Customize dialog box opens. Select or clear the Show tooltips check box depending on whether or not you want to display tooltips.

InstallShield 2010 User Guide

ISP-1600-UG00

137

Chapter 3: Getting Started Working with the InstallShield Interface

Adding Buttons and Menus to a Toolbar


Task To add a button or menu to a toolbar: 1. 2. 3. 4. 5.

Ensure that the toolbar that you want to change is visible. On the Tools menu, click Customize. The Customize dialog box opens. Click the Command tab. In the Categories box, click the category for the button or menu that you want to add. Drag the button or menu from the Buttons box to the displayed toolbar.

Tip: To create your own custom toolbar, drag the button or menu to the empty gray area near the toolbars.

Removing Buttons and Menus from a Toolbar


Task To remove a button or menu from a toolbar: 1. 2. 3. 4. 5.

Ensure that the toolbar that you want to change is visible. On the Tools menu, click Customize. The Customize dialog box opens. Click the Command tab. Click the button or menu on the toolbar you want to remove. Drag the button or menu from toolbar to the Buttons box.

Tip: To create a custom toolbar, drag the button or menu from the Buttons box to an empty gray area near the existing toolbars.

Creating Custom Toolbars


Task To create a custom toolbar: 1. 2. 3. 4.
138

On the Tools menu, click Customize. The Customize dialog box opens. Click New. The New Toolbar dialog box opens. Type a descriptive name for the toolbar in the Toolbar name text box, and click OK. Customize the new toolbar by adding menus or buttons.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Tip: Another way to create a custom toolbar is to drag a button or menu from the Buttons box to the empty gray area near the existing toolbars. The new toolbar is listed in the Toolbars tab and given a default name. To change the name, modify the text in the Toolbar name text box.

Docking or Undocking the Output Window


The Output window or its individual tabs can be docked to any side of the workspace in InstallShield, or they can be dragged to free-floating positions. If you drag the Output window or one of its tabs to the edge of the InstallShield interface, it becomes a docked window. If you drag the Output window or one of its tabs away from any of the edges of the InstallShield interface, it becomes undocked.

Task

To undock the Output window:

Drag the title bar of the Output window to the new location. Resize the Output window as needed.

Task

To dock the Output window:

Drag the title bar of the Output window to the left, right, top, or bottom edge of the InstallShield interface.

Task

To undock a tab on the Output window:

Drag the tab to the new location. Resize the Output window as needed.

Task

To dock one of the Output window tabs:

Drag the tab to the left, right, top, or bottom edge of the InstallShield interface.

Configuring Advanced Settings for InstallShield


One of the InstallShield program files is a file called Settings.xml. This file exposes some advanced machine-wide settings for InstallShield. When you install InstallShield, Settings.xml is installed to one of the following locations, depending on which language version of InstallShield you are using:

EnglishInstallShield Program Files Folder\Support\0409 JapaneseInstallShield Program Files Folder\Support\0411

InstallShield 2010 User Guide

ISP-1600-UG00

139

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

The Settings.xml file for the Standalone build is installed in one of the following locations:

EnglishStandalone Build Program Files Folder\Support\0409 JapaneseStandalone Build Program Files Folder\Support\0411

In most cases, you should not modify the Settings.xml file. However, in some cases, you may need to make changes in this file. This section of the documentation describes some scenarios that would require Settings.xml changes:

Modifying the List of Available Windows Mobile Platforms or their Associated Settings Configuring the Compression Level for Files that Are Streamed into Setup.exe and ISSetup.dll Configuring the Maximum Size for .cab Files Modifying the List of Portable Executable Files for the Standalone Build Adding Support for XML Encoding Options Specifying the Location Where All Virtual Packages Should Be Built

Caution: The Settings.xml file contains critical data; if this file is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

Modifying the List of Available Windows Mobile Platforms or their Associated Settings
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Windows Mobile Wizard and the Smart Device Setup Wizard let you set platform requirements for files that are to be installed to target devices. You can select platforms from a predefined list of platforms. If you want to target a platform that is not in the predefined list, or if you want to modify any of the configuration settings that are associated with one of the predefined platforms, you can do so. The following instructions explain how.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

140

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Task

To modify the list of predefined mobile device platforms or to modify settings that are associated with one of the platforms: 1. 2.

Close InstallShield. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:


3. 4. 5. 6.

EnglishInstallShield Program Files Folder\Support\0409 JapaneseInstallShield Program Files Folder\Support\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the <ISMobile> element and its child elements. Modify the XML code under the <ISMobile> element as needed. For example, to add a new platform, add a new <MobileDevice> child element with the appropriate attributes and child elements. To change the configuration settings that are associated with one of the already defined platforms, modify that platforms elements and attributes as needed.

7. 8.

Save the Settings.xml file. Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the major elements of the file; if you cannot, check the code for errors.

Important: Once you have modified mobile device settings in the Settings.xml file, thoroughly test your installation on multiple platforms to ensure that your mobile device application installs as expected.

The next time that you use InstallShield, the changes that you made are available in InstallShield. Following are some sample lines in the Settings.xml file. The sample lines include <MobileDevice> elements for several platforms: Windows Mobile 6.x Professional and Classic, Windows Mobile 6.x Standard, Windows Embedded CE 6.x, Pocket PC Windows Mobile 5.x, and Windows CE 5.x.
<ISMobile> <MobileDevices> <MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice> <MobileDevice Mask="32768" DisplayName="Windows Mobile 6.x Standard" PlatformMin="5.2" PlatformMax="1000"

InstallShield 2010 User Guide

ISP-1600-UG00

141

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

DeviceName="SMARTPHONE600" PlatformString="Smartphone"> </MobileDevice> <MobileDevice Mask="16384" DisplayName="Windows Embedded CE 6.x" PlatformMin="6.0" PlatformMax="1000" DeviceName="CE6"> <UnsupportedPlatforms> <Platform PlatformName="HPC"/> <Platform PlatformName="Palm PC"/> <Platform PlatformName="Palm PC2"/> <Platform PlatformName="PocketPC"/> <Platform PlatformName="Smartphone"/> <Platform PlatformName="Jupiter"/> </UnsupportedPlatforms> </MobileDevice> <MobileDevice Mask="2048" DisplayName="Pocket PC Windows Mobile 5.x" PlatformMin="4.0" PlatformMax="5.1" DeviceName="PPC500" PlatformString="PocketPC" BuildMaxScreenSupport="0xE0000000"> </MobileDevice> <MobileDevice Mask="4096" DisplayName="Windows CE 5.x" PlatformMin="5.0" PlatformMax="5.9" DeviceName="CE5"> <UnsupportedPlatforms> <Platform PlatformName="HPC"/> <Platform PlatformName="Palm PC"/> <Platform PlatformName="Palm PC2"/> <Platform PlatformName="PocketPC"/> <Platform PlatformName="Smartphone"/> <Platform PlatformName="Jupiter"/> </UnsupportedPlatforms> </MobileDevice> </MobileDevices> </ISMobile>

The following table describes the attributes and child elements that are used in the sample XML code.
Table 3-8: Attributes and Child Elements in the <ISMobile> Part of the Settings.xml File Attribute or Child Element Name Mask attribute Description The value of the mask attribute is the bit value that identifies the platform. The following XML element shows an example of the Mask attribute and value:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

142

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Table 3-8: Attributes and Child Elements in the <ISMobile> Part of the Settings.xml File (cont.) Attribute or Child Element Name DisplayName attribute Description The value of the DisplayName attribute is the text that InstallShield displays in the Windows Mobile Wizard and the Smart Device Setup Wizard for this platform. The following XML element shows an example of the DisplayName attribute and value:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

PlatformMin attribute

The PlatformMin and PlatformMax attributes are used to limit which device versions are valid for the .cab file. The following XML element shows an example of the PlatformMin and PlatformMax attributes, as well as their values:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

For information about values for the PlatformMin attribute, see Platform Type Reference on the MSDN Web site. PlatformMax attribute The PlatformMin and PlatformMax attributes are used to limit which device versions are valid for the .cab file. The following XML element shows an example of the PlatformMin and PlatformMax attributes, as well as their values:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

For information about values for the PlatformMax attribute, see Platform Type Reference on the MSDN Web site. DeviceName attribute The DeviceName attribute indicates the name of the device. The following XML element shows an example of the DisplayName attribute and value:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

InstallShield 2010 User Guide

ISP-1600-UG00

143

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Table 3-8: Attributes and Child Elements in the <ISMobile> Part of the Settings.xml File (cont.) Attribute or Child Element Name PlatformString attribute Description The PlatformString attribute indicates the platform name. Examples of valid values are Smartphone and PocketPC. The following XML element shows an example of the PlatformString attribute and value:
<MobileDevice Mask="65536" DisplayName="Windows Mobile 6.x Professional and Classic" PlatformMin="5.2" PlatformMax="1000" DeviceName="PPC600" PlatformString="PocketPC"> </MobileDevice>

BuildMaxScreenSupport attribute

The BuildMaxScreenSupport attribute indicates screen-related support. Valid values are:

0xA0000000Supports square screens. 0xC0000000Supports screen rotation. 0xE0000000Supports both square screens and screen rotation.

The following XML element shows an example of the BuildMaxScreenSupport attribute and value:
<MobileDevice Mask="2048" DisplayName="Pocket PC Windows Mobile 5.x" PlatformMin="4.0" PlatformMax="5.1" DeviceName="PPC500" PlatformString="PocketPC" BuildMaxScreenSupport="0xE0000000"> </MobileDevice>

If a file in the installation requires a square screen or a rotated screen but the target systems platform does not include that required support, the installation may display a warning such as the following one at run time:
The program you have installed may not display correctly because it was designed for a previous version of Windows Mobile software.

The installation suppresses this warning if the BuildMaxScreenSupport attribute is set for the platform and it indicates the required support. The warning is also suppressed in other scenarios. For more information, see Suppressing the Display Warning for Legacy Mobile Device Applications. <UnsupportedPlatforms> child element The <UnsupportedPlatforms> child element identifies platforms that are not supported. The following XML element shows an example of the <UnsupportedPlatforms> element and some of its child elements:
<MobileDevice Mask="16384" DisplayName="Windows Embedded CE 6.x" PlatformMin="6.0" PlatformMax="1000" DeviceName="CE6"> <UnsupportedPlatforms> <Platform PlatformName="HPC"/> <Platform PlatformName="Palm PC"/> <Platform PlatformName="Palm PC2"/> <Platform PlatformName="PocketPC"/> <Platform PlatformName="Smartphone"/> <Platform PlatformName="Jupiter"/> </UnsupportedPlatforms> </MobileDevice>

144

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Tip: If you use the Standalone Build to build a release that includes Windows Mobile support, update the Settings.xml file that is installed with the Standalone Build. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:

EnglishStandalone Build Program Files Folder\Support\0409 JapaneseStandalone Build Program Files Folder\Support\0411

Configuring the Compression Level for Files that Are Streamed into Setup.exe and ISSetup.dll
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

This information does not apply to custom compression, where only the files that are associated with one or more features are compressed into .cab files.

InstallShield includes a machine-wide setting that lets you specify the compression level that you want to use for files that are streamed into Setup.exe files and ISSetup.dll files at build time. Following are examples of files that may be streamed into the Setup.exe files and ISSetup.dll files:

All of your products files (if the release is one in which all of the files are compressed into the Setup.exe setup launcher) InstallShield prerequisite installations that have a location of Extract From Setup.exe The .NET Framework installation if it has a location of Extract From Setup.exe The Windows Installer installation if it has a location of Extract Engine From Setup.exe

InstallShield also lets you specify particular files (with or without wild-card characters) that should not be compressed when they are streamed into Setup.exe files or ISSetup.dll files.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

Task

To configure compression settings for streamed files: 1. 2.

Close InstallShield. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:

InstallShield 2010 User Guide

EnglishInstallShield Program Files Folder\Support\0409

ISP-1600-UG00

145

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

3. 4. 5.

JapaneseInstallShield Program Files Folder\Support\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the <StreamCompression> element. It looks something like this:
<StreamCompression exclude="*.CAB" compressionlevel="-1"/>

6.

To prevent certain files or file types from being compressed when they are streamed into Setup.exe files or ISSetup.dll files, set the value of the exclude attribute to the names of those files. Note the following guidelines:

To specify more than one file, separate each file name with a comma. To indicate a wild-card character, use an asterisk (*).

For example, to specify that .cab files, .exe files, and a file called test.txt should not be compressed, set the value of the exclude attribute to as follows:
<StreamCompression exclude="*.CAB,*EXE,test.txt" compressionlevel="-1"/>

The default value is *.CAB, since .cab files are a compressed type of file.
7.

Do one of the following:

If you want to use a compression level that offers a balance between the size of the compressed file and the time that is required to extract the compressed files at run time, set the value of the compressionlevel attribute to -1. This is the default value. To specify a particular compression level, set the value of the compressionlevel attribute to a number from 0 to 9, where 0 indicates no compression and 9 indicates maximum compression. In general, when you specify a number from 0 to 9, the higher the number that you specify, the smaller the resulting compressed file is, and the longer it may take to extract the files at run time.

8. 9.

Save the Settings.xml file. Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the major elements of the file; if you cannot, check the code for errors.

Whenever you build a compressed release for one of the applicable project types, InstallShield streams files into Setup.exe files and ISSetup.dll files according to the settings that you configured.

Tip: If you use the Standalone Build to build a release, update the Settings.xml file that is installed with the Standalone Build. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:

EnglishStandalone Build Program Files Folder\Support\0409 JapaneseStandalone Build Program Files Folder\Support\0411

146

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Configuring the Maximum Size for .cab Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

In addition, it is applicable only if you are building a compressed network image release in which all of the files are embedded in the single-file .msi package or the Setup.exe setup launcher. This information does not apply to custom compression, where only the files that are associated with one or more features are compressed into .cab files.

The .cab file type has some limitations. For example, the maximum size of a single .cab file is 2 GB. In addition, some users have had trouble signing large .cab files and verifying the digital signature of large signed .cab files. To work around these limitations, InstallShield enables you to specify on a machine-wide basis the maximum size for each .cab file that is built for a compressed network image release. When InstallShield is creating the .cab files for your release and it reaches the .cab file threshold that you configured, it splits the data into two or more .cab files, creating multi-part .cab files. Note that if you do not want InstallShield to create multi-part .cab files, you can configure InstallShield to store the data in a single .cab file.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

Task

To specify whether InstallShield should create multi-part .cab files andif appropriatespecify the maximum .cab file size: 1. 2.

Close InstallShield. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:


3. 4. 5.

EnglishInstallShield Program Files Folder\Support\0409 JapaneseInstallShield Program Files Folder\Support\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the <CompressedNetworkCABSize> element. It looks something like this:
<CompressedNetworkCABSize default="600"/>

6.

Do one of the following:

InstallShield 2010 User Guide

ISP-1600-UG00

147

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

To specify the maximum size for .cab files, type the size in MB as the value of the default attribute. In the aforementioned example, the maximum size is 600. The value should be 2048 or less, since the maximum size of a .cab file is 2 GB (2048 MB). The default value is 600.

7. 8.

If you do not want InstallShield to create multi-part .cab files, set the value of the default attribute to -1.

Save the Settings.xml file. Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the major elements of the file; if you cannot, check the code for errors.

Whenever you build a compressed network image release for one of the applicable project types, InstallShield creates the .cab files according to the requirement that you configured in the Settings.xml file. Depending on the value that you specified in the Settings.xml file, the Media table of the .msi package lists one or more .cab files.

Tip: If you use the Standalone Build to build a release, update the Settings.xml file that is installed with the Standalone Build. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:

EnglishStandalone Build Program Files Folder\Support\0409 JapaneseStandalone Build Program Files Folder\Support\0411

Modifying the List of Portable Executable Files for the Standalone Build
The File Extensions tab on the Options dialog box in InstallShield lets you modify the file extensions that you would like InstallShield to consider to be portable executable (PE) files. InstallShield uses this list to determine how it should create components for dynamically linked files that adhere to the best practice component creation method. If you are using the Standalone Build to build a release, the Options dialog box is not available. However, you can modify one of the files that is installed in a subfolder of the InstallShield Standalone Build Program Files folder if you want to modify the list of file extensions that the Standalone Build considers to be PE files. The following instructions explain how.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

148

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Task

To modify the list of file extensions that the Standalone Build considers to be PE files: 1. 2.

Close the Standalone Build. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:


3. 4. 5.

EnglishStandalone Build Program Files Folder\Support\0409 JapaneseStandalone Build Program Files Folder\Support\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the PEFileExtensions element. It looks something like this:
<PEFileExtensions default="EXE|DLL|OCX|VXD|CHM|HLB|TLB|AX">

6. 7. 8.

Modify the list of file extensions for the default attribute as needed. Note that each file extension is separated with a vertical bar (|). Save the Settings.xml file. Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the major elements of the file; if you cannot, check the code for errors.

The next time that you use the Standalone Build, it will use the updated list of file extensions.

Adding Support for XML Encoding Options


InstallShield lets you specify what type of encoding should be used for an XML file. This setting is available on the Advanced tab when you select the XML file in the XML File Changes view. If the type of encoding that you want to use is not included in the list of available encoding options, you can modify one of the files that is installed in a subfolder of the InstallShield Program Files folder to add additional options. You can add any encoding that is supported by MSXML. The following instructions explain how.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

Task

To add additional encoding options to the Encoding list on the Advanced tab in the XML File Changes view: 1. 2.

Close InstallShield. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:
ISP-1600-UG00 149

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield


3. 4. 5.

EnglishInstallShield Program Files Folder\System\0409 JapaneseInstallShield Program Files Folder\System\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the ISXML element and its child elements. They look something like this:
<ISXML> <Encodings> <Encoding>WINDOWS-1250</Encoding> <Encoding>WINDOWS-1251</Encoding> <Encoding>WINDOWS-1252</Encoding> <Encoding>WINDOWS-1253</Encoding> <Encoding>WINDOWS-1254</Encoding> <Encoding>WINDOWS-1255</Encoding> <Encoding>WINDOWS-1256</Encoding> <Encoding>WINDOWS-1257</Encoding> <Encoding>WINDOWS-1258</Encoding> <Encoding>ISO-8859-1</Encoding> <Encoding>ISO-8859-2</Encoding> <Encoding>ISO-8859-3</Encoding> <Encoding>ISO-8859-4</Encoding> <Encoding>ISO-8859-5</Encoding> <Encoding>ISO-8859-6</Encoding> <Encoding>ISO-8859-7</Encoding> <Encoding>ISO-8859-8</Encoding> <Encoding>ISO-8859-9</Encoding> <Encoding>US-ASCII</Encoding> <Encoding>UNICODE-1-1-UTF-8</Encoding> <Encoding>UNICODE-2-0-UTF-16</Encoding> <Encoding>UNICODE-2-0-UTF-8</Encoding> <Encoding>ISO-10646-UCS-2</Encoding> <Encoding>UCS-4</Encoding> <Encoding>UCS-2</Encoding> <Encoding>UTF-16</Encoding> <Encoding Default="true">UTF-8</Encoding> </Encodings> </ISXML>

6.

Between the opening and closing Encodings tags, add a new line such as this:
<Encoding>Type_of_Encoding</Encoding>

where Type_of_Encoding indicates the encoding that you want to be available. This should be the value that InstallShield should use for the encoding attribute of your XML document.
7. 8.

Save the Settings.xml file. Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the <ISXML> and <Encodings> elements; if you cannot, check the code for errors.

The next time that you open the XML File Changes view in InstallShield, you will see the encoding type that you added as one of the available options in the Encoding used for a new file list on the Advanced tab for an XML file in the XML File Changes view.

150

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Configuring Advanced Settings for InstallShield

Specifying the Location Where All Virtual Packages Should Be Built


Edition: Support for virtualization is included in the Virtualization Pack.

When InstallShield converts an .msi package to a virtual package, it saves the virtual package in a subfolder of the folder that contains the .msi file by default. In some cases, you may want to specify a different location for generating all of the virtual packages. For example, if the .msi packages that you are converting are in a read-only location, you may need to override the default virtual package location with an existing writable location. InstallShield includes a machine-wide setting that lets you specify an existing writable location where all virtual packages should be built. The following instructions explain how to configure this global setting.

Caution: The following instructions require that you modify the Settings.xml file that is installed with InstallShield. This file contains critical data; if it is edited incorrectly, it can cause InstallShield to fail to work. Use extreme care when editing this file.

Task

To specify the location where all virtual packages should be built: 1. 2.

Close InstallShield. Find the Settings.xml file that is installed with InstallShield. Settings.xml is installed in one of the following locations, depending on which language version of InstallShield you are using:


3. 4. 5.

EnglishInstallShield Program Files Folder\System\0409 JapaneseInstallShield Program Files Folder\System\0411

Create a back-up copy of the Settings.xml file, in case you later need to revert to the original version. Use a text editor or XML file editor to open the Settings.xml file. Search for the <Virtualization> element and its child element. They look something like this:
<Virtualization> <!-- Instructions on how to specify a global path --> <GlobalBuildRedirectFolder></GlobalBuildRedirectFolder> </Virtualization>

6.

Enter the global path as the text content for the <GlobalBuildRedirectFolder> element. For example, to create the virtual packages in a subfolder of \\NetworkFolder\VirtualPackages, use the following:
<GlobalBuildRedirectFolder>\\NetworkFolder\VirtualPackages</GlobalBuildRedirectFolder>

Note that the path must already exist. Do not enclose the path within quotation marks.
7.

Save the Settings.xml file.

InstallShield 2010 User Guide

ISP-1600-UG00

151

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

8.

Ensure that your XML code is well formed; if it is not well formed, you may have problems using InstallShield. In most cases, you can identify improperly formed XML code by opening the Settings.xml file in Internet Explorer. You should be able to expand and contract the <Virtualization> element; if you cannot, check the code for errors.

Whenever you convert an .msi package to a virtual package in InstallShield, InstallShield uses the path that you specified.

Upgrading from Earlier InstallShield Versions


When you start using InstallShield 2010, you can upgrade installation projects that you created using earlier versions or different InstallShield products. This section discusses those upgrades.

Upgrading Projects from InstallShield 2009 or Earlier


The following information describes possible upgrade issues that may occur when you upgrade projects that were created with InstallShield 2009 and earlier to InstallShield 2010. It also alerts you to possible changes in behavior that you may notice between new InstallShield 2010 projects and projects that are upgraded from InstallShield 2009 or earlier to InstallShield 2010.

General Information about Upgrading Projects that Were Created in Earlier Versions of InstallShield
If you use InstallShield 2010 to open a project that was created with an earlier version, InstallShield 2010 displays a message box that asks you if you want to convert the project to the new version. If you reply that you do want to convert it, InstallShield creates a backup copy of the project with a file extension such as .768 before converting it. Delete the .768 part from the original projects file name if you want to reopen the project in the earlier version of InstallShield. Note that you cannot open InstallShield 2010 projects in earlier versions of InstallShield. You can upgrade projects that were created with the following versions of InstallShield to InstallShield 2010: InstallShield 2009 and earlier, InstallShield 12 and earlier, InstallShield DevStudio, InstallShield Professional 7 and earlier, and InstallShield Developer 8 and earlier. Note that projects that were created with InstallShield MultiPlatform or InstallShield Universal cannot be upgraded to InstallShield 2010. Installing More than One Edition of InstallShield Only one edition of InstallShield 2010Premier, Professional, or Expresscan be installed on a system at a time. Previously, it was possible to install the Express edition on the same system that had the Premier or Professional edition of the same InstallShield version. Change to the List of Supported Operating Systems for Running InstallShield The minimum operating system requirement for systems that run InstallShield (the authoring environment) is now Windows XP or Windows Server 2003. Previously, the minimum operating system requirement was Windows 2000 SP3.

Changes that Affect All Projects (New and Upgraded Projects)


This section describes changes that affect both new projects and projects that are upgraded from earlier versions of InstallShield.
152 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Setup.exe No Longer Runs on Windows 9x, Windows NT 4, or Windows Me Systems that are created in InstallShield can no longer be run on Windows 9x, Windows NT 4, or Windows Me. If an end user tries to launch Setup.exe on a Windows 9x or Windows Me system, Windows displays a message box with the following error: The FullSetup.exePathAndFileName file expects a newer version of Windows. Upgrade your Windows version. On Windows NT 4 systems, Windows displays a message box with the following error: FullSetup.exePathAndFileName is not a valid Windows NT application. InstallShield no longer lists these legacy operating systems in any of the areas where target operating systems can be selected. For example, the Installation Requirements tab of the Project Assistant in Basic MSI and InstallScript MSI projects no longer lists these operating systems. In InstallScript projects, the Platforms tab on the Project Settings dialog box no longer lists these operating systems. If you upgrade an InstallScript project that was created in InstallShield 2009 or earlier to InstallShield 2010, and if the operating system settings in the earlier project contained references to only these legacy operating systems, InstallShield replaces the legacy operating system options with the option for targeting all supported platforms. Windows Installer 1.x Redistributables Are No Longer Available InstallShield no longer includes Windows Installer 1.x redistributables, since they target only legacy versions of Windows that are no longer supported. Previously, it was possible to add Windows Installer 1.x redistributables to a project through the Releases view, or through the Release Wizard. Redistributable for VBScript Runtime Files Is No Longer Available InstallShield no longer includes the InstallShield object for VBScript Runtime Files. This redistributable targets only legacy versions of Windows that are no longer supported. InstallScript Dialog Source Code Changes The InstallScript code for built-in InstallScript dialogs has been moved from individual InstallScript script files (.rul) to a single ISRTScriptDialogs.rul file. In addition, the event class drop-down list in the InstallScript view has a new Dialog Source option. If you select this option, the event handler drop-down list shows all of the built-in InstallScript dialogs. You can select any dialog in this list to customize its code. InstallShield supports backwards compatibility: If you imported dialog source code into an InstallShield 2009 or earlier project and then you upgrade the project to InstallShield 2010, you can still use that dialog code. However, if you want to use the dialog sources that are now available when you select the dialogs in the event handler drop-down list, you must first make some changes to your upgraded project. Otherwise, you may encounter compile errors. In order to use the dialog code: On the Build menu, click Settings. On the Compile/Link tab, in the Preprocessor Defines box, enter the following:
_ISSCRIPT_NEW_STYLE_DLG_DEFS Setup.exe installations

After this definition has been added, if any dialogs had previously been imported into the project in earlier versions of InstallShield, the code in these imported .rul files may cause compile errors. These errors would need to be resolved. If _ISSCRIPT_NEW_STYLE_DLG_DEFS is not defined, a warning message is displayed when the Dialog Source option is selected in the event class drop-down list in the InstallScript view. The _ISSCRIPT_NEW_STYLE_DLG_DEFS definition is automatically added to all new projects that are created in InstallShield 2010.

InstallShield 2010 User Guide

ISP-1600-UG00

153

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

This functionality applies to the following project types: InstallScript, InstallScript MSI, and InstallScript Object. InstallScript Header File Changes The InstallScript header files (.h) have been reorganized. As a result, some of the .h files are obsolete. If an InstallScript file (.rul) in your project references one or more of these obsolete .h files, a compile warning is displayed whenever you compile your script or build a release. To resolve the warnings, remove any #include statements that reference the obsolete .h files, and rebuild the release. Also, ensure that ifx.h is referenced in an #include statement in your Setup.rul file or in other script files that are referenced by Setup.rul. InstallScript Changes for Windows API Prototypes The service-related Windows API prototypes (such as CreateServiceA, StartServiceA, and ControlService) are now prototyped in ISRTWindows.h for all InstallScript, InstallScript MSI, and InstallScript Object projects. They are also now prototyped in ISRTWindows.h for all Basic MSI and Merge Module projects that include InstallScript custom actions. If you want to use your own definitions for these Windows APIs instead of the ones that are now prototyped for InstallScript, add ISINCLUDE_NO_SERVICEAPI to the list of preprocessor definitions: On the Build menu, click Settings. On the Compile/Link tab, in the Preprocessor Defines box, enter ISINCLUDE_NO_SERVICEAPI. Otherwise, you may encounter compile errors. Note that the constant ISINCLUDE_NO_WINAPI_H now suppresses only Windows API prototypes, not Windows constants or Windows structure definitions. Patch Creation (Basic MSI, InstallScript MSI) InstallShield now uses the Windows Installer 4.5 patching technology to create patches. This change is reported for informational purposes. New Custom Actions and Database Tables for IIS Support in Basic MSI and InstallScript MSI Projects If you add IIS support through the Internet Information Services view in a Basic MSI or InstallScript MSI project in InstallShield, InstallShield automatically adds several DLL custom actions to your project to support the IIS functionality. In InstallShield 2010, these custom actions have been enhanced to enable you to add applications to Web sites. In addition, these actions have been renamed to reflect standard naming conventions:

ISIISCostingThis custom action replaces the caExtractIISSuppFiles action. ISIISRollbackThis custom action replaces the caRlbackVRoots action. ISIISUninstallThis custom action replaces the caRemoveVRoots action. ISIISInstallThis custom action replaces the caCreateVRoots action. ISIISCleanupThis custom action replaces the caIISCleanup action.

The entry points of each of the DLL custom actions have been renamed to match the corresponding custom action names.

154

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Note that IIS functionality requires administrative privileges. Therefore, each of these DLL custom actions checks the Privileged property value. The value must be 1; if it is not, an error is displayed at run time. In InstallShield 2009 and earlier, each of the IIS custom actions had a Privileged = 1 condition. In InstallShield 2010, this condition is no longer set when you add new IIS Web sites or other IIS data to your project, since the custom actions check the Privileged property value. If you upgrade a Basic MSI or InstallScript MSI project that contains IIS support from InstallShield 2009 or earlier to InstallShield 2010, InstallShield automatically updates and renames the custom actions accordingly. In addition, if the condition for an old custom action was not modified from the default condition, InstallShield also removes the Privileged = 1 condition. If a condition was modified, InstallShield leaves the existing condition as is. You can manually modify any of the conditions if appropriate. In InstallShield 2010, all of the IIS data is stored in the ISIISItem and ISIISProperty tables. In InstallShield 2009 and earlier, the IIS data was stored in the following tables: ISIISAppPool, ISIISCommon, ISIISMetaData, ISIISWebServiceExtension, ISVRoot, ISVRootAppMaps, and ISWebSite. If you upgrade a Basic MSI or InstallScript MSI project that contains IIS support from InstallShield 2009 or earlier to InstallShield 2010, InstallShield automatically moves the IIS data to the new tables; InstallShield also deletes the old tables from the project. For more information, see:

Managing Internet Information Services InstallShield Custom Action Reference

Changes for the Redistributables View The Redistributables view has a new toolbar and group box area that provide robust search and organizational functionality. Use the new Show Details button in this view to show or hide the details pane for the selected redistributable in this view. The details pane provides information such as which files a redistributable installs. The Show Details button replaces the Show Details and Hide Details links that were previously available in the upper-right corner of this view. The new group box area is below the new toolbar in the Redistributables view. You can drag and drop column headings onto this group box area to organize the list of redistributables in a hierarchical format. If you want InstallShield to separate all of the redistributables in the view into two groupsone whose check box is selected and one whose check box is cleareddrag the check box column to the group box area. This enables you to easily identify all of the redistributables that are included in your project. The result is similar to the behavior that previously occurred if you right-clicked any redistributable and then clicked Show Only Selected Items. Note that the Show Only Selected Items command is no longer available in the Redistributables view. For more information, see Working with the Group Box Area in Various Views. Limiting the UI Level of a Chained .msi Package to that of the Main .msi Package The UI level for a chained .msi package is now limited to be no higher than that of the parent packages current UI level. For example, in the following scenario, the chained .msi package is launched silently: you add a chained .msi package to your project in the Releases view and select Full UI (/qf) for its UI level setting, but the main installation is launched silently (/qn). Previously, the chained package showed exactly the UI level that was authored in the Releases view of the main installation; to restore this behavior, set the property ISChainExceedUILevel equal to the value 1.

InstallShield 2010 User Guide

ISP-1600-UG00

155

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Encoding and Related Differences for XML File Changes If you use the XML File Changes view to configure changes for a file that is already present on the target machine, or that is being installed as part of your installation, the installation now uses the encoding that is specified in that XML file, rather than the encoding that is specified in the XML File Changes view. This applies to new projects that are created in InstallShield 2010, as well as projects that are upgraded from InstallShield 2009 or earlier. In addition, if the "Always create this element if it does not already exist" check box is cleared for an element that is not present in the target file, its child elements are no longer created. Thus, for an XML file such as //A/B/C, C is not created on the target system if B is neither present nor set to be created. Changes to the Major and Minor Version Registry Entries for the Uninstall Key of InstallScript Installations InstallScript installations now create VersionMajor and VersionMinor registry values in the Uninstall key; the names of these values now match the entries that are created during Basic MSI and InstallScript MSI installations. This applies to new installations that are created in InstallShield 2010, as well as installations that are upgraded from InstallShield 2009 or earlier. Previously, in InstallShield 2009 and earlier, the names of the values that InstallScript installations created were MajorVersion and MinorVersion; these are no longer created. In order to use the new registry values, the values of the following InstallScript constants have been changed:

REGDB_VALUENAME_UNINSTALL_MAJORVERSION is now VersionMajor instead of MajorVersion. REGDB_VALUENAME_UNINSTALL_MINORVERSION is now VersionMinor instead of MinorVersion.

When the MaintenanceStart function is called, it creates the updated value names in the registry. By default, it also deletes the old value names if they exist. If you do not want the old value names to be deleted from target systems, you can use the new REGDB_OPTIONS option called REGDB_OPTION_NO_DELETE_OLD_MAJMIN_VERSION. If REGDB_UNINSTALL_MAJOR_VERSION or REGDB_UNINSTALL_MINOR_VERSION is used with the RegDBGetItem function, RegDBGetItem first checks for the new value; if the new value is found, the function returns the value data from the new value. If the new value is not found, the function automatically checks for the old value; if the old value is found, the function returns the value data from the old value. To provide backwards compatibility, the following new constants are available:

REGDB_UNINSTALL_MAJOR_VERSION_OLD REGDB_UNINSTALL_MINOR_VERSION_OLD

You can specify these constants with the RegDBGetItem, RegDBSetItem, and RegDBDeleteItem functions to get, set, and delete the old values. The following new string constants are also available:

REGDB_VALUENAME_UNINSTALL_MAJORVERSION_OLD is defined as MajorVersion. REGDB_VALUENAME_UNINSTALL_MINORVERSION_OLD is defined as MinorVersion.

For more information, see the following:

156

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

REGDB_VALUENAME_UNINSTALL_MAJORVERSION REGDB_VALUENAME_UNINSTALL_MAJORVERSION_OLD REGDB_VALUENAME_UNINSTALL_MINORVERSION REGDB_VALUENAME_UNINSTALL_MINORVERSION_OLD REGDB_UNINSTALL_MAJOR_VERSION_OLD REGDB_UNINSTALL_MINOR_VERSION_OLD REGDB_OPTIONS RegDBSetItem RegDBGetItem RegDBDeleteItem

Removal of the SdShowMsg Dialog from the List of Editable Dialogs The Dialog Editor does not currently support dialogs, such as SdShowMsg, that do not have a title bar; if you try to customize the SdShowMsg dialog, it may get corrupted. Therefore, this dialog is no longer displayed in the Dialogs view as one of the dialogs that you can edit. To customize this dialog, you should use the SdShowMsg call, not the Dialog Editor. Automation Interface Changes If you use the automation interface with InstallShield or the Standalone Build, update your existing code to reflect the new ProgID: IswiAuto16.ISWiProject. The Standalone Automation Interface uses the same ISWiAutomation16.dll file that InstallShield uses, but it is installed to a different location. Note that if you install the Standalone Build on the same machine as InstallShield, the last ISWiAutomation16.dll file that is registered is the one that is used. The value of the eosAll constant for the OSFilter, which is a member of the ISWiComponent and ISWiRelease objects in the automation interface, has been changed. The new value is 64028880; previously, it was 5308624. If you are using the value of this constant to configure the list of operating systems for a component or a release through the automation interface, you must update your script to use the new value. For more information, see the following:

ISWiComponent Object ISWiRelease Object

Changes for the Locations of InstallScript Run-Time Script, Library, and Header Files The InstallScript run-time library files that are installed with InstallShield have been consolidated into a central location, instead of several separate subdirectories. The script, library, and header files are now installed in Src, Lib, and Include folders in the following directory:
InstallShield Program Files Folder\Script\Isrt

The following folders are no longer installed, since the files within them are consolidated in the above location:
InstallShield Program Files Folder\Script\IISRuntime

InstallShield 2010 User Guide

ISP-1600-UG00

157

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

InstallShield Program Files Folder\Script\SQLRuntime InstallShield Program Files Folder\Script\XMLRuntime

Note that because of a name conflict, the Assert.h file in the following location is being renamed as ISAssert.h:
InstallShield Program Files Folder\Script\Isrt\Include

If you create a new project in InstallShield 2010, it uses the new locations of the files. If you upgrade a project from InstallShield 2009 or earlier to InstallShield 2010, InstallShield updates the projects to use the new locations. Changes in the Way that Linked Libraries and Their Locations Are Specified The Compile/Link tab on the Settings dialog box has a new Additional Library Paths box that lets you specify the locations where the InstallScript compiler should search for InstallScript libraries (.obl files) that are not one of the standard InstallShield locations. For InstallScript and InstallScript Object projects, the standard locations are:

<ISProductFolder>\Script\Ifx\Lib <ISProductFolder>\Script\Isrt\Lib

For Basic MSI and InstallScript MSI projects, the standard locations are:
<ISProductFolder>\Script\Iswi\Lib <ISProductFolder>\Script\Isrt\Lib

If you create a new project in InstallShield 2010, InstallShield automatically lists the standard InstallShield script libraries such as ISRT.obl in the Libraries (.obl) box on the Compile/Link tab. However, InstallShield no longer includes the full path in that box. If you want to add your own custom libraries, you can specify the library file name in the Libraries (.obl) box, and the path in the Additional Library Paths box. You do not need to specify the full path and file name in the Libraries (.obl) box. If you upgrade a project that was created in InstallShield 2009 or earlier to InstallShield 2010, InstallShield automatically removes the path of the standard script libraries that are listed in the Libraries (.obl) box. For more information, see Compile/Link Tab. Removal of the InstallScript Structure Definition for ISOSVERSIONINFO The definition of the ISOSVERSIONINFO structure, as well as the corresponding unused global instances of this structure, has been removed. The equivalent OSVERSIONINFO structure is still available. This definition removal does not cause any functionality changes; however, if you attempt to use the ISOSVERSIONINFO structure definition or global structure instances, a compiler error results. To avoid a compiler error, do either of the following:

Update the script to use the equivalent OSVERSIONINFO structure, and declare a local instance of this structure if needed. Update the script to use the appropriate structure member names. (Note that the OSVERSIONINFO member names are different than the ISOSVERSIONINFO member names.) Following is the definition of OSVERSIONINFO:
typedef OSVERSIONINFO begin NUMBER nOSVersionInfoSize; NUMBER nMajorVersion; NUMBER nMinorVersion; NUMBER nBuildNumber;

158

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

NUMBER nPlatformId; STRING szCSDVersion[128]; end;

Declare the structure and structure instances locally as follows:


// Data structure that contains operating system version information. // Used by ISCompareServicePack. typedef ISOSVERSIONINFO // define a structure begin LONG ISIOSVersionInfoSize; // Size in bytes of this data structure LONG ISIMajorVersion; // Major version number of the OS. LONG ISIMinorVersion; // Minor version number of the OS. LONG ISIBuildNumber; // Build number of the OS. LONG ISIPlatformId; // Operating system platform. STRING szISCSDVersion [128]; // Additional information about OS. end; // Variable for the operating system version information data structure. // Used by ISCompareServicePack. ISOSVERSIONINFO ISVersion; // Pointer that points to the OS version information variable. // Used by ISCompareServicePack. ISOSVERSIONINFO POINTER pISVersion;

Obsolete Keys Are No Longer Written to Setup.ini for InstallScript Projects The following keys are obsolete and are no longer written to the Setup.ini file for InstallScript projects: Resource, EngineVersion, and EngineBinding.

Changes that Affect New Projects but Not Upgraded Projects


This section describes changes to InstallShield that may affect new projects but not projects that are upgraded from earlier versions. Note that you may need to make manual changes to upgraded projects. Changes to Support for Securing Permissions for Files, Folders, and Registry Keys The General Information view has a new Locked-Down Permissions setting that lets you specify whether you want to use the new custom InstallShield handling or the traditional Windows Installer handling for all new permissions that you set for files, folders, and registry keys in your project. The new custom InstallShield handling option offers several advantages over the traditional Windows Installer handling option. In all new projects, the default value for this setting is the custom InstallShield handling option. If you upgrade a project from InstallShield 2009 or earlier to InstallShield 2010, the traditional Windows Installer handling option is the default value of this setting. This new setting is available in the following project types: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform. For more information, see the following:

Securing Files, Folders, and Registry Keys in a Locked-Down Environment Selecting the Locked-Down Permissions Type for a Project

InstallShield 2010 User Guide

ISP-1600-UG00

159

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Changes to the ReadyToInstall Dialog for Beta Windows Installer 5 Support of Per-User Installations The General Information view has a new Show Per-User Option setting. This setting lets you specify whether you want the ReadyToInstall dialogin certain scenariosto include buttons that let end users indicate how they want to install the product: for the current user or for all users. The per-user button sets the new Windows Installer property MSIINSTALLPERUSER equal to 1 to indicate that the package should be installed for the current user. The MSIINSTALLPERUSER property is available with the beta of Windows Installer 5. If you create a new Basic MSI project in InstallShield 2010, the ReadyToInstall dialog includes support for the per-user and per-machine buttons; these buttons are displayed or hidden at run time if appropriate. If you upgrade a Basic MSI project from InstallShield 2009 or earlier to InstallShield 2010, the ReadyToInstall dialog does not have this support automatically. You can manually add these buttons and their associated conditions to the ReadyToInstall dialog if appropriate; use the ReadyToInstall dialog in a new InstallShield 2010 project as a guideline. Public Directory Properties for Feature Destinations Are Added to SecureCustomProperties When you specify a location for the Destination setting of a feature and the location includes a public directory property, InstallShield now adds that property to the SecureCustomProperties property to allow end users to change the destination after the product has been advertised. This occurs in new projects that are created in InstallShield 2010. The change is also made for all feature destinations if you upgrade a project from InstallShield 2009 or earlier to InstallShield 2010. This change applies to the following project types: Basic MSI and InstallScript MSI. Changes to the Conditions for the InstallWelcome Dialog and the ResolveSource Action
Installed for

The condition on the InstallWelcome dialog and the ResolveSource action has been changed to Not all new Basic MSI projects that are created in InstallShield 2010. The conditions were changed so that the InstallWelcome dialog and the ResolveSource action can be used for a first-time installation with a patch. If you upgrade a Basic MSI project from InstallShield 2009 or earlier to InstallShield 2010, the conditions are not changed automatically. If you want the dialog and action to be used for a first-time installation with a patch, you can change the conditions in your upgraded project to Not Installed.

Improvements to the .rtf File Size Limit for the SdLicenseRtf and SdLicense2Rtf Functions The file size limit for the .rtf files that are used with the InstallScript dialog functions SdLicenseRtf and SdLicense2Rtf is now 16 MB instead of 64 KB. Previously, if the file size was more than 64 KB, part of the EULA text was missing from the license dialog at run time. Note that if you had overridden the SdLicenseRtf or SdLicense2Rtf functions in your script in InstallShield 2009 or earlier and then upgraded that project to InstallShield 2010, you would need to manually change the size limit by updating the SendMessage call with the EM_EXLIMITTEXT message in DLG_INIT. The iParam parameter (the fourth parameter) of the SendMessage call needs to be changed. The SendMessage call should be changed to this:
SendMessage( hEdit, EM_EXLIMITTEXT, 0, 0xffffff );

Previously, the code contained this:

160

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

SendMessage( hEdit, EM_EXLIMITTEXT, 0, 0 );

Removal of the OnResolveSource Event Handler from InstallScript MSI Installations The InstallScript event handler OnResolveSource has been removed from InstallScript MSI projects. The Windows Installer now handles all source resolution. If you added the OnResolveSource event to an InstallScript MSI project in InstallShield 2009 or earlier and then you upgrade that project to InstallShield 2010, that event will no longer be called. Changes to the Way that a Log File Is Displayed from the SetupCompleteSuccess Dialog in Basic MSI Installations The ShowMsiLog custom action now launches Notepad.exe from the SystemFolder directory, instead of from the WindowsFolder directory. Thus, if your installation is run on Windows Vista or later and the end user indicates on the SetupCompleteSuccess dialog that they want to view the log file, the installation launches Notepad.exe from the SystemFolder directory. This change was made because on Windows Server 2008 Standard Edition, Notepad.exe is available in the System32 directory, but not the Windows directory. Note that behavior is available by default in all new Basic MSI projects that are created in InstallShield. If you upgrade an InstallShield 2009 or earlier Basic MSI project to InstallShield 2010, InstallShield does not automatically change the behavior. You can manually change the behavior if necessary: In the Custom Actions and Sequences view, click the ShowMsiLog action. (If this action is not displayed, rightclick the Custom Actions node and then click Show All Custom Actions.) Set the Filename & Commandline setting as follows:
[SystemFolder]notepad.exe "[MsiLogFileLocation]"

Thus, the value should contain [SystemFolder] instead of [WindowsFolder]. Changes for ALLUSERS Property in InstallScript MSI Installations Beginning with InstallShield 2010, the ALLUSERS property is set to 1 by default in all new InstallScript MSI projects. This is the recommended implementation, since most installations must be run in a permachine context with administrative privileges. This value is also recommended to help avoid ALLUSERS-related issues when an InstallScript MSI installation is run silently. If you upgrade a project that was created with InstallShield 2009 or earlier to InstallShield 2010, InstallShield does not automatically change the value of the ALLUSERS property or add this property if it was not defined in the earlier project. InstallScript Installations No Longer Include _Setup.dll InstallScript installations no longer include _Setup.dll. Some earlier versions (DevStudio 9 and InstallShield X) did not log _Setup.dll for uninstallation. As a result, this file was left behind in the Disk1 folder location (DISK1TARGET) after uninstallation. If an update was created with a later InstallShield version (InstallShield 10.5 through InstallShield 2009) and the update was for an original installation that was created with DevStudio 9 or InstallShield X, _Setup.dll was deleted during uninstallation because _Setup.dll was logged by the update. Since _Setup.dll is not included in InstallScript installations that are created with InstallShield 2010, the _Setup.dll file may now be left behind. Therefore, if you are updating from an installation that was created with DevStudio 9 or InstallShield X, you may need to delete the _Setup.dll file manually (DISK1TARGET ^ "_Setup.dll") during uninstallation to ensure that the uninstallation is complete.

InstallShield 2010 User Guide

ISP-1600-UG00

161

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Saving a Project as an Earlier Version InstallShield no longer has support for downgrading a project. That is, you cannot save an InstallShield 2010 project as an InstallShield 2009 or earlier project. Trialware Support The only edition of InstallShield that includes the Trialware view is the Premier edition. This edition lets you create the Try and Die type of trialware. InstallShield no longer includes support for creating the Try and Buy/Product Activation type of trialware. Web Projects The Web project type is no longer listed as one of the types of new projects that you can create in InstallShield. To use the same functionality that was available with a Web project in InstallShield 2009 and earlier, create a Basic MSI project, and then add a Web site in the Internet Information Services view. The only difference between a Web project and a Basic MSI project was that a new Web project automatically contained a predefined folder for the IISROOTFOLDER directory in the Files and Folders view. All of the files that you add to the IISROOTFOLDER directory are installed to the Web servers root directory on the target system. InstallShield adds predefined folder for the IISROOTFOLDER directory to a Basic MSI project when you add a Web site to the project. Thus, a Basic MSI project that contains at least one Web site configured in the Internet Information Services view is equivalent to a Web project that was created in InstallShield 2009 or earlier. Compact Projects InstallShield no longer enables you to create new Compact projects. Note that if you created a Compact project in InstallShield 2009 or earlier, you can upgrade it to InstallShield 2010, and then make changes to it and build it. You can also use InstallShield 2010 to convert the Compact project to a Basic MSI project. Visual Studio Integration Microsoft Visual Studio can be integrated with only one version of InstallShield Premier Edition or InstallShield Professional Edition at a time. The last version of InstallShield that is installed or repaired on a system is the one that is used for Visual Studio integration.

Upgrading Projects from InstallShield 2008 or Earlier


The following information describes possible upgrade issues that may occur when you upgrade projects that were created with InstallShield 2008 and earlier to InstallShield 2010. It also alerts you to possible changes in behavior that you may notice between new InstallShield 2010 projects and projects that are upgraded from InstallShield 2008 or earlier to InstallShield 2010.

General Information about Upgrading Projects that Were Created in Earlier Versions of InstallShield
If you use InstallShield 2010 to open a project that was created with an earlier version, InstallShield 2010 displays a message box that asks you if you want to convert the project to the new version. If you reply that you do want to convert it, InstallShield creates a backup copy of the project with a file

162

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

extension such as .766 before converting it. Delete the .766 part from the original projects file name if you want to reopen the project in the earlier version of InstallShield. Note that you cannot open InstallShield 2010 projects in earlier versions of InstallShield. You can upgrade projects that were created with the following versions of InstallShield to InstallShield 2010: InstallShield 2008, InstallShield 12 and earlier, InstallShield DevStudio, InstallShield Professional 7 and earlier, and InstallShield Developer 8 and earlier. Note that projects that were created with InstallShield MultiPlatform or InstallShield Universal cannot be upgraded to InstallShield 2010.

Changes that Affect All Projects (New and Upgraded Projects)


This section describes changes that affect both new projects and projects that are upgraded from earlier versions of InstallShield. New Default Setup Launcher Value for New Releases: Windows Installer Is Not Included When you create a new release in a Basic MSI or InstallScript MSI project, the redistributable for the Windows Installer engine is no longer included by default:

If you use the Release Wizard to create a new release, the Setup Launcher panel is where you specify whether to include the Windows Installer. The default value for the Support these operating systems setting is Do not install Windows Installer. Previously, the default value was Both Windows 9X and NT. If you create a new release by right-clicking the Releases explorer in the Releases view, the default value for the Setup Launcher setting on the Setup.exe tab is now Yes (no MSI engine included). Previously, the default value for this setting was Yes (include Windows NT & Windows 9x MSI engine).

This change applies to all new releases that are created in new InstallShield 2010 projects. If you upgrade a project from InstallShield 2008 or earlier to InstallShield 2010, this change applies to all new releases; InstallShield does not automatically change the value for releases that were originally created in the earlier InstallShield version. Upgrade and Patch Validation When you build QuickPatch projects, InstallShield now runs patch and upgrade validation. Therefore, when you build a QuickPatch package in InstallShield 2010, you may see validation errors and warnings. If you built a QuickPatch project in InstallShield 2008 or earlier, InstallShield did not run the upgrade and patch validation; thus, patch or upgrade validation errors or warnings were never displayed at build time. In addition, the Val0015 warning now checks the ISSelfReg table in QuickPatch projects and in patches that are created through the Patch Design view in Basic MSI and InstallScript MSI projects. If a QuickPatch or patch project adds a row to the ISSelfReg table, Val0015 warns you that the patch will be uninstallable. Previously, Val0015 did not check for entries in this table. File Compression for Files that Are Streamed into Setup.exe and ISSetup.dll at Build Time If you build a release that uses a Setup.exe setup launcher or a ISSetup.dll file, InstallShield now compresses files that it streams into the Setup.exe file or the ISSetup.dll file at build time. The default compression level that InstallShield uses offers a balance between file size and time that is required to

InstallShield 2010 User Guide

ISP-1600-UG00

163

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

extract the compressed files at run time. This applies to new Basic MSI and InstallScript MSI projects as well as existing Basic MSI and InstallScript MSI projects that are upgraded from InstallShield 2008 or earlier to InstallShield 2010. If you want to change the compression level or you do not want to use any compression, you can override the default level through a machine-wide setting. For more information, see Configuring the Compression Level for Files that Are Streamed into Setup.exe and ISSetup.dll. Previously, InstallShield did not include any support for compressing files that were streamed into the Setup.exe file or the ISSetup.dll file at build time. Thus, if you compare a release that was built in InstallShield 2008 or earlier with the same release that is built with the default compression level in InstallShield 2010, you may notice that the file size of Setup.exe or ISSetup.dll is slightly different. In addition, the time that is required to extract files may be slightly different. Multi-Part .cab Files InstallShield now has a default limit of 600 MB for each .cab file that it creates at build time for a network image release in which the compression type is the standard compression type (not custom compression) and all of the files are embedded in a single-file .msi package or a Setup.exe setup launcher. When InstallShield is creating the .cab files for this type of release and it reaches this limit, it splits the data into two or more .cab files, creating multi-part .cab files. This applies to new Basic MSI and InstallScript MSI projects as well as existing Basic MSI and InstallScript MSI projects that are upgraded from InstallShield 2008 or earlier to InstallShield 2010. You can modify the .cab size limit if necessary. In addition, if you do not want InstallShield to create multi-part .cab files, you can configure it to create single .cab files. For more information, see Configuring the Maximum Size for .cab Files. Previously, InstallShield did not create multi-part .cab files, and there was no built-in limit for the .cab file size. Automation Interface and Standalone Build If you use the automation interface with InstallShield or the Standalone Build, update your existing code to reflect the new ProgID: IswiAuto15.ISWiProject. The Standalone Automation Interface uses the same ISWiAutomation15.dll file that InstallShield uses, but it is installed to a different location. Note that if you install the Standalone Build on the same machine as InstallShield, the last ISWiAutomation15.dll file that is registered is the one that is used. If you have existing automation scripts that work with the InstallShield Automation Interface, you no longer need to change the library name from IswiAutoN to SAAutoN (where N indicates the version number) throughout the scripts in order to use them with the Standalone Automation Interface. The Standalone Build that is available with InstallShield Premier Edition now uses the same directory structure that InstallShield uses. The ISCmdBld.exe file that is used for command-line builds with InstallShield is now installed with the Standalone Build. Previously, the Standalone Build used IsSaBld.exe, a different file, for command-line builds. FLEXnet Connect Support in InstallScript Projects InstallScript projects no longer include an Update Notifications view, which is used to add FLEXnet Connect support to an installation. Note that this view is still available in Basic MSI and InstallScript MSI projects. Note the following details about FLEXnet Connect support in InstallScript projects:
164 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

InstallShield does not add ISUS.obl to the list of libraries (or enable any other FLEXnet Connect functionality) when ISEnableUpdateService is changed to 1 in the InstallShield table. The ISUS.obl library is no longer supported. If you upgrade an InstallScript project from InstallShield 2008 or earlier to InstallShield 2010, InstallShield automatically disables FLEXnet Connect support and removes the ISUS.obl from the list of linked script libraries. The InstallScript constants and functions for FLEXnet Connect still compile. However, all of the functionsexcept for UpdateServiceGetAgentTargetnow return ISERR_NOT_IMPLEMENTED. UpdateServiceGetAgentTarget returns null (""). All calls to the InstallScript functions for FLEXnet Connect were removed from the default InstallScript code. In the OnUpdateUIBefore event handler, the code for UpdateServiceOnEnabledStateChange was removed. In the OnMoveData event handler, the code blocks for UpdateServiceRegisterProduct and UpdateServiceCreateShortcut were removed. Note that if you upgrade an InstallScript project from InstallShield 2008 or earlier to InstallShield 2010 and you had overridden these events in the earlier version of your project, the aforementioned functions are called. This should not cause any problems. The functions now return ISERR_NOT_IMPLEMENTED. Also, the OnFirstUIAfter event handler was updated to not include the option of calling
SdFinishUpdate, which was disabled previously by default.

All FLEXnet Connectrelated run-after-reboot functionality was removed. Therefore, the product is not registered with FLEXnet Connect after a reboot. When you build an InstallScript project, InstallShield no longer adds any FLEXnet Connectrelated files to the media. ISUS.obl will no longer be supported and thus will not be provided with the product.

FLEXnet Connect Support in InstallScript MSI Projects The following FLEXnet Connectrelated functions have been deprecated for InstallScript MSI projects:

GetUpdateStatusThis function always returns FALSE. SetUpdateStatusThis function returns ISERR_NOT_IMPL. GetUpdateStatusRebootThis function always return FALSE. SetUpdateStatusRebootThis function returns ISERR_NOT_IMPL.

All calls to the SetUpdateStatus and SetUpdateStatusReboot functions were removed from the default InstallScript code. Multilanguage Support in Basic MSI and InstallScript MSI Projects If an installation includes multilanguage support and end users launch Setup.exe again (after the product is already installed) to run the installation in maintenance mode, the language selection dialog is no longer displayed. The maintenance dialogs are displayed in the same language that was used to originally install the product. Similarly, if a multilanguage minor upgrade or small update is run to update an earlier version of an already installed product, the language selection dialog is not displayed. The upgrade dialogs are displayed in the same language that was used to originally install the product.
InstallShield 2010 User Guide ISP-1600-UG00 165

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

This behavior helps ensure that the same language that was used to run the original installation and install its features is also used to repair the original installation, as well as to add other features that were not originally installed but are installed during maintenance mode or upgrades. InstallScript Multi-Instance Support For an InstallScript multilanguage, multi-instance installation that displays the language selection dialog, the instance selection dialog is now displayed before the language selection dialog. The dialog order change enables end users to select a different language for a new instance of the product. If end users specify in the instance selection dialog that they want to maintain an existing instance, the language selection dialog is not displayed. Note that when the instance selection dialog is displayed, it is displayed in the same language that would be used to display the language selection dialog. If multiple instances of a non-multi-instance installation are installed through the Setup.exe /ig command-line parameter, the language selection dialog is displayed only during a first-time installation; it is not displayed during maintenance mode. This helps ensure that the same language that was used to run the original installation and install its features is also used to repair the original installation, as well as to add other features that were not originally installed but are installed during maintenance mode. During an InstallScript full-release installation that does not display the instance selection dialogsuch as an installation that is run in silent mode or with the Setup.exe -hide_usd command-line parameter the installation automatically installs a new instance. This behavior occurs for all new InstallShield 2010 projects, as well as projects that are upgraded from earlier versions to InstallShield 2010. In InstallShield 2008, /hide_usd resulted in the first installed instance being maintained, and silent mode resulted in a new instance being installed. In InstallShield 12 and earlier, the first installed instance would be maintained in both the /hide_usd and silent mode scenarios. For a differential media, the first instance read is updated. During a non-multi-instance installation on a system where two or more instances are installed (using the Setup.exe /ig command-line parameter), the instance selection dialog is displayed. The instance selection dialog does not allow a new instance to be installed during a non-multi-instance installation because a non-multi-instance installation does not generate a new random GUID for the new instance. The instance selection dialog includes the default instance (the instance whose GUID matches the product GUID) if it installed and it is one of the instances that can be maintained. This behavior applies to all new InstallShield 2010 projects, as well as projects that are upgraded from earlier versions of InstallShield. If a single instance is installed, the installation automatically attempts to maintain the installed instance; it does not show the instance selection dialog. Note that is true even if the installed instance is not the default instance. As a result of this behavior, if the default instance is not installed but a nondefault instance is installed (using the /ig parameter), it is not possible to install or maintain the default instance without (a) first uninstalling the non-default instance or (b) specifying the GUID of the default instance through the /ig parameter. Therefore, if you support using the /ig parameter to install multiple instances, it is recommended that you always use this parameter. This behavior applies to all new InstallShield 2010 projects, as well as projects that are upgraded from earlier versions of InstallShield. For InstallShield 2008, if a non-multi-instance installation was run on a target system that had multiple instances installed, the instance selection dialog was not displayed; in this case, the default instance was always used. For InstallShield 12 and earlier, if a non-multi-instance installation was run on a target system that had multiple instances installed, the instance selection dialog was displayed; this dialog did not allow a new instance to be displayed (because a non-multi-instance installation does not generate a new random GUID for the new instance). However, the title bar of the dialog indicated that the end user should select an instance to update; it should have indicated that the end user should select an instance to update or maintain.
166 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Changes for SdRegisterUser, SdRegisterUserEx, SdCustomerInformation, and SdCustomerInformationEx in InstallScript MSI Installations In an InstallScript MSI installation, the following InstallScript text substitutions now map directly to Windows Installer properties:

IFX_PRODUCT_REGISTEREDOWNER maps to the Windows Installer property USERNAME. IFX_PRODUCT_REGISTEREDCOMPANY maps to the Windows Installer property COMPANYNAME.

Therefore, when these InstallScript variables are set and retrieved, the corresponding Windows Installer properties are set and retrieved. The default values for these variables are no longer read from the registry; instead the Windows Installer properties are used by default. To use the previous functionality, you can set the variables manually through the following sample code:
// Registered Owner (Only load from registry if pre-loaded value (from log file) is "") if( !StrLengthChars( IFX_PRODUCT_REGISTEREDOWNER ) ) then szValue = ""; RegDBGetItem( REGDB_WINCURRVER_REGOWNER, szValue ); if( StrLengthChars( szValue ) ) then IFX_PRODUCT_REGISTEREDOWNER = szValue; endif; endif; // Registered Company (Only load from registry if pre-loaded value (from log file) is "") if( !StrLengthChars( IFX_PRODUCT_REGISTEREDCOMPANY ) ) then szValue = ""; RegDBGetItem( REGDB_WINCURRVER_REGORGANIZATION, szValue ); if( StrLengthChars( szValue ) ) then IFX_PRODUCT_REGISTEREDCOMPANY = szValue; endif; endif;

In an InstallScript MSI installation, the various registration-related dialogsSdRegisterUser, SdRegisterUserEx, SdCustomerInformation, and SdCustomerInformationExnow set IFX_PRODUCT_REGISTEREDOWNER, IFX_PRODUCT_REGISTEREDCOMPANY, and IFX_PRODUCT_REGISTEREDCOMPANY as appropriate based on the end users selections. This automatically updates the corresponding Windows Installer properties. When a null string ("") is specified for either svName or svCompany for the any of the registrationrelated dialog functions (SdRegisterUser, SdRegisterUserEx, SdCustomerInformation, or SdCustomerInformationEx), the functions use the appropriate variable (determined from the corresponding Windows Installer property) as the default. Previously, the variables were used only if both svName and svCompany were null; for SdCustomerInformation and SdCustomerInformationEx, the values were read directly from the Windows Installer properties, bypassing the script variables. If a null string ("") is specified for the svSerial parameter, the default value for the serial number field is now set to IFX_PRODUCT_REGISTEREDSERIALNUM. Previously in this case, the dialog displayed no value. The following InstallScript variables are new or have been changed:

DISABLE_PERUSERBTNThis existing variable indicates that the per-user radio button should be

disabled (or hidden) in cases that it would normally be enabled. This variable is always initialized to FALSE. Previously, this value was initialized to TRUE on Windows 9x systems; otherwise, it was FALSE.

InstallShield 2010 User Guide

ISP-1600-UG00

167

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

DISABLE_ALLUSERBTNThis existing variable indicates that the all-user radio button should be disabled (or hidden) in cases that it would normally be enabled. This variable is always initialized to FALSE. Previously, this value was initialized to TRUE if the operating system was not Windows 9x and the end user was not an administrator or power user. HIDE_DISABLED_BTNSThis new variable indicates that the all-user and per-user radio buttons

should be hidden instead of being disabled. The default value is TRUE. Note that if this variable is set to TRUE, both radio buttons are hidden if either button is determined to be disabled. The registration dialogs now automatically disable (or hide) the per-user radio button on Windows 9x regardless of the value of DISABLE_ALLUSERBTN. Previously, the per-user radio button was disabled only if DISABLE_PERUSERBTN was FALSE. Note also that the registration dialogs automatically disable (or hide) the all-users radio button if the end user is not an administrator or power user, regardless of the value of DISABLE_ALLUSERBTN. This behavior has not changed. These changes apply to all new InstallScript MSI projects that are created in InstallShield 2010, as well as InstallScript MSI projects that were created in earlier versions of InstallShield and then upgraded to InstallShield 2010. Proxy Server Support You may want to configure your installation to download certain files only if they are needed on the target system. For example, the Windows Installer engine, the .NET Framework, and some InstallShield prerequisites may already be present on some or most target systems. Instead of embedding these files in your installation (which would increase your overall installation size), you can configure your project so that only the ones that are needed are downloaded at run time. If your end users access the Internet through a proxy server and your installation is configured to download files, the installation now uses the system proxy settings that are manually configured in Internet Explorer during the download. This occurs even if another browser on the target system is the default browser. Note that InstallShield does not include support for the Automatically Detect Settings functionality in Internet Explorer. (If end users have the Automatically Detect Settings check box selected in Internet Explorer for their LAN connection and the installation needs to download files, the installation fails because the files cannot be downloaded. If it is possible that your end users may have the Automatically Detect Settings check box selected in Internet Explorer for their LAN connections, you may want to embed all of the files in your installation rather than configure them to be downloaded; if the files are embedded, the failures can be avoided.) However, InstallShield does support the Automatic Configuration Script functionality that is set up for LAN connections in Internet Explorer. This is the behavior for all new projects in InstallShield 2010, as well as all projects that are created in earlier versions and then upgraded to InstallShield 2010. In InstallShield 2008 and earlier, the installation attempted to use the proxy server settings that were configured in whatever browser was the default browser. However, this was not always possible, and it caused some problems:

If Netscape 6 or 7 was the default browser, the Netscape 4 settings were used. If Netscape 8 or 9 was the default browser, the system (Internet Explorer) settings were used. If Netscape 4 settings were used, only the proxy server list was read and imported correctly. The proxy bypass list was read, but it was not imported correctly.

168

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

NonInternet Explorer 4 compatible settings such as the auto-proxy script setting were not imported. The method that the installation used for determining the default browser was not compatible on Windows Vista. Therefore, on Windows Vista systems, an installation may not have detected the default browser correctly.

Rollback Support for Windows Mobile Device Installations InstallShield now has support for rolling back a Windows Mobilepowered device installation that is included in a desktop-to-device installation if appropriate. This support is made possible through a built-in InstallShield custom action called RollbackCEApps. With this new custom action, if an end user clicks the Cancel button during the installation of a product for a Windows Mobilepowered device, the installation is rolled back, and any associated .ini files, .cab files, and .ico files are deleted from the target machine. When you add a Windows Mobilepowered device installation in the Mobile Devices view of a new Basic MSI, or InstallScript MSI project in InstallShield 2010, InstallShield automatically adds the RollbackCEApps custom action to your project. InstallShield also adds this custom action if you upgrade a Basic MSI and InstallScript MSI project that already has a Windows Mobilepowered device installation in the Mobile Devices view from InstallShield 2008 or earlier to InstallShield 2010. Changes for Windows Mobile Support in Basic MSI and InstallScript MSI Projects Basic MSI and InstallScript MSI installations that include installations for Windows Mobilepowered devices no longer require the installation to be launched with elevated privileges on Windows Vista systems; elevated privileges are now required only for the Execute sequence. If you have previously worked around the issue by setting the Required Execution Level setting on the Setup.exe tab for the release to the Administrator option, you can now set it to Invoker. Web Downloader Option to Wrap a 1.x .msi Package into a .cab File Is No Longer Available InstallShield no longer includes an option to specify that an .msi package should be wrapped into a .cab file. This option was previously available for the Web Downloader type of media in Basic MSI and InstallScript MSI projects in which the Windows Installer 1.1 or 1.2 was included. The recommended method is to use Windows Installer 2.0 or later and to digitally sign the package. Status Text in InstallScript MSI Projects The OnFirstUIBefore, OnMaintUIBefore, OnAdminInstallUIBefore, OnAdminPatchUIBefore, OnPatchUIBefore, OnUninstall, and OnResumeUIBefore event handlers in an InstallScript MSI project now include SetStatusExStaticText calls by default in all new InstallScript MSI projects. This new default code sets status text for the STATUSEX dialog; the status text that is displayed is now appropriate for the type of operation (first-time installation, maintenance, uninstallation, repair, etc.) being performed. Previously, it was necessary to manually add the SetStatusExStaticText calls; otherwise, the status text that was displayed did not correspond with the type of operation being performed. Note that if you upgrade an InstallScript MSI project from InstallShield 2008 or earlier to InstallShield 2010 and you had overridden one or more of the updated events in the earlier version of your project, you must manually add the SetStatusExStaticText code to these events.

InstallShield 2010 User Guide

ISP-1600-UG00

169

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Changes for the InstallScript Variable SHELL_OBJECT_FOLDER You can specify SHELL_OBJECT_FOLDER (for InstallScript or InstallScript MSI projects) or <SHELL_OBJECT_FOLDER> (for InstallScript projects) in the Display Name setting for a folder in the Shortcuts view. Then you can define the display name for the folder at run time by setting the SHELL_OBJECT_FOLDER variable in your script before the shortcut is created. The shortcut is typically created during file transfer. To use this functionality in an InstallScript MSI installation, any letters that are specified for the Key Name setting of the folder in the Shortcuts view must be all uppercase (for example, NEWFOLDER1). SHELL_OBJECT_FOLDER is now initialized to the same value as IFX_PRODUCT_NAME during initialization. Note that these variables are not synchronized once initialized; therefore, if you change one and want the other to change, you must change both manually. Note that also as part of this change, the default OnFirstUIBefore event handler code in InstallScript MSI projects no longer includes the following line of code:
SHELL_OBJECT_FOLDER = @PRODUCT_NAME;

If you have an InstallScript MSI project that was created in InstallShield 2008 or earlier and you modified the default OnFirstUIBefore code, InstallShield does not remove this line from your code when you upgrade your project to InstallShield 2010. To learn more, see SHELL_OBJECT_FOLDER. Change in Behavior for the InstallScript Function FeatureFileEnum If you use the question mark (?) as a wild-card character for the szQuery parameter of the InstallScript function FeatureFileEnum, the function now uses the question mark as a substitute for exactly one character. If you used the question mark as a wild-card character with FeatureFileEnum in a project that you created in an earlier version of InstallShield, you may need to change your InstallScript code when you upgrade it to InstallShield 2010. In earlier versions of InstallShield, the function used the question mark as a substitute for one or zero characters. For example, if you create a new InstallScript project with default settings and add the following InstallScript code to your project, the dialog that is displayed at run time does not display anything.
#include "ifx.h" LIST listFiles; program listFiles = ListCreate( STRINGLIST ); FeatureFileEnum( MEDIA, "DefaultFeature", "Default?Component", listFiles, NO_SUBDIR ); SdShowInfoList( "", "", listFiles ); endprogram

In installations that were created earlier versions of InstallShield, the dialog displayed DefaultComponent. All InstallScript Installations Now Support Showing Update UI All InstallScript projects now support showing the update user interface (UI). Previously, the General Information view and the Project Settings dialog box had a confusing option that enabled the update UI to be disabled. If the update UI was disabled, the MEDIA_FLAG_UPDATEMODE_SUPPORTED flag was not set for MEDIA_FIELD_MEDIA_FLAGS, and the OnSetUpdateMode event handler did not set the UPDATEMODE variable when appropriate. As a result, the update UI was not shown.
170 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Note that changing the value of ISShowUpdateUI in the InstallShield table (which the previous option updated) no longer has any effect. It is possible to duplicate the previous functionality through the following methods:

Override the OnSetUpdateMode event and update the function to return before setting the UPDATEMODE variable. The installation never shows the update UI. Override the OnUpdateUIAfter event and change the call for FeatureRemoveAllInMediaAndLog to FeatureRemoveAllInMedia.

Changes for the Certified for Windows Vista Validation Suites The two Certified for Windows Vista validation suites that help you determine whether your installation or merge module meets the requirements for the Windows Vista logo program have been revised. They now consist of only the InstallShield ICEs (ISICEs). The Microsoft-created ICEs (ICE01 through ICE99) have been removed, since they are available in the Full MSI Validation Suite for installation packages and in the Merge Module Validation Suite for merge modules. In addition, these two suites have been renamed:

The new name for the Certified for Windows Vista Validation Suite (plus InstallShield ICEs) is InstallShield Certified for Windows Vista Validation Suite. The new name for the Certified for Windows Vista Merge Module Validation Suite (plus InstallShield ICEs) is InstallShield Certified for Windows Vista Merge Module Validation Suite.

For more information about the validation and the Certified for Windows Vista program, see:

Requirements for the Certified for Windows Vista Program Validating Projects

Updated InstallScript Objects and Object Templates A number of improvements were made to the InstallScript objects and InstallScript object templates that are available for use with InstallShield 2010 InstallScript projects. If you have an Internet connection, you can use the Check for Updates feature in InstallShield to obtain the updated InstallScript objects and object templates for the version of InstallShield that you are using. To check for updates: On the Tools menu, click Check for Updates. InstallShield launches FLEXnet Connect, which checks for updates. If you do not have an Internet connection on the computer that has InstallShield, visit the Downloads area of the http://www.installshield.com site from a computer that does have an Internet connection, download the updated InstallScript objects and templates, save them to a removable disk, and then transfer them to the computer that has InstallShield.

Changes that Affect New Projects but Not Upgraded Projects


This section describes changes to InstallShield that may affect new projects but not projects that are upgraded from earlier versions. Note that you may need to make manual changes to upgraded projects.

InstallShield 2010 User Guide

ISP-1600-UG00

171

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Unicode and ANSI Versions of the Setup.exe and Update.exe Bootstrappers InstallShield now enables you to specify whether you want to create a Unicode version or an ANSI version of the Setup.exe setup launcher for a Basic MSI project. Previously, if your Basic MSI project included a setup launcher, InstallShield always built an ANSI version; it did not include support for building a Unicode version. A Unicode setup launcher can correctly display double-byte characters in the user interface of the setup launcher, regardless of whether the target system is running the appropriate code page for the doublebyte-character language. An ANSI setup launcher displays double-byte characters in the setup launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page. If you create a new release in a Basic MSI project in InstallShield 2010, the default setup launcher type is Unicode. In addition, if you create a new patch configuration or a new QuickPatch project in InstallShield 2010, the default update launcher type is Unicode. If you upgrade a Basic MSI project from InstallShield 2008 or earlier to InstallShield 2010, the setup launcher type for any existing releases is ANSI. You can override the type if appropriate. Similarly, if you upgrade a Basic MSI project or a QuickPatch project from InstallShield 2008 or earlier to InstallShield 2010, the update launcher type for any existing patch is ANSI. You can override the type if appropriate. For more information, see:

Specifying the Setup Launcher Type (Unicode or ANSI) for a Release Specifying the Update Launcher Type (Unicode or ANSI) for a Patch Package Specifying the Update Launcher Type (Unicode or ANSI) for a QuickPatch Package

Dynamic File Links When you add or modify a dynamic file link in a project, you can specify which component creation method you want InstallShield to use: a new best practice method or the previously available onecomponent-per-directory method. These methods are applicable to dynamic file linking in Basic MSI, InstallScript MSI, and Merge Module projects. If you create a new dynamic file link in InstallShield 2010, InstallShield uses the best practice method by default. All dynamic file links that are created in InstallShield 2008 or earlier use the one-component-perdirectory method. If you have a project with dynamic file links and you upgrade it from InstallShield 2008 or earlier to InstallShield 2010, InstallShield continues to use the one-component-per-directory method for creating the components of those already present dynamic file links. For any new dynamic file links that you create in the upgraded project, the best practice method is used by default. For detailed information about the two component creation methods, as well as guidance on which method you should use, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. IIS Web Sites and Associated Components InstallShield now includes support for installing IIS Web sites without any virtual directories. In addition, InstallShield now lets you associate a Web site with a component. As a result of these enhancements, a Web site is created on a target machine if a virtual directory or a component that is associated with it is installed.
172 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

If you add a new Web site through the Internet Information Services view in InstallShield 2010, InstallShield automatically associates that Web site with a component. If you upgrade an InstallShield 2008 or earlier project that already has an IIS Web site, InstallShield does not automatically associate that Web site with a component. Use the General tab that InstallShield displays when you select a Web site in the Internet Information Services view if you want to associate the selected Web site with a component. Note that if a Web site is associated with a component, the Web sites Delete Web Site on Uninstall check box now corresponds with the Permanent setting for that component in a Basic MSI or InstallScript MSI project, or with the Uninstall setting for that component in an InstallScript project. That is, if you select or clear the Delete Web Site on Uninstall check box for a Web site, InstallShield automatically updates the value of the components Permanent setting or Uninstall setting, as appropriate. Simplification of QuickPatch Packages The new Streamline QuickPatch setting on the Advanced tab in a QuickPatch project determines how InstallShield builds QuickPatch packages. A streamlined QuickPatch package typically has fewer new subfeatures and custom actions than a non-streamlined QuickPatch package. In some cases, InstallShield cannot streamline the QuickPatch package. For example, if you configure the QuickPatch package to remove an installed file, InstallShield cannot streamline it. When you create a new QuickPatch project, the default value for the Streamline QuickPatch setting is Yes. However, when you upgrade a QuickPatch project from InstallShield 2008 or earlier to InstallShield 2010, the value for this setting is No. You can change this value if appropriate. For more information, see Specifying Whether to Streamline the QuickPatch Package. Default Condition for the SetARPINSTALLLOCATION Custom Action By default, all new Basic MSI and InstallScript MSI projects contain the built-in InstallShield custom action SetARPINSTALLLOCATION. This custom action, which sets the value of the ARPINSTALLLOCATION property to the fully qualified path for the products primary folder, is scheduled for the Installation Execute sequence, and it has no condition. In InstallShield 2008 and earlier, the default condition for this custom action was Not Installed. With this default Not Installed condition, the custom action is not run during maintenance mode, and this results in a blank value for the ARPINSTALLLOCATION property. To avoid this behavior in a project that you upgrade from InstallShield 2008 or earlier to InstallShield 2010, open the Custom Actions and Sequences view and delete the Not Installed value from the Install Exec Condition setting for this custom action. New Sequence Location for the MigrateFeatureStates Action By default, the MigrateFeatureStates action is now sequenced immediately after the CostFinalize action in all new Basic MSI and InstallScript MSI projects. If you use the SQL Scripts view to add SQL support to the new project, InstallShield now schedules the InstallShield built-in custom action ISSQLServerFilteredList after the MigrateFeatureStates action. In InstallShield 2008 and earlier, the ISSQLServerFilteredList was sequenced before the MigrateFeatureStates action, and this caused runtime error 2601. To avoid this error in a project that you upgrade from InstallShield 2008 or earlier to InstallShield 2010, open the Custom Actions and Sequences view and move the ISSQLServerFilteredList action after the MigrateFeatureStates in the Installation User Interface sequence.

InstallShield 2010 User Guide

ISP-1600-UG00

173

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Template Summary Property Changes You can specify a value for the Template Summary property in the General Information view or for a product configuration in the Releases view. If you try to enter an invalid value (for example, if you indicate multiple platforms or you use more than one semicolon), InstallShield displays a warning message box and does not allow you to change the value for the property. Earlier versions of InstallShield permitted you to enter invalid values. If you upgrade an InstallShield 2008 or earlier project to InstallShield 2010, InstallShield does not automatically change the invalid value. However, you can manually update the value if appropriate. For more information, see Using the Template Summary Property.

Welcome Assistant Removed


The Welcome Assistant, which was displayed the first time that you opened InstallShield, is no longer included.

InstallShield MSIPackageDiff Replaced by InstallShield MSI Diff


The tool called InstallShield MSIPackageDiff is no longer included with InstallShield. It has been replaced by a more powerful tool called InstallShield MSI Diff. You can launch InstallShield MSI Diff from within InstallShield: On the Tools menu, point to Difference, and then click InstallShield MSI Diff. For more information, see InstallShield MSI Diff.

Upgrading Projects from InstallShield 12 or Earlier


The following information describes changes that may affect projects that are upgraded from InstallShield 12 or earlier to InstallShield 2010.

Upgrading Projects Created in Earlier Versions of InstallShield


If you use InstallShield 2010 to open a project that was created with an earlier version, InstallShield 2010 displays a message box that asks you if you want to convert the project to the new version. If you reply that you do want to convert it, InstallShield creates a backup copy of the project with a file extension such as .765 before converting it. Delete the .765 part from the original projects file name if you want to reopen the project in the earlier version of InstallShield. Note that you cannot open InstallShield 2010 projects in earlier versions of InstallShield. You can upgrade projects that were created with the following versions of InstallShield to InstallShield 2008: InstallShield 12 and earlier, InstallShield DevStudio, InstallShield Professional 7 and earlier, and InstallShield Developer 8 and earlier. Note that projects that were created with InstallShield MultiPlatform or InstallShield Universal cannot be upgraded to InstallShield 2008.

End of Support for Windows 9x, Windows NT 4, and Windows Me on Target Systems
InstallShield no longer supports the creation of installations for Windows 9x, Windows NT 4, and Windows Me systems. If end users have one of these operating systems on their computer and they try to run an installation that was built with InstallShield 2010, unexpected results may occur, unless the project includes launch conditions that prevent end users from running the installation on any of these legacy operating systems.

174

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

For Basic MSI and InstallScript MSI projects, you may want to consider adding launch conditions that display a message if end users are running your installation on any of the legacy systems. For InstallScript projects, you may want to consider adding InstallScript code that uses the SYSINFO structure variable to check for these legacy systems, and then display a message if any of these legacy systems are present. To learn more, see:

Specifying Operating System Requirements in the Project Assistant Platforms Tab Platforms Dialog Box Modify Property Dialog Box/Release WizardPlatforms Panel

COM Extraction
When you use InstallShield to extract COM information from a COM server, InstallShield puts the data in the Registry table, instead of in the TypeLib table. Microsoft strongly advises against using the TypeLib table, as described in the TypeLib Table topic on the MSDN Web site.

Unused Directories Automatically Removed from .msi File at Build Time by Default
Note that if you upgrade a Basic MSI, InstallScript MSI, or Merge Module project that was created in InstallShield 12 or earlier to InstallShield 2008, the new Keep Unused Directories setting on the Build tab in the Releases view is set to No. Therefore, if a directory that is listed in the Directory column of the Directory table is not referenced in any known location in the .msi file, InstallShield removes it from the Directory table of the .msi file that it creates at build time. For Basic MSI and InstallScript MSI projects, this occurs after any merge modules are merged, but only directories that are present in the .msi file are removed; therefore, if a merge module contains new unused directories in its Directory table, the new unused directories are added to the installation.

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 permachine context with administrative privileges. If you upgrade a project that was created with InstallShield 12 or earlier to InstallShield 2010, 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 2010, InstallShield does not automatically change the CustomerInformation dialog. To learn more, see:

Per-User vs. Per-Machine Installations ALLUSERS

InstallShield 2010 User Guide

ISP-1600-UG00

175

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Windows Server 2003 Conditions and 64-Bit Windows XP Conditions for Setup Prerequisites
The operating system version number is 5.2 for both Windows Server 2003 and 64-bit Windows XP. As a result, prerequisites that were created in InstallShield 12 and that required Windows Server 2003 could be installed on 64-bit Windows XP systems, and those that required Windows XP could not be installed on 64-bit Windows XP systems. To resolve this issue, the Setup Prerequisite Editor in InstallShield 2008 has been enhanced to enable you to specify whether the target system is required to be a workstation, a server, or a domain controller. To resolve this issue for an existing prerequisite that includes a Windows Server 2003 requirement or a 64-bit Windows XP requirement, open the prerequisite in the Setup Prerequisite Editor in InstallShield 2008. On the Conditions tab, select the condition that needs to be corrected and click Modify. In the Select which platform the prerequisite should be run on box, select the appropriate operating system requirement. Doing this correctly sets the new Product (OS) Type setting to the appropriate workstation, server, or domain controller value.

Automation Interface
If you use the automation interface with InstallShield or the Standalone Build, update your existing code to reflect the new ProgIDs: IswiAuto14.ISWiProject or SAAuto14.ISWiProject. The Display Save Options dialog setting was removed from the Releases view. Therefore, the WebSaveOptionsDlg property, which corresponds with that setting, is no longer available for the ISWiRelease object of automation interface.

New Default Value for the Cache Path Setting for a Release
The default value for the Cache Path setting for a compressed release in the Releases view is now set to [LocalAppDataFolder]Downloaded Installations. The previous default value was [WindowsFolder]Downloaded Installations, which may not be available to users on locked-down systems. If you migrate a project from InstallShield 12 or earlier to InstallShield 2010, the Cache Path setting is not automatically changed. Therefore, you may want to change that value.

InstallScript One-Click Install Installations


Setup.exe is no longer used as the setup player for InstallScript One-Click Install installations; Setup.ocx is now used instead. In order for a Setup.ocx file to be included in an installation, the new Generate OneClick Install setting in the Releases view must be set to Yes. If you upgrade an InstallScript project from InstallShield 12 or earlier to InstallShield 2010 and the Create Default Web Page setting in the Releases view is set to Yes, InstallShield sets the Generate One-Click Install setting to Yes automatically during the upgrade. However, if the Create Default Web Page setting is set to No and you intend to distribute the installation over the Internet, you must manually select Yes for the Generate One-Click Install setting after upgrading the project.

To learn more about One-Click Install installations, see One-Click Install Installations in InstallScript Projects.

Patch Creation for Basic MSI and InstallScript MSI Projects


InstallShield now uses version 3.1 of Patchwiz.dll to create patches.

176

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

DemoShield Support
DemoShield is no longer being sold. In addition, it is no longer supported. Therefore, InstallShield no longer includes any DemoShield integration.

Changes for the Windows Vista Validation Suites


The validation suites that help you determine whether your installation meets installation requirements for the Windows Vista logo program have been renamed:

The new name for the Windows Vista Quality Validation Suite (plus InstallShield ICEs) is Certified for Windows Vista Validation Suite (plus InstallShield ICEs). The new name for the Windows Vista Quality Merge Module Validation Suite (plus InstallShield ICEs) is Certified for Windows Vista Merge Module Validation Suite (plus InstallShield ICEs).

In addition, three of the InstallShield ICEs have been moved to the InstallShield Best Practice Suite. For more information about the validation and the Certified for Windows Vista program, see:

Requirements for the Certified for Windows Vista Program Validating Projects

To learn about the validators that are now available as InstallShield Best Practices, see: ISBP17 (which was previously known as ISICE13) ISBP18 (which was previously known as ISICE14) ISBP19 (which was previously known as ISICE15)

Upgrading Projects from InstallShield 11.5 or Earlier


For InstallShield 12, a number of improvements were made to the InstallScript MSI architecture to resolve issues with security (COM/DCOM) and other areas that can cause some installations to fail for various reasons. The architecture was improved for InstallShield 12 to resolve these issues and to make InstallScript MSI a more reliable project type. The improvements also help increase the reliability of InstallScript projects, as well as Basic MSI projects that include InstallScript custom actions. The following table compares the earlier design with the current design:
Table 3-9: Architecture Changes In InstallShield 11.5 and Earlier Each InstallScript custom action is handled by
ISScriptBridge.dll (a C++ MSI DLL), which forwards actual script execution to the ongoing IDriver.exe

In InstallShield 12 and Later Each InstallScript custom action is handled by ISSetup.dll (a single C++ MSI DLL), which contains the full InstallScript engine.

process. A set of engine files is required. They must be installed by


ISScript.msi before the primary installation begins.

No engine files or ISScript.msi file is required. ISSetup.dll is self-contained.

InstallShield 2010 User Guide

ISP-1600-UG00

177

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Table 3-9: Architecture Changes (cont.) In InstallShield 11.5 and Earlier All InstallScript custom actions execute in a shared IDriver.exe process. The IDriver.exe process remains resident until a final shutdown custom action is required. In InstallShield 12 and Later Each InstallScript custom action is independent and has its own self-contained lifecycle. From the custom action entry point, ISSetup.dll starts the script engine, executes the relevant script, and shuts down the engine.

Advantages of the Architecture Changes That Were Introduced in InstallShield 12


The architecture in InstallShield 12 and later has several advantages over the earlier architecture:

End users no longer encounter error 1607, error 1608, or other COM/DCOM run-time errors that are related to finding the running IDriver.exe file. When these errors occurred under the earlier model, they were difficult to resolve, often requiring changes to DCOM settings. Also, the reliance on the running object table made the model brittle across the spectrum of usage scenarios, including Fast User Switching and Windows Terminal Services.
Files\InstallShield.

The engine binding is static. No shared engine files are installed to Program Files\Common The reliance in InstallShield 11.5 and earlier on shared engine files made the model brittle because separate installations were not isolated. Changes to one engine version could break an existing installation. Isolation, especially for an installer, is one key to reliability.

The ISScript.msi file (the InstallScript engine installer) is no longer needed. The earlier model required an ISScript.msi file to execute prior to the primary .msi file. Because the full application was not contained in a single .msi file, the installation essentially required a bootstrap for Basic MSI installations that had InstallScript custom actions. This was very inflexible for enterprises that use Active Directory for managed environments. Also, it was confusing for advanced users who expect the main .msi file to be self-contained. InstallScript MSI installations still require a bootstrap, so that requirement is no different than the earlier architecture; however, Basic MSI installations with InstallScript custom actions no longer require a bootstrap. Fewer InstallShield custom actions are needed to run the installation. The earlier model relied on a deep coupling between startup and shutdown custom actions that could easily fail. If one of the required custom actions was deleted or moved, the installation would not work properly.

Disadvantages of the Architecture Changes That Were Introduced in InstallShield 12


The disadvantages of the architecture in InstallShield 12 and later include the following:

InstallScript events are not available in Basic MSI and merge module projects; therefore, all InstallScript code for these project types must be run by InstallScript custom actions. Global variables do not share state between these custom action invocations. Therefore, you can declare a global variable in one InstallScript custom action script and then use that global variable throughout the script. However, if your Basic MSI installation has a second InstallScript custom action, the global variable declared in the first script is not available to the second script. With the earlier model, InstallScript developers were able to use script code in any of the InstallScript events in Basic MSI projects, and any InstallScript global variables shared state. This allowed setup authors to write custom actions with a more holistic view and sense of continuity across the installation. However, because global variables are generally discouraged in programming, the new limitation should actually result in better-written InstallScript code.

178

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

In-memory objects must be serialized in order to be shared between custom action invocations. With the earlier model, InstallScript developers could store complex object-based data in global variables. As with the aforementioned disadvantage, this may actually result in better InstallScript code.

Upgrading InstallShield 11.5 and Earlier Projects


The extensive rearchitecture that has been introduced in InstallShield 12 may require some manual changes when you upgrade projects that were created with InstallShield 11.5 or earlier to InstallShield 2010.

Task

To upgrade your project: 1. 2. 3. 4. 5.

Before you convert your project, create a backup version of your project file and any InstallScript files. Open InstallShield 2010. On the File menu, click Open. The Open dialog box opens. Browse to select the project file (.ism) of the InstallShield 11.5 or earlier project that you want to upgrade. A dialog box opens, prompting you to specify whether you want to upgrade the project. Click Yes.

InstallShield upgrades your project and saves a backup copy of the project file (.ism). To learn about possible manual changes that you may need to make to upgraded projects, see the following:

Upgrading InstallShield 11.5 or Earlier Basic MSI Projects that Have InstallScript Custom Actions Upgrading InstallShield 11.5 or Earlier InstallScript MSI Projects Upgrading InstallShield 11.5 or Earlier InstallScript Projects Upgrading InstallShield 11.5 or Earlier QuickPatch Projects that Have InstallScript Custom Actions Creating Standard Patches for InstallShield 11.5 and Earlier InstallScript MSI Projects Upgrading InstallShield 11.5 or Earlier InstallScript MSI Object Projects or Projects that Contain This Type of Object

Upgrading InstallShield 11.5 or Earlier Basic MSI Projects that Have InstallScript Custom Actions
The following sections explain details about upgrading Basic MSI projects that were created in InstallShield 11.5 or earlier to InstallShield 2010.

Global Variables, Global Pointers, and SUPPORTDIR


With InstallShield 12 and later, when a Basic MSI installation executes an InstallScript custom action, the compiled InstallScript is loaded before the action is called, and it is unloaded after the action completes. Thus, each InstallScript custom action executes in its own session with complete InstallScript
InstallShield 2010 User Guide ISP-1600-UG00 179

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

engine loading and unloading. This behavior is different than with InstallShield 11.5 and earlier: the compiled InstallScript was loaded once before the first InstallScript custom action that was used by the InstallScript was executed, and it was unloaded at the end of the installation after all InstallScript custom actions were completed. A major implication of this change in behavior is that global variables and pointers are no longer maintained between individual InstallScript custom action calls:

If you need to store a value across multiple custom action calls, you must use some external mechanism such as the registry, Windows Installer properties, or an external data file to store the information between calls. If you choose to use Windows Installer properties in deferred, commit, or rollback InstallScript custom actions, see the guidelines in Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions. If you need to use a COM object or some other global object across custom action calls, you must initialize the object for each individual custom action call in order for the object to be valid.

Another implication of this change is that each custom action initializes and uses its own individual SUPPORTDIR. Therefore, you cannot share information across individual calls using files in SUPPORTDIR, since each custom action invocation will have its own unique SUPPORTDIR. You can share information using FOLDER_TEMP or some other file location. Note that FOLDER_TEMP may not be the same path for all of your InstallScript custom actions. If you have some InstallScript custom actions that run in system context and some that do not, they will have different temp paths if the package is running in an elevated state. The InstallScript custom actions run in the context of a different user, so storing files in the temp directory and retrieving it later may not work in certain scenarios.

Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions
Deferred, commit, and rollback InstallScript custom actions in Basic MSI installations have access to only some of the built-in Windows Installer properties: CustomActionData, ProductCode, and UserSID. If you want an InstallScript custom action to access any other properties (such as SUPPORTDIR) during deferred, commit, or rollback execution, you need to pass them as CustomActionData. You can do so by scheduling an immediate set-a-property type of custom action (or, for example, an immediate InstallScript custom action with the MsiSetProperty function) to set a property that matches the name of the custom action. The value of this property is then available in the CustomActionData property within the deferred custom action. For example, if you want to access a property such as SUPPORTDIR, you could create an immediate custom action that is called MyCustomActionName and that sets the MyCustomActionName property to [SUPPORTDIR], and then substitute "SUPPORTDIR" with "CutomActionData" in the MsiGetProperty call:
MsiGetProperty(hMSI, "CustomActionData", szSupportDir, nLen)

For more details, see the following:

Accessing or Setting Windows Installer Properties Through Deferred, Commit, and Rollback Custom Actions Obtaining Context Information for Deferred Execution Custom Actions

180

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Note that failure to compensate for an unavailable Windows Installer property may cause unexpected results during installation. For example, since in a deferred action, MsiGetProperty(hMSI, "INSTALLDIR", szInstallDir, nLen) sets szInstallDir to the empty string, szInstallDir ^ szFile may refer to a file in the current directory instead of a file in [INSTALLDIR]. The current directory for a deferred custom action is often [SystemFolder]. Deferred, commit, and rollback InstallScript custom actions do not have access to the ProductLanguage property. If your installation includes multilanguage support and it also has a deferred, commit, or rollback InstallScript custom action that needs access to the language in which the end user is running the installation, the installation assumes that this language is the installations default language. This could be a problem if an end user runs the installation in a language other than the default language. However, deferred, commit, and rollback custom actions do not typically display any user interface, so this would usually not be a problem.

Predefined InstallScript Event Handler Functions


The predefined InstallScript event handler functions are no longer available in Basic MSI projects with InstallScript custom actions. In InstallShield 11.5 and earlier, the following InstallScript event handler functions were available for Basic MSI projects:

OnBegin OnMoving OnMoved OnEnd

InstallShield no longer supports these event handler functions for Basic MSI projects that have InstallScript custom actions. They are not called once the project is rebuilt with InstallShield 12 and later. Note that these event handler functions still compile in InstallShield 12 and later; they are just not called. If you use these event handler functions in your project, you need to manually schedule custom actions that call these functions. To learn how, see Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for Basic MSI Projects.

InstallShield InstallScript Scripting Engine Merge Module


Beginning with InstallShield 12, the InstallShield scripting engine merge module is no longer available for inclusion in Basic MSI projects. In InstallShield 11.5 and earlier, you could use this merge module to distribute the InstallScript engine for installations that did not include Setup.exe. InstallShield 12 and later automatically includes the InstallScript engine as part of ISSetup.dll in Basic MSI installations that have InstallScript custom actions, regardless of whether Setup.exe is used. Therefore, you do not need this merge module in InstallShield 2010 projects. If you use InstallShield 2010 to try to build a release for a project that has this merge module, you may encounter a build error such as the following one:
ISDEV : error -4075: File not found. An error occurred merging Module 'InstallShieldScriptingEngine.4F635B62_07BF_4779_B74E_D80C29D508E3:0' for Feature 'NewFeature1'.

To resolve this build error, remove this merge module from your project; you can do so by clearing its check box in the Redistributables view.

InstallShield 2010 User Guide

ISP-1600-UG00

181

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Changes to the InstallScript Engine Files


With InstallShield 12 and later, Basic MSI installations that include InstallScript custom actions no longer install InstallScript engine files to the following directory:
<COMMONFILES>\InstallShield\Driver\<Version>\Intel 32

For InstallShield 11.5 and earlier Basic MSI projects with InstallScript custom actions, several files were stored in the Binary table:

Setup.inx Isconfig.ini Isrt.dll ISScriptBridge.dll _isresXXXX.dll (where XXXX is the languageone .dll was included for each language included in the installation) StringxXXXX.txt (where

XXX is the languageone .txt was included for each language in the

installation) For InstallShield 12 and later, all of these files (except ISScriptBridge.dll, which is no longer used) are stored inside the ISSetup.dll file, and that is the only file that is stored in the Binary table. The InstallScript engine file changes have not been known to cause any upgrade issues. These changes are reported for informational purposes.

Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for Basic MSI Projects
For InstallShield 12 and later, the predefined InstallScript event handler functions are no longer available in Basic MSI projects with InstallScript custom actions. In InstallShield 11.5 and earlier, the following InstallScript event handler functions were available for Basic MSI projects and InstallScript MSI object projects:

OnBegin OnMoving OnMoved OnEnd

InstallShield no longer supports these event handler functions for Basic MSI projects that have InstallScript custom actions. They are not called once the project is rebuilt with InstallShield 2010. Note that these event handler functions still compile in InstallShield 2010; they are just not called. Similarly, these same predefined InstallScript event handler functions are not supported in InstallScript MSI object projects that are converted to merge module projects automatically when they are opened in InstallShield 2010. The functions are not called once the converted merge module project is built in InstallShield 2010. If you have these events in your Basic MSI or InstallScript MSI object project and you upgrade your project to InstallShield 2010, you need to manually schedule custom actions that call the event handler functions. The following instructions explain how to do so.
182 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Task

To manually schedule InstallScript custom actions that call the predefined InstallScript event handler functions: 1. 2.

Open the upgraded project in InstallShield 2010. Make the appropriate changes to your InstallScript file:
a. b. c.

In the View List under Behavior and Logic, click InstallScript. Find the OnBegin, OnMoving, OnMoved, and OnEnd event handler functions in your script. You can quickly find a function by clicking the function name in the center pane of the view. Rename the functions to an alternate name to avoid conflicts with existing function prototypes automatically included in ifx.h. For example: MyOnBegin MyOnMoving MyOnMoved MyOnEnd

d.

Update the existing functions to take a single HWND parameter. For example:
function MyOnBegin(hMSI) begin end;

e.

Add appropriate prototypes for these new functions:


export export export export prototype prototype prototype prototype MyOnBegin(HWND); MyOnEnd(HWND); MyOnMoved(HWND); MyOnMoving(HWND);

3.

Add InstallScript custom actions that call your renamed InstallScript event handler functions:
a. b. c.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI projects) or Custom Actions (in merge module projects). In the center pane, right-click the Custom Actions explorer and then click New InstallScript. InstallShield adds an InstallScript custom action. Type a name for the custom action; use the same name that you used to rename the InstallScript functions. For example: MyOnBegin MyOnMoving MyOnMoved MyOnEnd

d. e. f. 4.

Select the new InstallScript custom action that you created. Set the Function Name setting to the name of the InstallScript function. For the In-Script Execution setting, specify the value that is indicated in the table below.

Schedule the InstallScript custom action for the appropriate part of the installation:

InstallShield 2010 User Guide

ISP-1600-UG00

183

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

a. b.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click the action or dialog that you want your InstallScript custom action to follow and click Insert. The Insert Action dialog box opens, providing a list of all the actions and dialogs that are currently associated with your project. Select the InstallScript custom action that you created. If appropriate, enter a condition in the Condition box for launching the InstallScript event. Click OK.

c. d.

To match the previous functionality as closely as possible, set the in-script execution in step 3f and schedule the InstallScript custom actions in step 4b as follows:
Table 3-10: Scheduling the Custom Actions Custom Action MyOnBegin In-Script Execution Location in the Sequence Immediate (default) In the Installation User Interface sequence just after the SetupCompleteSuccess dialog. (In previous releases, OnBegin was called as a result of the ISMsiServerStartup custom action being called.) In the Installation User Interface sequence just after the SetupCompleteSuccess dialog. (In previous releases, OnBegin was called as a result of the ISMsiServerStartup custom action being called.) In the Installation Execute sequence, between the ScheduleReboot and InstallFinalize actions. The last event in the Installation Execute sequence after the InstallFinalize action. (In previous releases, OnEnd was called after all other events as a result of the installation completing.)

MyOnMoving

Deferred in system context

MyOnMoved

Deferred in system context Deferred in system context

MyOnEnd

Note the following:

Global variables and pointers are no longer maintained between individual InstallScript custom action calls. In addition, each InstallScript custom action initializes and uses its own individual SUPPORTDIR. Therefore, you cannot share information across individual calls using files in SUPPORTDIR. For more information, see Global Variables, Global Pointers, and SUPPORTDIR. Most Windows Installer properties are not available to deferred, commit, and rollback InstallScript custom actions. For more information, see Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions.

Upgrading InstallShield 11.5 or Earlier InstallScript MSI Projects


The following sections explain details about upgrading InstallScript MSI projects that were created in InstallShield 11.5 or earlier to InstallShield 2010.

Global Variables, Global Pointers, and SUPPORTDIR


With InstallShield 2010 and earlier versions, when an InstallScript MSI installation initializes, it loads the compiled InstallScript file, and it calls InstallScript events in this main loaded InstallScript file as necessary during the installation.

184

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

However, for InstallShield 12 and later, when a function within the InstallScript is called by the Windows Installer engine as an InstallScript custom action, the custom action behaves like an InstallScript custom action in a Basic MSI installation. That is, the function is executed in a completely separately loaded script instance; the script is loaded before the action is called and unloaded after the action completes. Thus, each InstallScript function that is called by the Windows Installer engine as an InstallScript custom action executes in its own session with complete InstallScript engine loading and unloading. This behavior is different than with InstallShield 11.5 and earlier: the custom actions were called in the single main loaded script file instance that was loaded during initialization and unloaded at the end of the installation. A major implication of this change in behavior is that InstallScript functions that are called as InstallScript custom actions no longer have access to global variables and pointers that are maintained by the main executing script file:

If you need to interact with the main executing InstallScript file to perform tasks such as using or changing global variables or modifying objects that are maintained by the main executing script file (which includes updating the status bar or logging script operations for uninstallation), your function must be called from an InstallScript eventnot as an InstallScript custom action. Functions that are called from InstallScript events are executed in the main InstallScript instance. (Exception: Some InstallScript error events such as OnFilesInUse are called as a result of an error message from the Windows Installer engine. The Windows Installer engine launches these InstallScript error events as InstallScript custom actions; thus, the limitations of InstallScript custom actions also apply to these InstallScript events.) If you need to store a value across multiple InstallScript custom action calls, you must use some external mechanism such as the registry, Windows Installer properties, or an external data file to store the information between calls. If you choose to use Windows Installer properties in deferred, commit, or rollback InstallScript custom actions, see the guidelines in Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions. If you need to use a COM object or some other global object across custom action calls, you must initialize the object for each individual custom action call in order for the object to be valid.

Another implication of this change is that each custom action initializes and uses its own individual SUPPORTDIR. Therefore, you cannot share information across individual calls using files in SUPPORTDIR, since each custom action invocation will have its own unique SUPPORTDIR. You can share information using FOLDER_TEMP or some other file location. Note that FOLDER_TEMP may not be the same path for all of your InstallScript custom actions. If you have some InstallScript custom actions that run in system context and some that do not, they will have different temp paths if the package is running in an elevated state. The InstallScript custom actions run in the context of a different user, so storing files in the temp directory and retrieving it later may not work in certain scenarios.

Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions
Deferred, commit, and rollback InstallScript custom actions in InstallScript MSI installations have access to only some of the built-in Windows Installer properties: CustomActionData, ProductCode, and UserSID. If you want an InstallScript custom action to access any other properties (such as SUPPORTDIR) during deferred, commit, or rollback execution, you need to pass them as CustomActionData. You can do so by scheduling an immediate set-a-property type of custom action

InstallShield 2010 User Guide

ISP-1600-UG00

185

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

(or, for example, an immediate InstallScript custom action with the MsiSetProperty function) to set a property that matches the name of the custom action. The value of this property is then available in the CustomActionData property within the deferred custom action. For example, if you want to access a property such as SUPPORTDIR, you could create an immediate custom action that is called MyCustomActionName and that sets the MyCustomActionName property to [SUPPORTDIR], and then substitute "SUPPORTDIR" with "CutomActionData" in the MsiGetProperty call:
MsiGetProperty(hMSI, "CustomActionData", szSupportDir, nLen)

For more details, see the following:

Accessing or Setting Windows Installer Properties Through Deferred, Commit, and Rollback Custom Actions Obtaining Context Information for Deferred Execution Custom Actions

Note that failure to compensate for an unavailable Windows Installer property may cause unexpected results during installation. For example, since in a deferred action, MsiGetProperty(hMSI, "INSTALLDIR", szInstallDir, nLen) sets szInstallDir to the empty string, szInstallDir ^ szFile may refer to a file in the current directory instead of a file in [INSTALLDIR]. The current directory for a deferred custom action is often [SystemFolder]. Deferred, commit, and rollback InstallScript custom actions do not have access to the ProductLanguage property. If your installation includes multilanguage support and it also has a deferred, commit, or rollback InstallScript custom action that needs access to the language in which the end user is running the installation, the installation assumes that this language is the installations default language. This could be a problem if an end user runs the installation in a language other than the default language. However, deferred, commit, and rollback custom actions do not typically display any user interface, so this would usually not be a problem.

Changes to the DoInstall Function


The DoInstall function now launches the setup executable file of the child installation instead of using the already-running installation engine to run the child installation. This change should be automatic; that is, it should not require any changes to existing InstallScript code. The child installation may take slightly longer to initialize than in previous versions because the installation executable file needs to initialize. For more information, see DoInstall. Note that now calling DoInstall is similar to calling LaunchAppAndWait. When the installation is run from any removable media, such as a CD-ROM or a floppy disk, the Setup.exe file on Disk1 may not be available during the entire installation. (If Setup.exe becomes unavailable while it is running, the operating system sometimes displays a prompt to request that the end user insert the correct disk, and this may cause the installation to fail.) Therefore, to avoid this problem, the Setup.exe file is copied to a Temp folder, and the installation is relaunched from there. The original Setup.exe then terminates. However, when this happens, DoInstall (or LaunchAppAndWait, if it is called) behaves as if the installation has completed, and it does not wait. Several workarounds for this issue exist. One method is to use the /clone_wait parameter when you are launching the child installation; as a result of this workaround, the launched installation keeps the original launched process running, and the parent installation then waits. Note, however, that this may cause problems if the original CD containing Setup.exe is not available throughout the entire installation. This includes multiple-CD installations, where the first CD is not available during some parts of the installation.

186

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

The only other way to avoid this problem is to add code that determines the ID of the child processes of the launched process and wait for the child process to complete.

Changes to Disk1 Files


InstallShield no longer places the following file on the Disk1 image of the built installation because it is no longer needed:
ISScript<version>.msi

In InstallShield 12 and later, the following file is placed on the Disk1 image of the built installation:
ISSetup.dll

The Disk1 file changes have not been known to cause any upgrade issues. These changes are reported for informational purposes.

Changes to the InstallScript Engine Files


With InstallShield 12 and later, InstallScript MSI installations no longer install InstallScript engine files to the following directory:
<COMMONFILES>\InstallShield\Professional\Runtime\<MajorVersion>\<MinorVersion>\Intel32

For InstallShield 11.5 and earlier InstallScript MSI projects, several files were stored in the Binary table:

Setup.inx Isconfig.ini Isrt.dll ISScriptBridge.dll _isresXXXX.dll (where XXXX is the languageone .dll was included for each language included in the installation) StringxXXXX.txt (where

XXX is the languageone .txt was included for each language in the

installation) For InstallShield 12 and later, all of these files (except ISScriptBridge.dll, which is no longer used) are stored inside the ISSetup.dll file, and that is the only file that is stored in the Binary table. The InstallScript engine file changes have not been known to cause any upgrade issues. These changes are reported for informational purposes.

InstallScript-Related Custom Actions


Several built-in InstallScript-related custom actions were eliminated in InstallShield 12 for InstallScript MSI projects. If you upgrade an InstallScript MSI project from InstallShield 11.5 or earlier to InstallShield 2010, InstallShield removes these built-in custom actions from your project. Because these custom actions have been removed, some existing InstallScript event handler functions that were previously called by the custom actions are now called directly from InstallScript. For more information, see Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for InstallScript MSI Projects.

InstallShield 2010 User Guide

ISP-1600-UG00

187

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Changes for Deploying an InstallScript MSI Installation Without a Setup.exe File


To allow InstallScript MSI installations to be run without the Setup.exe file so that the packages can be deployed through technologies such as Active Directory, you may be able to use the instructions that are described in Knowledge Base article Q108166 - HOWTO: Deploying an MSI Wrapped with an InstallShield Script-Based Setup.exe. However, if you follow the procedure that is described in that article and users launch the .msi file directly, some of the InstallScript events (such as OnMoved) are never called. The reason that they are not called is that some of the InstallScript event handler functions that were previously called by built-in InstallScript-related custom actions are not called, since the InstallScript-related custom actions have been removed. For more information, see Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for InstallScript MSI Projects.

Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for InstallScript MSI Projects
Several built-in InstallScript-related custom actions were eliminated in InstallShield 12 for InstallScript MSI projects. If you upgrade an InstallScript MSI project from InstallShield 11.5 or earlier to InstallShield 2010, InstallShield removes these built-in custom actions from your project. Because these custom actions have been removed, some existing InstallScript events that were previously called by the custom actions are now called directly from InstallScript. This article identifies the eliminated custom actions and explains how add custom actions that call these InstallScript events so that the scheduling is similar to the scheduling used in InstallShield 11.5 and earlier. The eliminated custom actions also may affect your InstallScript MSI installation if you allow the installation to run without the Setup.exe file so that the packages can be deployed through technologies such as Active Directory. The procedure for implementing this is described in Knowledge Base article Q108166 - HOWTO: Deploying an MSI Wrapped with an InstallShield Script-Based Setup.exe. Note that if you follow the procedure that is described in that article and end users launch the .msi file directly, some of the InstallScript events are never called. The reason that they are not called is that some of the InstallScript event handler functions that were previously called by built-in InstallScript-related custom actions are not called, since the InstallScript-related custom actions have been removed. If you configure your installation according to the Q108166 article, you may also need to follow the instructions below to add custom actions that call the built-in InstallScript events. The following built-in InstallScript-related custom actions were eliminated in InstallShield 12. They are removed from InstallScript MSI projects when they are upgraded from InstallShield 11.5 or earlier to InstallShield 2010:


188

ISCleanupSuccess ISCleanUpSuspend ISCleanUpUserTerminate ISCleanupFatalExit ISMsiServerStartup ISRebootPatchHandler ISRollbackCleanup ISStartup


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

OnCheckSilentInstall (For details about changes for this custom action, see OnCheckSilentInstall.) OnFeaturesInstalled OnFeaturesInstalling OnInstallFilesActionAfter OnInstallFilesActionBefore OnMoved OnMoving

Because these custom actions have been removed, some existing InstallScript event handlers that were previously called by the custom actions are now called directly from InstallScript. This includes the following InstallScript event handlers that are called immediately before file transfer:

Feature functions for Installing and Uninstalling OnGeneratedMSIScript OnGeneratingMSIScript OnInstallFilesActionBefore OnMoving

It also includes the following InstallScript event handlers that are called immediately after file transfer: Feature functions for Installed and Uninstalled OnMoved OnInstallFilesActionAfter

These changes were made to make global variables and global pointers available for these InstallScript event handler functions. However, because previously the events were called from custom actions, the sequence of these events in relation to other custom actions that are called directly by Windows Installer has changed. Therefore, you may need to adjust your InstallScript code appropriately to account for these changes. Except in the case of the feature event handlers, it is also possible to add custom actions that call these event handler functions so that the scheduling is similar to the scheduling used in InstallShield 11.5 and earlier. However, global variables and global pointers are not maintained between calls, as discussed in the Global Variables, Global Pointers, and SUPPORTDIR section. Calling OnFeatureInstalling, OnFeatureUninstalling, OnFeatureInstalled, or OnFeatureUninstalled from a custom action during file transfer does not have any effect on the installation. This is because these functions are called from InstallScript just before file transfer, and they do not have any effect when they are called more than once.

InstallShield 2010 User Guide

ISP-1600-UG00

189

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Task

To manually schedule an InstallScript custom action that calls a predefined InstallScript event handler function: 1. 2.

Open the upgraded project in InstallShield 2010. Make the appropriate changes to your InstallScript file:
a. b. c.

In the View List under Behavior and Logic, click InstallScript. Find the event handler function in your script. You can quickly find a function by clicking the function name in the center pane of the view. Rename the function to an alternate name to avoid conflicts with existing function prototypes automatically included in ifx.h. For example: MyOnGeneratingMSIScript MyOnMoving MyOnMoved

d.

Update the existing function to take a single HWND parameter. For example:
function MyOnGeneratingMSIScript(hMSI) begin end;

e.

Add appropriate prototypes for this new function:


export prototype MyOnGeneratingMSIScript(HWND);

3.

Add an InstallScript custom action that calls your renamed InstallScript event handler function:
a. b. c.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the center pane, right-click the Custom Actions explorer and then click New InstallScript. InstallShield adds an InstallScript custom action. Type a name for the custom action; use the same name that you used to rename the InstallScript function. For example: MyOnGeneratingMSIScript MyOnMoving MyOnMoved

d. e. f. 4.

Select the new InstallScript custom action that you created. Set the Function Name setting to the name of the InstallScript function. For the In-Script Execution setting, specify the value that is indicated in the table below.

Schedule the InstallScript custom action for the appropriate part of the installation:
a. b.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click the action or dialog that you want your InstallScript custom action to follow and click Insert. The Insert Action dialog box opens, providing a list of all the actions and dialogs that are currently associated with your project.

190

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

c. d.

Select the InstallScript custom action that you created. If appropriate, enter a condition in the Condition box for launching the InstallScript event. Click OK.

To match the previous functionality as closely as possible, set the in-script execution in step 3f and schedule the InstallScript custom actions in step 4b as follows:
Table 3-11: Scheduling the Custom Actions In-Script Execution Immediate (default) Deferred in system context

Custom Action OnGeneratingMSIScript

Location in the Sequence In the Installation Execute sequence between the RemoveExistingProducts and InstallInitialize actions In the Installation Execute sequence between the InstallInitialize and AllocateRegistrySpace actions In the Installation Execute sequence between the InstallInitialize and AllocateRegistrySpace actions (after OnMoving)

OnMoving

OnFeaturesInstalling, Deferred in which calls all the feature system context Installing and Uninstalling events that are defined. Note: This will not have any effect, as explained above. OnInstallFilesActionBefore Deferred in system context

In the Installation Execute sequence between the MoveFiles and InstallFiles actions In the Installation Execute sequence between the ScheduleReboot and InstallFinalize actions (before OnMoved)

OnFeaturesInstalled, which Deferred in calls all the feature system context Installed and Uninstalled events that are defined. Note: This will not have any effect, as explained above. OnMoved Deferred in system context Deferred in system context Immediate (default)

In the Installation Execute sequence between the ScheduleReboot and InstallFinalize actions (before OnGeneratedMSIScript) In the Installation Execute sequence between the InstallFiles and PatchFiles actions In the Installation Execute sequence between the ScheduleReboot and InstallFinalize actions (after OnMoved)

OnInstallFilesActionAfter

OnGeneratedMSIScript

Note the following:

Global variables and pointers are no longer maintained between individual InstallScript custom action calls. In addition, each InstallScript custom action initializes and uses its own individual SUPPORTDIR. Therefore, you cannot share information across individual calls using files in SUPPORTDIR. For more information, see Global Variables, Global Pointers, and SUPPORTDIR. Most Windows Installer properties are not available to deferred, commit, and rollback InstallScript custom actions. For more information, see Windows Installer Properties and Deferred, Commit, and Rollback InstallScript Custom Actions.

InstallShield 2010 User Guide

ISP-1600-UG00

191

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

OnCheckSilentInstall
In InstallShield 11.5 and earlier, the OnCheckSilentInstall custom action automatically called the OnMsiSilentInstall InstallScript event if the InstallScript MSI installation was being installed silently without using Setup.exe (for example, if the following command-line was used: Msi.exe /i<Package> / qn). In InstallShield 12 and later, this event is not called in InstallScript MSI installations. However, you can add a custom action that calls the OnMsiSilentInstall event handler function. To do so, use the aforementioned instructions, noting the following scheduling requirements in steps 3f and 4b:
Table 3-12: Scheduling the OnCheckSilentInstall Custom Action In-Script Execution Immediate (default)

Custom Action OnCheckSilentInstall

Location in the Sequence As the first action in the Installation Execute sequence

Also, to require that the InstallScript event run only in the expected scenario, add the following code to the event:
cchValueBuf = MAX_PATH; // Check whether Setup.exe is being used, if so just return. MsiGetProperty(nHandle, "ISSETUPDRIVEN", szValueBuf, cchValueBuf); if(StrLengthChars(szValueBuf)) then return ISERR_SUCCESS; endif;

Upgrading InstallShield 11.5 or Earlier InstallScript Projects


The following sections explain details about upgrading InstallScript projects that were created in InstallShield 11.5 or earlier to InstallShield 2010.

Including InstallScript Objects in InstallScript Projects


InstallScript installations created in InstallShield 2010 cannot consume objects that were created with InstallShield 11.5 or earlier. If you upgrade an InstallScript project to InstallShield 2010, all references to any InstallShield objects are updated to point to the InstallShield 2010 versions of the objects. If the new version object is not present on the system, an error indicating that the object could not be found is displayed at build time. For instructions on acquiring the InstallShield 2010 objects, see Obtaining Updates for InstallShield.

Changes to the DoInstall Function


The DoInstall function now launches the setup executable file of the child installation instead of using the already-running installation engine to run the child installation. This change should be automatic; that is, it should not require any changes to existing InstallScript code. The child installation may take slightly longer to initialize than in previous versions because the installation executable file needs to initialize. For more information, see DoInstall. Note that now calling DoInstall is similar to calling LaunchAppAndWait. When the installation is run from any removable media, such as a CD-ROM or a DVD, the Setup.exe file on Disk1 may not be available during the entire installation. (If Setup.exe becomes unavailable while it is running, the operating system sometimes displays a prompt to request that the end user insert the correct disk, and this may
192 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

cause the installation to fail.) Therefore, to avoid this problem, the Setup.exe file is copied to a Temp folder, and the installation is relaunched from there. The original Setup.exe then terminates. However, when this happens, DoInstall (or LaunchAppAndWait, if it is called) behaves as if the installation has completed, and it does not wait. Several workarounds for this issue exist. One method is to use the /clone_wait parameter when you are launching the child installation; as a result of this workaround, the launched installation keeps the original launched process running, and the parent installation then waits. Note, however, that this may cause problems if the original CD containing Setup.exe is not available throughout the entire installation. This includes multiple-CD installations, where the first CD is not available during some parts of the installation. The only other way to avoid this problem is to add code that determines the ID of the child processes of the launched process and wait for the child process to complete.

Setup.exe Changes
The /deleter command-line parameter for Setup.exe is no longer needed. If you specify this parameter, the installation will not run. Note that InstallScript installations no longer clone the installation immediately when they are launched (unless, for example, the installation is running from the temp folder because the /runfromtemp parameter is specified), so /deleter is no longer needed. The /clone_nowait command-line parameter for Setup.exe is no longer needed. If you specify this parameter, Setup.exe ignores it. Note that InstallScript installations no longer wait for the cloned installation to complete by default unless the /clone_wait parameter is specified. For more information on /clone_wait, see Setup.exe and Update.exe Command-Line Parameters. Like InstallScript MSI and Basic MSI installations, InstallScripts Setup.exe file returns meaningful return codes. Therefore, if you are checking the return value of Setup.exe, in InstallShield 11.5 and earlier, it would always be 0; in InstallShield 12 and later, Setup.exe returns an appropriate return value. For details on the possible return codes, see Setup.exe Return Values and Run-Time Errors (InstallScript Projects).

Changes to Disk1 Files


InstallShield no longer places the following files on the Disk1 image of the built installation because they are no longer needed:

Engine32.cab Setup.ibt

In InstallShield 12 and later, the following files are placed on the Disk1 image of the built installation:
ISSetup.dll _Setup.dll

The Disk1 file changes have not been known to cause any upgrade issues. These changes are reported for informational purposes.

Changes to the InstallScript Engine Files


With InstallShield 12 and later, InstallScript installations no longer install InstallScript engine files to the following directory:
<COMMONFILES>\InstallShield\Professional\Runtime\<MajorVersion>\<MinorVersion>\Intel32

InstallShield 2010 User Guide

ISP-1600-UG00

193

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

This change has not been known to cause any upgrade issues. This change is reported for informational purposes.

Upgrading InstallShield 11.5 or Earlier QuickPatch Projects that Have InstallScript Custom Actions
QuickPatch projects that are created in InstallShield 12 and later for InstallScript MSI projects can only patch media that were also created with InstallShield 12 and later. If you want to use InstallShield 2010 to create an update for an application whose previous InstallScript MSI installation was created with InstallShield 11.5 or earlier, you should create a create a minor-upgrade package instead of a QuickPatch, and use the Patch Design view to create a standard patch. Subsequent patches from this version can be created as QuickPatch projects. Creating a QuickPatch for a Basic MSI project (with or without InstallScript custom actions) has not been known to cause any issues.

Creating Standard Patches for InstallShield 11.5 and Earlier InstallScript MSI Projects
InstallShield 12 and later does not support the creation of InstallScript MSI patches (using the Patch Design view) where both the latest and previous setups were created with InstallShield 11.5 or earlier. Creating a patch where the latest setup is created with InstallShield 12 or later and the previous setup was created with InstallShield 11.5 or earlier has not been known to cause any issues.

Upgrading InstallShield 11.5 or Earlier InstallScript MSI Object Projects or Projects that Contain This Type of Object
InstallShield 11.5 and earlier included the InstallScript MSI Object type of project. This project type is no longer available in InstallShield.

Upgrading InstallScript MSI Object Projects


If you open an InstallScript MSI Object project in InstallShield 2010, InstallShield will convert it to a merge module project. Predefined InstallScript event handlers are not available in merge module projects that have InstallScript custom actions. Therefore, if you have an InstallShield 11.5 or earlier InstallScript MSI object project that uses InstallScript event handler functions, you must manually schedule custom actions that call these functions when the project is converted to a merge module project in InstallShield 2010. To learn how, see Creating and Scheduling InstallScript Custom Actions that Call InstallScript Event Handlers for Basic MSI Projects. Note that InstallShield 2010, as well as earlier and later versions of InstallShield, can consume InstallShield 2010 merge modules that have InstallScript custom actions.

Upgrading Projects that Contain InstallScript MSI Objects


Building upgraded projects that contain already-built InstallScript MSI objects (.imm files) will fail; these objects cannot be consumed in InstallShield 2010. If you try to do so, a build error such as the following one occurs:

194

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

ISDEV : error -4075: File not found. An error occurred merging Module 'InstallShieldMSIObjectName.4F635B62_07BF_4779_B74E_D80C29D508E3:0' for Feature 'NewFeature1'.

where InstallShieldMSIObjectName.4F635B62_07BF_4779_B74E_D80C29D508E3:0 is information that is specific to the missing InstallScript MSI object. To resolve this build error, remove this InstallScript MSI object from your project; you can do so by clearing its check box in the Redistributables view.

Upgrading Projects Created with InstallShield Express


If you have an InstallShield project that was created using versions 2.1 through 5.x of InstallShield Express, that project is automatically upgraded to a Basic MSI project when you open it in InstallShield 2010. InstallShield 2010 converts InstallShield Express projects to a Basic MSI project because it is the comparable project type. To learn how to convert your upgraded project to an InstallScript MSI project, see Converting a Basic MSI Project to an InstallScript MSI Project.

Task

To upgrade an Express project:

Open the project in InstallShield. A dialog box opens to ask if you would like to upgrade your project.

Click Yes to upgrade your project. Your project opens in InstallShield. Click No to leave the project unopened.

A backup copy of your original project is created and stored in the location specified in the dialog box. InstallShield 2010 preserves the logic and dialog of the Setup Types view when it migrates Express 2.x projects (.iwz) to a Basic MSI project in InstallShield 2010. In earlier versions of Express, setup types were based on components. In Express 2.x projects (.iwz), components were replaced by features, and file groups are now mapped to destination folders instead of components. When you upgrade an Express 2.x project (.iwz) to a Basic MSI project in InstallShield 2010, you can edit setup types by changing a features Install Level property and dialog control events.

Billboard properties from Express projects will not be migrated since they are not supported in Basic MSI projects. You will receive warning 701 when the billboards property is specified in earlier Express projects. If you migrate an Express project with a language that is not installed with your current version of InstallShield, you will lose support for that language. Language support is available in the Premier edition of InstallShield. For more information, visit the Acresso Web site.

Upgrading Projects Created with InstallShield Professional


You can upgrade projects that were created using InstallShield Professional. When you are using InstallShield 2010 and you open an installation project that was created with InstallShield Professional, your project is automatically upgraded. This enables you to immediately work with your project in InstallShield 2010.
InstallShield 2010 User Guide ISP-1600-UG00 195

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Projects that were created using InstallShield Professional were composed of several .ini files referenced by an .ipr file. In InstallShield 2010, your installation project is one filean .ism file.

First Step: Opening Your Installation Project

Task

To open an installation project created in InstallShield Professional: 1. 2. 3. 4.

Open InstallShield. On the File menu, click Open. The Open dialog box opens. Select the InstallShield Professional project file (.ipr) that you would like to open. Click Open.

Your project opens in InstallShield, and the extension changes from .ipr to .ism. A backup of your original .ipr project is saved as ProjectName.ipr.bak in the same folder.

Next Steps: Modifying Your Installation Project


After you upgrade your installation project, you can use the views, menus, wizards, and other parts of the InstallShield user interface to modify your project settings. You may also need to make changes to the upgraded project; see Migrating from InstallShield Professional 6.x and Migrating from InstallShield Professional 5.x.

Note: In InstallShield 2010, support files are linked to a subfolder of the project folder; in InstallShield Professional, support files were physically copied to a subfolder of the project folder.

Migrating from InstallShield Professional 6.x


When you upgrade an InstallShield Professional 6.x installation to InstallShield 2010, note the following:

You can quickly convert a script that uses a program...endprogram block to an event-based script that calls all appropriate event handler functions except the user interface and file transfer functions. For details, see the Additional Information section of the help topic about OnShowUI. The new simplified model for Internet installations eliminates many of the Ether objects methods and all of its properties and subobjects (while providing InstallScript enhancements that let you handle any Internet-specific requirements). If your Internet installation used any of these properties and methods, see Replacing Obsolete Properties and Methods. Installations created in version 6.x contained a number of automatically created string entries; the installation used these string entries to get information. These string entries were redundantthey contained the same information contained in the Project Settings property sheet. InstallShield 2010 simplifies matters by allowing the information specified in the project settings to be used at runtime. Note that using this information is not required; you can continue using your existing string entries as before by simply leaving them intact in your project.

196

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

If you want your migrated installation to automatically use the information from your projects Project Settings property sheet, delete the following string entries from your project: COMPANY_NAME PRODUCT_NAME PRODUCT_KEY PRODUCT_VERSION TITLE_CAPTIONBAR FOLDER_NAME TITLE_MAIN Also, update any script code that may be using one of these string entries to use the new corresponding system variable instead, as shown in the following table:
Table 3-13: String Entries and Corresponding New System Variables String Entry COMPANY_NAME PRODUCT_NAME PRODUCT_KEY PRODUCT_VERSION TITLE_CAPTIONBAR FOLDER_NAME TITLE_MAIN System Variable IFX_COMPANY _NAME IFX_PRODUCT_NAME IFX_PRODUCT_KEY IFX_PRODUCT_VERSION IFX_SETUP_TITLE IFX_PRODUCT_NAME IFX_SETUP_TITLE

Note that you can remove only a subset of these string values if you want some values to be read from the string entries and some to be read from the project settings. If you retain any of these string values, be sure to modify them as required, rather than changing the unused project settings; in particular, when creating an update installation, be sure to update the value of the PRODUCT_VERSION string entry if it exists.

If your installation uses an event based script and you have overridden the default OnFirstUIBefore event handler code, then to install files to the appropriate default location you must replace the following code (from the 6.x version of OnFirstUIBefore):
TARGETDIR = PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;

with the following code (from the new default OnFirstUIBefore code) to set TARGETDIR:
/* Handles both end users with administrative or power user privileges and end users without such privileges. */ if ( ALLUSERS ) then TARGETDIR = PROGRAMFILES ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME; else TARGETDIR = FOLDER_APPDATA ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME; endif;

InstallShield 2010 User Guide

ISP-1600-UG00

197

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

/* Handles both standard and multi-instance installations. */ if( MAINT_OPTION = MAINT_OPTION_MULTI_INSTANCE && MULTI_INSTANCE_COUNT > 0) then nLoop = 1; svDir = TARGETDIR; while(ExistsDir(TARGETDIR) = EXISTS) NumToStr(szTargetDirAppendix,nLoop); TARGETDIR = svDir + szTargetDirAppendix; nLoop = nLoop + 1; endwhile; endif;

If you are using a procedural script (one with a programendprogram block), you need to update the code in which you set TARGETDIR in order to set the default target directory appropriately for users without administrator privileges.

If your installation uses an event-based script and you have overridden the default OnMaintUIBefore event handler code, and during uninstallation you want to remove all features including those that are not listed in the media but only in the log file (see FeatureRemoveAllInMediaAndLog for more information), then you must replace the following code (from the 6.x version of OnMaintUIBefore):
case REMOVEALL: ComponentRemoveAll();

with the following code (from the new default OnMaintUIBefore code):
MediaGetData( MEDIA, MEDIA_FIELD_MEDIA_FLAGS, nMediaFlags, szIgnore ); case REMOVEALL: /* Properly handles updating. */ if( nMediaFlags & MEDIA_FLAG_UPDATEMODE_SUPPORTED ) then FeatureRemoveAllInMediaAndLog(); else FeatureRemoveAllInMedia(); endif;

If you are using a procedural script that supports script-based uninstallation you need to update your call to ComponentRemoveAll appropriately.

If your script calls RegDBSetItem to alter the registry entries that are created by MaintenanceStart (or DeinstallStart), and it makes those calls to RegDBSetItem in an event handler that is called before the OnMoved handler (for example, OnMoving or <feature name>_OnInstalled), you must move those calls to RegDBSetItem. MaintenanceStart is now called in the OnMoveData event handlers default code, whereas previously MaintenanceStart was called automatically immediately after the maintenance/uninstallation feature was installed and before any other features were installed. The InstallShield Professional 6.x default event handler code included the following lines in both OnFirstUIBefore and OnMaintUIBefore:
SetStatusWindow( 0, "" ); Enable( STATUSEX ); StatusUpdate( ON, 100 );

In InstallShield 2010, this code has been relocated to the default OnMoveData event handler code, so you have the following options:

198

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

If you have not customized this code, you do not need to do anything because the redundant calls will not cause a problem. You can safely remove this code from OnFirstUIBefore and OnMaintUIBefore if you want to avoid code duplication. If you have customized this code and you want these customizations to apply regardless of what user interface (UI) event is called, you should remove the code from OnFirstUIBefore and OnMaintUIBefore, then override the OnMoveData event and place the customized code in place of the default code. If you have customized the code and you want specific code depending on what UI event is called, you should override OnMoveData, comment out the default code, and continue to use your existing code. Note that in this case, if your installation supports updating you may also want to customize OnUpdateUIBefore.

The 6.x default event handler code included the following commented-out code in the OnFirstUIBefore and OnMaintUIBefore events:
// // // // // // TO DO: if you want to enable background, window title, and caption bar title SetTitle( @TITLE_MAIN, 24, WHITE ); SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); Enable( FULLWINDOWMODE ); Enable( BACKGROUND ); SetColor( BACKGROUND, RGB( 0, 128, 128 ) );

If you activated this code and would like to provide a consistent UI experience regardless of what UI event is called, you can remove this code from OnFirstUIBefore and OnMaintUIBefore and then override OnShowUI and customize the code appropriately.

Many Windows API functions are declared in included header files (.h files) in InstallShield 2010. If any of these functions are also explicitly declared in your script code, do one of the following:

Remove your function declaration and use the declaration provided by InstallShield Professional. If you are creating a script that needs to be compilable in both InstallShield 2010 and earlier versions, surround your declaration with code like the following:
#if _ISCRIPT_VER < 0x700 prototype ... #endif

You may also need to update code that calls a Windows API function, if the declaration defined by InstallShield Professional is different than your declaration.

In order that the end user interface flows smoothly, by default the installation initialization dialog box remains displayed until the script displays a dialog box. To close the installation initialization dialog box, call Disable(DIALOGCACHE) or any dialog box function. InstallShield 2010 does not support displaying Windows 95-style dialog boxes. InstallShield 2010 displays end-user dialog boxes with the Windows 2000 style, which conforms to Microsofts latest guidelines for Windows user interfaces. An InstallShield Professional 6.x project is opened in InstallShield 2010 with its Engine File Binding property set to Dynamic.

InstallShield 2010 User Guide

ISP-1600-UG00

199

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

The default keyboard shortcuts for the following script editor commands have been restored to the values they had in version 5.x (in version 6.x these commands had no default keyboard shortcuts):
Table 3-14: Restored Keyboard Shortcut Values

Script Editor Command BookMarkClearAll LineDelete LineOpenBelow Replace

Default Keyboard Shortcut Ctrl + Shift + F2 Alt + Delete Alt + Shift + N Ctrl + H

Migrating from InstallShield Professional 5.x

Project: This information applies to InstallScript Object projects.

Script Changes
The basic structure of an InstallShield Professional 5.x script is supported in the InstallScript project type in InstallShield 2010. To compile a Professional 5.x script in InstallShield, you must first make the following changes: Preprocessor Directives

Include the following statement at the beginning of your script:


#include "ifx.h"

Remove any #define statements for SD_SINGLE_DIALOGS and its associated SD_<dialog name> constants. You may need to remove some #define statements that define Windows constants if those statements result in compiler errors. Many Windows constants are defined in Ifx.h or its included files, such as Windefs.h (which is in the InstallShield folders Script\Isrt\Include subfolder).

Built-In Functions

Remove the following functions, which were supported in Professional 5.x but are not supported in InstallShield 2010. Some of these functions will compile, but they will not give the expected results. Where possible, supported alternatives are suggested.
Table 3-15: Obsolete Professional 5.x Functions Professional 5.x Function AppCommand Suggested Alternative None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) AddFolderIcon

AddProgItemEx

200

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Table 3-15: Obsolete Professional 5.x Functions (cont.) Professional 5.x Function CmdGetMsg Suggested Alternative Windows API function GetMessage (call CmdGetHwndDlg to get the dialog handle) Windows API function GetMessage (call CmdGetHwndDlg to get the dialog handle) Windows API function GetMessage (call CmdGetHwndDlg to get the dialog handle) The actions performed by this function in Professional 5.x are done automatically in InstallShield 2010. AddFolderIcon DeleteProgramFolder DeleteFolderIcon None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) GetFolderNameList None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) RegDBCreateKeyEx RegDBCreateKeyValueEx RegDBGetKeyValueEx RegDBSetKeyValueEx None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.) None. (Appropriate only for platforms using the Program Manager shell, which are no longer supported.)

CmdGetParam1

CmdGetParam2

CommitSharedFiles

CreateProgGroupEx DeleteGroup DeleteProgItem ExitProgMan

GetGroupNameList GetItemNameList

QueryProgGroup

RegDBCreateKey RegDBCreateKeyValue RegDBGetKeyValue RegDBSetKeyValue ReloadProgGroup

ReplaceProgItem

ShowGroup

Call Disable(LOGGING) before any code that makes changes to the target system that you do not want logged for uninstallation, and call Enable(LOGGING) after that code. This is necessary because logging of changes for uninstallation is automatically enabled before any script code is executed.

InstallShield 2010 User Guide

ISP-1600-UG00

201

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Note that this is different from Professional 5.x installations in which logging did not begin until DeInstallStart was called. If you have any installation actions that previously were not logged because they occurred before DeInstallStart, you will need to add an additional Disable(LOGGING) call before these installation actions to disable logging manually. If you want your installation to display a background, you must call Enable(BACKGROUND). In InstallShield 2010, the background is disabled by default, whereas in Professional 5.x it was enabled by default. (In event-based scripts, code for customizing and displaying a background exists in comment lines at the beginning of the default code for OnFirstUIBefore. To activate this code, remove the slash characters at the beginnings of the desired lines.) Note that some user-interface functions, such as PlaceBitmap, will not work properly (nor return a negative value to let you know they failed) if the installation background is not enabled.

It is no longer necessary to call RegDBSetItem with the argument REGDB_UNINSTALL_NAME to set the value of [DisplayName] under the uninstallation key. This is now done when MaintenanceStart or DeinstallStart is called. Calling SetColor with STATUSBAR as its argument will not have any effect in InstallShield 2010; status bars are drawn using system colors. When you call StrGetTokens, if the first (or last) character of szString matches a character in szDelimiterSet, a null string ("") is not inserted in the list as the first (or last) element. Instead, the characters between the first and second (or last and next to last) delimiters are inserted in the list as the first (or last) element. When you call StrGetTokens, if a wildcard character is included in the filename specified by szSrcFile, the filename part of szTargetFile is not ignored as in previous versions of InstallShield Professional; instead, all of szTargetFile is treated as the target path to which each source file is copied to with its existing name. For example, CopyFile( "C:\\*.*", "D:\\File.txt" ) copies files to a folder named File.txt on the D drive. WaitOnDialog now returns IDCANCEL when the end user selects the system menus Close command or clicks the title bars Close button from a custom dialog. In previous versions, DLG_CLOSE was returned in these cases. If you pass GetSystemInfo a first argument of DRIVE and a third argument that is a UNC path, the function correctly returns a negative value. Previously it returned zero, falsely indicating success, although due to operating system limitations UNC paths are not supported in that case. When you call ParsePath with its third argument set to PATH and its second argument set to a UNC path that includes only a server name without a trailing backslash (for example, "\\\\TheServer"), the function correctly sets the first argument equal to a double backslash ("\\\\"). In Professional 5.x, the function would set the first argument equal to a single backslash ("\\"). The Professional 5.x Help Library listed specific numeric return values, other than 0 (zero) for success, for some functions. Some of these numeric values have changed for InstallShield 2010; a script used in InstallShield 2010 should compare a functions return value only to the constants that are currently listed in that functions help. In order for the end-user interface to flow smoothly, by default the installation initialization dialog remains displayed until the script displays a dialog. To close the installation initialization dialog, call Disable(DIALOGCACHE) or any dialog function. ComponentMoveDatas second argument no longer returns useful data.

202

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Passing a pointer to a string as the fourth argument of SendMessage no longer gives the expected result. To pass string data to SendMessage, see the Additional Information section of the SendMessage topic.

Predefined Constants

Remove the following constants, which were supported in Professional 5.x but are not supported in InstallShield 2010: COMPONENT_VALUE_ALWAYSOVERWRITE COMPONENT_VALUE_NEVEROVERWRITE COMPONENT_VALUE_NEWERDATE COMPONENT_VALUE_NEWERVERSION COMPONENT_VALUE_OLDERDATE COMPONENT_VALUE_OLDERVERSION COMPONENT_VALUE_SAMEORNEWDATE COMPONENT_VALUE_SAMEORNEWERVERSION COMPONENT_FIELD_DESTINATION COMPONENT_FIELD_OVERWRITE

Remove statements that assign values to the following predefined variables (for example, TARGETDISK="C:\\";). Such statements will not compile in InstallShield 2010; these constants are now read-only. CMDLINE COMMONFILES ERRORFILENAME FOLDER_DESKTOP FOLDER_PROGRAMS FOLDER_STARTMENU FOLDER_STARTUP ISRES ISUSER ISVERSION MODE PROGRAMFILES SUPPORTDIR TARGETDISK (The value of this variable is automatically updated when TARGETDIR is changed.) UNINST

InstallShield 2010 User Guide

ISP-1600-UG00

203

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

WINDIR WINDISK WINSYSDIR WINSYSDISK DLLs

When you called a DLL function in Professional 5.x, all string arguments were passed by reference; in InstallShield 2010, you can pass a string argument by value. To specify the method for passing an argument, in the function prototype, precede the arguments data type with the BYREF or BYVAL keyword; for example, MyDLL.MyFunc(BYREF NUMBER, BYVAL STRING). The InstallShield 2010 compiler includes the following compiler warnings to encourage the use of the appropriate keyword.

If your script includes DLL function calls where neither BYREF nor BYVAL has been specified, you receive compiler warning W7507. To eliminate this warning, add the appropriate keyword to the function prototype. If you specify a literal string for a string argument that is passed by reference, you receive compiler warning W7511. To eliminate this warning, add the BYVAL keyword to the function prototype.

When you call a function in an external DLL, make sure the same calling convention is used in the script and the DLL. In Professional 5.x, the installation engine always used the stdcall convention but would sometimes overlook an inconsistent DLL convention. The InstallShield 2010 engine does not; it generates an error (exception 0x80040704) when the wrong calling convention is used. In your script, you can declare a calling convention, either cdecl or stdcall, when declaring a DLL function. For example: prototype cdecl MyDLL.MyFunction (INT, INT); If you do not explicitly declare a calling convention, InstallShield uses stdcall.

In InstallShield 2010, InstallScript arrays are internally formatted as OLE Automation safe arrays, not native C/C++ arrays. To pass an InstallScript array to a DLL function that expects a C/C++ array, you must place the array data in the expected format by calling GetCArrayFromISArray. In InstallShield 2010, a string variable whose address is stored in a pointer variable cannot be changed by passing the pointer to a DLL function. To allow a DLL function to change the value of a string variable, pass the variable itself as an argument to the function, after declaring the data type of that argument specifying the BYREF operator. You no longer need to call the UseDLL function before calling a DLL that is located on Windows DLL search path. The DLL search path is the following: 1. The folder from which the application loaded.

2. The current folder. 3. The 32-bit Windows system folder. 4. The 16-bit Windows system folder. 5. The Windows folder.

204

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

6. The folders that are listed in the PATH environment variable. Use this feature with caution; the values of the current folder and PATH environment variable on an end users machine are not predictable. Miscellaneous

The undocumented array syntax ArrayName[nArrayIndex] is no longer supported. In InstallShield 2010, the syntax for all arrays is ArrayName(nArrayIndex). If you explicitly declare a return type for a script-defined function, you must specify the same return type in the function definition, after the keyword "function", or the script will not compile. (If you do not explicitly declare a return type, the return type is assumed to be NUMBER.) In previous versions of InstallShield Professional, return types were assumed to be NUMBER regardless of explicit specifications of other return types, so this issue did not arise. To place uninstall information under HKEY_CURRENT_USER, set the value of the ALLUSERS system variable to FALSE. To pass a literal character as an argument to a built-in or user-defined function, you must pass its numeric ASCII value. When processing the system variable CMDLINE, be aware that the following command line switches are no longer used by Setup.exe and so are included in CMDLINE: -SMS, -z, -c, -e, -q, -t, and -x. The -SMS switch is obsolete because now Setup.exe always stays in memory until the installation is complete. The -z switch is obsolete because now Setup.exe initializes correctly even on systems with more than 256 megabytes of memory. Remove Professional 5.xs ODBC Template code, which will not compile in InstallShield 2010. This is because the following function call is nested within the code:
ComponentGetData ( szMedia, szCompName, COMPONENT_FIELD_DESTINATION, nvData, svDest );

In InstallShield 2010 this function call does not compile because the Destination property is a file group property, not a component property.

Other Changes
Pressing F3 no longer works to exit an installation. Setup.exe no longer supports the -f switch for using a renamed Setup.inx. InstallShield 2010 installations do not support including special billboards for low-resolution systems. If neither a source file nor the already-existing target file has a version number, and the source files file groups Overwrite property is "Newer Version", "Same or Newer Version", or "Older Version", then the file on the target system is not overwritten. In Professional 5.x installations, the target file would be overwritten. InstallShield 2010 does not support displaying Windows 95-style dialogs. InstallShield 2010 displays end-user dialogs with the Windows 2000 style, which conforms to Microsofts latest guidelines for Windows user interfaces. The Lang key in a silent installations response (.iss) files [Application] section no longer has any effect.
ISP-1600-UG00 205

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

In Professional 5.x installations, any registry key logged by the installer would be removed during uninstallation in any case. In InstallShield 2010, keys created by RegDBCreateKeyEx and nonshared keys in registry sets are removed only if the installer created the key, that is, the key did not exist when the installation was run.

Script Changes: Lexicon Conversion


Terminology Change
In InstallShield Professional, the functional building blocks of your installation from the end users perspective were called components. With InstallShield 2010, these building blocks are called features. Because of this change in terminology, a number of InstallScript function names have also changed. When you upgrade a project that you created using InstallShield Professional, some items in your script might undergo a lexicon change or be aliased.

Function Names ComponentFileInfo (FeatureFileInfo) Flags ComponentSetData (FeatureSetData) and ComponentGetData (FeatureGetData) Flags

Function Names
Any InstallScript function name that referred to component now refers to feature. For example, ComponentDialog is now FeatureDialog. The parameters for these functions have not changed. Click a feature function to view the corresponding help topic.
Table 3-16: Function Name Changes Component Function ComponentAddItem ComponentCompareSizeRequired ComponentDialog ComponentError ComponentErrorInfo ComponentFileEnum ComponentFileInfo ComponentFilterLanguage ComponentFilterOS ComponentGetData ComponentGetItemSize ComponentGetTotalCost Feature Function FeatureAddItem FeatureCompareSizeRequired FeatureDialog FeatureError FeatureErrorInfo FeatureFileEnum FeatureFileInfo FeatureFilterLanguage FeatureFilterOS FeatureGetData FeatureGetItemSize FeatureGetTotalCost

206

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Table 3-16: Function Name Changes (cont.) Component Function ComponentInitialize ComponentIsItemSelected ComponentListItems ComponentLoadTarget ComponentMoveData ComponentPatch ComponentReinstall ComponentRemoveAll ComponentRemoveAllInLogOnly ComponentRemoveAllInMedia ComponentRemoveAllInMediaAndLog ComponentSaveTarget ComponentSelectItem ComponentSelectNew ComponentSetData ComponentSetTarget ComponentSetupTypeEnum ComponentSetupTypeGetData ComponentSetupTypeSet ComponentTotalSize ComponentTransferData ComponentUpdate ComponentValidate SdComponentDialog SdComponentDialogAdv SdComponentMult SdComponentTree Feature Function FeatureInitialize FeatureIsItemSelected FeatureListItems FeatureLoadTarget FeatureMoveData FeaturePatch FeatureReinstall FeatureRemoveAll FeatureRemoveAllInLogOnly FeatureRemoveAllInMedia FeatureRemoveAllInMediaAndLog FeatureSaveTarget FeatureSelectItem FeatureSelectNew FeatureSetData FeatureSetTarget FeatureSetupTypeEnum FeatureSetupTypeGetData FeatureSetupTypeSet FeatureTotalSize FeatureTransferData FeatureUpdate FeatureValidate SdFeatureDialog SdFeatureDialogAdv SdFeatureMult SdFeatureTree

InstallShield 2010 User Guide

ISP-1600-UG00

207

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

ComponentFileInfo (FeatureFileInfo) Flags


Flags that you used with the ComponentFileInfo (now FeatureFileInfo) function in InstallShield Professional are converted to reflect their use with features in InstallShield 2010.
Table 3-17: ComponentFileInfo Flags Deprecated Flag COMPONENT_INFO_ATTRIBUTE COMPONENT_INFO_LANGUAGE COMPONENT_INFO_OS COMPONENT_INFO_ORIGSIZE COMPONENT_INFO_COMPSIZE COMPONENT_INFO_DATE COMPONENT_INFO_DATE_EX COMPONENT_INFO_TIME COMPONENT_INFO_VERSIONLS COMPONENT_INFO_VERSIONMS COMPONENT_INFO_VERSIONSTR Note: The flags that are not available return -137, which indicates that the option is not functional. You can use the FeatureError function to provide more information about the return value. FEATURE_INFO_VERSIONLS FEATURE_INFO_VERSIONMS FEATURE_INFO_VERSIONSTR New Flag FEATURE_INFO_ATTRIBUTE FEATURE_INFO_LANGUAGE FEATURE_INFO_OS FEATURE_INFO_ORIGSIZE

ComponentSetData (FeatureSetData) and ComponentGetData (FeatureGetData) Flags


Flags that you used with the ComponentSetData and ComponentGetData (now FeatureSetData and FeatureGetData) functions in InstallShield Professional are converted to reflect their use with features in InstallShield 2010.
Table 3-18: Deprecated ComponentSetData and ComponentGetData Flags Deprecated Flag COMPONENT_FIELD_CDROM_FOLDER COMPONENT_FIELD_DESCRIPTION COMPONENT_FIELD_DISPLAYNAME COMPONENT_FIELD_FILENEED COMPONENT_FIELD_FTPLOCATION COMPONENT_FIELD_HTTPLOCATION COMPONENT_FIELD_IMAGE New Flag FEATURE_FIELD_CDROM_FOLDER FEATURE_FIELD_DESCRIPTION FEATURE_FIELD_DISPLAYNAME FEATURE__FIELD_FILENEED FEATURE_FIELD_FTPLOCATION FEATURE_FIELD_HTTPLOCATION FEATURE_FIELD_IMAGE

208

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Earlier InstallShield Versions

Table 3-18: Deprecated ComponentSetData and ComponentGetData Flags (cont.) Deprecated Flag COMPONENT_FIELD_MISC COMPONENT_FIELD_PASSWORD COMPONENT_FIELD_SELECTED COMPONENT_FIELD_SIZE COMPONENT_FIELD_STATUS COMPONENT_FIELD_VISIBLE COMPONENT_VALUE_CRITICAL COMPONENT_VALUE_HIGHLYRECOMMENDE D COMPONENT_VALUE__STANDARD New Flag FEATURE_FIELD_MISC FEATURE_FIELD_PASSWORD FEATURE_FIELD_SELECTED FEATURE_FIELD_SIZE FEATURE_FIELD_STATUS FEATURE_FIELD_VISIBLE FEATURE_VALUE__CRITICAL FEATURE_VALUE__HIGHLYRECOMMENDED

FEATURE_VALUE_STANDARD

Adding Project Assistant Dialog Support to Projects Upgraded from InstallShield Professional
When you upgrade an installation project from InstallShield Professional to InstallShield and the project contains a Setup.rul file that was created in InstallShield Professional, some questions may not be available on the Installation Interview page of the Project Assistant. This is because the Setup.rul file is missing the portions of the OnFirstUIBefore event code that InstallShield uses to key on script tags. If you create a new InstallScript project and look at the OnFirstUIBefore event, you will see the following code that the Project Assistant requires in order to support dialog functions:
//{{IS_SCRIPT_TAG(FunctionName) InstallScript code... //}}IS_SCRIPT_TAG(FunctionName)

Task

To add Project Assistant dialog support to your upgraded project: 1. 2. 3. 4. 5. 6.

In the InstallScript view, open your Setup.rul file. Comment out the OnFirstUIBefore event code. In the event category list at the top of the InstallScript pane, select the OnFirstUIBefore event. InstallShield re-adds this event to your script. Copy the pertinent dialog code to the commented-out code for the OnFirstUIBefore event. Delete the OnFirstUIBefore event code that you added in step 3. Remove the comments from the remaining OnFirstUIBefore event code.

InstallShield 2010 User Guide

ISP-1600-UG00

209

Chapter 3: Getting Started Upgrading from Other InstallShield Editions

Upgrading Projects Created with InstallShieldWindows Installer Edition


If you have an InstallShield project (.ism file) that was created using InstallShieldWindows Installer Edition, that project is automatically upgraded to a Basic MSI project when you open it in InstallShield. See Converting a Basic MSI Project to an InstallScript MSI Project to learn how to convert your upgraded project to an InstallScript MSI project.

Task

When you open the project, a dialog box appears to ask if you would like to upgrade your project.

Click Yes to upgrade your project. Your project opens in the IDE. Click No to leave the project unopened.

A backup copy of your original project is created and stored in the location specified in the dialog.

Upgrading a Setup from the Command Line


You can also upgrade your setup project when you build it from the command line. Use the -u parameter to upgrade your setup project from the command line without building it.

Troubleshooting Upgrade Errors


Any errors that result from the upgrade are displayed in the output panel at the bottom of the IDE. For information on these errors, see Upgrade Errors and Warnings (Upgrading from InstallShield Windows Installer Edition).

Post-Upgrade Changes in the Property Manager


Properties in the Property Manager with an empty value (no value) are invalid for MSI. Because of this, ***DO_NOT_BUILD*** appears in place of the empty value for these properties. In this way, properties with empty values are preserved as placeholders after the upgrade, but are not built into the .msi package.

Upgrading from Other InstallShield Editions


InstallShield is available in three different editions: Premier, Professional, and Express. The Premier edition includes features that are not available in the Professional and Express editions. The Professional edition also includes features that are not available in the Express edition. Some of the features that are available in the Premier edition but not the Professional or Express editions include:

Multilingual installationsCreate a single installation that displays end-user text in multiple languages and can handle conditional installation of language-specific files. Change dialogs and messages to any one of 34 additional languages using pre-translated strings.

210

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Other InstallShield Editions

Project: Note that support for two of those languagesArabic (Saudi Arabia) and Hebrewis available in only Basic MSI and Merge Module projects.

Arabic (Saudi Arabia) and Hebrew Language SupportInstallShield Premier Edition includes support

for Arabic (Saudi Arabia) and Hebrew languages, which are written and read from right to left. All of the default end-user dialog strings are available in these languages. Since these languages are read from right to left, the Premier edition also includes support for mirroring Arabic and Hebrew dialogs; that is, InstallShield uses a right-to-left layout for Arabic and Hebrew dialogs. Thus, for example, buttons that are on the right side of dialogs in English and other left-to-right languages are moved to the left side of right-to-left-language dialogs.

Standalone BuildUse this module to maintain a clean build system by using the part of InstallShield that compiles the installations, plus any redistributables that you want to include. Extra licenses for InstallShield MSI toolsInstallShield includes several tools: InstallShield MSI Diff,

InstallShield MSI Query, InstallShield MSI Sleuth, and InstallShield MSI Grep. You can use these tools to troubleshoot issues with Windows Installer packages. InstallShield Premier Edition includes a separate installation and extra licenses that let you install just the InstallShield MSI tools, without InstallShield, on separate machines. For specific terms, see the End-User License Agreement for the InstallShield MSI tools.

Ability to import IIS data from existing IIS Web sites into a projectInstallShield includes an IIS scanner (IISscan.exe), a command-line tool for scanning an existing IIS Web site and recording IIS data about the Web site. The IIS scanner creates an XML file that contains all of the settings for the Web site, its virtual directories, its applications, and its application pools. You can use the XML file to import the IIS data into the Internet Information Services view in InstallShield Premier Edition. Once you have imported the IIS data into a project, you can use the Internet Information Services view to make changes to the IIS settings as needed. Repackager project conversion toolInstallations created for the Windows Installer service

dramatically differ from traditional installations, making it impossible to reuse legacy installations without a repackaging tool. Repackager assists you by capturing the data placed on your system during installation and converting it into a Windows Installer package, which you can then customize and distribute according to your organizations needs.

InstallShield CollaborationInstallShield Premier Edition includes a five-pack of licenses for InstallShield Collaboration for Visual Studio. Network repositoryA network repository is a collection of installation elements that multiple installation authors can access and reuse in their projects as needed. A network repository fosters collaboration among installation authors; it is stored on a network. InstallShield Best Practice SuiteInstallShield 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. Additional Dialog ThemesSeveral dialog themes are available only in the Premier edition of

InstallShield. Some of the features that are available in the Premier and Professional editions but not in the Express edition include:

InstallShield 2010 User Guide

ISP-1600-UG00

211

Chapter 3: Getting Started Upgrading from Other InstallShield Editions

Dialog EditorThe Dialog Editor enables you to modify the layout of existing end-user dialogs or create new custom dialogs. Import and export dialogs to share them across projects. Construct different dialogs for each language supported in the project. InstallShield MSI toolsThe Premier and Professional editions of InstallShield includes several tools:

InstallShield MSI Diff, InstallShield MSI Query, InstallShield MSI Sleuth, and InstallShield MSI Grep. You can use these tools to troubleshoot issues with Windows Installer packages.

Automation interfaceUse script to add new files, add or delete features, change the product name and upgrade code, change release settings, change summary information stream items, change release flags, change any property, initiate the build process, and more. Release customizationDefine which project segments to compress, which features to place on

which disk, and which languages to include. Choose to filter application data based on language to support localization efforts.

Source code control integrationSimplify the process of checking projects in and out of your source

code control system and save space when differencing projects. The SCC integration in the Premier and Professional editions of InstallShield supports integration with various source code control systems.

Project validationUse standard cub files to validate both full projects and merge modules. With the Best Practices Wizard, receive notification of deviations from setup guidelines and recommendations for changes. Patch creationIn addition to enabling you to create QuickPatch projects, the Premier and

Professional editions let you create standard patches that contain updates to a previous installation.
Manage multiple product versionsBuild versions such as Evaluation, Debug, Standard, and Advancedfrom a single project. Allow specific features to be chosen for inclusion in a release through user-defined flags. Support for InstallScriptThe Premier and Professional editions of InstallShield include support for InstallScript, a simple but powerful programming language. You can add InstallScript custom actions to Windows Installerbased installations or create InstallScript projects, which use the InstallScript engine instead of the Windows Installer engine to control the entire installation. Merge module authoring and editingPackage pieces of a project for reuse across application

installations. Reuse those you create or any of the ones included in the product. Edit and open modules for greater customization.

Project templatesCreate project templates that contain all of the default settings and design

elements that you want to use as a starting point when you create an installation project or merge module project.

ClickOnce supportThe Premier and Professional editions include a ClickOnce Deployment project

type, which provides a lightweight application deployment mechanism that is easy to use. The new ClickOnce Assistant guides you through the project creation process, providing pertinent information along the way.

Device driver supportDevice driver support in the Premier and Professional editions simplifies the

process of installing device drivers from installation using the Driver Installation Frameworks for Applications (DIFxApp) from Microsoft.

212

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Upgrading from Other InstallShield Editions

SQL supportConnect to SQL servers, import database schema and data, associate SQL scripts with features, and more with SQL support. XML supportUse the XML File Changes view to specify how you want to edit one or more XML files on target systems. 64-bit supportAdd 64-bit support to your installations. InstallShield Prerequisite EditorUse this tool to create new InstallShield prerequisites and modify

existing ones. For additional details about the features included with each edition, visit the Acresso Web site. To learn about upgrading from one edition to another, see the appropriate topic:

Upgrading from the Express Edition to the Professional or Premier Editions Upgrading from the Professional Edition to the Premier Edition

Upgrading from the Express Edition to the Professional or Premier Editions


If you have an Express project type that was created using the Express edition of InstallShield, that project is upgraded to a Basic MSI project when you open it in the Premier or Professional edition of InstallShield. This upgrade is done because Basic MSI is the comparable project type for the Express project type. Compact projects, QuickPatch projects, and Smart Device projects created with the Express edition remain as Compact projects, QuickPatch projects, and Smart Device projects, respectively, in the Premier and Professional editions of InstallShield. When you open any project created with the Express edition in the Premier or Professional edition, InstallShield converts the file from an .ise file to an .ism file. A backup of your .ise file is saved before the conversion takes place. Billboard properties from Express edition projects will not be migrated since they are not supported in Basic MSI projects. You will receive warning 701 when the billboards property is specified in Express edition projects.

Task

To upgrade an Express edition project:

Open the project in the Premier or Professional edition of InstallShield. A dialog box opens to ask if you would like to upgrade your project.

Click Yes to upgrade your project. Your project opens in InstallShield. Click No to leave the project unopened.

A backup copy of your original project is created and stored in the location specified in the dialog box.

InstallShield 2010 User Guide

ISP-1600-UG00

213

Chapter 3: Getting Started Converting Visual Studio Projects to InstallShield Projects

Upgrading from the Professional Edition to the Premier Edition


When you open a Professional edition project in the Premier edition, your project does not need to be converted. It opens seamlessly in the Premier edition, enabling you to take advantage of Premier editiononly features. To learn about the specific features, see Upgrading from Other InstallShield Editions. For additional information about the features included with each edition, visit the Acresso Web site.

Converting Visual Studio Projects to InstallShield Projects


Visual Studio includes limited support for creating setup and merge module projects. InstallShield lets you convert these types of Visual Studio projects to InstallShield projects so that you can use the advanced features and functionality in InstallShield to create installations and merge modules. With InstallShield, you can do the following:

Convert a Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, or Visual Studio .NET setup project (.vdprj) to a Basic MSI project (.ism). Convert a Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, or Visual Studio .NET merge module project (.vdprj) to an InstallShield Merge Module project (.ism).

Benefits of Using an InstallShield Project Instead of a Visual Studio Project


If you convert your Visual Studio setup project to an InstallShield Basic MSI project or you convert your Visual Studio merge module project to an InstallShield Merge Module project, you can use the features in InstallShield to fully customize your project. Following is a list of a few of the tasks that you can perform in InstallShield projects but not in Visual Studio projects:

Modify the layout of dialogs through a visual Dialog Editor. Manage components and features. Store custom actions in the Binary table of the .msi or .msm database. (With Visual Studio, all custom actions must be installed with the product.) Create shortcuts to pre-existing files on a target system. Manage SQL-related tasks, such as connecting to a SQL server and running SQL scripts. Manage IIS Web sites, applications, virtual directories, application pools, and Web service extensions. Manage COM+ applications. Modify XML files on the target system at run time.

214

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Converting Visual Studio Projects to InstallShield Projects

Conversion Process
If you use InstallShield to convert a Visual Studio setup project, InstallShield creates an InstallShield Basic MSI project (.ism). If you use InstallShield to convert a Visual Studio merge module project, InstallShield creates an InstallShield Merge Module project (.ism).

Task

To convert a Visual Studio project (.vdprj) to an InstallShield project (.ism): 1. 2. 3. 4. 5.

Open InstallShield. On the File menu, click Open. The Open dialog box opens. In the Files of type box, select Visual Studio Setup Projects (*.vdprj). Browse to the location of the Visual Studio project that you want to open, and select the project file. Click the Open button.

InstallShield creates an InstallShield project based on the settings in the Visual Studio project. InstallShield stores the .ism file in the same folder as the .vdprj file. As InstallShield creates the .ism file, it displays the status of the project conversion in the Output window. The Output window shows each step of the conversion process, and it lists any conversion errors and warnings. Once the conversion process finishes successfully, the new InstallShield project is displayed in InstallShield.

Note: Visual Studio lets you specify a directory path that contains multiple formatted properties, such as [ProgramFilesFolder][Manufacturer]\[ProductName], for the Application Folder. Visual Studio projects use a directory custom action to resolve the path at run time. However, InstallShield does not support this type of directory path. Therefore, InstallShield resolves the path during the conversion process and uses the INSTALLDIR property for the path.

Post-Conversion Tasks
The conversion process does not incorporate the dialogs from a Visual Studio project into the InstallShield project. Once you have converted your project, you can use the Dialogs view in InstallShield to add dialogs to your project, edit the dialog layout, and configure events for dialog controls. If your Visual Studio project includes a .NET installer class custom action, InstallShield configures the .NET installer class information for the .NET assemblys component during the conversion process, instead of creating a .NET installer class custom action. InstallShield does not include support for the Condition property of a .NET installer class custom action in Visual Studio. Therefore, if your Visual Studio project contains a .NET installer class custom action that has a condition, you may want to use the Components view in InstallShield to create a condition for the component that contains the .NET assembly after you have converted your project. You can also use the other views in InstallShield to make additional changes to your project.

InstallShield 2010 User Guide

ISP-1600-UG00

215

Chapter 3: Getting Started Obtaining Updates for InstallShield

Obtaining Updates for InstallShield


If you have an Internet connection, you can use the Check for Updates feature in InstallShield to obtain the latest InstallShield prerequisites, merge modules, and objects; service packs; patches; and other updates for the version of InstallShield that you are using. The Standalone Build is also available through the Check for Updates feature to users who have the Premier edition of InstallShield.

Task

To check for updates:

On the Tools menu, click Check for Updates. InstallShield launches FLEXnet Connect, which checks for updates. When an update is available, you can do the following:

View the updates for your system. View descriptions about the updates. Download and install the updates that you select.

Run-Time Language Support in InstallShield


Important: Language support varies, depending on the edition of InstallShield that you are using, the project type, and the language of the InstallShield interface (English or Japanese). Note that support for Arabic (Saudi Arabia) and Hebrew is available only in Basic MSI and Merge Module projects in the Premier edition.

The InstallShield Premier edition includes default run-time strings in 35 supported languages. When you add a supported language to a project, that language is made available in various language-related settings throughout InstallShield. In addition, InstallShield adds translated string entries for that language to your project. The string entries are for the default dialogs, messages, and other end-user interface elements. For a list of the supported languages, see Language Identifiers. The InstallShield Premier edition also lets you add unsupported languages, beyond the built-in 35 languages, to Basic MSI, InstallScript, and InstallScript MSI projects through the New Language Wizard. An unsupported language is one in which none of the default run-time strings are translated. When you add an unsupported language to a project, that language is made available in various language-related settings throughout InstallShield. In addition, InstallShield uses the strings from your projects default language as placeholders for the strings in that newly added unsupported language; you can use the String Editor view to provide translated strings for the unsupported languages. The English version of the InstallShield Professional edition lets you select one of 33 languages (any of the supported languages, except for Arabic or Hebrew) to use as the run-time language for all of the projects that you create. The English version of the InstallShield Professional edition includes default run-time strings for the one language that you have selected.

216

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 3: Getting Started Run-Time Language Support in InstallShield

The Japanese version of the InstallShield Professional edition lets you select English plus one additional supported language; that is, if you are using the Japanese version of the InstallShield Professional edition, you can create projects with English run-time strings as well as projects with run-time strings from one other supported language. The Japanese version of the InstallShield Professional edition includes default run-time strings in English, plus the one additional supported language that you have selected. If you want to modify the default run-time strings or you are adding custom dialogs, messages, and other end-user interface elements to your project, you can enter the custom run-time strings directly in your InstallShield project. As an alternative, you can export a languages string entries to a file, translate the string values in the file, and then import the translated file into your project. This support is available in all editions of InstallShield. To learn more about language support in InstallShield, see the following sections of the documentation:

Localizing the End-User Interface Creating Multilingual Installations Code Page Requirements for Language Support Settings for Languages

Code Page Requirements for Language Support


If you plan on creating releases that include run-time strings in a language that includes double-byte characters (for example, Japanese, Greek, or Korean), determine whether you need to install any code pages on your build machine. Unicode encoding is used to display run-time strings throughout InstallShield. With Unicode encoding, double-byte characters are displayed correctly within InstallShield, even if InstallShield is on a system that does not have a projects target languages installed. In addition, you can build releases on a system that does not have the releases target languages. However, if you use ANSI encoding for run-time strings (for example, if you export the string entries from a project as an ANSI text file and then import the translated ANSI text file into your project), you need to install the code pages for those languages on your build machine. The code pages allow your system to accurately represent the characters of those languages. If your build machine does not have the code pages installed, InstallShield reports a build error when you try to build a release, and the installation does not display double-byte characters properly at run time.

Tip: It is recommended that you use Unicode encoding instead of ANSI encoding when you are exporting string entries to a file for translation.

Installing Supplemental Language Support on a Build Machine


The following instructions explain how to install code pages on a build machine that has Windows XP. This may be necessary if you want to build releases that contain Chinese, Japanese, and Korean languages. On later operating systems, the code pages are typically installed by default.

InstallShield 2010 User Guide

ISP-1600-UG00

217

Chapter 3: Getting Started Supported Application Programming Languages

Task

To install code pages on a build machine that has Windows XP: 1. 2. 3. 4. 5. 6.

In the Control Panel, launch Regional and Language Options. Click the Languages tab. Click the Details button. Click the Add button. Select the language for which you want to add a code page. Click OK.

The following instructions explain how to install files for right-to-left languages such as Arabic and Hebrew on a build machine that has Windows XP. On later operating systems, these files are typically installed by default. If these files are not installed, the String Editor view may display the strings left to right instead of right to left.

Task

To install right-to-left language support on a build machine that has Windows XP: 1. 2. 3. 4. 5. 6. 7.

In the Control Panel, launch Regional and Language Options. Click the Languages tab. In the Supplemental language support area, select the Install files for complex script and right-to-left languages check box. Click the Add button. Select the language for which you want to add a code page. Click OK.

Supported Application Programming Languages


InstallShield allows you to create installations for applications created in any programming language including applications created with Java, Pascal, C++, Visual Basic, Delphi, C# .NET, Visual Basic .NET, ASP .NET, and Cobol. Even if you created your application using a language other than those listed above, you can use InstallShield to create an installation for your application. In additionif you are not deploying an application, but want to package files or a databaseyou can use InstallShield to assist with those tasks.

218

ISP-1600-UG00

InstallShield 2010 User Guide

4
Tutorials
This section contains tutorials that walk you through the process of creating an installation using InstallShield.
Table 4-1: Available Tutorials Tutorial InstallScript Project Tutorial Description Leads you step-by-step through the process of creating an InstallScript installation project. The tutorial also provides information about the various tasks associated with installation projects and introduces you to the views in the InstallShield interface in which you can accomplish these tasks. Teaches you how to a Basic MSI installation project. The tutorial also provides information about the various tasks associated with installation projects and introduces you to the views in the InstallShield interface in which you can accomplish these tasks. Shows you how to add languages and language-specific components to your project. Additionally, it shows you how to conditionally install components based on the target systems language.

Basic MSI Project Tutorial

Globalization Tutorial

Note: The Premier edition of InstallShield must be installed on your development system in order to successfully complete this tutorial. For more information, visit the Acresso Web site. Referencing a DIM in a Basic MSI Project Tutorial Leads you through the process of adding and configuring a DIM reference in a Basic MSI project using InstallShield.

Note: This tutorial works in conjunction with the DIM tutorial that is available in the InstallShield Collaboration Help Library.

InstallShield 2010 User Guide

ISP-1600-UG00

219

Chapter 4: Tutorials

220

ISP-1600-UG00

InstallShield 2010 User Guide

5
InstallScript Project Tutorial
This tutorial guides you through the process of creating, building, running, and enhancing an InstallScript installation using InstallShield. The tutorial is divided into several steps. After the first stepStep 1: Creating, Building, and Testing Projectsthe other steps can be performed independently, and in any order, so you can focus on the information relevant to your work. In this tutorial, you will learn how to handle many of the tasks that an installation needs to address, including:

Installing files Setting up shortcuts and registry data Conditionally installing data Changing the installations user interface Building release images Testing the installation

Throughout the tutorial are links to related topics in the Help Library.

Step 1: Creating, Building, and Testing Projects


This step demonstrates how to create an installation project, build a release image, and test the installation. After completing this step, you will know how to:

Use the Project Assistant to create a new project. Specify global properties of your installation project. Define setup types, features, components, and file links. Build a release image for duplication and distribution. Run your installation from the InstallShield user interface.

InstallShield 2010 User Guide

ISP-1600-UG00

221

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

An installation is made up of three levels:


Table 5-1: Levels Within an Installation Level Components Description A component is the smallest separately installable piece of your product from the developers viewpoint. A component specifies files, shortcuts, registry data, and other data to be installed on the target system. The end user never directly interacts with components. A component can be placed in more than one feature, and the components data will be installed if the user selects at least one feature associated with the component. Features A feature is the smallest separately installable piece of your product from the users viewpoint. If the user selects the Custom setup type, a dialog is displayed in which the user can choose which features to install. Each feature contains components. Setup Types Setup types are predefined collections of features. By convention, an installation offers Typical, Compact, and Custom setup types, and the user selects which setup type to install in the SetupType dialog.

The installation that you will create in this tutorial installs and configures an application called Tutorial App. The source files for Tutorial App are located in one of the Samples subfolders within the InstallShield Program Files folder. The default installation location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Tutorial Project

Creating a Project with the Project Assistant


After launching InstallShield, create a new InstallScript project by doing the following:
1.

Open the New Project dialog box by doing one of the following:


2. 3. 4. 5.

Click the Create a new project link in the Start Pages Project Tasks section (on the left of the page). On the File menu, click New. Click the toolbars New Project button

In the New Project dialog box, click the InstallScript tab. In the InstallScript tabs list view, select the InstallScript Project icon. In the Project Name edit box, type the project name Tutorial. Click OK.

There are many other ways to create a project, such as updating a project created using InstallShield Professional. For more information, see Creating New Projects. InstallShield creates a project file called ProjectName.ism, in this case Tutorial.ism. The project file stores all the settings you make in the InstallShield user interface. To move a project to another machine, copy the .ism file (and the installation source files) to the other system.
222 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

Tip: You can change the directory where new project files are created by choosing Options from the Tools menu, selecting the File Locations tab, and entering the new location in the Project Location field.

Your new project is opened to its Project Assistant tab. To begin using the Project Assistant, click the Next button in the lower right corner.

Tip: You can do the Project Assistants steps in any order, and switch at any time (by clicking the appropriate tab) between the Project Assistant and the Installation Designer, in which you can add more complex and powerful elements to your installation project.

Specifying Application Information


The Application Information page lets you specify general information about the application that you are installing.

Task

For this tutorial, do the following: 1. 2. 3.

In the Specify your company name edit box, type the name Tutorial Co. In the Specify your application name edit box, type the name Tutorial App. Leave the other fields unchanged.

The value you enter in the application name field is used in dialogs displayed to the end user, as the display name for your application in Add or Remove Programs in the Control Panel. The application name and company name you enter determine the default location of application shortcuts on the Windows Start menu, and the default value for the TARGETDIR system variable, which specifies the default destination for components files.

Customizing the Installation Architecture


The Installation Architecture page lets you specify the features you want to be displayed by your installation. A feature is the smallest separately installable piece of your product from the end users standpoint. Individual features are visible to end users when they select a Custom setup type.

Note: Features can contain subfeatures, subsubfeatures, and so forth, to as many levels as your installation requires.

Task

For this tutorial, do the following: 1. 2.

For the Do you want to customize your Installation Architecture? question, select Yes. Select the existing DefaultFeature feature and rename it ProgramFiles.

InstallShield 2010 User Guide

ISP-1600-UG00

223

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

3.

Create a new feature called HelpFiles. To do so, click Installation Architecture and then click the New button.

Adding Files to Your Project


The Application Files page lets you specify the files you want to link with each of your features. First, select from the list of features the feature in which you want to insert files. To add file links, click the Add Files button, and then browse for the file or files you want to include in the selected feature. For this tutorial, add the Tutorial.exe file to the ProgramFiles feature by doing the following:
1. 2. 3. 4. 5.

Select ProgramFiles from the list of features. In the tree control (with top node Destination Computer), select Application Target Folder. Click Add Files. Browse for Tutorial.exe, which is located in your source directory. When the "The file you have added ... may have dependencies" message appears, click No; Tutorial.exe has no dependencies.

Creating Shortcuts
The Application Shortcuts page lets you specify shortcuts for your applications files on the target systems desktop or Start menu. By default, this page displays a shortcut for each executable that you have included in your installation project; you can delete these, and add shortcuts to other files that you have included in your installation project. For this tutorial, leave this pages default specifications unchanged: a shortcut to Tutorial.exe on the Start menu.

Configuring Registry Data


The Application Registry page lets you specify any registry entries that your application requires.

Note: An InstallScript project includes script code that by default creates the application uninstallation key (Software\Microsoft\Windows\CurrentVersion\Uninstall\<GUID> under the HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER root key as appropriate) and its values and data; you do not need to specify these registry entries.

For this tutorial, do not specify any registry entries in this page. Registry entries are covered in Step 2, Shortcuts and Registry Data, of the tutorial.

Selecting Dialogs with the Installation Interview


The Installation Interview page lets you specify the dialogs that you want the end user to see when your installation runs. Based on your answers to the questions on this page, the Project Assistant adds the corresponding dialog function to your installation script. Script changes related to dialogs are covered in Step 6 of the tutorial.

224

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

Task

For this tutorial, do the following: 1. 2.

Select the No option button under the text "Do you want to display a License Agreement Dialog?" Leave the other option buttons set to Yes.

Choosing a Language for Your Installation


The Installation Localization page lets you specify the languages that your installation supports. It also lets you specify string values and associated identifiers, which you can use in your end user interface to make your installation more easily localizable in other languages.

Edition: Multilingual language support is available in the Premier edition of InstallShield. For more information, visit the Acresso Web site.

Task

For this tutorial, change the display name of the HelpFiles feature by doing the following: 1. 2.

In the list box, select Feature String Data. The table on the right displays all of the feature string entries. In the Value column, click HelpFiles (the value associated with the identifier IDS_FEATURE_DISPLAY_NAME2), and change it to Help Files; that is, add a space.

Building Your Installation


The Build Installation page lets you specify what type of distribution you want to build (and, optionally, the location to copy the distribution files to).

Task

For this tutorial, do the following: 1. 2.

Select the CD-ROM option. Click Build Installations.

The output window opens with the Build tab uppermost and displays information about the progress of the build. The build is finished when the Build tab displays the line "Build finished at date and time".

Running Your Installation


To run your installation from within InstallShield, click the Run toolbar button or press CTRL+F5.

InstallShield 2010 User Guide

ISP-1600-UG00

225

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

The installation displays the dialogs that you specified in the Installation Interview Page of the Project Assistant. The values you entered in the Project Assistant are displayed to the end user in the appropriate dialogs. For example, at run time, the default value of TARGETDIR that you specified in the Project Assistant appears in the Choose Destination Location dialog. If the end user browses for a different destination directory, TARGETDIR stores the new value. After the installation is complete, you can browse for the directory and find the files installed by your setup program. If the installation was successful, you will see the tutorial files installed.

Maintenance Mode
When a user runs an installation a second (or later) time for a product installed on their system, the installation runs in maintenance mode. Maintenance mode allows the user to modify feature selections from the first-time installation, repair the features already installed, or remove the entire program.

Uninstalling the Program


To uninstall the program, click the Run button (or press CTRL+F5), and select Remove from the Setup Maintenance dialog. This is the same behavior a user sees when selecting your application in Add or Remove Programs. Now that you have created a basic installation project, click the Installation Designer tab (near the top of the window) to expand and fine-tune your installation as illustrated in the next step of the tutorial.

Working with the InstallShield Interface


Now that you have created a basic installation project, click the Installation Designer tab (near the top of the window) to expand and fine-tune your project in the InstallShield user interface. The InstallShield user interface is arranged in functional categories that help you add or edit information in your project. This and later steps of the tutorial explore several of the different InstallShield views. After completing this step, you will know how to:

Set display properties for your program features. Define your programs setup types. Create components and add file links.

Setting Feature Properties


First, you will set additional properties for the features you created in the Project Assistant, such as the feature display name and description. To edit the feature properties, go to the Features view in the IDE.

Task

To set feature properties: 1. 2.

On the Go menu, point to Organization and click Features. In the Features explorer, click the DefaultFeature feature and set its Description property to This feature contains the Tutorial App program files.

226

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

3.

Tutorial App help files.

Select the New Feature feature and set its Description property to This feature contains the As you enter each description, InstallShield creates a string entry displayed as {ID_STRINGn}to represent each value. Rename the features in the Features view to have the same names as their respective display names. To rename a feature, click the feature twice to highlight its name, then type the new name.

4.

At run time, if the end user chooses the Custom setup type, the installation displays a dialog that prompts the user to select which features to install. This dialog displays features using the display name and description you specified here.

Setting Setup Type Properties


Setup types are collections of features to be installed. A typical installation offers Complete and Custom setup typeswhere the Complete setup type installs all features, and a Custom setup type displays a dialog that lets the end user choose which features to install. You modify setup type properties in the Setup Types view of the IDE (under the View Lists Organization node).

Task

For each setup type, select the features to be installed by selecting the boxes in front of the features names: 1. 2.

For the Complete setup type, select both features. For the Custom setup type, select both features.

Creating Components and File Links


You can add links to additional files in the Files and Folders view. In this step, you will add a file to your HelpFiles feature. As you add files in the Files and Folders view, the IDE creates components for you according to Setup Best Practices rules.

Task

To add the source file Tutorial.html to a new component in the Help Files feature: 1. 2. 3. 4. 5. 6. 7.

Go to the Files and Folders view (under the View Lists Application Data node). Select Help Files from the feature list at the top of the view. In the Destination computers folders area, right-click the Destination Computer icon and verify that Show Components is selected. Right-click the Application Target Folder icon and select New Component. Rename the new component HelpComponent. In the Source computers folders area, browse for the source folder containing TutorialHelp.html. Drag the TutorialHelp.html icon from the Source computers files area and drop it on the HelpComponent icon.

InstallShield 2010 User Guide

ISP-1600-UG00

227

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

This type of file linking, where the list of files linked to a component does not change, is called static file linking. To link to a directory (and possibly its subdirectories) whose contents might change between builds, see Dynamic File Linking.

Tip: You can use the InstallShield dependency scanners to determine additional files required by your application that are currently not included in your project. For example, Tutorial App uses MFC, so it will be necessary to add the MFC Runtime object to your project in the Redistributables view if you intend to target systems that do not have the MFC run-time libraries installed.

The next step of the tutorial explains how to build a release image for your installation project.

Building a Release
Before testing an installation, it is necessary to build a release. A release image contains all of the files to be distributed to the end user on a CD-ROM or floppy disk or from a network location. The simplest way to build a new release is to use the Release Wizard. The Release Wizard is where you specify release properties, such as the type of media (CD-ROM, for example) to use and whether to compress files on the media. You can launch the Release Wizard by clicking the Release Wizard toolbar button, or by choosing Release Wizard from the Build menu. Click Next in the Welcome panel to specify your release settings. You can click Help in any panel for more information about the current step.

Naming the Release


In the Specify a Release panel, specify a release name. The release name is used as the name of a folder in which your built release will be placed. For this example, create a new release called cdrom.

Selecting the Media Type and General Options


Media Type Panel
In the Media Type panel, you specify the type of media for which you are building a release. The media type you specify indicates the size of the disk image folders the Release Wizard creates: when you build a release for CD-ROM, the Release Wizard divides your disk images into folders, each of which is smaller than 650 MB. For this tutorial, select CD-ROM. Click Next to specify general options for your release.

General Options Panel


The General Options panel lets you do the following:


228

Create a self-extracting executable file for distributing your installation Pass command line options to Setup.exe Pass preprocessor variable definitions to the compiler

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

Select whether to place the compiled script file (.inx file) in a cabinet file

For this tutorial, leave the panels default settings unchanged.

Specifying a Password and Supported Platforms


Password Panel
In the Password panel, you can specify a password for your installation, and, if you do, whether to execute the password-checking code in the OnCheckMediaPassword event handler functions default code. For this tutorial, do not specify a password. Click Next to specify the operating systems you want to support in the current release.

Platforms Panel
In the Platforms panel, you can specify the operating systems you want to support in the current release. For this tutorial, do not change the default selection: Use platforms specified by the Platforms project property.

Specifying Setup Languages and Including Features


Setup Languages Panel
In the Setup Languages panel, you can specify the languages you want your installation to be able to run in, and whether to display a dialog that allows the end user to select the language in which they want the setup displayed. The wizard will build into your installation only those language-specific elements, including string entries and dialogs, that you select in this panel. All language-independent resources, such as product properties and built-in actions, are included as a matter of course. For this tutorial, leave the default selections unchanged. Click Next to specify which features you want to include in the current release.

Features Panel
In the Features panel, you can specify which features are included in the built release. For this tutorial, do not change the default selection: Use the Include in Build feature property to determine inclusion.

Defining Media Layout and Dialog Appearance


Media Layout Panel
In the Media Layout panel, specify, for individual features or for all features, whether the features files are stored in cabinet files or placed uncompressed in the disk image. For this tutorial, do not change the default selection: "Cabinet File(s)".

InstallShield 2010 User Guide

ISP-1600-UG00

229

Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects

User Interface Panel


In the User Interface panel, specify the look and feel of your installations end user dialogs. For this tutorial, leave the default selections unchanged.

Specifying Internet Options and Digitally Signing Your Application


Internet Options Panel
In the Internet Options panel, specify various Internet-related options. Any release can be run over the Internet, regardless of its media type. For this tutorial, check the Create a default Web page for the setup box and leave the other default selections unchanged.

Digital Signature Panel


In the Digital Signature panel, you can digitally sign your application. Digitally signing your application helps to assure your end users that the code within your application has not been modified or corrupted since publication. For this tutorial, leave the default selections unchanged.

Specifying Update and Postbuild Information


Update Panel
The Update panel lets you specify the release format and the existing releases for which the current release can be run as an update. For this tutorial, leave the default selections unchanged.

Postbuild Options Panel


The Postbuild Options panel lets you copy disk image folders to a folder or FTP site, or execute a batch file, after the release build is complete. For this tutorial, leave the default selections unchanged.

Reviewing Your Settings


The Summary panel displays the Release Wizard settings for the current release. If the settings are correct, select the Build the Release check box and click Finish to build your release. If not, click Back to modify the settings. Status messages for the build in progress are displayed in the output window. When the build is complete, the files to copy onto the CD are placed in the following directory:
<ProjectFolder>\Tutorial\cdrom\DiskImages\DISK1.

After making changes to your project in later steps of the tutorial, you can rebuild the latest release by clicking the Build toolbar button, choosing Build from the Build menu, or pressing F7.

230

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 2: Shortcuts and Registry Data

You can now run the installation as you did previously in this tutorial. To run the installation as an Internet installation, click the toolbars Open Release Folder button and launch Setup.htm. The next step of the tutorial explains how to create shortcuts and registry data for an installation.

Troubleshooting Your Installation


After running your installation, if files are not installed, check the following parts of your project:

Verify that TARGETDIR is set to the proper value. This is set in the General Information view. For this tutorial, the recommended value is as follows:
[ProgramFilesFolder]TutorialCo\TutorialApp

Verify that your setup types have features associated with them. Verify that your features have components and files associated with them. After making any changes to your installation, it is necessary to rebuild your project by clicking the Build button or pressing F7.

Step 2: Shortcuts and Registry Data


This step explains how to use the IDE to:

Create program shortcuts Create registry information

Creating Shortcuts
You create and modify shortcuts in the Shortcuts view. The properties of a shortcut include its display name, its target executable and arguments, and the icon it displays. Using the Project Assistant, you have already created a shortcut to Tutorial App in the end users Programs folder, under the Start menu.

Task

In this step you create a shortcut on the end users desktop. 1. 2. 3. 4. 5.

Go to the Shortcuts view. Right-click the Desktop icon and select New Shortcut. The Browse for Shortcut Target dialog box opens. In the dialog box, select Application Target Folder from the Look in drop-down menu and select Tutorial.exe from the files list. Click Open to close the Browse for Shortcut Target dialog box. Rename the shortcut icon to an internal name such as tutorial.

InstallShield 2010 User Guide

ISP-1600-UG00

231

Chapter 5: InstallScript Project Tutorial Step 2: Shortcuts and Registry Data

Next, set the following properties for the shortcut:


Table 5-2: Shortcut Properties Property Display Name Value Tutorial App Comment InstallShield adds the display name to the projects strings (and displays the string identifier in curly braces in the Display Name field) so that the name can be easily localized to other languages.

Target Icon File Icon Index Working Directory

<TARGETDIR>\Tutorial.exe <TARGETDIR>\Tutorial.exe 0 <TARGETDIR>

Tip: To create a shortcut to a file already located on the users machine, enter the path to the fileusing system variables to represent the path to the file, when possible. For example, to launch a copy of Windows Notepad located in the users Windows or WinNT folder, enter the shortcut target as <WINDIR>\Notepad.exe.

Creating Registry Data


Another common requirement for installations is to write information to the target systems registry. To add registry data to a component, you can use the Registry view. For example, to create a registry value called TutorialData under HKEY_LOCAL_MACHINE\Software\Tutorial Co\Tutorial\1.00.0000:

Task

To create registry data: 1. 2. 3. 4. 5. 6. 7. 8.

Go to the Registry view. In the Destination computers Registry view area, right-click Destination Computer and select New Registry Set. Rename the registry set tutorial. Under the tutorial registry set, right-click HKEY_LOCAL_MACHINE and from the New submenu select Key. Rename the key Software. Repeat the process for subkeys named Tutorial Co, Tutorial, and 1.00.0000. In the Destination computers Registry data area, right-click and select New String Value. Rename the value TutorialData.

232

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 3: Registering COM Servers

9.

Double-click the TutorialData value and enter <TARGETDIR> in the Value data field. DefaultComponent.

10. Click the tutorial registry set, and in the Registry Set Install Conditions pane check

At run time, if the end user selects a setup type or collection of features that includes the Tutorial.exe component, the registry data is created on the target system.

Verifying that the Shortcut Was Created

Task

To verify that your installation created the shortcut: 1. 2.

Rebuild your project by clicking the Build toolbar button or pressing F7. Run the project by clicking the Run button or pressing CTRL+F5 (first removing any existing version of the program from your system). A shortcut to Tutorial App should be present in the Programs folder of your Start menu.

Verifying that the Registry Data Was Created

Task

To verify that the installation created the registry data: 1. 2.

Launch Tutorial App from its shortcut. From the Tutorial menu, choose Verify Registry Data. If the registry data was created, a message box displaying the text <TARGETDIR> is displayed.

The next step of the tutorial explains how to register a COM server (self-registering file).

Step 3: Registering COM Servers


For many files, the installations only requirement is to copy the files from the source media to the target system. For others, the installer also needs to register the files with the target system. One category of file that needs extra handling is a self-registering file. In this step you will create a component that installs and registers Tutorial.ocx and an HTML file that uses it. A COM server is usually a DLL or .ocx file that requires extra information to be written to the target systems registry before applications and Web pages that use the self-registering file can find it.

Task

To install a self-registering file 1. 2. 3.

Go to the Files and Folders view. At the top of the Files and Folders view, select the Program Files feature from the Add new components to the feature menu. In the Source computers folder pane, browse for Tutorial.ocx in your source directory.
ISP-1600-UG00 233

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 4: Conditions and Properties

4.

Drag Tutorial.ocx from the Source computers folders pane and drop it into the Destination computers folders panes Application Target Folder. The component SelfRegFiles is created under Application Target Folder; this component contains Tutorial.ocx and has its SelfRegister property set to Yes, as you can verify by right-clicking the component and selecting Properties.

Next, add the HTML file to a new component also associated with the Program Files feature.

Task

To add the HTML file to a new component associated with the Program Files feature: 1. 2. 3.

In the Destination computers folders pane of the Files and Folders view, right-click Application Target Folder and select New Component. Rename the component OcxHTML. Drag the file TutorialCtrl.html from the Source computers files view into the OcxHTML component.

Task

After rebuilding your release (by pressing F7) and running the installation (by pressing CTRL+F5), you can verify that the file was registered properly: 1. 2. 3.

Launch Tutorial App using its shortcut in the Programs menu, or by double-clicking its icon. Choose COM Server Test from the Tutorial menu. If the COM server was registered correctly, the HTML page displays a success message.

The next step of the tutorial demonstrates how to install files conditionally.

Step 4: Conditions and Properties


In this step, you will learn how to conditionally install data on a target system. A common requirement for installations is to install certain files on a system only if particular conditions are met. For example, files may be specific to an operating system or language, or should be installed only if the user has appropriate privileges. To install a component (and its files and other data) only on particular operating systems, you can use the components Operating Systems property. You can modify a components properties by opening the Setup Design view, expanding the feature icon that contains the feature, and selecting the desired component.

Task

To create a component that will be installed only on Windows NT 4.0 and Windows 2000 systems: 1. 2. 3.

Go to the Setup Design view. Right-click the HelpFiles feature and select New Component. Rename the component to windows_nt_files.
ISP-1600-UG00 InstallShield 2010 User Guide

234

Chapter 5: InstallScript Project Tutorial Step 5: Working with Scripts

4. 5. 6. 7. 8.

Click the Files icon for the component and add the file ReadmeNT.txt from your source folder by right-clicking in the Files pane and browsing to the file. Click the windows_nt_files component to display the components property grid. Select the components Operating Systems property and click the browse button. In the Platforms dialog, select the check boxes next to Windows NT 4.0 and Windows 2000. Click OK.

After you rebuild (by pressing F7) and run the installation (by pressing CTRL+F5), and any files or other data contained in the component will be installed only if the target system is running Windows NT 4.0 or Windows 2000. The next step of the tutorial describes how to modify your projects script.

Step 5: Working with Scripts


InstallShield uses the InstallScript language to drive an installation. You can modify the projects script in the InstallScript view.

Tip: Press CTRL+M to maximize the Script Editor; press CTRL+M again to restore it.

InstallScript project scripts use an event-driven model, where a series of predefined functions are called in a specific order. For information about the built-in categories of event handlers and the order in which event handler functions are called, see Event Handlers. The functions already defined in your script appear in the Functions tree. To view or edit an existing function, click its name in the Functions tree.

Note: Event handler functions are called even if they do not explicitly appear in your script. If an event handler function does not appear in your script, its default code is used.

To add and edit an event handler function, select the desired event category (such as Before Move Data) from the script editors left drop-down list, and then select the name of the desired event (such as Begin) from the right drop-down list. Event handler functions that are already explicitly defined in your script appear in boldface text. For example, the OnBegin event handler is the first function called in an installation script, for both a first-time installation and maintenance mode.

Task

To add your own code to the OnBegin event handler, begin by creating the function: 1. 2.

Select Before Move Data from the event category list on the left. Select Begin from the event handler list on the right.

The following code is added to your script:

InstallShield 2010 User Guide

ISP-1600-UG00

235

Chapter 5: InstallScript Project Tutorial Step 5: Working with Scripts

////////////////////////////////////////////////////////////////////////////// // // FUNCTION: OnBegin // // EVENT: Begin event is always sent as the first event during // installation. // ////////////////////////////////////////////////////////////////////////////// function OnBegin( ) begin // TO DO: you may change default non-UI settings, for example // // You may also perform your custom initialization steps, check requirements, etc. end;

You can place any code you want to execute at the beginning of your installation in the OnBegin function.

Using the Function Wizard


This example demonstrates how to use the Function Wizard to add a call to the MessageBox function. This displays a message when the user begins the installation.

Task

To add the MessageBox function to your OnBegin function: 1. 2. 3. 4. 5. 6. 7. 8.

Delete the comments (lines beginning with //) between the lines reading begin and end;, and place the text insertion point between the lines. Press CTRL+I to launch the Function Wizard. In the Function Category list, select Built-in dialog. In the Function Name list, select MessageBox. Click Next. In the szMsg fieldwhich contains the message you want to displaytype "Welcome to the Tutorial installation!" (including the quotation marks). In the nType drop-down listwhich specifies the type of message box to displayselect INFORMATION. Click Finish to paste your function call into the script.

Your OnBegin function should now appear as follows:


function OnBegin( ) begin MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION ); end;

Compiling the Script


After modifying the script, you must compile the script for the changes to take effect. Compile the script by clicking the Compile toolbar button, choosing Compile from the Build menu, or pressing CTRL+F7. Status messages are displayed during compilation in the output window of the IDE.

236

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 6: Changing the User Interface

Tip: If compiling the script results in any errors or warnings, you can double-click the error message to highlight the script line where the error occurred.

When you run the installation (by clicking the Run toolbar button, or by pressing CTRL+F5), the message box appears before the Welcome dialog is displayed.

Displaying the Message only for First-Time Installation


The OnBegin function is called for both a first-time installation and a maintenance-mode installation, which means the message box will be displayed when the user reinstalls or removes the program. To display the message box only for a first-time installation, you can place your MessageBox call inside an if statement that determines if the user is running the installation for the first time. InstallScript defines a system variable called MAINTENANCE, which is true if the installation is running in maintenance mode and false otherwise. To display your message box only for a first-time installation, change the OnBegin function to read as follows:
function OnBegin( ) begin if (!MAINTENANCE) then MessageBox("Welcome to the Tutorial installation!", INFORMATION); endif; end;

After you compile and run the installation, the message box appears only for a first-time installation, and not for maintenance mode.

InstallScript
The InstallScript language contains hundreds of functions for performing installation-related tasks, such as working with the registry and INI files, testing characteristics of the target operating system, and displaying dialogs. For details and examples, see the InstallScript Language Reference. The next step of the tutorial explains how to modify the dialogs that are displayed by your installation.

Step 6: Changing the User Interface


This step describes three ways you can modify the user interface of your installation:
1. 2. 3.

Taking different actions based on user input. Modifying user-interface-related script functions to display different dialogs. Modifying the layout and properties of a dialog using the Dialog Editor.

Handling User Input


In your InstallScript code, the event handler functions that contain the dialog functions displayed at run time are:

OnFirstUIBefore, which contains the dialogs to be displayed before data transfer for a first-time

installation.

InstallShield 2010 User Guide

ISP-1600-UG00

237

Chapter 5: InstallScript Project Tutorial Step 6: Changing the User Interface

OnFirstUIAfter, which contains the dialogs to be displayed after data transfer for a first-time

installation.
OnMaintUIBefore, which contains the dialogs to be displayed before data transfer for a maintenancemode installation. OnMaintUIAfter, which contains the dialogs to be displayed after data transfer for a maintenancemode installation.

Note: The OnMaintUIBefore and OnMaintUIAfter event handler functions are not called if the projects Maintenance Experience property is set to "No uninstall or maintenance".

A default InstallScript project created with the Project Assistant defines the OnFirstUIBefore event handler function, which defines the user interface for a first-time installation. OnFirstUIBefore calls dialog functions to display the dialogs that you specified in the Project Assistants Installation Interview page. For example, the following code displays a dialog that prompts the end user to enter a user name and company name:
szMsg = ""; szTitle = ""; nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany );

The end users user name and company name are returned in the last two variables, which you can then use in any way you want, for example, to create a registry key or check against information you have stored in a file.

Changing the Dialogs Displayed


The InstallScript language includes many predefined dialogs that you can display in your installations user interface.

Task

To replace the default user information dialog with one that also prompts the user for a serial number, you can replace the SdRegisterUser function with a call to SdRegisterUserEx: 1. 2.

In the InstallScript view, select OnFirstUIBefore from the Functions node. Declare the string script variable szSerial by adding the following to the declarations before begin in the OnFirstUIBefore() function:
string szSerial;

3.

Delete the lines containing the call to SdCustomerInformation:


Dlg_SdRegisterUser: szMsg = ""; szTitle = ""; nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany ); if (nResult = BACK) goto Dlg_SdLicense2;

4.

Replace the deleted lines with the following:


Dlg_SdRegisterUserEx: szMsg = ""; szTitle = "";

238

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 5: InstallScript Project Tutorial Step 6: Changing the User Interface

szSerial = ""; nResult = SdRegisterUserEx(szTitle, szMsg, szName, szCompany, szSerial ); if (nResult = BACK) goto Dlg_SdLicense2;

5. 6.

Change goto statements that previously pointed to Dlg_SdRegisterUser to point to Dlg_SdRegisterUserEx. Press CTRL+F7 to compile the script.

Using this approach, you can insert additional dialog in your installations user interface, or replace existing ones.

Using the Dialog Editor


The Dialog Editor allows you to modify the appearance of dialog displayed by your installation. As shown in the previous step, the serial number entered by the end user is displayed in the SdRegisterUserEx dialog as plain text.

Task

To modify the dialog so the password is hidden as the end user types it: 1. 2. 3. 4.

In the Dialogs view (which is under the List Views User Interface node), right-click the SdRegisterUserEx icon and select Edit. Select the English (United States) icon. In the Dialog Editor, select the edit field under the Serial Number label. Change the Password property of the Edit control from False to True.

Tip: To maximize the Dialog Editor view, press CTRL+M.

After rebuilding the project (by pressing F7) and running it (by pressing CTRL+F5), the serial number entered by the user will be hidden.

Tip: To restore a dialog to its default appearance, right-click the dialogs icon and select Revert Dialog to Default.

InstallShield 2010 User Guide

ISP-1600-UG00

239

Chapter 5: InstallScript Project Tutorial Step 6: Changing the User Interface

240

ISP-1600-UG00

InstallShield 2010 User Guide

6
Basic MSI Project Tutorial
This tutorial guides you through the process of creating, building, running, and enhancing a Basic MSI installation project using InstallShield. The tutorial is divided into several steps. After the first stepStep 1: Creating, Building, and Testing Your Projectthe other steps can be performed independently, and in any order, so you can focus on the information relevant to your work. In this tutorial, you will learn how to handle many of the tasks that an installation program needs to address, including:

Installing files Setting up shortcuts and registry data Conditionally installing data Registering COM servers Changing the installations user interface Building release images Testing the installation

Throughout the tutorial are links to related topics in the InstallShield Help Library.

Step 1: Creating, Building, and Testing Your Project


This step demonstrates how to create an installation project, build a release image, and test the installation program. After completing this step, you will know how to:

Use the Project Assistant to create a new project. Specify global properties of your installation project. Define features, components, and file links.
ISP-1600-UG00 241

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Build a release image for duplication and distribution. Run your installation program from within InstallShield.

Basic MSI Installation Building Blocks


A Basic MSI installation program is made up of two levels:
Table 6-1: Levels Within a Basic MSI Installation Level Components Description A component is the smallest separately installable piece of your product from the developers viewpoint. A component contains files, shortcuts, registry data, and other data to be installed on the target system. The end user never directly interacts with components. A component can be placed in more than one feature, and the components data will be installed if the user selects at least one feature associated with the component. Features A feature is the smallest separately installable piece of your product, from the end users viewpoint. If the end user selects the Custom setup type during the installation, a dialog with which the user can choose which features to install is displayed. Each feature contains components.

Tutorial Files
The installation program you will create in this tutorial installs and configures an application called Tutorial App. The source files for Tutorial App are located in one of the Samples subfolders within the InstallShield Program Files folder. The default installation location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Tutorial Project

Creating a New Basic MSI Project


The first step in the tutorial is to create a new Basic MSI project.

Task

To create a new Basic MSI project: 1. 2. 3. 4. 5. 6.

Select New from the File menu, or click the New Project button in the toolbar. The New Project dialog appears. Click the Windows Installer tab and select the Basic MSI project type. In the Project Name field, type Tutorial. Leave the default setting for the Project Location field. Select the Create the project in Project Name subfolder option. Click OK to create your project and launch the Project Assistant.

242

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

InstallShield creates a project file called ProjectName.ism, in this case creating the project file Tutorial.ism. The project file stores all the settings you make in the InstallShield IDE. To move a project to another machine, copy the .ism file (and the installation source files) to the other system.

Tip: To change the default directory where new project files are created, type a new path in the Project Location field in the Options dialog (File Locations tab).

Specifying Application Information


After you create a new project, the Project Assistant launches to help you specify project and application information. The first page in the Project Assistant provides a graphical overview of the installation creation process. To begin using the Project Assistant, click the Application Information icon at the bottom of the view. The Application Information page is where you specify general information about the application your project will install.

Task

To specify application information for the tutorial: 1. 2.

Type TutorialCo in the Company Name field. This automatically updates the information in the Web Address field. Type TutorialApp in the Application Name field. The value that you enter in the Application Name field is used on dialogs displayed to the end user. It is also used as the display name for your application in Add or Remove Programs. Leave the default values in the Application Version and Company Web Address fields. In the Application Icon field, click browse button to browse to the Tutorial.exe location. The default location is C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Tutorial Project. Open the .exe file and select the Icon Index:0.

3. 4.

The Application Information panel will look like the following when you are finished.

Figure 6-1: Application Information Panel

InstallShield 2010 User Guide

ISP-1600-UG00

243

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

The application name and company name you enter determine the default location of application shortcuts on the Windows Start menu, and the default value for the INSTALLDIR property, which specifies the default destination for your programs files.

Note: The default value of INSTALLDIR is [ProgramFilesFolder]Your Company Name\Your Product Name. The special form [ProgramFilesFolder] expands to the location of the users Program Files folder at run time. For a list of the other directory properties that are defined by Windows Installer, see the System Folders Set by the Installer section in Windows Installer Property Reference.

Setting Installation Requirements


The Installation Requirements page allows you to easily set installation requirements for the target system. For example, if your application requires a specific operating system in order to run properly, you can indicate that in the first section of this panel.

Operating System Requirements


If your application required Windows 2000 or later to run on the target system, you would select Yes and then select the operating systems with which your application can run properly. For the tutorial, leave No selected

Software Requirements
If your applications installation requires that a particular piece of software be installed on the target system, select Yes and select the required software. To customize the run-time message that will be displayed if the required software is not present on the target system, click on the run-time message and edit.

Note: The run-time message is not displayed in this section until a software requirement is selected.

For the tutorial, leave No selected.

Customizing Installation Architecture


The Installation Architecture page lets you specify the features you want your installation program to display to the end user. A feature is the smallest separately installable piece of your product from the end users standpoint. Individual features are visible to end users when they select a Custom setup type during installation.

Note: Features can contain subfeatures, subsubfeatures, and so forth, to as many levels as your installation program requires.

Your installation architecture currently contains a default feature, Tutorial_Files. The default feature is always installed when an end user runs your installation. In this step, you will add another feature to the installation architecture.

244

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Task

For the tutorial, add a new Help_Files feature: 1. 2. 3.

Select Yes for the Do you want to customize your Installation Architecture? option. Right-click the Installation Architecture node and select New. Name the new feature Help_Files.

When you finish this step, your installation architecture will look like this:

Figure 6-2: Installation Architecture

Adding Files to Your Project


The next step is to add your applications files to the installation project. The Application Files page lets you specify the files you want to associate with each of your features. In this step, you will add the Tutorial executable file to the Tutorial_Files feature.

Task

To add the Tutorial executable to the Tutorial_Files feature: 1. 2. 3. 4. 5. 6.

Select the Tutorial_Files feature from the drop-down list of features at the top of the page. In the tree control (with top node Destination Computer), select the INSTALLDIR node. Click Add Files. An Open dialog is displayed. Browse to Tutorial.exe, which is located in the Tutorial Files source directory. Click Open to add the file to the Tutorial_Files feature. When the file you have added ... may have dependencies message appears, click No. Tutorial.exe has no dependencies. The file is added to the feature and appears in the file list panel on the right.

Note: The key icon next to the file indicates that this file is the key file of the features component. Windows Installer requires that most components have a single key file. The Windows Installer service uses a components key file for several purposes, including checking for the files existence to determine if a component needs to be repaired and using the key file as the default target for a shortcut. When you add an executable file to a feature in a Basic MSI project, the Project Assistant automatically sets it as the key file of the component it creates behind the scenes for the file. For more information, see Setting Component Key Files.
InstallShield 2010 User Guide ISP-1600-UG00 245

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Creating Shortcuts
The Application Shortcuts page lets you specify shortcuts for your applications files on the target systems desktop or Start menu. By default, this page displays a shortcut for each executable that you have included in your installation project. You can delete these, and add shortcuts to other files that you have included in your installation project.

Task

To activate the shortcut to Tutorial.exe:

Click the Launch Tutorial.exe icon. Leave the default setting, Create shortcut in Start menu, selected. InstallShield will create a shortcut to Tutorial.exe on the end users Start menu when the installation is run.

Configuring Registry Data


The Application Registry page lets you specify any registry entries that your application requires. For the tutorial, do not specify any registry entries in this page. Registry entries are covered in Step 2: Shortcuts and Registry Data.

Selecting Dialogs with the Installation Interview


The Installation Interview page lets you specify the dialogs that you want the end user to see when your installation program runs. Based on your answers to the questions on this page, the Project Assistant adds the corresponding dialog to your installation project.

Task

To specify dialogs for the tutorial, do the following: 1. 2. 3. 4. 5. Do you want to display a License Agreement Dialog?Select No. If you selected Yes for this option, you would be able to browse to your license agreement file. Do you want to prompt users to enter their company name and user name?Select Yes. The

installation displays a dialog requesting this information.


Do you want your users to be prompted to modify the installation location of your application?Select

Yes. For more information, see Allowing End Users to Modify the Installation Location.
Do you want users to be able to selectively install only certain parts of your application?Select Yes.

For more information, see Creating Selectively Installable Installations.


Do you want to give users the option to launch your application when the installation completes?Select Yes and browse to the Tutorial.exe file (located in [ProgramFilesFolder]TutorialCo\Tutorial). When this option is set to Yes, the final dialog in the installation presents a check box that allows the end user to immediately launch your application upon clicking the Finish button.

246

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Choosing a Language for Your Installation


The Installation Localization page lets you specify the languages your installation supports, and specify string values and associated identifiers, which you can use in your end user interface to make your installation more easily localizable in other languages.

Edition: For language options in addition to the language that you chose when you installed InstallShield, you must have the Premier edition of InstallShield. For more information, visit the Acresso Web site.

Task

For this tutorial, leave English (United States) selected and change the display names of the installations features by doing the following: 1. 2. 3.

In the list box, select Feature String Data. The table on the right displays all of the feature string entries. In the Value column, click Tutorial_Files (the value associated with the identifier IDS_FEATURE_DISPLAY_NAME2) and change it to Tutorial Files. Click Help_Files (the value associated with the identifier IDS_FEATURE_DISPLAY_NAME3) and change it to Help Files.

Note: For more information, see Creating Multilingual Installations.

Building Your Installation


After defining your installation projects architecture, adding your application files, creating shortcuts, and selecting dialogs, you are ready to build the installation. The Build Installation page lets you specify what type of distribution you want to build and, optionally, the location to which you want to copy the distribution files.

Task

To build the installation you have just created: 1. 2.

Select the CD-ROM option. Click Build Installations.

The output window opens with the Build tab uppermost and displays information about the progress of the build. The build is finished when the Build tab displays the log file information. In the next step, you will run your installation program from the IDE.

Running Your Installation


After completing the Project Assistant steps in this tutorial, you have created a fully functional installation program that installs the Tutorial executable.
InstallShield 2010 User Guide ISP-1600-UG00 247

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Task

To run your installation:

Click the Run button on the toolbar or press CTRL+F5. The installation displays the dialogs that you specified in the Installation Interview page of the Project Assistant. The values you entered in the Project Assistant are displayed to the end user in the appropriate dialogs. For example, at run time, the default value of INSTALLDIR that you specified in the Project Assistant appears in the Choose Destination Location dialog box. If the end user browses for a different destination directory, INSTALLDIR stores the new value. After the installation is complete, you can browse for the directory and find the files installed by your installation. If the installation was successful, you will see the tutorial files installed.

Maintenance Mode
When a user runs an installation a second (or later) time for an application installed on their system, the installation runs in maintenance mode. Maintenance mode allows the user to modify feature selections from the first-time installation, repair the features already installed, or remove the entire application.

Uninstalling the Application

Task

To uninstall the Tutorial application:

Click Uninstall. Now that you have created a basic installation project, click the Installation Designer tab (near the top of the InstallShield window) to expand and fine-tune your installation as illustrated in the next step of the tutorial.

Working in the IDE


After creating a project, you set properties of the project in the InstallShield installation development environment, or IDE. The IDE is arranged in functional categories that help you add or edit information in your project. This and later steps of the tutorial explore several of the IDE views.

Note: The views displayed in the IDE differ, depending on the project type you create.

After completing this step, you will know how to:

Set properties for your program features. Create components and add file links.

248

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Setting Feature Properties


First, you will set additional properties for the features you created in the Project Assistant, such as the feature display name and description. To edit the feature properties, go to the Features view in the IDE.

Task

To set feature properties for this tutorial, do the following: 1. 2. 3. 4. 5.

Open the Features view. The Features view is located in the Organization section of the View List. In the Features view, select the Tutorial_Files feature to display its property grid on the right. Type the following text in the Description field: This feature contains the Tutorial application files. Select the Help_Files feature to display its property grid. Type the following text in the Description field: This feature contains the Tutorial help files

As you enter the display names and descriptions, InstallShield creates a string entrydisplayed as {ID_STRINGn}to represent each value. At run time, if the end user chooses the Custom setup type, the installation program displays a dialog that prompts the user to select which features to install. This dialog displays features using the display name and description you specified here.

Creating Components and File Links


You can add links to additional files in the Files and Folders view. In this step, you will add a file to your Help_Files feature. As you add files in the Files and Folders view, the IDE creates components for you according to Setup Best Practices rules.

Task

To add Tutorial.html to a new component in the Help_Files feature: 1. 2. 3. 4. 5. 6. 7.

Open the Files and Folders view. In the Destination computers folders pane, right-click the Destination Computer icon and verify that Show Components is selected. Select Help_Files from the feature list at the top of the view. Expand the tree in the Destination computers folders pane to see the [INSTALLDIR] folder. Right-click the [INSTALLDIR] folder and select New Component. Name the component Help_Component. In the Source computers folders pane, browse for the Tutorial files source folder containing TutorialHelp.html. Drag the TutorialHelp.html icon from the Source computers files pane to the Help_Component component in the Destination computers folders. InstallShield adds the file to Help_Component component in the Help_Files feature.

InstallShield 2010 User Guide

ISP-1600-UG00

249

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

8. 9.

Click the Help_Component icon to display the components files in the Destination computers files pane. Because each component should have a key file, right-click the TutorialHelp.html file and select Set Key File.

This type of file linking, where the list of files linked to a component does not change, is called static file linking. To link to a directory (and possibly its subdirectories) whose contents might change between builds, see Dynamic File Linking.

Tip: You can use the InstallShield dependency scanners to determine additional files required by your application that are currently not included in your project. For example, Tutorial App uses MFC, so it will be necessary to add the MFC merge module (MFC42.msm) to your project in the Redistributables view if you intend to target systems that do not have the MFC run-time libraries installed.

The next step of the tutorial explains how to build a release image for your installation project.

Building a Release
Before testing an installation program, it is necessary to build a release to update your project settings. A release image contains all of the files to be distributed to the end user on a CD-ROM or from a network location. The simplest way to build a release is to use the Release Wizard. The Release Wizard is where you specify release properties, such as the type of media (CD-ROM, for example) to use and whether to compress files on the media.

Task

To begin using the Release Wizard: 1. 2.

Click the Release Wizard button on the toolbar or choose Release Wizard from the Build menu. In the Welcome panel, click Next to begin defining your release settings.

Naming the Product Configuration and Release


Product Configuration Panel
In the Product Configuration panel, you specify the name for the current product configuration. The product configuration name is the name of a folder (inside your project folder) in which your built release will be placed.

Task

For the tutorial: 1. 2.

Create a new product configuration called Tutorial. Click Next to specify a release name.

250

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Specify a Release Panel


In the Specify a Release panel, specify a release name. The release name is used as the name of a folder (inside the product configuration folder) in which your built release will be placed.

Task

For the tutorial: 1. 2.

Create a new product release called CDROM. Click Next.

Specifying Filtering Settings and Languages


Filtering Settings Panel
In the Filtering Settings panel, you can specify features or components to leave out of the current release.

Task

For the tutorial:

Use the default settings (no filtering), and click Next to continue.

Setup Languages
In the Setup Languages panel, you specify which languages (from among the project languages) the user interface of your installation program should display, and whether to display a dialog from which the user can select the installation language.

Task

For the tutorial:

Use the default settings (include English in the user interface), and click Next to continue.

Selecting the Media Type and Disk Spanning Options


Media Type Panel
In the Media Type panel, you specify the type of media for which you are building a release. The media type you specify indicates the size of the disk image folders the Release Wizard creates. When you build a release for CD-ROM, the Release Wizard divides your disk images into folders, each of which is smaller than 650 MB.

Task

For the tutorial:

Select CD-ROM from the Media Type menu.

InstallShield 2010 User Guide

ISP-1600-UG00

251

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Disk Spanning Options Panel


The Disk Spanning Options panel lets you specify how your program files should be arranged, if multiple disk images are required. The Custom spanning type lets you specify the disk image on which to place the files in particular features.

Task

For the tutorial:

Select Automatic, which lets the Release Wizard determine the disk image on which to place each features files. For more information, see Spanning Installations over Multiple Disks or CDs.

Specifying Compression Settings and Setup Launcher Options


Release Configuration Panel
In the Release Configuration panel, you can specify whether to compress all, none, or some of the files in your installation project.

Task

For the tutorial:

Select Compress all files.

Setup Launcher Panel


The Setup Launcher panel lets you specify whether to create a Setup.exe setup launcher, and whether to include the Windows Installer installers (InstMsiA.exe for Windows 9x and InstMsiW.exe for Windows NT and Windows 2000) with your installation program. The Windows Installer installers are necessary for target systems that do not have the Windows Installer service already, or that have older versions of the Windows Installer service. You can also indicate which version of the Windows Installer service you want to install.

Task

For the tutorial:

Leave the default settings selected. For this step, leave all the defaults selected.

Installing Windows Installer Engine Files


This topic discusses the configurable settings in the Windows Installer Location panel.

252

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Windows Installer Location Panel


In the Windows Installer Location panel, specify where the Windows Installer installers (InstMsiA.exe and InstMsiW.exe) are located, if you specified to include the installers in the previous Setup Launcher panel. You can specify that the installers should be downloaded from a Web site, compressed into Setup.exe, or left uncompressed on the first disk image.

Task

For the tutorial:

Select Copy from source media.

Adding Digital Signature and Password Protection


Digital Signature Panel
The Digital Signature panel allows you to digitally sign your application. Digitally signing your application helps to assure your end users that the code within your application has not been modified or corrupted since publication.

Task

For the tutorial:

Leave the default settings (no digital signature).

Password & Copyright Panel


The Password & Copyright panel allows you to activate password protection for your installation project and to indicate specific information for your applications copyright.

Task

For the tutorial:

Leave the default settings (no password protection or copyright information).

Including .NET Framework Support and Choosing Advanced Settings


.NET Framework Panel
In the .NET Framework panel, specify whether to include .NET Framework support in your release.

Task

For the tutorial:

Leave the default settings (do not include .NET Framework).

InstallShield 2010 User Guide

ISP-1600-UG00

253

Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project

Advanced Settings Panel


The Advanced Settings panel lets you specify additional settings related to the current release, such as the level of compression to use and whether to create a PDF file for SMS distribution.

Task

For the tutorial, select the following settings:

Use long file names Optimize size Generate Autorun.infThis generates a file that enables AutoPlay for your CD-ROM image.

For information about the other settings, click the Help button on the Advanced Settings panel.

Reviewing Your Settings


Summary
The Summary panel displays all of the Release Wizard settings for the current release.

Task

If the settings are correct: 1. 2.

Select the Build the Release check box. Click Finish to build your release.

Status messages for the build in progress are displayed in the output window. When the build is complete, the files to copy onto the CD are placed in the directory:
<ProjectFolder>\Tutorial\cdrom\DiskImages\DISK1.

You can have the IDE copy your built disk images to another directory using the Postbuild tab in the Releases view.

Rebuilding Your Project


After making changes to your project in later steps of the tutorial, you can rebuild the latest release by clicking the Build toolbar button , choosing Build from the Build menu, or pressing F7. The next step of the tutorial explains how to create shortcuts and registry data for an installation program.

Troubleshooting Your Installation


After running your installation, if files are not installed, check the following parts of your project:


254

Verify that INSTALLDIR is set to the proper value. This is set in the General Information view. For this tutorial, the recommended value is [ProgramFilesFolder]TutorialCo\TutorialApp. Verify that your features have components and files associated with them.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 2: Shortcuts and Registry Data

After making any changes to your installation, it is necessary to rebuild your project by clicking the Build button or pressing F7.

Step 2: Shortcuts and Registry Data


This step explains how to use the IDE to:

Create program shortcuts Create registry information

The processes for creating other types of system data are similar to the items described in this step. For more information, view the topics listed below.

Creating Shortcuts
You create and modify shortcuts in the Shortcuts view. The properties of a shortcut include its display name, its target executable and arguments, and the icon it displays.

Creating the Shortcut

Task

In this step you will create a shortcut to Tutorial App in the users Programs folder, under the Start menu. 1. 2. 3. 4. 5.

Open the Shortcuts view. The Shortcuts view is located in the System Configuration section of the View List. Right-click the Programs Menu folder icon, and select New Advertised Shortcut. The Browse for a Component dialog appears. In the dialog, select Tutorial_Files from the Feature drop-down menu and select Tutorial.exe from the files list and click Open to close the dialog. Rename the shortcut icon to an internal name such as Tutorial. Set the following shortcut properties:

Table 6-2: Shortcut Properties Property Display Name Value Tutorial Application Comment To accommodate target systems that do not support long file names, the IDE will create an expression that includes a short file name, as in TUTORI~1|Tutorial App. If you want, you can modify the short file name part of the expression, as in TUTORIAL|Tutorial App.

InstallShield 2010 User Guide

ISP-1600-UG00

255

Chapter 6: Basic MSI Project Tutorial Step 2: Shortcuts and Registry Data

Table 6-2: Shortcut Properties (cont.) Property Description Value Launch the Tutorial application Comment Displayed as a tooltip on systems running Windows 2000 and later. At run time, if the user advertises the product or the feature containing the shortcut, the shortcut is created but the components files are not installed until the user launches the shortcut. Automatically set to the components key file for an advertised shortcut. Browse for Tutorial.exe in the source location, and select its only icon. The icon index identifies a particular icon if there is more than one icon resource in the executable file. The working directory should be set to the default directory for your Save As and Open dialogs.

Advertised

Yes

Target

Advertised shortcut to [INSTALLDIR]Tutorial.exe

Icon File

<TutorialSource>\Tutorial.exe

Icon Index

Working Directory

[INSTALLDIR]

Tip: To create a shortcut to a file already located on the end users machine, set the Advertised property to No, and enter the path to the fileusing Windows Installer directory properties to represent the path to the file, when possible. For example, to launch a copy of Windows Notepad located in the users Windows or WinNT folder, enter the shortcut target as [WindowsFolder]Notepad.exe.

Creating Registry Data


Another common requirement for installation programs is to write information to the target systems registry. To add registry data to a component, you can use the Registry view.

Task

To create a registry value called TutorialData under HKEY_LOCAL_MACHINE\SOFTWARE\Tutorial Co\Tutorial\1.00.0000: 1.

Open the Registry view. The Registry view is located in the System Configuration section of the View List.

256

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 2: Shortcuts and Registry Data

2. 3. 4. 5. 6. 7. 8.

Select Tutorial.exe from the View Filter at the top of the view. In the Destination computers Registry view pane, right-click HKEY_LOCAL_MACHINE, select New, and point to Key. Rename the key SOFTWARE. Repeat the process for subkeys named Tutorial Co, Tutorial, and 1.00.0000. In the Destination computers Registry data pane, right-click and select New String Value. Rename the value TutorialData. Double-click the TutorialData value and enter [INSTALLDIR] in the Value data field.

The Registry view should now appear as follows:

Figure 6-3: Registry View

Tip: To write the value of a Windows Installer property to the registry, you can use the form [PropertyName]. In this example, creating a registry value whose data is [INSTALLDIR] writes the value of INSTALLDIR to the registry.

At run time, if the end user selects a setup type or collection of features that includes the Tutorial.exe component, the registry data is created on the target system.

Verifying that the Shortcut Was Created

Task

To verify that your installation program created the shortcut: 1. 2.

Rebuild your project by clicking the Build toolbar button or pressing F7. Run the project by clicking the Run button or pressing CTRL+F5 (first removing any existing version of the program from your system). A shortcut to the Tutorial application should be present in the Programs folder of your Start menu.

InstallShield 2010 User Guide

ISP-1600-UG00

257

Chapter 6: Basic MSI Project Tutorial Step 3: Registering COM Servers

Verifying that the Registry Data Was Created

Task

To verify that the installation program created the registry data: 1. 2.

Launch Tutorial App from its shortcut. From the Tutorial menu, choose Verify Registry Data. If the registry data was created, a message box displaying the value of INSTALLDIR is displayed.

The next step of the tutorial explains how to register a COM server (self-registering file).

Step 3: Registering COM Servers


For many files, the installation programs only requirement is to copy the files from the source media to the target system. For others, the installer also needs to register the files with the target system. One category of file that needs extra handling is a COM server, commonly known as a self-registering file or ActiveX control. A COM server is usually a DLL or OCX that requires extra information to be written to the target systems registry before applications and Web pages that use the self-registering file can find it.

Creating a COM Server Component


To install and register these and other types of files, you can use the Component Wizard. The Component Wizard creates components that copy the files, and perform any additional registration steps. In this step you will create a component that installs and registers Tutorial.ocx and an HTML file that uses it.

Task

To create a COM server component: 1. 2. 3. 4. 5. 6. 7. 8.

Open the Files and Folders view. The Files and Folders view is located in the Application Data section of the View List. At the top of the Files and Folders view, select the Tutorial_Files feature from the Add new components to the feature menu. In the Destination computers folders pane, right-click the [INSTALLDIR] folder and select Launch Component Wizard. In the Welcome panel of the Component Wizard, select the Let me select a type and define the component myself option and click Next. In the Component Type panel, select the COM Server icon, type Tutorial.ocx in the Component Name field, and click Next. In the COM ServerDestination panel, verify that the destination is set to [INSTALLDIR]. In the COM Server File panel, click the browse button next to the COM Server File field and browse for Tutorial.ocx in your tutorial files source directory. Click Next. After the Component Wizard has extracted the COM information, review the COM information and click Finish to create the component.
ISP-1600-UG00 InstallShield 2010 User Guide

258

Chapter 6: Basic MSI Project Tutorial Step 4: Conditions and Properties

The next step is adding the HTML file to the component you just created.

Task

To add the HTML file to the component: 1. 2. 3.

In the Destination computers folders pane of the Files and Folders view, select the new Tutorial.ocx component. Drag the file TutorialCtrl.html from the Source computers files pane to the Destination computers files pane. Verify that Tutorial.ocx is marked as the key file of its component.

Note: See Registering COM Servers for other options for registering self-registering files, including extracting COM information each time that you rebuild the releasefor COM servers with interfaces that change between buildsor calling the files self-registration functions.

Verifying that the COM Server Was Registered

Task

After rebuilding your release (by pressing F7) and running the installation (by pressing CTRL+F5), you can verify that the COM server was registered properly: 1. 2. 3.

Launch Tutorial App using its shortcut in the Programs menu, or by double-clicking its icon. Choose COM Server Test from the Tutorial menu. If the COM server was registered correctly, the HTML page displays a success message.

The Component Wizard can also create components that install and configure fonts and Windows NT services. The next step of the tutorial demonstrates how to install files conditionally.

Step 4: Conditions and Properties


In this step, you will learn how to conditionally install data on a target system.

Operating System Conditions


A common requirement for installation programs is to install certain files on a system only if particular conditions are met. For example, files may be specific to an operating system or language, or should be installed only if the user has appropriate privileges. To install a component (and its files and other data) only on particular operating systems, you can use the components Operating Systems property. You can modify a components properties by opening the Setup Design view, expanding the feature icon that contains the feature, and selecting the desired component.

InstallShield 2010 User Guide

ISP-1600-UG00

259

Chapter 6: Basic MSI Project Tutorial Step 4: Conditions and Properties

Task

To create a component that will be installed only on systems running Windows 2000 or later: 1. 2. 3. 4.

Open the Setup Design view. The Setup Design view is located in the Organization section of the View List. Right-click the Help_Files feature and select New Component. Rename the component Windows_NT_Files. Expand the Windows_NT_Files component, click the Files icon for the component, and add the file ReadmeNT.txt from your tutorial files source folder by right-clicking in the Files pane and browsing to the file. Right-click the .txt file and select Set Key File. Click the Windows_NT_Files component to display the components property grid. Select the components Condition property and click the browse button to launch the Condition Builder dialog. Create the following condition: VersionNT>=500. For information on creating conditions, see Building Conditional Statements. Click OK to close the Condition Builder dialog and add the condition.

5. 6. 7. 8. 9.

After you rebuild (by pressing F7) and run the installation (by pressing CTRL+F5), and any files or other data contained in the component will be installed only if the target system is running Windows 2000 or later.

Windows Installer Conditions


The Windows Installer service stores some global information about your installation program and about the users operating system in properties. Some properties are built into the Property table of your MSI database, and some are created and set by the Windows Installer engine when the user launches an installation program. Properties commonly used in conditions include:

AdminUser, which is set if the user running your installation has administrative privileges. (AdminUser is always set on Windows 9x.) VersionNT and Version9X, numeric values describing the operating system and version the user is running. PhysicalMemory, which contains the amount of RAMin megabyteson the users system.

A Windows Installer condition is a statement of logic that compares a property value against a constant value, or tests if a property exists. For example, Windows Installer defines properties called ScreenX and ScreenY, which contain the users monitor resolution in pixels. A Windows Installer condition that checks that the user has at least 800 by 600 resolution would read (ScreenX>=800) And (ScreenY>=600). Conditions can also test if a property is defined. For example, the AdminUser property is set only if the user has administrative privileges, and a condition that tests if a user has administrative privileges is simply AdminUser.

260

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 6: Basic MSI Project Tutorial Step 5: Changing the End-User Interface

Task

To create a component that will be installed only if the user has administrative privileges: 1. 2. 3. 4. 5. 6. 7.

Right-click the Help_Files feature and select New Component. Rename the component Admin_Component. Expand the Admin_Component component and click the Files icon. Add the file AdminOnly.txt from your tutorial files source folder, and set it as the key file of the component. Click the browse button in the components Condition property to display the Condition Builder dialog. In the Condition Builder dialog, type AdminUser in the Condition(s) field. Click OK.

At run time, the components data are installed only if the user has administrative privileges. The next step of the tutorial describes how to modify your installations user interface.

Step 5: Changing the End-User Interface


This step describes three ways you can modify the end-user interface of your installation program:

Specifying the dialogs to be displayed during the installation. Modifying the layout and properties of a dialog using the Dialog Editor.

Adding a New Dialog


The Basic MSI project includes many dialogs that you can display in your installation programs user interface. The topic, Running Your Installation, in this tutorial, showed the dialogs your installation program displays based on your selections in the Project Assistants Installation Architecture page.

Task

To create a new dialog: 1. 2. 3. 4.

Open the Dialogs view. The Dialogs view is located in the User Interface section of the View List. Right-click the All Dialogs explorer and then click New Dialog. The Dialog Wizard opens. Click Next to dismiss the Welcome panel. In the Dialog Template panel, click Interior Wizard Panel, and select the Let me insert this dialog in a User Interface sequence check box. In the User Interface panel, select Installation in the User Interface Sequence list. In the list of dialogs, select InstallWelcome. Based on these selections, InstallShield will insert your new dialog in sequence immediately following the InstallWelcome dialog.

InstallShield 2010 User Guide

ISP-1600-UG00

261

Chapter 6: Basic MSI Project Tutorial Step 5: Changing the End-User Interface

5. 6.

In the Dialog Position and Condition panel, leave the default settings, and click Finish. Your new dialog appears in the Dialogs list. Right-click the dialog and select Rename. Rename the dialog WelcomeBitmap.

Using the same technique, you can insert additional dialogs in your installations user interface.

Modifying Dialog Layout in the Dialog Editor


The Dialog Editor allows you to modify the appearance of dialogs displayed by your installation program.

Task

In this step, you will modify the WelcomeBitmap dialog that you just created: 1. 2. 3. 4. 5. 6. 7.

First, create a bitmap (using a program like Microsoft Paint) that measures 300 by 150. Open the Dialogs view. Expand the WelcomeBitmap dialogs node. Click English (United States) to open the Dialog Editor. Click the Dialog Bold Title text box at the top of the dialog. In the Text field, type Welcome Bitmap. This changes the dialogs main title. Click the Dialog Normal Description text box at the top of the dialog. In the Text field, type Displays my welcome bitmap. This changes the dialogs description. Click the Bitmap button on the Dialog Control toolbar and use the cursor to drag a box on the dialog. Set the Height to 150 and the Width to 300. In the File field browse to the bitmap file that you created in step 1.

After rebuilding the project (by pressing F7) and running it (by pressing CTRL+F5), the Welcome Bitmap dialog will appear after the Install Welcome dialog.

Tip: To maximize the Dialog Editor view, press CTRL+M.

262

ISP-1600-UG00

InstallShield 2010 User Guide

7
Globalization Tutorial
The Globalization tutorial introduces you to the tools and options that InstallShield provides for creating a global installation package. A global installation is one that has the potential to run in many different languages. Depending on how you choose to build your installation, you can either include all the languages in one package and let the end user select the language, or you can build individual installation packages for each language that you target. This tutorial walks you through the process of creating an all-encompassing installation.

Edition: The Premier edition of InstallShield must be installed on your development system in order to successfully complete this tutorial. For more information, visit the Acresso Web site.

If you have not already done so, you may want to run through the Basic MSI tutorial to familiarize yourself with how to create an installation package. When finished with the Basic MSI Tutorial, you will have a Basic MSI installation project that is ideal for adding additional languages. The complete project file for the Basic MSI tutorial was installed with this product in one of the Samples subfolders within the InstallShield Program Files folder. The default location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Tutorial Project\Tutorial

Project: Almost all of the information in the tutorial also applies to InstallScript installation projects. Differences are explicitly noted in the tutorial text.

Opening the Project File


This tutorial uses Othello.ism, which is a sample project file that is installed with InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

263

Chapter 7: Globalization Tutorial Selecting the Target Languages

Task

To begin the tutorial:

Open Othello.ism, which is located in one of the Samples subfolders within the InstallShield Program Files folder. The default installation location is C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Basic Installation Project.

Project: Othello.ism is a Basic MSI installation project. Almost all of the information in this tutorial also applies to InstallScript installation projects; differences are explicitly noted in the tutorial text.

Selecting the Target Languages


The first step in creating a global installation is to select the languages that you want to target. For this tutorial, you will add two languages to your installation project: German and Polish.

Task

To add languages to your project: 1. 2. 3.

In the View List under Installation Information, click General Information. In the Setup Languages setting,click the ellipsis button (...). The Setup Languages dialog box opens. Select the English (United States), German, and Polish check boxes.

InstallShield adds string entries for English, German, and Polish to your project. Each string entry consists of a language-independent identifier and a corresponding language-specific value. The string entries include the built-in user-interface string resources that are already translated. To view all of the string entries, you can use the String Editor view. (In the View List under User Interface, click String Editor.) Every time that you add a new string entry to your default language, a parallel entry is made to the string entries for all of the other languages that are in your project.

Editing Language-Specific String Entries


The next step is to edit string entries in your installation project. You will edit string entries for three different settings: The features display name, the shortcuts display name, and the shortcuts description. (The shortcuts description will be created as part of the next step in this tutorial.)

264

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 7: Globalization Tutorial Creating String Entries

Feature Display Name

Task

To provide a display name for a feature: 1. 2. 3.

In the View List under Organization, click Setup Design. In the Setup Design explorer, click ProgramFiles. In the Display Name setting in the right pane, enter Program Files if it is not already there.

If you click anywhere else within the Setup Design view, you will see that the text that you entered has been preceded by a string identifier, which is enclosed within curly brackets ({}). You can view all of your projects string entries by clicking the ellipsis button (...) that is displayed when you click the Display Name setting.

Shortcut Display Name

Task

To add a display name for the shortcut: 1.

In the Setup Design explorer, expand the ProgramFiles feature, and then expand the Program_Executables component. The component Program_Executables contains a shortcut to the file Othello.exe.

2. 3.

Click the Shortcuts icon under the Program_Executables component. In the Shortcuts explorer, click the Othello shortcut. InstallShield displays the shortcuts settings in the right pane. Currently, the Display Name setting is set to Othello. The value is preceded by a string identifier, which is enclosed within curly brackets ({}).

4.

To change the display name, enter the new name in the Display Name setting.

Creating String Entries


Because many of your text strings might be used in multiple places in your project, it is inefficient to store each instance of these strings in the project. Instead, you can create the string once, and use it anywhere a string is needed. To help streamline the process of localizing a project, all of the text strings that may be displayed at run time during the installation process are available in one consolidated view: the String Editor view. You can use this view to create new string entries. For the shortcuts Description setting, you are going to enter your new string entry through the String Editor view. Then, you will associate that string with the shortcuts description.

InstallShield 2010 User Guide

ISP-1600-UG00

265

Chapter 7: Globalization Tutorial Including Language-Specific Files and Components

Task

To create a new string entry and use it for the shortcuts Description setting: 1. 2.

In the View List under User Interface, click String Editor. Do one of the following:


3.

Click the New button. Press the INSERT key.

The String Entry dialog box opens. In the String Identifier box, enter the following:
MYSTRING

4.

In the Value box, enter the following text:


This is the description of the Othello shortcut.

5. 6. 7. 8. 9.

In the Comments box, you can optionally specify an internal note about the string entry. The comments are not displayed at run time. Click OK. InstallShield adds new rows in the String Editor view, one for each language (English, German, and Polish). In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, click the Othello shortcut. InstallShield displays the shortcuts settings in the right pane. In the bottom-right pane, click the String Table tab.

10. Right-click the MYSTRING row, and then click Select string.

Including Language-Specific Files and Components


The next step in creating a global installation involves including language-specific files and components within your installation project. For example, although many of your program files may be languageindependent, your help files and run-time strings are both language-specific. For the purpose of this exercise, you will add three new components to your project. Each component contains a Readme file that is localized in all of your supported languages.

Task

To add a component to your project: 1. 2. 3.

In the View List under Organization, click Setup Design. In the Setup Design explorer, right-click the feature called ProgramFiles, and then click New Component. Type English_Readme for the components name.
ISP-1600-UG00 InstallShield 2010 User Guide

266

Chapter 7: Globalization Tutorial Specifying Component Installation Conditions

4.

Repeat this process two more times. Name these components Polish_Readme and German_Readme.

Translated versions of a simple Readme file are included with InstallShield. These files are located in the InstallShield Program File folders Samples\WindowsInstaller\Basic Installation Project\Data Files\Readme subfolder.

Task

To add a file to the English_Readme component: 1. 2. 3.

Expand the new English_Readme component, and then click the Files icon under the English_Readme component. Right-click in the Files list and click Add. Browse to the English.txt file, and then click Open.

Repeat these steps for the German and Polish components, adding Deutsch.txt to and Polski.txt, respectively.

Specifying Component Installation Conditions


Now that you have created your language-specific components, you need to include logic that will let the installer know which of these components should be installed. By specifying a component condition, you can determine the default language of the target system and then install the appropriate file. Each of the three language-specific components that you created will need a condition. If that condition evaluates to True, the component is installed.

Task

To create the component condition: 1. 2. 3. 4.

Click the German_Readme component. In the right pane, click the Condition setting, and then click the ellipsis button (...) for this setting. The Condition Builder dialog box opens. In the Properties list, select SystemLanguageID, and then click the Add button. In the Operators list, select the equals sign (=), and then click the Add button. The Condition(s) box contains SystemLanguageID =, which reflects the selections you previously made.

5.

Next you need to provide a value that will be checked when the installation is run. Because you are currently editing the German component, enter 1031 after the equal sign. 1031 is the language ID for German. Since the component is installed only if this equation evaluates to true (that is, the target systems language is German), this component is not installed on any machine that is not running in German.

Follow the same steps from above to add a condition to the Polish_Readme component. Instead of using 1031 as the language value, use 1045, which is the language ID for Polish.

InstallShield 2010 User Guide

ISP-1600-UG00

267

Chapter 7: Globalization Tutorial Translating the Strings

You need to choose one language as your default language. For this example, English is the default. Therefore, the condition that you use for the English_Readme component differs from the other two. The condition for the English_Readme component should appear as follows:
SystemLanguageID<>1045 AND SystemLanguageID<>1031

With this logic, if the language of the target machine is not German or Polish, the English_Readme component is installed.

Project: To learn how to specify which language-dependent components are installed at run time for InstallScript and InstallScript object projects, see Installing Components Based on Language.

Translating the Strings


Before you can build your installation project, you need to translate the English strings that you entered for the features display name, the shortcuts display name, and the shortcuts description. For this tutorial, they have been translated for you. All you have to do is enter the correct text for the German and Polish string entries. You can use the String Editor view to do this.

German String Values


Open the String Editor view. Find each of the following string identifiers for the German language. You can enter the string identifier in the Type a string to filter by box to easily find each string. As an alternative, you can click the Identifier column heading to sort all of the string entries by identifier. Update the German values for the three string entries as follows:
Table 7-1: German String Entries Identifier FEAT_DISPLAYNAME SHORTCUT_DISPLAYNAME MYSTRING Value Programmdateien Othello Verknpfung Dies ist die Beschreibung der Verknpfung fr Othello.

Polish String Values


Update the Polish values for the three string entries:
Table 7-2: Polish String Entries Identifier FEAT_DISPLAYNAME SHORTCUT_DISPLAYNAME MYSTRING Value Pliki Programu Skrt do Othello Opis skrtu Othello.

268

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 7: Globalization Tutorial Building the Installation

In most translation situations, you export your string entries for translation. To learn more, see Translating String Entries. However, for the purposes of this tutorial, it is easier to edit the string entries within the String Editor view.

Building the Installation


Your installation project has been fully globalized and is ready to test. Before you can test the installation, however, you need to build it.

Task

To build your installation: 1. 2. 3. 4.

Click the Release Wizard button on the toolbar. In the first two panels, specify a product configuration and release name. Accept the default settings for every other panel in the wizard except the Setup Languages panel. The Setup Languages panel enables you to choose which languages to include in your installation. Only the languages that you specified in the General Information view appear in the list of available languagesEnglish, Polish, and German. Select the check box next to each language. Also, ensure that you select the Display the Setup Languages Dialog check box. This dialog allows end users to select the language in which they want the installation to run. Accept the default settings provided in the remaining wizard panels. When you reach the Summary panel, ensure that the Build the Release check box is selected, and then click the Finish button. InstallShield builds the release.

5. 6. 7. 8.

Running the Installation


Task To run your installation: 1. 2.

Click the Run Setup button on the toolbar. The Choose Setup Language dialog appears. To run your installation, select German (Standard) and click OK. From this point forward, every dialog is displayed in German.

Note: After an installation is run in a particular language, Windows Installer caches this information and always runs the installation in that language.

As the installation wizard progresses, you may notice that some buttons are not properly sized. You can easily fix this problem by opening the Dialog Editor and resizing the controls so the text fits in the control.

InstallShield 2010 User Guide

ISP-1600-UG00

269

Chapter 7: Globalization Tutorial Testing the Installation

In the Custom Setup panel (in German it is called Angepasstes Setup), the feature name is now Programmdateien. Your localized string entries are a part of the installation.

Testing the Installation


The last step is testing the globalized installation that you created.

Task

To test the installation: 1. 2.

Open the Start menu and select Programs. The Othello shortcut is displayed as Othello Verknpfung. You can see the shortcuts description, which also appears in German. Navigate to the installation directory for Othello. It should be in <Program Files Folder>\Shakespeare Inc\Othello. The readme file that you installed is called Deutsch.txt.

270

ISP-1600-UG00

InstallShield 2010 User Guide

8
Referencing a DIM in a Basic MSI Project Tutorial
A DIM is an XML-format manifest that contains information about files and other data that will ultimately be included in an installation. In the collaborative model of installation authoring, which provides a solution enabling collaboration between application developers and installation developers, application developers create the DIMs. Each DIM can then be referenced by the installation developer in a Basic MSI project using InstallShield and consumed during the build of the installation itself.

Project: The following project types support DIM references:

Basic MSI Merge Module

Tutorial Overview
This tutorial covers the following information about referencing a DIM in a Basic MSI project:

Adding a DIM Reference to a Basic MSI Project

Adding a DIM Reference Using the Setup Design View Adding a DIM Reference Using the DIM References View

Reviewing the Contents of a Referenced DIM Building and Running the Installation

Objective
The main objective of this tutorial is to add and configure a DIM reference in a Basic MSI project using InstallShield.

Audience
The intended audience for this tutorial is installation developers who will reference DIMs (created by application developers) in a Basic MSI project before building an installation using InstallShield. Some knowledge of creating and building projects using InstallShield is assumed.
InstallShield 2010 User Guide ISP-1600-UG00 271

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Adding a DIM Reference to a Basic MSI Project

Tutorial Files
Sample DIMs are included in the Samples subfolder within the InstallShield Program Files folder. The default installation location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\DIMReferenceTutorial

Sample project files referenced in the tutorial (such as Othello.ism) are included in the Samples subfolder within the InstallShield Program Files folder. The default installation location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Basic Installation Project

Adding a DIM Reference to a Basic MSI Project


You can use either the Setup Design view or the DIM References view to consume a DIM created by your application developers. Similar to a component or a merge module, a DIM reference must be associated with a feature in order to be installed. At run time, the DIMs contents will be installed only if the parent feature is installed. In this tutorial, you will add two DIM references to a Basic MSI project. As part of the hands-on tasks, you will add DIM references using both views.

Task

Launch InstallShield, and then perform the following:

Create a Basic MSI project, and then save the project as Test.ism.

Adding a DIM Reference Using the Setup Design View

Figure 8-1: Context Menu Command for Adding a DIM Reference in the Setup Design View

You can use the Setup Design view to add new DIM references to your project. As with components, if a DIM reference is not yet associated with a feature, the DIM icon has a red exclamation point ( ). You can use the Setup Design view to associate a DIM that already exists in the project with a feature. In the Setup Design view, right-click the desired feature, click Associate DIM References, and then select the desired DIM.

272

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Adding a DIM Reference to a Basic MSI Project

If the DIM has been modified since the time your project was last loaded, you can right-click the DIM icon and click Refresh. In the next task, you will add a DIM reference using the Setup Design view.

Task

To add a DIM reference in the Setup Design view: 1. 2. 3. 4. 5. 6.

Open the Test.ism project that you created earlier. In the Installation Designer, expand the Organization view group, and then click Setup Design. Create a new feature. Name the feature SampleApp. In the Setup Design explorer, right-click SampleApp and click New DIM Reference. The Open dialog box opens. Browse for the DemoApp.dim file, which is in the Samples subfolder within the InstallShield Program Files folder. The default location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\DIMReferenceTutorial

7.

Click Open.

InstallShield adds DemoApp.dim to the Setup Design explorer in the Setup Design view.

Adding a DIM Reference Using the DIM References View

Figure 8-2: Context Menu for Adding a DIM Reference in the DIM References View

You can also use the DIM References view to add new DIM references to your project. As with components, if a DIM reference is not yet associated with a feature, the DIM icon has a red exclamation point. You can associate an existing DIM with a feature using the Setup Design view. In the Setup Design view, right-click the desired feature, click Associate DIM References, and select the desired DIM icon. If the DIM has been modified since the time your project was last loaded, you can right-click the DIM icon and select Refresh.

InstallShield 2010 User Guide

ISP-1600-UG00

273

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM

Reviewing the Contents of a Referenced DIM


Similar to how InstallShield Collaboration, a DIM authoring product, displays the contents of a DIM, the InstallShield environment displays the DIM information in several tabs. The tabs and the contents of the referenced DIMs are displayed in the Setup Design view and the DIM References view in InstallShield. When you view the contents of a DIM reference in either the Setup Design view or the DIM References view, you see the global DIM information set by the developer on the General tab. This global DIM information includes the DIM name, UUID, and version. If the DIM contains any SQL scripts or IIS data, you must set up the corresponding data in the SQL Scripts or Internet Information Services view. The General tab contains links to these views.

Figure 8-3: Variables Tab

On the Variables tab, you see any build variables and run-time variables that the developer defined in the DIM. For build variables, you must set the Value field to an existing InstallShield path variable. The value authored in the DIM is displayed in the Unit Test Value column. For run-time variables, you must set the Value field to a hard-coded value or to a Windows Installer property.

274

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM

Figure 8-4: Meta Info Tab

On the Meta Info tab, you see a read-only view of the meta tags defined by the application developer. These tags can contain special instructions for using the DIM; therefore, it is recommended that you read the meta tags before building your project.

InstallShield 2010 User Guide

ISP-1600-UG00

275

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM

Figure 8-5: Data Tab

The Data tab displays a summary of the types of data contained in the DIM.

Figure 8-6: Command in Shortcuts View to Create Shortcut to a File in a DIM

DIMs do not contain shortcuts because it is typically your responsibility, as the installation developer, to specify where shortcuts should be placed on a target system. This helps ensure that all product shortcuts are created in the same directory of the Programs menu, for example. To create a shortcut to a file inside a DIM, you can use the Shortcuts view. When you right-click the folder in which the shortcut should be created, click New Shortcut to File in DIM. You are then prompted to select the desired DIM, file set, and specific file.

276

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM

Figure 8-7: Dependencies Tab

On the Dependencies tab, you see the dependencies of the selected DIM. For each dependency, you must select the .dim file that satisfies the dependency. In the next task, review the contents of the DIM reference that you added to your project.

Task

To review the contents of the DIM references in your project: 1. 2. 3.

Open the DIM References view. In the DIM References explorer, select DemoApp.dim. Click each tab and view the contents to verify the information for the DIM.

When you view the contents of the Dependencies tab in the DemoApp DIM reference, notice that DemoShared is listed as a dependency. You will need to set the source path directory to DemoShared in the following task.

Task

To set the source path directory for a dependency in a DIM reference: 1. 2. 3.

In the DIM References explorer, select DemoApp.dim, and then click the Dependencies tab. For the DemoShared dependency, click the Source Path field, and then click the ellipsis button (...). Browse for DemoShared.dim. The default location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\DIMReferenceTutorial

4.

Click Open. InstallShield adds the path to DemoShared.dim in the Source Path field. In addition, InstallShield adds a DIM dependency to the DIM References explorer. By default, InstallShield

InstallShield 2010 User Guide

ISP-1600-UG00

277

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM

always lists any dependencies associated with a DIM when you set the source path location of the dependency.
5.

Save your project.

Building your project is essentially the final step to consuming a DIM after you add a DIM reference to your project (assuming that you have created a complete installation containing all the necessary elements of an installation). Now that you have a basic understanding of how to add a DIM reference, complete the next task to create and build an actual installation that has consumed a DIM. Before working on the next task, you will need to close your Test.ise project, and then open the Othello.ism sample project. The default installation location is C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\Basic Installation Project. Then you will add a DIM reference to DemoApp.dim.

Task

To add a DIM Reference in the Othello.ism sample project: 1. 2. 3.

Open the Setup Design view. In the Setup Design explorer, right-click Program Files, and then click New DIM Reference. The Open dialog box opens. Browse for the DemoApp.dim file, which is in the Samples subfolder within the InstallShield Program Files folder. The default location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\DIMReferenceTutorial

4.

Click Open.

InstallShield adds DemoApp.dim to the Setup Design explorer in the Setup Design view. After you add a DIM reference, remember to review the contents of the referenced DIM and resolve any variables or source path directories. In the next task, you will set the source path directory for the dependency specified in the DemoApp.dim reference that you added to Othello.ism.

Task

To set the source path directory for a dependency in DemoApp.dim: 1. 2. 3. 4.

Open the DIM References view. In the DIM References explorer, select DemoApp.dim, and then click the Dependencies tab. For the DemoShared dependency, click the Source Path field, and then click the ellipsis button (...). Browse for DemoShared.dim. The default location is:
C:\Program Files\InstallShield\2010\Samples\WindowsInstaller\DIMReferenceTutorial

5.

Click Open. InstallShield adds the path to DemoShared.dim in the Source Path field. In addition, InstallShield adds a DIM dependency to the DIM References explorer. By default, InstallShield always lists any dependencies associated with a DIM when you set the source path location of the dependency.

278

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Building and Running the Installation

Building and Running the Installation


At run time, all of the referenced DIMs contents will be installed if the parent feature associated with the DIM reference is installed. In the final task, build and run the installation to ensure that your DIM reference has been consumed at run time.

Task

To consume the DemoApp.dim that you referenced in Othello.ism:

Build and run the installation. Congratulations! You have just completed the Referencing a DIM in a Basic MSI Project tutorial.

InstallShield 2010 User Guide

ISP-1600-UG00

279

Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Building and Running the Installation

280

ISP-1600-UG00

InstallShield 2010 User Guide

9
Creating Installations
If you have ever installed an application onto your computer, you have seen an installation in action from the end users perspective. An installations primary task is to transfer files from the source medium to the local drive. An installation often also displays a user interface to obtain end user selections, configures the target system (for example, makes any required registry entries and creates shortcuts), and enables modification or uninstallation of the installed application. Creating an installation involves performing some or all of the following tasks.

Specify Installation Information


Basic information that you enter in the General Information view is used in various parts of the installation; for example, the product name is used to create the application information registry key.

Organize and Transfer Files


File transfer involves copying files from the source medium, such as a CD or DVD, to a local drive on the end users machine. Depending on the configuration the end user choosesby selecting a setup type (in an InstallScript or InstallScript MSI installation) or featuresall or only some of the files may be transferred to the local disk. Organize the files to be installed into setup types and features to help your end users select the most appropriate files. Within each feature, organize the files into components according to their type and purpose, for example, files that are installed to the same target folder.

Configure the Target System


In addition to installing files, many installations need to configure the target system by creating shortcuts and program folders, modifying the registry, modifying initialization file (.ini file) data, configuring Open Database Connectivity (ODBC) resources, modifying environment variables, or modifying .xml files.

Customize Installation Behavior


InstallShield offers wide-ranging customization options. InstallScript installations are driven by InstallShields simple but powerful InstallScript programming language, whichin addition to its builtin functionsenables you to call .dll and Windows API functions and launch child installations and

InstallShield 2010 User Guide

ISP-1600-UG00

281

Chapter 9: Creating Installations

other applications from your installation. Windows Installer-based installations, including InstallScript MSI installations, can use custom actions to run InstallScript, VBScript, or JavaScript code; call .dll functions; run executable files; call a managed method in a managed assembly; set a property or a directory; trigger an error and end the installation; or run other installation packages.

Define the End-User Interface


An installations end-user interface provides information and installation configuration options to the end user. Through the user interface, an end user can choose to install only part of a product, choose to leave some files on the source medium, view a license agreement, or provide the installer information that may be necessary to properly configure the installation. The user interface can be customized to meet the needs of your installation. For example, you can prompt a user for a serial number before starting the installation to protect your software against illegal use. During file transfer, an installation can display billboards that provide product information such as new features or usability tips. A status bar may also be displayed to show the progress of the file transfer process.

Configure Servers
A server side installation may need to create and manage new Internet Information Services (IIS) Web sites, manage COM+ applications and components, or manage and organize SQL scripts by server connections and settings.

Prepare Installations for Update Notification via FLEXnet Connect


FLEXnet Connect lets you automatically notify your Web-connected end users when patches, updates, and product information for your application are ready for release. To take advantage of FLEXnet Connect, you must enable FLEXnet Connect in your original installation.

Add Mobile Device Support


You can add to your project an installation for mobile devices such as Microsoft Windows Mobile powered devices and Palm OS devices. When you build a release for the installation, InstallShield creates an installation that installs your application to the end users desktop machine and to the mobile device. For an overview of the different mobile device options that InstallShield supports, see Creating Installations for Mobile Devices.

Prepare the Installation for Maintenance and Uninstallation


To uninstall, modify, or repair an application, the operating system must have some indication that the application is present. To accommodate this, an installation registers an application with the operating system so that it can be easily maintained or uninstalled. Much of the information registered in this process is available to the end user through Add or Remove Programs in the Control Panel (on Windows 2000 and later systems). For example, technical support contact information, product update information, product version, and product publisher information are registered in this process.

282

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

Build, Test, and Deploy the Installation


Once you have created your installation project, you will want to build, test, and deploy the installation: create the files that you will release to your users, test the installation for errors, and optionally copy the files to a local or network location or an FTP site. Create Trialware Offering prospective customers a free trial version of your product can be a highly effective sales tool, but it carries the risk that some will abuse the privilege and continue to use the product without paying for it. InstallShield enables you to create a protected trial version of your product without requiring you to modify the source code.

Before You Begin


The Before You Begin section of the InstallShield Help Library contains information that is helpful to installation authors as they create new installation projects with InstallShield. The topics provide background information on Windows Installer, the Certified for Windows Vista program, INSTALLDIR, TARGETDIR, and other areas of installation development.

Requirements for the Certified for Windows Vista Program


Microsoft established a list of requirements that a product and its installation must fulfill in order to become certified for Windows Vista. The requirements outline criteria that help make a product more compatible, reliable, and secure when running on Windows Vista systems. Products that meet the Certified for Windows Vista program requirements can carry the Certified for Windows Vista logo.

Qualifying for the Certified for Windows Vista Program


Products must be independently tested by a Microsoft-approved testing authority before they can be certified. To learn how to qualify for the Certified for Windows Vista program, visit the Certified for Windows Vista area of Microsofts http://www.InnovateOnWindowsVista.com site. This Web site has a document that lists all of the technical requirements for the Certified for Windows Vista program. It also has a document that contains all of the test cases that a product must pass.

Certified for Windows Vista Validation Suites in InstallShield


Validating your installation package or merge module may help you identify whether your product meets installation requirements for Microsofts Certified for Windows Vista program. If a package or merge module fails one or more validation rules, InstallShield reports the specific rules that were violated and offers additional information to help you troubleshoot the problem. Therefore, if you are interested in being able to use the Certified for Windows Vista logo, consider using both of the following suites to validate your installation package:

InstallShield Certified for Windows Vista Validation SuiteThis suite consists of a number of

InstallShield internal consistency evaluators (ISICEs) that help you identify issues that may make your installation behave unexpectedly on Windows Vista systems. This suite checks for issues that may not be revealed in the Full MSI Validation Suite.

InstallShield 2010 User Guide

ISP-1600-UG00

283

Chapter 9: Creating Installations Before You Begin

Full MSI Validation SuiteThis suite consists of ICEs that Microsoft created.

If you create a merge module in InstallShield, use the following suites to validate your merge module:
InstallShield Certified for Windows Vista Merge Module Validation SuiteThis suite consists of a number of InstallShield ISICEs that help you identify issues that may make your merge module behave unexpectedly on Windows Vista systems. This suite checks for issues that may not be revealed in the Merge Module Validation Suite. Merge Module Validation SuiteThis suite consists of ICEs that Microsoft created.

To learn more, see Validating Projects.

Windows Logo Guideline: The Windows Logo Guideline alert appears throughout the InstallShield Help Library whenever the information relates to complying with the Certified for Windows Vista program guidelines.

Introduction to Windows Installer


A Windows Installer installation program is distributed as an .msi package, which consists of a Windows Installer database (.msi database) and related data files (.cab files, uncompressed data files, etc.). The .msi databases, implemented as COM structured storage, contain dozens of tables that describe the changes that are to be performed on the target system. For example, some of the .msi tables are:

File, which describes the files to be installed Registry, which describes the registry data to be written Shortcut, which describes shortcut settings

Other .msi database tables describe the appearance and behavior of the installations user interface, install and configure Windows services and ODBC information, determine characteristics of the target system, and store icons and other binary data for use during installation. From a developers perspective, perhaps the greatest change in Windows Installer installation programs is that there is no explicit script to write. Instead, Windows Installerbased installations perform standard and custom actions, where an action displays a dialog, queries the target system, or makes changes to the target system. These actions are arranged into sequences, which are ordered collections of actions. Windows Installer includes a collection of application program interface functions, or APIs, dedicated to managing product installations. Applications must call the Windows Installer APIs in order to take advantage of features available with Windows Installer. An integral part of Windows operating systems, Windows Installer provides a standard format for component management as well as an interface for managing applications and system tools. Various versions of Windows Installer are available as redistributables for Windows operating systems. Although it is possible to create a Windows Installer package by editing .msi database tables directly, the large number of tables and relationships among them makes doing so a formidable task. InstallShield organizes the process of developing an installation for Windows Installer into various views, providing graphical editors and wizards that shield the developer from much of the implementation detail that is associated with .msi databases. For more information on Windows Installer technology, see the Windows Installer Help Library.
284 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

Minimizing the Number of User Account Control Prompts During Installation


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Some of the specific details apply to only some of these project types. These differences are noted where appropriate.

One of the goals of Windows Vista and User Account Control (UAC) is to allow users to run as standard users all of the time. Elevation should rarely be required; if it does occur, it should occur for as short of a duration as possible. Several different areas of InstallShield affect whether an installation triggers UAC consent or credential prompts for elevated privileges. Understanding these different settings will help you create the appropriate UAC experience for your installation when end users run it on Windows Vista systems. It will also offer guidance if you are trying to minimize the number of UAC prompts that are displayed during your installation. Depending on how it is configured, an installation that includes InstallShield prerequisites may prompt for elevated privileges on Windows Vista systems at several different points during the installation:
1. 2. 3.

When the end user launches the Setup.exe file When the Setup.exe file launches a setup prerequisite that requires elevated privileges When the ISInstallPrerequisites custom action relaunches the Setup.exe file in feature prerequisite installation mode because one or more of the features being installed has an associated feature prerequisite Note that the ISInstallPrerequisites custom action does not verify whether any feature prerequisites require elevated privileges before the prompt for elevated privileges is displayed. In addition, the ISInstallPrerequisites custom action does not check the conditions on any of the feature prerequisites to determine whether the feature prerequisites need to be installed. The prompt for elevated privileges is always displayed.

Project: Basic MSI projects include support for feature prerequisites. 4.

When the Windows Installer begins the Execute sequence of the .msi package

Project: This last installation point applies to Basic MSI and InstallScript MSI projects, but not InstallScript projects.

UAC-Related Settings in InstallShield


Following is a list of the InstallShield settings that help determine whether UAC prompts are displayed during an installation on Windows Vista systems:

InstallShield 2010 User Guide

ISP-1600-UG00

285

Chapter 9: Creating Installations Before You Begin

Required Execution LevelUse this setting in the Releases view to specify the minimum execution level required by your installations Setup.exe file. InstallShield uses the value that you select (Administrator, Highest available, or Invoker) in the application manifest that it embeds in the Setup.exe launcher. For more information, see Specifying the Required Execution Level for Your Setup Launcher on Windows Vista Platforms. The prerequisite requires administrative privilegesIf you are creating or modifying an InstallShield

prerequisite for your installation, use this check box to indicate whether administrative privileges are required in order to install this prerequisite. This check box is on the Behavior tab in the InstallShield Prerequisite Editor. For more information, see Specifying that an InstallShield Prerequisite Requires Administrative Privileges.

Require Administrative PrivilegesUse this setting in the General Information view to specify whether

the Execute sequence of your installations .msi package requires administrative privileges. If you set this to No, InstallShield sets bit 3 in the Word Count Summary property to indicate that elevated privileges are not required to install your product. For more information, see Entering Summary Information Stream Data.

Project: The Require Administrative Privileges setting does not apply to InstallScript projects.

Advertise If Prerequisites Are ElevatedUse this setting in the Releases view to specify whether the .msi package should be advertisedand if so, whether it should be run silently or with the full user interface (UI)after the InstallShield prerequisites in the installation have been successfully installed with elevated privileges on Windows Vista machines. The advertisement may allow end users to avoid the UAC prompt that would otherwise be displayed for an .msi package that requires elevated privileges. For more information, see Specifying Whether a Product Should Be Advertised If Its InstallShield Prerequisites Are Run with Elevated Privileges.

Project: The Advertise If Prerequisites Are Elevated setting does not apply to InstallScript projects.

In addition, the type of InstallShield prerequisiteeither setup prerequisite or feature prerequisite may affect whether UAC prompts are displayed during an installation on Windows Vista systems. To learn more about these two types of InstallShield prerequisites, see Setup Prerequisites vs. Feature Prerequisites. Note the following UAC-related behavior on Windows Vista:

If Required Execution Level is set to Invoker, any InstallShield prerequisites in your installation do not require administrative privileges, and Require Administrative Privileges is set to No, end users should see no UAC prompts during installation. If Required Execution Level is set to Invoker, your installation includes setup prerequisites that require administrative privileges, and Require Administrative Privileges is set to No, end users should see one UAC promptplus up to one additional UAC prompt for each rebootduring installation. If the full user interface of the setup launcher is displayed and the installation includes setup prerequisites that need to be installed, the setup launcher typically displays the setup prerequisite dialog before the main installation starts. If one or more of the setup prerequisites that need to be installed require administrative privileges, the Install button on the message box has the shield icon to alert the end user that elevated privileges are required.
ISP-1600-UG00 InstallShield 2010 User Guide

286

Chapter 9: Creating Installations Before You Begin

If the installation is continuing after a reboot and privileges must be elevated, the OK button of the continuation message box has the shield icon. If privileges do not need to be elevated, the shield button is not displayed. If your installation includes more than one setup prerequisite that must be installed on a target machine and one or more of those setup prerequisites requires administrative privileges, the UAC prompt is displayed before the first setup prerequisite is installed. This may allow elevated privileges to be used for all prerequisites without requiring separate UAC prompts for each prerequisite installation. Note, however, that if a setup prerequisite installation causes a reboot, administrative privileges are lost, and a UAC prompt may be displayed if any of the remaining prerequisites require administrative privileges. A slightly different behavior applies to feature prerequisites. If your installation is going to install any features that are associated with prerequisites, the UAC prompt is displayed when the ISInstallPrerequisites custom action relaunches Setup.exe in feature prerequisite installation mode. This occurs regardless of whether any of the feature prerequisites require elevated privileges. It also occurs before any of the feature prerequisites conditions are evaluated to determine whether the feature prerequisites need to be installed. Note that if a feature prerequisite installation causes a reboot, administrative privileges are lost. After the reboot, the ReadyToInstall dialog is displayed again, and the end user needs to click the Install button to proceed with the rest of the installation. In this case, the UAC prompt is displayed again when the ISInstallPrerequisites custom action relaunches Setup.exe in feature prerequisite installation mode.

Note that if Require Administrative Privileges is set to No but your .msi package tries to perform a task for which it does not have adequate privileges, Windows Installer may display a run-time error. If privileges are elevated at the end of an installation and the SetupCompleteSuccess dialog launches the product, elevated privileges are carried over to your product. In most cases, running an application with elevated privileges is discouraged.

Sample Scenarios
The following sections contain examples that illustrate different combinations of values for the aforementioned settings in InstallShield. The diagrams show when Windows Vista requests elevated privileges for standard users or administrative users who have limited privileges. The examples are based on the default UAC settings on Windows Vista systems. Example 1: UAC Prompt Is Displayed for a Prerequisite that Requires Administrative Privileges; .msi File Is Advertised The example 1 diagram shows an installation that requires elevation for a setup prerequisite, a feature prerequisite, and for the Execute sequence of the .msi package. Windows Vista displays one UAC prompt for the setup prerequisite, and another one for the feature prerequisite. If the feature prerequisite was not included or if it was a setup prerequisite instead of a feature prerequisite, the second UAC prompt (which is labeled as UAC prompt #2 in the diagram) would not be displayed. In these cases, UAC prompt #2 would not be needed because the .msi package is successfully advertised after the setup prerequisite is installed with elevated privileges.

InstallShield 2010 User Guide

ISP-1600-UG00

287

Chapter 9: Creating Installations Before You Begin

Figure 9-1: Example 1Diagram of an Installation that Has Invoker as the Required Execution Level and that Advertises the .msi Package

Example 2: UAC Prompt Is Displayed for Setup.exe and After a Reboot for a Prerequisite that Requires Administrative Privileges The example 2 diagram shows an installation that requires elevation for Setup.exe, two setup prerequisites, a feature prerequisite, and the Execute sequence of the .msi package. Because the Setup.exe file has a manifest that specifies Administrator as the required execution level, elevated privileges are used for each part of the installation. The second UAC prompt is displayed because elevated privileges are lost during a reboot.

288

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

Figure 9-2: Example 2Diagram of an Installation that Has Administrator as the Required Execution Level

InstallShield 2010 User Guide

ISP-1600-UG00

289

Chapter 9: Creating Installations Before You Begin

Setting an Applications Disk Usage


Windows Installer uses a process called file costing to determine the total disk space a current installation requires. This encompasses costs for files that will be installed or removed, registry entries, shortcuts, and other components of an installation.

File Costing
File costing takes into account the fact that some files are overwritten by newer versions, which decreases the file cost. These values are dependent on the volume to which each file is to be installed or removed, and they are recalculated when a components directory association is changed. File costs are determined for each component, depending on whether it is installed locally, installed to run from the source media, such as a CD, or removed. With InstallShield, you can set your applications disk usage. This allows you to control file costing by choosing to run your application from the source media, from the local machine, or to install it when required. Note that running your application from the source enhances application resiliency and conserves space on an end users system.

Application Resiliency
If Windows Installer cannot provide a component, the Windows Installer technology enables applications to try to repair the component or to reinstall the component if the corresponding file is corrupted or the current file is older than the available version.

Source Resiliency
In addition to supporting application resiliency, the Windows Installer supports source resiliency through the Source List, which can include network locations, URLs, or compact discs from which applications are installed on-demand. Administrators can use the Group Policy Editor to disable this functionality.

INSTALLDIR vs. TARGETDIR


INSTALLDIR represents the main product installation directory for a regular Windows Installer based (or InstallScript MSI) installation, such as the end user launching Setup.exe or your .msi database. TARGETDIR represents the installation directory for an InstallScript installation, or for an administrative Windows Installerbased installation (when the user runs Setup.exe or MsiExec.exe with the /a command-line switch). In an InstallScript MSI project, the InstallScript variable MSI_TARGETDIR stores the target of an administrative installation.

290

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

Preventing the Current Installation from Overwriting a Future Major Version of the Same Product
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

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 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:

The Upgrades view contains a major upgrade item called ISPreventDowngrade. The Products sharing my Upgrade Code option is selected on the Common tab of the major upgrade item. The value of the Upgrade Code setting on the Advanced tab is {0000000000000000-0000-0000-00000000}. When you build a release, InstallShield uses the releases upgrade code (set in the General Information view, or overridden for the releases product configuration in the Releases view) for the major upgrade item. InstallShield sets the Detect Property setting of this major upgrade item to ISFOUNDNEWERPRODUCTVERSION and configures the other settings as appropriate.

The Custom Actions and Sequences view contains a custom action called ISPreventDowngrade, a type 19 custom action that Windows Installer launches when an end user tries to install the current version of your product over a future major version. InstallShield schedules the ISPreventDowngrade custom action for the user interface and execute sequences of the installation sequence so that Windows Installer runs it if appropriate, regardless of what user interface level is used. In addition, InstallShield uses ISFOUNDNEWERPRODUCTVERSION as the condition for this custom action.

The following instructions explain how to manually add this support for projects that you created in InstallShield 12 or earlier and then upgraded to InstallShield 2010.

Task

To manually add support for preventing end users from being able to install the current version of your product over a future major version: 1. 2. 3.

Use the Upgrades view to add a major upgrade item to your project. On the Common tab, select the Products using my Upgrade Code option. Configure the settings on the Advanced tab for the major upgrade item as follows:
a.

In the Minimum Version setting, specify the product version that you are using for your current project.
ISP-1600-UG00 291

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

b. c. d. e.

Leave the Maximum Version setting blank. If a value is listed for this setting, delete it. If your project includes multiple languages, specify the language identifiers in the Language setting. In the Detect Only setting, select Yes; for all of the other Yes-No settings, select No. In the Detect Property setting, type a descriptive name such as the following one:
FOUNDNEWERVERSION

4.

Add and schedule a type 19 custom action for your project to handle scenarios where an end user tries to install the current version of your product over a future major version:
a. b. c. d. e.

In the Custom Actions and Sequences view, right-click the Custom Actions explorer and click New Error. Select the new custom action. In the Error Message setting, type the error message text that should be displayed when an end user tries to install the current version of your product over a future major version. In the Install UI Sequence and Install Exec Sequence settings, select After FindRelatedProducts. In the Install UI Condition and Install Exec Condition settings, type the value that you specified in step 3e.

Preparing Installations for Non-Administrator Patches


Windows Installer 3.0 and later enables you to create patches that can be installed by nonadministrators. Non-administrator patches can be used if strict criteria are met. For example, the base installation that the patch will update must include the certificate that will be used to sign the patch package. To learn about the other criteria that must be met, see Non-Administrator Patches.

Task

To prepare a base installation that can later be updated by non-administrator patches: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the release whose digital signature information you want to configure. Click the Signing tab. Specify the digital signature information.

InstallShield automatically adds the necessary information to the MsiDigitalCertificate table and the MsiPatchCertificate table. This enables you to create patches that can be installed by nonadministrators.

Tip: The digital signature settings are also available in the Releases view.

292

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

The Windows Installer design enables you to sign a package with one certificate and also allow patches that are signed with a different certificate. The following instructions explain how to add to the base installation the additional certificates for the patches.

Task

To add additional digital certificates: 1.

Use a tool such as Signcode.exe to sign a dummy file. The Signcode.exe file is located in the following directory:
InstallShield Program Files Folder\System

2. 3. 4. 5. 6. 7. 8. 9.

In your original installation project, open the Direct Editor. In the Tables explorer, click MsiDigitalCertificate. Click the last row in the table to add a new entry. In the DigitalCertificate field, type a unique name for your certificate. Click the CertData field. The Edit Binary Stream dialog box opens. In the File name box, enter the path and name of the file that you signed in step 1. You can click the browse button to find the file. Click OK. In the Tables explorer, click MsiPatchCertificate.

10. Click the last row in the table to add a new entry. 11. In the PatchCertificate field, type a unique name for your patch certificate. 12. In the DigitalCertificate field, select the entry that you created for the MsiDigitalCertificate

table in step 4.

Settings for Platforms and Platform Suites


Project: This information applies to the following project types:

InstallScript InstallScript MSI

Note that some of the settings apply to both of these project types, but some apply only to one of these project types.

InstallShield includes several settings for platforms, platform suites, and languages.

Specifying Platforms at the Project Level


One project-level setting enables you to specify the platforms that your project supports:

Platform FilteringUse this setting to specify the platforms that you want to be available when you

select operating system requirements for components or releases in your project. In general, if a platform is not listed for this setting at the project level, you cannot designate that a particular component or release in your project is targeted for that platform.
InstallShield 2010 User Guide ISP-1600-UG00 293

Chapter 9: Creating Installations Before You Begin

The Platforms setting is available for InstallScript projects. To access this setting, open the General Information view. You can also configure this setting through the Project Settings dialog box: on the Project menu, click Settings, and click the Platforms tab.

Note: Specifying platforms at the project level does not create target system requirements for running the installation. If you want to create target system requirements in an InstallScript project, use the SYSINFO structure to identify the operating platform of the target system. For information on how to specify target system requirements for InstallScript MSI projects, see Specifying Operating System Requirements in the Project Assistant.

Specifying Operating Systems and Platform Suites at the Component Level


Two component-level settings enable you to specify platform information for a component:

Operating SystemsIf a component is specific to one or more operating systems, use this setting to

indicate those operating systems. If the target machines operating system does not match one of the operating systems that are specified for this setting, the component is not installed. By default, components are operating system independent, meaning that none of the components data are specific to certain operating systems. The Operating Systems setting is available for InstallScript and InstallScript MSI projects. To access this setting, open the Components view and select a component.

Platform Suite(s)If a component is specific to one or more platform suites, use this setting to

indicate the suites. If you specify more than suite, you can indicate whether all or any of the suites must be present on the target machine in order for the component to be installed. By default, components are platform suite independent, meaning that none of the components data are specific to a particular platform suite. This setting provides an additional layer of filtering beyond the Operating Systems setting. Set the Platform Suite(s) setting only if necessary, and be sure to select only those platform suites that are required for the proper functioning of your application. For example, if a component should be installed on both the Home and Professional editions of Windows XP, you can leave Suite Independent as the value for this setting; selecting Windows XP for the Operating Systems setting encompasses both editions. The Platform Suite(s) setting is available for InstallScript projects. To access this setting, open the Components view and select a component.

Specifying Platforms at the Release Level


One release-level setting enable you to specify platform information for a release:

Platform(s)If a release is specific to one or more platforms, use this setting to indicate the

platforms. If the platform specified for a component does not match one of the platforms that is selected for this setting, InstallShield does not include the component in the release. The default value for this setting is Use Project Setting. This value indicates that the release supports the platforms that are specified at the project level.

294

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 9: Creating Installations Before You Begin

The Platform(s) setting is available for InstallScript projects. To access this setting, open the Releases view and select a release. You can also configure this setting through the Platforms panel in the Release Wizard.

Controlling Support for Platforms and Platform Suites at Run Time for InstallScript Projects
During run time of InstallScript installations, you can control the platforms and platform suites that your installation supports by calling the FeatureFilterOS function. In the OnFilterComponents event handler, the framework typically calls this function with the platforms and platform suites that match the target system so that only the appropriate components are installed. By calling FeatureFilterOS, you can override this default behavior to install or prevent the installation of components based on any platform or platform suite criteria that you specify. For more information, see FeatureFilterOS.

InstallShield 2010 User Guide

ISP-1600-UG00

295

Chapter 9: Creating Installations Before You Begin

296

ISP-1600-UG00

InstallShield 2010 User Guide

10
Specifying Installation Information
As you begin creating your installation project, you will need to specify important installation information at the outset. This includes specifying product and project settings and configuring Add or Remove Programs settings.

Configuring General Project Settings


InstallShield stores your project settings in a single installation project file (.ism file). This file stores all of the information about your project. In the General Information view, you can edit basic information about your installation projectincluding the authors name, the languages that the project supports, and any comments that you want to include. The General Information view is also where you configure general product information such as the product name, the product code (GUID), and the version number. A product is the top level of organization in an installation project. The installation is further divided into features and components, which are subsets of your product. Although an installation can contain multiple features and components, it can have only one product. For detailed information about each of the project and projects settings that are available, see General Information View.

Saving an .ism Project in XML or Binary Format


InstallShield allows you to save your .ism project file in XML or Binary Format.

Note: Your InstallShield project file (.ism) retains the .ism file extension when you save it in XML or Binary format.

InstallShield 2010 User Guide

ISP-1600-UG00

297

Chapter 10: Specifying Installation Information Configuring General Project Settings

Task

To set your projects file format: 1. 2.

In the View List under Installation Information, click General Information. For Project File Format setting, select XML or Binary.

Specifying a Product Name


Enter the name of your product in the Product Name setting of the General Information. The name that you enter should be the name of the product for which you are creating an installation. This value is used throughout your project, in various instances; for example:

The name of the source file folder under the project location The name of the Windows Installer package (.msi file) that InstallShield builds In run-time dialogs Under the informational registry key in accordance with Windows logo requirements. The informational values are found in the following location and are used in Add or Remove Programs to enable an end user to change or remove your product. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\<product code>

Since it will be incorporated into the paths for your source files, the product name cannot contain any of the following characters: \ / : * ? " < > | . -

Tip: In an InstallScript or InstallScript MSI project, you can use the UNINSTALL_DISPLAYNAME variable to specify a different product display name in Add or Remove Programs.

Caution: If you want to include an ampersand (&) in your product name, you must use two ampersands (&&) to display the name properly in end user dialogs. For example, to display New & Improved Product, you should enter the product name as New && Improved Product.

Specifying the Product Version


When you are specifying the version number for your product, enter the complete version number for this product. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535. At run time, the installation registers the version number of the product that is being installed. The entire version string is displayed in Add or Remove Programs. The product version number is important because the installation engine uses it in part to determine whether to apply an upgrade. You can configure the product version in the General Information view.
298 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsYou can include a fourth field, making the product version format aaa.bbb.ccccc.ddddd, but Windows Installer does not use the fourth field. The maximum value for ddddd is 65,535. For InstallScript and InstallScript Object projectsInstead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.)

Product Version Numbers in InstallScript and InstallScript Object Projects


Project: This information applies to the following project types:

InstallScript InstallScript Object

By default, InstallScript projects use version numbers in packed DWORD formatthat is, as a four-byte value whose first byte is the major version, second byte is the minor version, and last two bytes are the build number. Packed DWORDS are entered and displayed in the format major.minor.build; for example, 1.2.3 or 255.255.65535. Packed DWORD version numbers are assumed in the default script code for registering the version number of the product that is being installed, and for comparing that version number to that of the already installed product during an update installation. If any of these version numbers are not in packed DWORD format, you must modify the script code as discussed in the following sections.

Version Number of the Already Installed Product


The default OnSetUpdateMode event handler function code compares the version number of the product that is being installed, and the version numbers to which the update can be applied (as specified in the Release property sheet), to the system variable IFX_INSTALLED_VERSION. The installation automatically attempts to initialize the value of this system variable to the string equivalent of the data in the Version value under the application uninstallation registry key. If that value does not exist, or its data is not a packed DWORD, then the value of IFX_INSTALLED_VERSION is a null string (""), in which case the default OnSetUpdateMode code displays an error message and aborts the installation. One solution is to insert code that checks the version information on the system and sets IFX_INSTALLED_VERSION equal to an appropriate packed DWORD value. For example, if previous installations stored a version string in the MyVersion value under HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\MyProduct, you could insert code like the following:
if (IFX_INSTALLED_VERSION="") then /* Get the registered version information. */ RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE ); RegDBGetKeyValueEx( "Software//MyCompany//MyProduct", "MyVersion", REGDB_STRING, szVersionString, nSize ); /* Assign a value to IFX_INSTALLED_VERSION. */ switch (szVersionString) /* A registered version string of "A" corresponds to an existing version number of 1.0.0. */

InstallShield 2010 User Guide

ISP-1600-UG00

299

Chapter 10: Specifying Installation Information Configuring General Project Settings

case "A": IFX_INSTALLED_VERSION = "1.0.0"; /* A registered version string of "B" corresponds to an existing version number of 1.1.0. */ case "B": IFX_INSTALLED_VERSION = "1.1.0"; /* An absent version string corresponds to an existing version number of 0.0.0. */ default: IFX_INSTALLED_VERSION = "0.0.0"; endswitch; endif;

Version Number of the Product that Is Being Installed


The default OnMoveData event handler function code calls RegDBSetVersion to take the product version number that you entered in the General Information view and enter it in the target systems registry. RegDBSetVersion assumes that the product version is in packed DWORD format. If you want to register a product version that is not in packed DWORD format, you must replace OnMoveDatas call of RegDBSetVersion with code like the following:
/* The setup automatically initializes the value of the system variable IFX_PRODUCT_VERSION to the product version that you entered in the Product Version setting in the General Information view. */ RegDBSetItem(REGDB_UNINSTALL_VERSION, IFX_PRODUCT_VERSION ); RegDBSetItem(REGDB_UNINSTALL_DISPLAY_VERSION, IFX_PRODUCT_VERSION );

RegDBSetItem must be called after MaintenanceStart.

Setting the Product Code


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The product code is a string that uniquely identifies your product. An installation uses a product code at run time to determine whether the product has already been installed. Enter a GUID that uniquely identifies your product, or click the Generate a new GUID button ({...}) in the Product Code setting in the General Information view to let InstallShield generate a new GUID. The installation registers this GUID at run time.

Caution: Because the product code uniquely identifies your product, changing the code after distributing a release of your product is not recommended.

300

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

Setting the Product GUID


Project: This information applies to the following project types:

InstallScript InstallScript Object

The product GUID is a string that uniquely identifies your product. An installation uses a product GUID at run time to determine whether the product has already been installed. Enter a GUID that uniquely identifies your product, or click the Generate a new GUID button ({...}) in the Product GUID setting in the General Information view to let InstallShield generate a new GUID. The installation registers this GUID at run time.

Caution: The project GUID is used to associate uninstallation or maintenance with the original installation. A new GUID is automatically generated for each new project that you create, including copies of existing projects. Once you have changed a project's GUID, its previous GUID cannot be recovered. For these reasons, changing a project's GUID is typically not necessary and should be approached with caution.

Setting the Upgrade Code


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database QuickPatch Transform

The upgrade code is a GUID that identifies a related set of products. The Windows Installer uses a products upgrade code when performing major upgrades of an installed product. The upgrade code, stored in the UpgradeCode property, should remain the same for all versions of a product. To configure the GUID for a new product, use the Upgrade Code setting in the General Information view. When you are working on an upgrade for a later version of your product, enter the same upgrade GUID in the Upgrades view or in your QuickPatch project.

Setting Product Conditions


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

301

Chapter 10: Specifying Installation Information Configuring General Project Settings

MSI Database Transform

The Installation Requirements page in the Project Assistant lets you specify some commonly used installation requirements for the target system. For example, if your application requires a specific operating system in order to run properly, you can indicate that on the Installation Requirements page. InstallShield also enables you to define your own custom conditions that Windows Installer must evaluate before your product can be installed. Conditions that you create in the General Information view and on the Installation Requirements page in the Project Assistant apply to the entire product; if one or more of the conditions are false on the target system, the installation exits and an error message is displayed. For example, if your product requires 64 MB of RAM in order to run properly, you can use the Product Condition Builder dialog box to create a condition. At run time, the Windows Installer checks the target system to determine how much RAM is installed. If it is less than 64 MB, or if any of the other product conditions are false, the Windows Installer displays an error message and exits the installation.

Tip: You cannot guarantee the order in which Windows Installer evaluates product launch conditions. If it is necessary to control the order in which the conditions are evaluated, you can create an error custom action in the Custom Actions and Sequences view for each condition, and schedule them in the appropriate order.

Task

To create a custom launch condition for your products installation: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. Click the Install Condition setting and then click the ellipsis button (...). The Product Condition Builder dialog box opens. Click the New Condition button. InstallShield adds a new condition row to the Conditions box. Do one of the following:

In the Condition column, type the launch condition. Use the Properties list, the Operators list, and the Add buttons to build your conditional statement:
a. b.

In the Properties list, select a property and then click the Add button. InstallShield adds the property to the Condition column. If your conditional statement should contain an operator, select an operator in the Operators list and then click the Add button. InstallShield adds the operator to the conditional statement. If your conditional statement should contain a value, double-click the condition field, press END so that the insertion point is at the end of the condition statement, and enter the value.

c. 5.

In the Message column, enter the error message that you would like to be displayed if the condition evaluates to false.

302

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

When you type a value for this column, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can double-click this setting and then click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Note: Windows Installer dialogs, which display the text that you specify in the Message column, do not recognize the escape sequences \r (carriage return), \n (new line), or \t (tab). 6.

Click OK.

Important: InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements.

Setting the Default Product Destination Folder (INSTALLDIR)


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Your projects INSTALLDIR property serves as the default folder for all of your products files. Its value is assigned to the Windows Installer folder property INSTALLDIR, which is the default feature and component destination folder.

Windows Logo Guideline: According to the Certified for Windows Vista program requirements, the default destination of your products files must be a subfolder of the Program Files folder or the end users Application Data folder, regardless of the language of the target system. If you use ProgramFilesFolder as the parent folder for your products destination folder setting, your files are installed to the correct location. The default value for the INSTALLDIR setting is:
[ProgramFilesFolder]Company Name\Product Name

Task

To set a products INSTALLDIR property: 1. 2.

In the View List under Installation Information, click General Information. To use a built-in Windows Installer directory as part of your path: In the INSTALLDIR setting, click the ellipsis button (...) . The Set INSTALLDIR dialog box opens. In the Destination Directories box, select a destination folder. As an alternative, you can manually enter the path in the INSTALLDIR setting.

InstallShield 2010 User Guide

ISP-1600-UG00

303

Chapter 10: Specifying Installation Information Configuring General Project Settings

Note: Selecting a new folder property in the Set INSTALLDIR dialog box overwrites the contents of the value in the INSTALLDIR setting. You can specify a subfolder of any folder property by separating subfolders with a backslashfor example, [ProgramFilesFolder]My Company\Program.

Other Destination Folder Considerations (Windows Installerbased projects only)


Setting the features Remote Installation property to Favor Sourceor to Favor Parent when the subfeatures parent feature is set to Favor Sourcemeans that the features files will not be installed on the target system, regardless of the products INSTALLDIR property. Each feature and component has a Destination property. The features Destination setting overrides the products Destination Folder setting, and the components Destination setting overrides the features. Therefore, if you want all of your products files to be installed by default to the products destination folder, enter [INSTALLDIR] for all of your features and components Destination setting. When using an installer folder property such as INSTALLDIR, you are specifying a default value. An end user could change this value by setting a property when launching Msiexec.exe at the command line or by selecting a new destination folder for a feature in the CustomSetup dialog.

Securing Files, Folders, and Registry Keys in a Locked-Down Environment


InstallShield offers several ways to secure files, folders, and registry keys for end users who run your product in a locked-down environment:

Traditional Windows Installer handlingIn Windows Installerbased projects, you can choose to use the built-in Windows Installer support for setting permissions at run time. With this option, InstallShield stores permission information for your product in the LockPermissions table of the .msi database. Custom InstallShield handlingIn Windows Installerbased projects, you can choose to use custom support for setting permissions at run time. With this option, InstallShield stores permission information for your product in the custom ISLockPermissions table of the .msi database. InstallShield also adds custom actions to your project. SetObjectPermissions, an InstallScript FunctionYou can use the SetObjectPermissions function in InstallScript events and InstallScript custom actions to set permissions at run time.

All of these methods enable you to assign permissions for a file, folder, or registry key to specific groups and users. For example, you may assign Read, Write, and Delete permissions for a particular file to the Administrators group, but only Read permissions for all of the users in a different group.

304

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

Determining Which Option to Use


The following table compares the different types of methods for setting permissions.
Table 10-1: Comparison of Different Ways to Secure Objects (Files, Folders, and Registry Keys) in a Locked-Down Environment Comparison Category Project type Explanation of Available Support

Traditional Windows Installer handling and Custom InstallShield handling Available in the following project types: Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform. SetObjectPermissions functionAvailable in InstallScript events in the following project types: InstallScript, InstallScript MSI. Also available through InstallScript custom actions in Basic MSI, InstallScript MSI, and Merge Module.

Well-known security identifiers (SIDs)

Traditional Windows Installer handlingSupports a limited number of SIDs (Administrators, Everyone). Custom InstallShield handling and SetObjectPermissions functionSupports many SIDs (Administrators, Authenticated Users, Creator Owner, Everyone, Guests, Interactive, Local Service, Local System, Network Service, Power Users, Remote Desktop Users, and Users). Traditional Windows Installer handlingDoes not support localized names for SIDs; if you try to use a localized name, the installation fails. Custom InstallShield handling and SetObjectPermissions functionSupports localized names for all of the supported well-known SIDs (Administrators, Authenticated Users, Creator Owner, Everyone, Guests, Interactive, Local Service, Local System, Network Service, Power Users, Remote Desktop Users, and Users). Traditional Windows Installer handlingNot supported. This handling lets you set specific permissions; you cannot deny permissions. Thus, you can give a user readonly access to a file. However, you cannot prevent a user from having read-only access. Custom InstallShield handling and SetObjectPermissions functionSupported. These options let you indicate whether you want to deny a user or group from having the permissions that you are specifying. Traditional Windows Installer handlingExisting permissions may be deleted. For example, if permissions are already set for a folder on the target system for the Everyone user, and your installation needs to set permissions for the Administrators user, this option would allow you to set permissions for the Administrators user. However, the existing permissions for Everyone would be deleted. Custom InstallShield handling and SetObjectPermissions functionThese options let you add permissions to a file, folder, or registry key that already exists on the target system, without deleting any existing permissions for that object. For example, if permissions are already set for a folder on the target system for the Everyone user, and your installation needs to set permissions for the Administrators user, these options would allow you to set permissions for the Administrators user without deleting the existing permissions for the Everyone user.

Localized names for SIDs

Ability to deny specific permissions

Effect on permissions that already exist

InstallShield 2010 User Guide

ISP-1600-UG00

305

Chapter 10: Specifying Installation Information Configuring General Project Settings

Table 10-1: Comparison of Different Ways to Secure Objects (Files, Folders, and Registry Keys) in a Locked-Down Environment (cont.) Comparison Category Ability to propagate permissions to child objects (subfolders, files, and subkeys) Explanation of Available Support

Traditional Windows Installer handlingNot supported. If you want to configure permissions for a subfolder or a file in a folder (or a subkey under a registry key), the parent that is created on the target system automatically inherits the permissions of its child. Custom InstallShield handling and SetObjectPermissions functionSupported. These options let you configure permissions for a folder (or a registry key), and indicate whether you want the permissions to be applied to all of the folders subfolders and files (or the registry keys subkeys). Traditional Windows Installer handling and Custom InstallShield handlingNot supported. SetObjectPermissions functionSupported. You can secure permissions for a file, folder, or registry key that is installed as part of your installation, or it can be already present on the target system. Traditional Windows Installer handlingNot supported. Custom InstallShield handling and SetObjectPermissions functionSupported. If a new user is created during the installation, you can configure permissions for that user.

Ability to set permissions for objects that are not being installed as part of your installation Ability to set permissions for a new user that is being created during the installation

Learning More about the Custom InstallShield Handling Option or the Traditional Windows Installer Handling Option
In Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projects, you need to specify whether you want to use the custom InstallShield handling or the Windows Installer handling. To learn how, see Selecting the Locked-Down Permissions Type for a Project. To learn how to set permissions for a file or folder using either of these options, see Configuring Permissions for Files and Folders. For information on setting permissions for a registry key using either of these options, see Configuring Permissions for Registry Keys.

Learning More about the InstallScript Function SetObjectPermissions


For information on the SetObjectPermissions function, see SetObjectPermissions.

Selecting the Locked-Down Permissions Type for a Project

Project: This information applies to the following project types:


306

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

Transform

InstallShield includes a project-wide setting that lets you specify how your installation should configure permissions for files, folders, and registry keys for end users in a locked-down environment.

Task

Selecting the locked-down permission type for a project: 1. 2.

In the View List under Installation Information, click General Information. In the Locked-Down Permissions setting, select the appropriate option:

Custom InstallShield handlingInstallShield adds a custom table and custom actions to your project to set permissions on the target system. This is the default value. Traditional Windows Installer handlingInstallShield uses the LockPermissions table in the .msi database to store permissions information for your product.

For a detailed comparison of these two options, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment. The next time that you configure permissions for a file, folder, or registry key in your project, InstallShield uses the locked-down permission type that you selected:

If you selected the traditional Windows Installer handling option, InstallShield uses the LockPermissions table in your project. If you selected the custom InstallShield handling option, InstallShield uses the ISLockPermissions table in your project; InstallShield also adds the ISLockPermissionsCost and ISLockPermissionsInstall custom actions to your project.

If you change the value of the Locked-Down Permissions setting but your project already contains permission settings for files, folders, or registry keys, InstallShield displays a message box that lets you specify whether you want to migrate the permission data to the appropriate table. If you choose to migrate the data, InstallShield moves the data to the table that corresponds with the option that you selected; if you are switching from the custom InstallShield handling option to the traditional Windows Installer handling option, InstallShield also deletes the ISLockPermissionsCost and ISLockPermissionsInstall custom actions from your project.

Specifying Whether Windows Installer Installations Should Be Logged


InstallShield enables you to specify on a project-wide basis whether Windows Installer 4.0 or later should log your installation. You can also customize the types of messages that are logged.

Task

To specify project-wide logging information for Windows Installer 4.0 or later: 1. 2.

In the View List under Installation Information, click General Information. Click the Create MSI Logs setting, and then click the ellipsis button (...). The Logging Options for Windows Installer 4.0 and Later dialog box opens.

InstallShield 2010 User Guide

ISP-1600-UG00

307

Chapter 10: Specifying Installation Information Configuring General Project Settings

3.

Select the appropriate option. If you select the custom option, enter the MsiLogging value. For a list of valid parameters for the MsiLogging value, see MsiLogging Property in the Windows Installer Help Library.

4.

Click OK.

The results vary, depending on which option you select in the Logging Options for Windows Installer 4.0 and Later dialog box:

If you select No, installations are not logged. This is the default value. If you select Yes, InstallShield populates the MsiLogging property with the default value of voicewarmupx. If the installation is run on a target system that has Windows Installer 4.0, the following occurs:

The installer creates a log file according to the default logging mode of voicewarmupx. The installer populates the MsiLogFileLocation property with the log files path. A Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. If the end user selects that check box and then clicks Finish, the log file is opened in a text file viewer or editor.

If you select Custom, InstallShield populates the MsiLogging property with the value that you specify in the box. If the installation is run on a target system that has Windows Installer 4.0, the following occurs:

The installer creates a log file according to the custom value that you specified in the box. The installer populates the MsiLogFileLocation property with the log files path. A Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. If the end user selects that check box and then clicks Finish, the log file is opened in a text file viewer or editor.

Earlier versions of Windows Installer ignore the MsiLogging setting. The Show the Windows Installer log check box is not visible in run-time dialogs that are displayed on systems running earlier versions of Windows Installer.

Running an InstallScript Installation Multiple Times


The InstallScript project type offers several options for the behavior of your installation when a target machine already has your product installed and the end user reruns the installation.

308

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

The Multi-Instance option lets your end users rerun an installation multiple times as a first-time installation rather than as a maintenance installation. By default, this option lets end users install the product to a different location each time that they run the installation. Each time that they run the installation as a first-time installation, the components that they select (whether directly or by selecting a setup type) are installed.
Table 10-2: Maintenance Experience Settings Number of Entries Created in Add or Remove Programs One Multiplea separate entry for each installation None

Maintenance Experience Standard Multi-Instance

When Maintenance UI Is Displayed Whenever the installation is rerun Only when the installation is rerun from the Add or Remove Programs Never

No uninstall or maintenance

You can select these options from the Maintenance Experience setting in the General Information view. If there are multiple instances of your application on a machine, when a non-silent update installation for your application runs on that machine, it displays the Qualifying Product(s) Detected dialog. This dialog allows the end user to select the instance to which the update should be applied. If the update installation is silent, the update is applied to the first instance that is found, and the Qualifying Product(s) Detected dialog is not displayed.

Project: For information on multiple-instance support in Basic MSI projects, see Installing Multiple Instances of Products.

Setting the Enable Maintenance Mode


Project: This information applies to InstallScript MSI projects.

Use the Enable Maintenance setting to indicate whether you want the maintenance UI events OnMaintUIBefore and OnMaintUIAfterinvoked when an end user attempts to install your product on a system where the product has already been installed. The following table shows the available options for the Enable Maintenance setting.
Table 10-3: Enable Maintenance Mode Settings Value Yes Description The installation calls the Maintenance UI functions in your script. When an end user attempts to reinstall your application, the Program Maintenance dialog is displayed. The installation automatically adds the /removeonly parameter to the uninstall string, which sets the REMOVEONLY system variable during maintenance mode. As a result, the maintenance UI events show the uninstallation UI instead of the maintenance UI.

No

InstallShield 2010 User Guide

ISP-1600-UG00

309

Chapter 10: Specifying Installation Information Configuring General Project Settings

Note: On Windows 2000 and later systems, InstallScript MSI installations show separate Change and Remove buttons in Add or Remove Programs in the Control Panel by default. The Enable Maintenance setting has no effect on the behavior that occurs if end users initiate maintenance for your product from Add or Remove Programs on these platforms. If you want to prevent end users from being able to run maintenance, select Yes for the Disable Change Button setting in the General Information view. On Windows 9x systems, InstallScript MSI installations show only an Uninstall button, rather than separate Change and Remove buttons, in Add or Remove Programs. Therefore, the Enable Maintenance setting does affect the behavior that occurs if end users click the Uninstall button on Windows 9x systems.

OnMaintenance Functions

Project: This information applies to InstallScript MSI projects.

OnMaintenance functions are Maintenance UI script functions which consists of two event handlers OnMaintUIBefore and OnMaintUIAfter. Set the Enable Maintenance Mode property to indicate whether or not you want to invoke the OnMaintenance functions.

OnMaintUIBefore
The OnMaintUIBefore event handler responds to the Maintenance UI Before event. It performs tasks that must take place before the reinstallation of features for a maintenance installation of an application.

OnMaintUIAfter
The OnMaintUIAfter event handler responds to the Maintenance UI AFter event. It performs tasks that must take place after the reinstallation of features for a maintenance installation of an application.

Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations
Project: This information applies to InstallScript MSI projects.

InstallScript MSI installations use two different installer engines:

The Windows Installer engine runs the standard Execute sequence of the .msi package. This is the sequence that typically modifies the target system. The InstallScript engine serves as the custom user interface (UI) handler of the installation. It also executes the InstallScript code. The advantage of using the InstallScript engine for the UI is that it offers support for highly customized run-time dialogs.

Traditionally, Windows Installer has had support for only external custom UI handlers; therefore, InstallScript MSI installations have always required a Setup.exe setup launcher. The setup launcher serves as a bootstrap application that initiates the InstallScript engine to display the UI and run the InstallScript code, and the Windows Installer to run the Execute sequence of the .msi package.
310 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

Windows Installer 4.5 introduces support for embedded custom UI handlers. If the InstallScript engine is embedded within the .msi package, an InstallScript MSI installation does not require the Setup.exe setup launcher; end users can launch the installation by launching the .msi package. In this case, the .msi package contains the information that the Windows Installer needs to know about launching the InstallScript engine for the installations UI. Thus, InstallShield offers two different styles for the UI of InstallScript MSI installations:

Traditional style (requires a Setup.exe setup launcher)This style lets you use the InstallScript engine as an external UI handler for your InstallScript MSI installation. This is the default style. New style (requires Windows Installer 4.5 on the target machine)This style lets you use the InstallScript engine as an embedded UI handler for your InstallScript MSI installation. With this style, InstallShield embeds the InstallScript engine within the .msi package. Note that this option has some limitations.

The following sections provide detailed information about these two styles; review this information to determine which style would best meet your requirements.

Traditional Style (InstallScript Engine as an External UI Handler)


The general flow in a traditional-style InstallScript MSI package during a first-time installation is as follows:
1. 2. 3. 4.

The InstallScript engine opens the .msi package. All actions in the Installation UI sequence are run with the exception of the ExecuteAction. The actions are run in ascending sequence order. The InstallScript engine performs its own internal component costing to determine the space required for all features and components in the installation. The InstallScript engine launches the compiled script contained in ISSetup.dll. The event sequence for the events that are run before the .msi package installation is as follows:
a. b. c. d. e. f. g.

OnBegin OnXxxUIBefore (where Xxx is First, Maint, Admin, Patch, Resume, etc.) OnGeneratingMsiScript OnMoving OnFeaturesInstalling (Any feature installing and uninstalling events are run at this point.) OnInstallFilesActionBefore OnGeneratedMsiScript

5.

The InstallScript engine launches the .msi package installation through MsiInstallProduct. The following factors determine the command line that the InstallScript engine passes through MsiInstallProduct: installation mode (for example, first-time installation, maintenance mode, minor upgrade, patch), internal feature selections, and current property values. If the .msi package installation is successful, the InstallScript engine writes the secondary uninstall key (InstallShield_{ProductCode}) to the machine and then launches the following events:
a. b.

6.

OnInstallFilesActionAfter OnFeaturesInstalled (Any feature installed and uninstalled events are run at this point.)
ISP-1600-UG00 311

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

c. d. e. 7. 8.

OnMoved OnXxxUIAfter (where Xxx is First, Maint, Admin, Patch, Resume, etc.) OnEnd

After the script has completed, the InstallScript engine writes the InstallScript log to the machine. The InstallScript engine shuts down.

New Style (InstallScript Engine as an Embedded UI Handler)


The InstallScript MSI embedded UI support attempts to follow the same general flow as traditional-style InstallScript MSI installation. However, there are certain portions of the flow that do not occur or are unnecessary. The general flow in a new-style InstallScript MSI package during a first-time installation is as follows:
1. 2.

The .msi package is launched directly or by Setup.exe (which then launches Msiexec.exe, which is the same behavior for a Basic MSI installation). The Windows Installer engine extracts all files that are in the MsiEmbeddedUI table and calls the initialize embedded UI function in the DLL that contains the embedded UI handler attribute. (In the InstallScript MSI case, this is ISSetup.dll). The InstallScript engine initializes and manually launches the ISSetupFilesExtract action if it is present and its condition in the InstallUISequence evaluates to true. The InstallScript engine performs manual resolution of all entries in the Directory table. The InstallScript engine performs its own internal component costing to determine the space required for all features and components in the installation. The InstallScript engine launches the compiled script contained in ISSetup.dll. The event sequence for the events that are run before the .msi package installation is as follows:
a. b. c. d. e. f. g.

3. 4. 5. 6.

OnBegin OnXxxUIBefore (where Xxx is First, Maint, Admin, Patch, Resume, etc.) OnGeneratingMsiScript OnMoving OnFeaturesInstalling (Any feature installing and uninstalling events are run at this point.) OnInstallFilesActionBefore OnGeneratedMsiScript

7. 8.

The InstallScript engine returns control to the Windows Installer engine, which then begins running the installations Execute sequence. If the .msi package installation is successful, the Windows Installer engine calls back into ISSetup.dll. ISSetup.dll then launches the following events:
a. b. c.

OnInstallFilesActionAfter OnFeaturesInstalled (Any feature installed and uninstalled events are run at this point.) OnMoved

312

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

d. e. 9.

OnXxxUIAfter (where Xxx is First, Maint, Admin, Patch, Resume, etc.) OnEnd

The InstallScript engine shuts down and returns control to the Windows Installer.

For the new-style InstallScript MSI installations, the Install UI sequence is not run. If any custom actions are sequenced in the Install UI sequence, they will not run, similar to how such actions would not run in a Basic MSI that is launched with /qb or /qn. The InstallScript engine does not log any changes that are made to the system from InstallScript events. Most command-line parameters that are supported by traditional-style InstallScript MSI installations are also supported for new-style InstallScript MSI installations. If an end user launches the .msi package directly, these parameters can be passed through the ISSCRIPTCMDLINE property. Limitations and Known Issues with the New Style (InstallScript Engine as an Embedded UI Handler) If you are considering the new style, note the following details.
Windows Installer 4.5 Requirement

The new style requires that Windows Installer 4.5 be present on the target system. You can add InstallShield prerequisites for Windows Installer 4.5 to your project so that Windows Installer 4.5 is installed if it is not present. If you include these InstallShield prerequisites in your installation, you need to use a Setup.exe setup launcher. For more information, see Adding Windows Installer Redistributables to Projects. Note that Windows Installer 4.5 cannot be installed on some of the early versions of Windows. If Windows Installer 4.5 is not installed on a target system at run time, and the installation is launched with Setup.exe, the setup launcher displays error 1713 and indicates that the installation requires Windows Installer 4.5 or later in order to run. The installation aborts after the end user dismisses this error message. If the .msi package is launched directly, the installation displays an error indicating that the package needs to be launched from the Setup.exe file.
Upgrade and Patch Support

InstallShield does not include any built-in support for creating an upgrade that uses the new style if the upgrade updates a product that was installed with the traditional style. Therefore, if you use the traditional style to build a release of your product and then you later create an upgrade, consider using the traditional style again for the upgrade. This applies to all types of upgrades (major upgrades, minor upgrades, and small updates) that are packaged as full-installations or as patches. Note that if the previous setups that a patch is targeting use the traditional style, the patch should also use the traditional style. Also note that a QuickPatch project maintains the UI style from the original installation. Therefore, if the original installation used the traditional style, the QuickPatch package also uses the traditional style. If the original installation used the new style, the QuickPatch package also uses the new style. As a workaround for the major upgrade scenario, you could consider having your new-style majorupgrade installation read the uninstall string of the earlier product from the registry, and launching it with the InstallScript function LaunchApplication to uninstall the earlier version of your product before installing the new version. Note that you may need to set LAAW_SHELLEXECUTEVERB to runas before using LaunchApplication in your script.

InstallShield 2010 User Guide

ISP-1600-UG00

313

Chapter 10: Specifying Installation Information Configuring General Project Settings

MsiDoAction

Attempting to call the MsiDoAction function from one of the events that are run before the .msi package installation returns an error. This error occurs because of the handle that the Windows Installer passes to the InstallScript engine. The handle does not support running standard or custom actions in the .msi package. This function can be called from InstallScript custom actions if needed.
MsiGetTargetPath and MsiSetTargetPath

The Windows Installer MsiGetTargetPath and MsiSetTargetPath functions do not work correctly in the new style if they are in event-driven script. These functions rely on the Directory Manager having been initialized by the Windows Installer costing actions. In new-style InstallScript MSI installations, Windows Installer costing is not performed. Thus, MsiGetTargetPath fails to return any path information, and MsiSetTargetPath fails to set the requested target path. In both cases, Windows Installer logs messages in a verbose log if either of these functions are called. To update installation paths, use FeatureSetTarget. Note that MsiGetTargetPath and MsiSetTargetPath can be called through InstallScript custom actions that are sequenced after CostFinalize in the Installation Execute sequence.
FeatureTransferData and ComponentTransferData

The behavior of the InstallScript functions FeatureTransferData and ComponentTransferData is undefined for the new style of InstallScript MSI installations and should not be used.
programendprogram

New-style InstallScript MSI installations cannot use procedural scripts (that is, those with a programendprogram block). The program function is not called in this case. An event-driven script should be used to customize the behavior of the installation.
/uninst

New-style InstallScript MSI installations do not support the /uninst command-line parameter.
BATCH_INSTALL

Attempting to reboot by setting the BATCH_INSTALL variable does not work correctly. To perform a reboot, use the ScheduleReboot action or the REBOOT property.
Reboot Support

Reboots for new-style InstallScript MSI installations are handled in the same manner as they are handled for Basic MSI installationsnot as they are handled for InstallScript-based installations (where the installation resumes after the restart and the OnRebooted event handler is called). New-style InstallScript MSI installations should be authored similarly to Basic MSI installations to handle reboots; the installation does not run after a scheduled reboot occurs, and the OnRebooted event handler is not called.
Msiexec.exe /x (for Uninstallation) /x {ProductCode},

If an end user tries to uninstall the product through the command line using the statement Msiexec.exe the uninstallation may be successful. However, the Windows Installer displays an error dialog near the end of the uninstallation. The error dialog indicates that the Windows Installer service could not be accessed. To perform an uninstallation from the command line, the current recommended method is to use one of the following:

314

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring General Project Settings

msiexec.exe /i {ProductCode} REMOVE=ALL msiexec.exe /x {ProductCode} /qn

Neither of these examples triggers the Windows Installer error.

Recommendations
For new-style InstallScript MSI installations, the UI functionality may be run without administrator privileges. Therefore, the following points are recommended (and, in general, also apply to all Windows Installerbased installations):

Do not assume that administrator privileges will be available from any InstallScript events. Any system changes that need to be made should be done with custom actions in the Installation Execute sequence. InstallScript custom actions can be used. To ensure that sufficient privileges are available, custom actions should have an in-script execution setting of deferred in system context. Custom actions that modify the system should have corresponding rollback actions that restore the system to its earlier state if the installation fails. Custom actions that modify the system should also have corresponding actions that run during uninstallation to remove the installed items from the system. If changes are made to the system from InstallScript events, the changes are not logged by the InstallScript engine and would need additional script code to clean up these resources during uninstallation.

Using InstallScript to Differentiate Between the Two Styles at Run Time


You can use the INSTALLSCRIPTMSIEEUI variable to write a single script that produces different runtime behavior for the different UI styles. To learn more, see INSTALLSCRIPTMSIEEUI.

Specifying the InstallScript User Interface Type for InstallScript MSI Installations

Project: This information applies to InstallScript MSI projects.

In InstallScript MSI projects, you have the choice of two different types of InstallScript user interface (UI). For detailed information about these two styles, including any limitations, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations.

Task

To specify the InstallScript user interface type for an InstallScript MSI project: 1. 2.

In the View List under Installation Information, click General Information. For the InstallScript User Interface Type setting, select the appropriate option.

Traditional Style (Requires Setup.exe)If you want to use the InstallScript engine as an external UI handler for your InstallScript MSI installation, select this option. With this style, your installation must include a Setup.exe setup launcher. The setup launcher serves as a bootstrap

InstallShield 2010 User Guide

ISP-1600-UG00

315

Chapter 10: Specifying Installation Information Entering Summary Information Stream Data

application that initiates the InstallScript engine to display the UI and run the InstallScript code, and the Windows Installer to run the Execute sequence of the .msi package. This is the default option for this setting.

New Style (Requires Windows Installer 4.5)If you want to use the InstallScript engine as an embedded UI handler for your InstallScript MSI installation, select this option. With this style, InstallShield embeds the InstallScript engine within the .msi package. The Windows Installer calls the InstallScript engine to display the UI. The Windows Installer also runs the Execute sequence of the .msi package.

This option requires Windows Installer 4.5 on the target machine. This option also has some limitations that require careful planning if you decide to use this style.

Entering Summary Information Stream Data


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

Windows Installer databases (.msi and .msm files) are implemented as COM structured storage, and COM structured storage files usually contain a Summary Information Stream. The Summary Information Stream contains information about your company and the software being installed. For more information, see Accessing the Summary Information Stream Panel to learn how to view your files summary information. For a description of each Summary Information Stream property, see General Information View.

Accessing the Summary Information Stream Panel


Task To access summary information for an .msi or .msm file: 1. 2.

Right-click the .msi file or .msm file and click Properties. The Properties dialog box opens. Click the Summary tab to view the summary information.

Tip: The General Information view is where you populate the information for the Properties dialog box for your installation.

316

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Entering Summary Information Stream Data

Setting Summary Information Stream Properties


Task To specify summary information for the project: 1. 2. 3.

In the View List under Installation Information, click General Information. Find the Summary Information Stream area of the view. Modify the values of the settings as needed.

Using the Template Summary Property


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

You can use the Template Summary setting in the General Information view to essentially establish conditions for processor type and language; if a target system does not meet these requirements, the installer displays an error message and exits the installation.

Tip: You can also set the Template Summary setting for a product configuration in the Releases view. Any value entered in the Releases view overrides the value set in the General Information view.

Syntax
List the processor type first, followed by your installations default language. For language, enter any four-digit language ID or 0 (zero) for language neutral.

Separate the two categories with a semicolon. If your installation supports multiple products and you want to have multiple entries in the language categoryfor example, 1033 for English and 1031 for Germanseparate them with a comma.

Caution: If your installation targets 64-bit machines, do not enter both Intel and Intel64 in this field. Doing so causes your installation to fail. Also, if you enter Intel64, your installation will not run on 32-bit operating systems.

Valid processor values include:

Alpha (Alpha is supported by Windows Installer 1.0 only.) Intel


ISP-1600-UG00 317

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring Add or Remove Programs Information

Intel64 (Intel64 is supported by Windows Installer 2.0 only.) x64

Setting Conditions Based on Processor Type and Language If your installation runs only on Intel processors and English-based systems, use the following syntax in the Template Summary property:
Intel;1033

If the processor-type condition fails, the installer displays an error message and then exits. If your product runs on x64 processors and supports English and German, enter the following:
x64;1033,1031

To specify that the package is language-independent, you can use the syntax Intel; or Intel;0. Setting Conditions Based on Language Only To put a condition on the language only, start the entry with a semicolon and specify your setups default language:
;1036

Leaving the first portion empty indicates that the package is processor-independent. If a language is not specified, InstallShield provides the release languages in the Summary Information Stream.

Configuring Add or Remove Programs Information


The settings in the Add or Remove Programs area of the General Information view describe the information that appears in Add or Remove Programs tool in the Control Panel. If you have not entered a value for a particular Add or Remove Programs setting, a sample value appears in grey text. This value is meant to serve as an example and is not included in the final Windows Installer database. The General Information view enables you to set much of the information that is displayed to the end user through Add or Remove Programs.

Project: In Basic MSI and InstallScript MSI projectsMost of the values that you specify are stored in Windows Installer properties with names beginning with ARP, such as ARPPRODUCTICON or ARPHELPLINK. One exception to this is the Publisher setting. This value should be set with your company name and is stored in the Manufacturer property. In a Basic MSI projectTo prevent your product from appearing in the Add or Remove Programs, you can set the Windows Installer property ARPSYSTEMCOMPONENT to 1 in the Property Manager. Note that setting this property simply suppresses the display of your product in Add or Remove Programs. An end user can still remove your product by running the installation in maintenance mode or from the command line. In an InstallScript MSI projectTo prevent your product from appearing in the Add or Remove Programs, select Yes for the Hide Add/Remove Panel Entry setting in the Releases view.

318

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 10: Specifying Installation Information Configuring Add or Remove Programs Information

Specifying a Readme File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

In the Read Me setting in the General Information view, enter the name of the Readme file for your product. On some versions of Windows, this information is displayed on the Support Info dialog box for your products entry in Add or Remove Programs. Alternatively, you can link to a Readme file located on the Internet by specifying a valid URL.

Project: In a Windows Installerbased project (Basic MSI, InstallScript MSI, MSI Database, or Transform project), special formatting is required to properly display a path when the Readme file is installed as part of your installation; see the following section. In an InstallScript or InstallScript Object project, enter a hard-coded path or a URL, or specify a path relative to a system variable enclosed by angle brackets, for example, <TARGETDIR>\Readme.txt. This data is written to the target systems registry by the default OnMoveData event handler.

Displaying the Readme File Path in a Windows Installer-based Project


You can enter a hard-coded path or a URL for the Readme file. However, the name of a folder, such as [MyDirectory], or of a component, such as [$MyComponent], is not resolved. That means that the Readme value in the Support Information dialog box would be displayed as [INSTALLDIR]Readme.txt or [$MyComp]Readme.htm. The path is not resolved because this property is merely setting the initial value of the Windows Installer property ARPREADME, and formatted strings are never resolved for Windows Installer properties. InstallShields solution is to use a custom action to set ARPREADME with the value that you enter in the Read Me setting. By setting it with the SetARPReadme custom action, the path is resolved during the installation. For example, Readme.doc might be a file in the component Help_Files. In this case, enter [$Help_Files]Readme.doc for the Read Me setting. Assuming Help_Files is installed to C:\Program Files\MyCompany\MyProduct\Help, the path that would be displayed in Add or Remove Programs on the target system would be C:\Program Files\MyCompany\MyProduct\Help\Readme.doc. Instead of the component name, you can use the file key. Do not use a folder from the Directory table because it will not be resolved at run time. The file key is not as reliable as the component name, because it is subject to change if the files are dynamically linked or the release uses patch optimization. Continuing the example above, if Readme.doc has a file key of F501_Readme.doc, enter [#F501_Readme.doc] for the Read Me setting. If it is installed to the same folder, Add or Remove Programs displays the following path on the target system:
C:\Program Files\MyCompany\MyProduct\Help\Readme.doc

InstallShield 2010 User Guide

ISP-1600-UG00

319

Chapter 10: Specifying Installation Information Configuring Add or Remove Programs Information

The custom action SetARPReadme is added every time that the Read Me setting in the General Information view contains a string and the Installation Execute sequence contains the CostFinalize action. SetARPReadme is inserted into the Installation Execute and User Interface sequences directly after CostFinalize.

320

ISP-1600-UG00

InstallShield 2010 User Guide

11
Organizing Files for Your Installation
The primary task of an installation is to transfer files from your distribution media to your end users hard drive. In an InstallShield installation, files are organized in a hierarchy: files are included in components; components are associated with features (and optionally subfeatures); and, in InstallScript and InstallScript MSI installations, features are associated with setup types. At run time, your end user simply selects the setup typeor, if you allow it, the features and subfeaturesthat he or she wishes to install. End users do not see components, which you use to group your files according to their type and purpose. For example, files that are installed to the same target folder can be placed in the same component, as can self-registering files. A file often relies on functions in other files to perform a task. However, you may not be aware of all these other filesknown as dependencieswhen you include your applications files in your project. To help you identify dependencies, InstallShield offers three dependency scanners that automatically add these files to your project. In addition to including individual files in your project, you can also include redistributables (InstallShield prerequisites, merge modules, and objects), which contain logic and files needed to install distinct pieces of functionality. For example, to include the Java Runtime Environment (JRE) files in your installation, you can add the InstallShield prerequisite for JRE to your installation project.

Designing Installations
There are two main perspectives in an installation projectthat of the developer and that of the end user. In InstallShield, these perspectives are addressed in detail in the Components and Features views, respectively.

Components
Components represent the developers view of the product. They are installation authoring tools that help the developer organize similar application datasuch as files, registry entries, and shortcutsinto logical groups. To enable the end user to choose which features to install, you should divide your application into components that correspond with the features of your application.
InstallShield 2010 User Guide ISP-1600-UG00 321

Chapter 11: Organizing Files for Your Installation Designing Installations

Using InstallShield, you can also publish your projects components.

Note: The conditions that you specify for the Publish Components, Publish Features, or Publish Product actions are not validated during design time, so use proper syntax and check to ensure that the condition produces the expected outcome.

Features
Features are the building blocks of an application from the end users perspective. Each feature represents a specific piece of functionality for your productsuch as the help files. End users should be able to install and uninstall discrete features of your product. For example, an end user with limited hard drive space could elect not to install a product tutorial. If the user subsequently purchases another computer or frees resources on an existing one, the previously uninstalled product tutorial could then be installed. You should separate your application into features that correspond to the components of your application.

Separating Applications into Components


Use the following guidelines to separate an application into components.

Identify resources that function as a group; each group can be a component. Windows Installer requires that every file in a component be installed to the same directory. If you need to install a directory structure, each subdirectory must correspond to a separate component. The resources in a component should require the same conditions. To take full advantage of Windows Installer repair functionality, each .exe, .dll, and .ocx file should be placed in its own component, and each should be the components key file. The Best Practices option of the Component Wizard can create components for you using this rule. Similarly, each .chm or .hlp file should be placed in its own component, along with any corresponding .chi or .cnt file. No resource should be included in more than one component, even across products. If a components resources are required by more than one product, consider creating a merge module with the shared resources. When mapping a component to one or more features, ensure that all parts of a component map to the features. When testing your installation, you may want to divide your application into several components to thoroughly measure its performance.

Separating Applications into Features


Use the following guidelines to separate an application into features.

322

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Path Variables

Separate your application into independent parts, such as help, clip art, and program files. This gives the end user combination options when installing your application. For instance, if your application contains a large, graphic-intensive clip art file, you could make the clip art file a feature. This gives the end user the option of installing or not installing the filea vital ability for users with limited available resources. In separating your application into features, ensure that end users can recombine the parts in several ways to fulfill specific needs. When doing this, consider the needs of all users, from system administrator to customer service representative to developer and everyone in between. By addressing all groups of users, you are promoting increased distribution and usage of your application. Each feature should have one functionsuch as help filesand should be clearly defined according to this functionality to facilitate recognition and comprehension. Features should possess an independent functionality, such that users can install and use the feature by itself, if they so choose. If one feature requires another, make the dependent feature a child of the other. To eliminate confusion, keep any information pertaining to the management of the system or application transparent to the user.

Using Path Variables


Traditionally, to link to source files in an installation project, you would need to create a reference to that file using a hard-coded path. For example, you might have a source file called Program.exe located at C:\Work\Files that you want to include in your installation. However, if you used hard-coded paths, you needed to enter the entire path every time that you want to associate a source file from that directory. If you moved the file to another directory, you needed to change the hard-coded path as it appears in your installation project. If your installation consisted of a small number of source files, this might not have been a problem. Unfortunately, some installations contain thousands of files that all would need to be remapped if you change the folder structure or migrate the project to a different machine. With path variables, you can define commonly used paths in a central location so that you do not need to change every source files path each time you move the project or change the directory structure. All path variables can be viewed and modified in the Path Variables view. You can use path variables in almost any location in InstallShield where you link to source files, such as in the Dialog Editor, dynamic file links, and the release location. Instead of entering the path variables yourself, you can have InstallShield recommend them whenever you browse to a path. To have InstallShield automatically recommend path variables, select the Always display the Path Variable Recommendation dialog to me option on the Path Variables tab of the Options dialog box.

Note: Path variables are used during the development of your installation project. These paths do not apply to the target machines where the application is being installed. Rather, they are used to link to source files for your installation project. When the project is built, those links are evaluated and the files they point to will be built into the installation.

InstallShield 2010 User Guide

ISP-1600-UG00

323

Chapter 11: Organizing Files for Your Installation Using Path Variables

Predefined Path Variables


Predefined path variables are variables that are set to certain standard Windows directories. These variables cannot be renamed or modified, but they can be used in your installation project to point to predefined directories. Below is a list of predefined path variables, their typical values on a Windows XP system, and the corresponding InstallScript path variables. (In an InstallScript project, InstallScript path variables are used in InstallShield, for example, as options in the list for the Destination property of a component. InstallScript path variables also correspond to system variables that can be used in the installation script.)
Table 11-1: Predefined Path Variables Predefined Path Variable <ProgramFilesFolder> <CommonFilesFolder> <WindowsFolder> <SystemFolder> <ISProjectFolder> <ISProjectDataFolder> <ISProductFolder> Value
C:\Program Files\ C:\Program Files\Common Files\ C:\Windows\ C:\Windows\System32\ C:\InstallShield 2010 Projects\ <ISProjectFolder>\ProjectName C:\Program Files\InstallShield\2010

InstallScript Path Variable <PROGRAMFILES> <COMMONFILES> <WINDIR> <WINSYSDIR>

<ISPROJECTDIR>

Using Predefined Path Variables

Project: Windows Installer based projects only: The Path Variable Recommendation dialog box enables you to specify whether you want to use predefined path variables. This dialog box is launched if you enter a hard-coded path when inserting a source file into your installation and you have selected the Always display the Path Variable Recommendation dialog to me check box on the Path Variables tab of the Options dialog box. If you enter a path that is included in a predefined path variable, InstallShield suggests that you use the path variable rather than the hard-coded path.

You can also use predefined path variables when defining the value for a standard path variable. You may want to define a standard path variable to a subfolder of a predefined variable. For example, <ProgramFilesFolder>\InstallShield could be used as the value for a standard path variable. Predefined path variables are smart variables. This means they are set to the correct directory, even if your WINNT directory is located on your D drive instead of your C drive. If you change the default project location on the File Locations tab of the Options dialog box, InstallShield updates this variable to reflect the new directory.

Creating and Defining a Path Variable


The Path Variables view is where you create and define standard path variables, environment variables, and registry path variables.

324

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Path Variables

Task

To create and define a path variable: 1. 2.

In the View List under Media, click Path Variables. Do one of the following:

To create a standard path variable, click the New Path Variable button. To create an environment variable, click the arrow next to the New Path Variable button, and then click Environment. To create a registry variable, click the arrow next to the New Path Variable button, and then click Registry.

InstallShield adds a new row at the bottom of the view.


3.

Complete each of the settings in the new row as needed.

For descriptions of each column, see Path Variables View.

Deleting a Path Variable


Task To remove a path variable from your project: 1. 2.

In the View List under Media, click Path Variables. Select one or more path variables that you want to delete. To select multiple consecutive path variables, select the first path variable, press and hold SHIFT, and select the last path variable. To select multiple nonconsecutive path variables, select the first path variable, press and hold CTRL, and select each additional path variable.

3.

Click the Delete Selected Path Variables button.

Standard Path Variables


Standard path variables are sometimes referred to as user-defined variables. These variable types are native to InstallShield. That is, they do not rely upon outside resources, as do registry or environment variables.

Using Standard Path Variables


Once you have created a standard path variable, you can use it every time you add a source file to your project. For example, you might create a variable called <MyFiles> and have it pointing to C:\Work\Files. If you add a source file to your project that contains that variables path in its destination, it is recommended that you use the variable rather than hard-coding the path. This recommendation is displayed in the Path Variable Recommendation dialog box. To have InstallShield automatically recommend path variables, select the Always display the Path Variable Recommendation dialog to me option on the Path Variables tab of the Options dialog box.
InstallShield 2010 User Guide ISP-1600-UG00 325

Chapter 11: Organizing Files for Your Installation Using Path Variables

Registry Path Variables


Registry path variables enable you to define your own variables based on the default value of a specified registry key. Once you have created a registry path variable, you can use it every time that you add a source file to your project. When you add a file to a component from a folder that contains the value of MyRegVar, it is recommended that you use the variable rather than hard-coding the path. This recommendation is displayed in the Path Variable Recommendation dialog box. To have InstallShield automatically recommend path variables, select the Always display the Path Variable Recommendation dialog to me option on the Path Variables tab of the Options dialog box.

Environment Variables
Environment path variables enable you to define your own path variables based on certain values on the Environment dialog box.

Task

To view the Environment dialog box: 1. 2.

Right-click My Computer and click Properties. The System Properties dialog box opens. On the Advanced tab, click Environment Variables.

A common scenario where environment path variables may be useful is when performing a build from the command line. If you do nightly builds on a machine dedicated to that purpose, you may need to change the path variables from the command line. While this is not directly supported with InstallShield, you can change the value of environment variables from the command line. As long as you use environment path variables, you can define the paths to your projects files from either a batch file or the command line. These paths are evaluated when the installation project is built, and the correct paths to the files will be used.

Using Environment Variables


After you have created an environment variable, you can use it every time that you add a source file to your project. For example, you might create a variable called <MyFiles> and have it point to C:\Work\Files. If you add a source file to your project that contains that variables path in its destination, it is recommended that you use the variable rather than hard-coding the path. This recommendation is displayed in the Path Variable Recommendation dialog box. To have InstallShield automatically recommend path variables, select the Always display the Path Variable Recommendation dialog to me option on the Path Variables tab of the Options dialog box.

Converting Static Links


You might not need to use path variables when you begin your installation project, but you may realize the benefits they provide well after you have started. Rather than going through each file link and changing it to a path variable, you can use the Converting Source Paths Wizard.

326

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

This wizard scans your project for static links and converts them all to path variables. If any of your static links can be replaced with existing path variables, the wizard does this automatically. For all other links, the wizard provides a list of the possible variables. After you choose the variables that you want to use, the wizard converts all of the links.

Task

To launch the Convert Source Paths Wizard:

On the Project menu, click Convert Source Paths.

Including Files and Folders


Your files, the core of your product, are also the core of your installation. Files are added to a project only at the component level. In installation projects, components are associated with features, which are what end users see when they run your installation. If the components feature is selected for installation, the components files are installed to the target system. When you are adding files to components in Windows Installerbased projects, you should be aware of Setup Best Practices. By default, the Setup Best Practices Wizard monitors your setup design and alerts you if you have violated Best Practices. You can add files to your project in the Setup Design view (for installation projects) or the Components view, and in the Files and Folders view.

Files Explorer
The Files and Folders view contains a file explorer that allows you to drag and drop files from folders on your source machine to folders on the destination machine. The two left panes in the files explorer contain folders and the two right panes display the files located within those folders.

Note: In installation projects (including InstallScript and Basic MSI), the Files and Folders view includes the Add new components to the feature list above the file explorer panes. This list contains all of the features in your project. When you add files in this view, new components may need to be created. From this list, select the feature with which you want to associate these new components.

Source Computers Folders (Top Left)


The Source computers folders pane is similar to the left pane in Windows Explorer. This pane contains folders located either locally or on a network. From here, you can navigate to the folder that contains the files that you want to add to your installation.

Source Computers Files (Top Right)


The Source computers files pane displays the files contained in the currently selected folder of the Source computers folders pane. You can drag files from this pane to a destination folder in the Destination computers pane. The files you drop into the bottom panes are added to your installation project.

InstallShield 2010 User Guide

ISP-1600-UG00

327

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Destination Computers Folders (Bottom Left)


In the Destination computers folders pane, you can add files to destination folders or components, create new destination folders, or modify existing components.

Destination Computers Files (Bottom Right)


The Destination computers files pane displays all the files you have added to the currently selected destination folder. By right-clicking a file in this pane, you can copy, paste, or delete the file, or edit the files properties. For Windows Installer-based projects only, you can also right-click a file to set or clear it as the key file of its component.

Working in the Files Explorer


The easiest way to add files to your installation is to use the files explorer in the Files and Folders view. Within the files explorer, you can also create new destination folders, display the components associated with the files you add to your installation, and modify component settings using the Component Properties dialog box.

Adding Files Through the Files Explorer

Task

To add a file: 1. 2.

Open the Files and Folders view. In the Add new components to the feature list, select the feature with which you want any new components associated. If InstallShield creates new components for the files added, these components are added to the feature selected in the Add new components to the feature list. Windows Installerbased projects only: In the Destination computers folders pane, right-click Destination Computer, point to Show Predefined Folder, and then click the predefined folder that you want to use. In the Destination computers folders pane, click the folder into which you want to place the file. In the Source computers folders pane, navigate to the folder containing the file you want to add. INSTALLDIR (for Windows Installerbased projects) or Application Target Folder (for InstallScript projects) is the most commonly used target location, because this is the default root directory for your applications files.

3.

4. 5.

6.

Select and drag the file you want to add from the Source computers files pane to the Destination computers files pane.

Tip: You can specify how INSTALLDIR is displayed in the Destination computers folders pane of the Files and Folders view by setting your preference on the Directory tab of the Options dialog box.

You can also specify a hard-coded destination directory.


328 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

The Destination computers folders pane contains a list of predefined destinations. You can add a file to either a predefined destination or to a destination that you create. In an InstallScript project, InstallShield creates components based on the file typesfor example, all self-registering files are contained in one component, all non-self-registering files in another component, and all .NET files in a different component. The components appear as subfolders in the Files and Folders view.

Creating New Destination Folders

Task

To create subfolders of the predefined folders: 1. 2. 3.

Open the Files and Folders view. In the Destination computers folders pane, right-click a folder and click New Folder. Rename your new folder by selecting it, pressing F2, and typing the new name.

Alternately, you can drag an entire folder onto one of the destination folders, thereby adding a new subfolder to the target folder that contains the source folders files. This new subfolder has the same name as the source folder.

Displaying Components in the Files Explorer

Task

To display the components in your installation and the files that are associated with them: 1. 2.

Open the Files and Folders view. In the Destination computers folders pane, right-click any folder and click Show Components (in Windows Installerbased projects) or Show Components and Subfolders (in InstallScript-based projects).

Components in installation projects that are not associated with a feature are displayed with the orphaned component icon ( ).

Modifying Components through the Files Explorer


In the folders explorer of the Files and Folders view, you can right-click a component and click Properties to display the Component Properties dialog box. Through this dialog box, you can modify the components properties, add dynamic file links, and change that features contain the component.

Note: (Windows Installerbased projects only) You can launch the Component Wizard by right-clicking a folder icon and then clicking Launch Component Wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

329

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Dragging and Dropping Files Using the Context Menu


The files explorer in the Files and Folders view enables you to drag and drop folders from your source computer to destinations on the target system. You have a number of options when you drag files from the Source computers folders pane to the Destination computers folders pane.

Task

To display the context menu: 1. 2.

Open the Files and Folders view. In the Source computers folders pane or the Source computers files pane, right-click a folder or file and drag it to the Destination computers folders pane or the Destination computers files pane. Release the mouse button to display the context menu.

3.

Table 11-2: Commands Available from the Context Menu in the Files and Folders View Command Add Description Adds the folder, subfolders, and/or files selected. This is the same as the default drag-and-drop behavior. Adds the selected folder, subfolders, and/or files while preserving the file/folder structure found on the source computer. This command is available only if the source folder matches a predefined Windows destination folder. In addition, the destination on which you drop the file or folder must be the Destination Computer. Add Folder(s) Only Adds only the folders selected and any subfolders contained in the selected folder. Does not add any files contained within the selected folders or subfolders. Adds only the folders selected and any subfolders contained in the selected folder. Does not add any files contained within the selected folders or subfolders. This option also preserves the folder structure found on the source computer. This option is available only if the source folder matches a predefined Windows destination folder. In addition, the destination on which you drop the file or folder must be the Destination Computer. Cancel Ends the drag-and-drop operation without making any changes.

Add Preserving Source Structure

Add Folder(s) Only Preserving Source Structure

File Properties
You can set a number of properties for each file that is to be installed on the target system.
330 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Task

To specify the properties for a file: 1. 2. 3.

Open the Files and Folders view. In the Destination computers folders pane, click the folder that contains the file whose properties you want to configure. In the Destination computers files pane, right-click the file and then click Properties. The Properties dialog box opens.

To see a description of each property that you can set, see File Properties Dialog Box.

Installing Self-Registering Files


The installer uses traditional self-registration to register your self-registering files when the files are marked as self-registering and (in a Windows Installerbased project) they are in a component that has the COM Extract at Build property set to No. The files are unregistered when they are uninstalled. The self-registration functions supported are DllRegisterServer and DllUnregisterServer. Before setting a files Registration property, make sure the file is self-registering. According to Setup Best Practices, there should be only one .dll file, .ocx file, or .exe file per component.

Tip: The recommended method for installing self-registering files with Windows Installer is to write the registration information to the .msi database tables (Class, ProgID, and others). Instead of marking a file as self-registering, you can use the components advanced settings, extract the COM information at build time, or extract the COM information when you add a file in the Files and Folders view in order to register the ProgIDs, type libraries, and so on. Using the advanced settings works whether you are installing the file in the installation or advertising it for just-in-time installation. A further advantage is that the file can be unregistered if the installation fails.

Even if you set the components COM Extract at Build property to No, any information that is contained in the COM Registration advanced setting will nonetheless be registered during installation. You might want to check the COM Registration advanced setting and the components registry data to verify that the entries are intentional and do not conflict with those made by the self-registration functions.

File Associations
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

331

Chapter 11: Organizing Files for Your Installation Including Files and Folders

File associations are registry settings that tell Windows what application to use to open files of a certain type. For example, Windows typically launches Notepad.exe when a text (.txt) file is opened. To view and modify registered file types on your system, open Windows Explorer, and on the Tools menu, click Folder Options. Use the File Types tab of the Folder Options dialog box to see how the file associations are configured. Similarly, you can identify the application that is associated with a given file by right-clicking the file in Windows Explorer and then clicking Properties. On Windows NT 4 and Windows 9x systems, file association information is stored under the root HKEY_CLASSES_ROOT. On systems running Windows 2000 or later, file associations are stored in both HKLM\SOFTWARE\Classes and HKCU\SOFTWARE\Classes; you can see a merged view of the data under HKEY_CLASSES_ROOT.

Creating File Associations for Your Installation Project


Best-practice guidelines recommend that you create a file association for every nonhidden type of file created or used by your product. You can quickly and easily create file associations for your installation project with the File Extensions view, which is available as an advanced setting within the Components view and the Setup Design view (for installation projects only). When an end user installs a feature that contains a file association, the file association is registered on the target machine; an entry is made in the appropriate part of the registry, and the entry links your file type to your application through the ProgID. The ProgID, which is sometimes called a file types application identifier or tag name, uniquely identifies your application and helps the operating system recognize your file association.

Adding New File Extensions

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If your application manipulates files with a unique file extension, you can register your file type. For example, if your application manipulates files with the .xyz extension, registering the file type instructs the operating system to open the file with your application when the user double-clicks its icon.

Task

To add a new file extension: 1. 2. 3.

In the View List under Organization, click Setup Design (in installation projects only) or Components. In the explorer, expand the component. Click the Advanced Settings item to expand it.

332

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

4. 5. 6.

Click File Types. The File Types explorer opens. In the File Types explorer, right-click Extensions and click New Extension. InstallShield creates a new extension with the default name New ExtensionN, where N is a unique number. Type your extension without the dot (for example, enter ext instead of .ext).

Removing File Extensions

Project: This information does not apply to InstallScript or InstallScript Object projects.

Task

To remove an extension: 1. 2. 3. 4. 5.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. In the File Types explorer, right-click the extension and click Delete.

Setting File Extension Properties

Project: This information does not apply to InstallScript or InstallScript Object projects.

The extension properties determine the registry entries for your file extension, as well as the ProgID associated with it. Detailed help is available in the help pane in InstallShield when you click each property.

Specifying Command Verbs

Project: This information does not apply to InstallScript or InstallScript Object projects.

By default, the verb open is added to your file extension.

Task

To add a new verb and specify its properties: 1. 2. 3.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it.
ISP-1600-UG00 333

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

4. 5. 6. 7.

Click File Types. The File Types explorer opens. In the File Types explorer, right-click the extension and click New Verb. InstallShield creates a new verb with the default name New VerbN, where N is a unique number. Type the name of your new verb. You can use any of the canonical verbs, such as open, print, find, and properties. Select the new verb to edit its properties. Its property sheet opens to the right.

Removing a Verb from a File Extension

Project: This information does not apply to InstallScript or InstallScript Object projects.

Task

To remove a verb: 1. 2. 3. 4. 5.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. Right-click the verb and click Delete.

Adding New MIME Types

Project: This information does not apply to InstallScript or InstallScript Object projects.

Task

To add a new MIME type: 1. 2. 3. 4. 5. 6.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. In the File Types explorer, right-click the extension and click New MIME Type. InstallShield creates a new MIME type with the default name MIME TypeN, where N is a unique number. Type the MIME type; for example, image/jpeg.

Click the MIME type to view its Class ID property. Click the Class ID property to edit it in the lower pane. Press CTRL+V to paste a class ID into the property field.

334

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Removing MIME Types

Project: This information does not apply to InstallScript or InstallScript Object projects.

Task

To remove a MIME type: 1. 2. 3. 4. 5.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. Right-click the MIME type and click Delete.

Creating ProgIDs

Project: This information does not apply to InstallScript or InstallScript Object projects.

The ProgIDs item in the File Types explorer contains all of the programmatic identifiersProgIDs, also known as application identifiers or tag names when they support file typesthat you want to associate with file extensions. A file types ProgID is an arbitrary string, but it should be unique on the target system. One ProgID naming convention is to append the word file to your extension without a dotthe .ext extension might use the ProgID extfile. Another convention is to name a file-type ProgID after the application used to open the file type, as in SampleApp.Document. For example, an .xyz file extension could point to a xyzfile ProgID, and all of the .xyz file-type information would be registered under xyzfile.

Task

To create a ProgID: 1. 2. 3. 4. 5. 6. 7.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. In the File Types explorer, click the extension. The extension properties are displayed in the right pane. In the ProgID property, type the name of your ProgID. InstallShield adds your ProgID under ProgIDs in the File Types explorer. In the File Types explorer, click the new ProgID and then set its properties.

InstallShield 2010 User Guide

ISP-1600-UG00

335

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Removing ProgIDs

Project: This information does not apply to InstallScript or InstallScript Object projects.

Task

To remove a ProgID: 1. 2. 3. 4. 5. 6.

Open the Setup Design view (for installation projects only) or the Components view. In the explorer, expand the component. Click the Advanced Settings item to expand it. Click File Types. The File Types explorer opens. In the File Types explorer, click the extension. The extension properties are displayed in the right pane. In the ProgID property, delete the ProgID.

Destination Folders
When you add files to your installation project, you do so by placing them in a destination folder. The following destination folders are provided by default. Each one is dynamic, meaning that they do not use hard-coded paths. Instead, the value for each destination folder is obtained from the operating system of the target machine. The following folders are available only for InstallScript projects:
Table 11-3: Default Destination Folders for InstallScript Projects Folder Name Script-Defined Folders Description This folder allows you to create folders whose location is determined in your script. Files cannot be added directly to this folder, but only to its subfolders; to create a subfolder, right-click the folder and select New Folder. Specify a folder name that is enclosed in angle brackets, for example, <MYFOLDER>; to assign the folder a location through your script, call FeatureSetTarget. This folders location is determined by the value of the system variable TARGETDIR. This folders location is the 32-bit Program Files folder. This folders location is the 64-bit Program Files folder. This folders location is the 32-bit Common Files folder. This folders location is the 64-bit Common Files folder.

Application Target Folder

Program Files Program Files (64-bit) Program Files\Common Files Program Files (64-bit)\Common Files (64-bit)

336

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Table 11-3: Default Destination Folders for InstallScript Projects (cont.) Folder Name Support Folder Description This folders location is determined by the value of the system variable SUPPORTDIR. This folders location is the Windows folder. This folders location is the Windows Fonts folder. This folders location is the 32-bit Windows System folder. This folders location is the 64-bit Windows System folder.

Windows Windows\Fonts Folder Windows\Windows System Windows\Windows System (64-bit)

The following folders are available only for Basic MSI and InstallScript MSI projects:
Table 11-4: Default Destination Folders for Basic MSI and InstallScript MSI Projects Folder Name AdminToolsFolder AppDataFolder Description Points to the folder where administrative tools are located. This property holds the full path to the current users Application Data folder. A typical value of this property is as follows:
C:\WINNT\Profiles\UserName\Application Data

CommonAppDataFolder

This is the full path to the folder containing application data for all users. A common path is:
C:\WINNT\Profiles\All Users\Application Data

CommonFiles64Folder

The value of this property is the full path to the 64-bit Common Files folder. This property requires Windows Installer version 2.0 or later. The value of this property is the full path to the 32-bit Common Files folder. This property is used to hold the full path to the Desktop folder for the current user. If the setup is being run under Windows NT 4 or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the DesktopFolder property should hold the full path to the All Users desktop folder. The FavoritesFolder property contains the full path to the Favorites folder for the current user. This property holds the full path to the Fonts folder. This property stores the root directory of the Web server on a target system. If you are using IIS functionality in your installation project and you have added a Web site, then IISROOTFOLDER is automatically added. For more information, see Adding IISROOTFOLDER Support.

CommonFilesFolder DesktopFolder

FavoritesFolder

FontsFolder IISROOTFOLDER

InstallShield 2010 User Guide

ISP-1600-UG00

337

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Table 11-4: Default Destination Folders for Basic MSI and InstallScript MSI Projects (cont.) Folder Name INSTALLDIR Description This property stores the default destination folder for your installation programs files. You can set an initial value for INSTALLDIR in the General Information view. The location of locally stored application data. A typical value for this property is:
C:\WINNT\Profiles\UserName\Local Settings\Application Data

LocalAppDataFolder

MyPicturesFolder

Full path to the current users MyPicturesFolder, which is commonly in the following location:
C:\WINNT\Profiles\UserName\My Documents\My Pictures

PersonalFolder ProgramFiles64Folder

This property holds the full path to the current users Personal folder. This property holds the full path to the 64-bit Program Files folder. This property requires Windows Installer version 2.0 or later. This property holds the full path to the 32-bit Program Files folder. This property is used to hold the full path to the Program menu for the current user. If the installation is being run under Windows NT 4 or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the ProgramMenuFolder property should hold the full path to the All Users Programs menu. This property holds the full path to the current users SendTo folder. This property is used to hold the full path the Start menu folder for the current user. If the installation is being run under Windows NT for All Users, and the ALLUSERS property is set, then the StartMenuFolder property should hold the fully qualified path to the All Users program menu. This property is used to hold the full path to the Startup folder for the current user. If the setup is being run under Windows NT 4 or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the StartupFolder property should hold the full path to the All Users program menu. This property holds the full path to the folder containing the systems 16-bit .dll file. (In Windows Installer version 2.0, this property is no longer used.) This property holds the full path to the 32-bit Windows system folder. This property holds the full path to the 64-bit Windows system folder. This property requires Windows Installer version 2.0 or later. This property holds the full path to the Temp folder. This property holds the full path to the current users Templates folder. This property holds the full path to the Windows folder.

ProgramFilesFolder ProgramMenuFolder

SendToFolder StartMenuFolder

StartupFolder

System16Folder

SystemFolder System64Folder

TempFolder TemplateFolder WindowsFolder

338

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Table 11-4: Default Destination Folders for Basic MSI and InstallScript MSI Projects (cont.) Folder Name WindowsVolume Description This property holds the volume of the Windows folder. It is set to the drive where Windows is installed.

Creating Empty Folders


Basic MSI Projects
You can use the CreateFolder table of an .msi databaseexposed in the Direct Editorto create empty directories. For an example, see Knowledge Base article Q103218.

InstallScript MSI Projects


The CreateDir function creates an empty directory.

Specifying Hard-Coded Destination Directories


In the Files and Folders view, you can specify hard-coded destination directories.

Specifying Drive Destinations

Task

To specify a particular drive: 1. 2. 3. 4.

Open the Files and Folders view. In the Destination computers folders pane, right-click Destination Computer and click New Folder, or click Destination Computer and press INSERT. InstallShield adds a new folder. For the name of the folder, type the drive letter followed by a colon (for example, C:). Press ENTER.

Specifying Folders and Subfolders to Create a Destination Path


You can specify folders and subfolders beneath a drive letter folder to create a hard-coded destination path:
1.

Right-click the drive folder (for example, C:) under which you want to add a folder orto add a subfolderright-click the folder under which you want to add a subfolder. You can also click the folder and press INSERT. For the name of the folder, type the folder name, and then press ENTER.

2.

InstallShield 2010 User Guide

ISP-1600-UG00

339

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Quickly Creating Destination Paths

Task

To quickly create a nested destination path: 1. 2.

Right-click a folder and click New Folder, or click a folder and press INSERT. For the name of the folder, type the destination pathfor example, a\b\c. This creates a folder structure with a at the top, b below a, and c below b.

Dynamic File Linking


If you want to add the contents of an entire directory to your project, you can do so through the use of dynamic file linking. When you select a source folder for dynamic linking, InstallShield adds the files within that folder to your release at build time. InstallShield scans the source folder before every build and automatically incorporates any new or changed files into your release. Dynamic file linking is useful when the list of files in a folderand possibly the list of files in its subfoldersmight change between builds.

Important: Dynamic file linking should be used with caution. If you inadvertently delete a dynamically linked file from the source folder that your dynamic link references, that file is not included in your release the next time you build it, and InstallShield does not display any build warning or error. Your product may install without any issues, but it may not work as expected, since the dynamically linked file that was inadvertently deleted is no longer being installed. Therefore, it is recommended that you avoid using dynamic file links for critical executable filessuch as .exe, .dll, or .ocx files especially if your product requires them in order to run successfully. Whenever possible, it is better to use the best practice method, instead of the by-directory method, for creating components for dynamically linked files. Note that with both methods, however, a minor upgrade, a small update, or a patch may not install correctly if a file that was present in a target image is removed from the dynamic link for the upgrade or patch.

Filtering Dynamically Linked Files


When you are configuring your dynamic file link, you can specify whether you want to include subfolders of the dynamically linked folder. To further filter the files that are dynamically linked, you can identify specific names of files that you want to be included in or excluded from the dynamic link. In addition, you can use wild cards to specify only certain files or file types to be added or excluded. For example, if all of your image files are in one folder along with sound files and you want to dynamically link only the image files, you could specify that you would like to include only .bmp and .ico files in the dynamically linked folder. To do so, you would use an asterisk (*) in your include pattern, as in the following example:
*.bmp, *.ico

To include or exclude a specific file, you would enter the full file name in the include or exclude pattern box. For more details, see Creating a Dynamic Link.

340

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Distinguishing Dynamically Linked Files and Folders from Static Files and Folders in the InstallShield Interface
When a dynamic file is displayed within the InstallShield interface, the lower-left corner of the files icon includes an image that indicates that it is a dynamically linked file:

InstallShield includes that same dynamic file image on the icon of subfolders that are included in dynamic file links:

Furthermore, InstallShield adds an arrow to the folder imagein addition to the dynamic file imageon the component icon of subfolders that are included in dynamic file links:

The icons that the InstallShield interface displays for static files and folders do not include this dynamic link image.

Limitations of Dynamic File Linking

Important: Dynamic file linking should be used with caution. If you inadvertently delete a dynamically linked file from the source folder that your dynamic link references, that file is not included in your release the next time you build it, and InstallShield does not display any build warning or error. Your product may install without any issues, but it may not work as expected, since the dynamically linked file that was inadvertently deleted is no longer being installed. Therefore, it is recommended that you avoid using dynamic file links for critical executable filessuch as .exe, .dll, or .ocx files especially if your product requires them in order to run successfully. Whenever possible, it is better to use the best practice method, instead of the by-directory method, for creating components for dynamically linked files. Note that with both methods, however, a minor upgrade, a small update, or a patch may not install correctly if a file that was present in a target image is removed from the dynamic link for the upgrade or patch.

Limitations for Windows InstallerBased Projects


Note the following limitations if you are considering dynamic file linking in Basic MSI, InstallScript MSI, and Merge Module projects:

You cannot create custom actions to a dynamically linked file. You cannot associate a file extension with a dynamically linked file. You cannot extract COM information from a dynamically linked file. You cannot set any properties such as Shared, Permanent or Never Overwrite for a dynamically linked file. You cannot change default file settings (such as Read-Only or Hidden). You cannot set file permissions for a dynamically linked file.

InstallShield 2010 User Guide

ISP-1600-UG00

341

Chapter 11: Organizing Files for Your Installation Including Files and Folders

You cannot create shortcuts to a dynamically linked file. You cannot perform a static or dynamic scan of a dynamically linked file. For Basic MSI and Merge Module projects: You cannot launch a dynamically linked file from the SetupCompleteSuccess end-user dialog.

Any file that you add directly (not through dynamic linking) to your project has an internal name (FileKey). When you create a custom action, a file extension, shortcut, or other type of item, it actually points to this internal name. When you add files to your project through dynamic links, the files are not physically added to the project. This means that these files do not have any FileKeys that can be associated with custom actions, file extensions, etc.

Limitations for InstallScriptBased Projects


For InstallScript and InstallScript Object projects, a single component cannot contain both static files and dynamically linked files.

Determining the Appropriate Component Creation Method for Dynamically Linked Files

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

InstallShield provides two methods for creating components for dynamically linked files: the best practice method and the one-component-per-directory method.

Using the Best Practice Method


When best practices for component creation are followed, InstallShield performs the following tasks at build time for all of the files that meet the include and exclude filter criteria of your dynamic link:

InstallShield creates a separate component for each portable executable (PE) file in the dynamically linked folder. Each PE file is the key file of its component. InstallShield adds all non-PE files at the root level of the dynamic link to the component that contains the link. If the dynamic link includes a subfolder, InstallShield creates a new component for all of the non-PE files in that subfolder. If the dynamic link includes more than one subfolder, InstallShield creates a separate component for all of the non-PE files in each subfolder.

This is the default functionality for all new dynamic links.

Tip: The File Extensions tab on the Options dialog box is where you specify which file types are PE files.

342

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Using the By-Directory Method


When the by-directory method is used for component creation, InstallShield performs the following tasks at build time for all of the files that meet the include and exclude filter criteria of your dynamic link:

InstallShield creates one component for all of the files that are in the root-level dynamically linked folder, regardless of the file types. If the dynamic link includes one or more subfolders, InstallShield creates a separate component for all of the files in each subfolder, regardless of the file types. The first dynamically linked file in a subfolders component is the key file of that component.

This method of component creation is the traditional method that was available in InstallShield before the best practice method was introduced.

Determining Which Component Creation Method to Use


For most dynamic links, the preferred component creation method is the best practice method. This method enables you to create patches more easily than with the by-directory method. For minor upgrades and small updates, the components, key files, and feature-component organization need to be maintained across the earlier and later .msi databases; for patches, the File table keys also need to be maintained. Since each component name and component codeand possibly key fileschange at each build with the by-directory method of dynamic file linking, issues may occur. The advantage of the best practice method is that it allows for greater predictability than with the by-directory method.

Tip: When you are configuring an upgrade, use the patch optimization functionality in your build settings. Using patch optimization helps you keep component names, component codes, File table keys, and Directory table keys synchronized from the earlier release. For more information, see Upgrade Considerations.

Note that if you want to create a patch for an earlier version of your product, and the earlier installation includes dynamic links that used the by-directory method, you must continue to use the by-directory method for the same dynamic links. However, if you add new dynamic links in your upgrade project, you can use the best practice method for those new dynamic links. That is, you can mix both types of dynamic linking in the same project and create a patch to deliver the upgrade.

Important: Whenever possible, it is better to use the best practice method, instead of the by-directory method, for creating components for dynamically linked files. Note that with both methods, however, a minor upgrade, a small update, or a patch may not install correctly if a file that was present in a target image is removed from the dynamic link for the upgrade or patch.

Note: For information on the rules that Windows Installer uses when determining whether a file included in a package should overwrite a file that already exists on the target system, see Overwriting Files and Components on the Target System.

Specifying Which Component Creation Method You Want to Use


The File Linking tab on the Component Properties dialog box is where you specify which component creation method you want to use.
InstallShield 2010 User Guide ISP-1600-UG00 343

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Creating a Dynamic Link

Project: The procedure for creating dynamic file links differs, depending on which project type you are using. Note that parts of the procedure apply to the following Windows Installerbased projects:

Basic MSI InstallScript MSI Merge Module

Parts of the procedure apply to the following InstallScript-based projects: InstallScript InstallScript Object

You can use the Files and Folders view to create a dynamic link.

Task

To create a dynamic link: 1. 2. 3.

In the View List under Application Data, click Files and Folders. In the Add new components to the feature list, select the feature that should contain components with the dynamically linked files. Ensure that components are displayed in the Destination computers folders pane. If components are not displayed: In the Destination computers folders pane, right-click Destination Computer and click Show Components (in Windows Installerbased projects) or Show Components and Subfolders (in InstallScript-based projects).

4.

For a Windows Installerbased project: right-click a component and click Dynamic File Linking. The Component Properties dialog box opens, and the File Linking tab is displayed. For an InstallScript-based project: right-click a component and click File Linking. The Link Type dialog box opens.

5.

Define the dynamic link and click OK.

Tip: You can also use the Components view to add dynamic file links. For more information, see Adding Dynamic File Links to Components.

Adding Dynamic File Links to Components


You can use the Components view to add dynamic file links to components in both Windows Installer based and InstallScript-based projects. The procedure for creating dynamic file links differs, depending on which project type you are using.

Windows InstallerBased Projects


The following procedure applies to Basic MSI, InstallScript MSI, and Merge Module projects.

344

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Task

To add a dynamic link to a component: 1. 2. 3. 4.

In the View List under Organization, click Components. In the Components explorer, expand the component for which you want to add dynamic file links, and then click the Files item under that component. Right-click the Files pane and click Dynamic File Linking. The Modify Dynamic File Links dialog box opens. Click the New Link button. The Dynamic File Link Settings dialog box opens. This dialog box is where you set the source folder for your link, indicate whether to include its subfolders and whether the files are self-registering, and specify which file types to include and exclude. Click OK. Any file conflicts are resolved with prompts to overwrite existing files with the new versions. Click Yes to overwrite, No to retain the existing file version, or Cancel to exit the dialog box without saving any of your dynamic file link settings. You will also be warned if the folder contains no files, or if it is already in use in another dynamic link.

5.

Your new file link details appear in the Files pane.

InstallScript-Based Projects
The following procedure applies to InstallScript and InstallScript Object projects.

Task

To add a dynamic link to a component: 1. 2. 3. 4. 5.

In the View List under Organization, click Components. In the Components explorer, click the component that should contain the dynamic link. Select the value of the Link Type property and click the ellipsis button (...). The Link Type dialog box opens. Specify the folder that contains the files to include, and specify any other desired options. Click OK.

Tip: You can also use the Files and Folders view to add dynamic file links. For more information, see Creating a Dynamic Link.

Setting a Key File for a Dynamic File Link

Project: This information applies to dynamic links that use the one-component-per-directory method of component creation (as described in Determining the Appropriate Component Creation Method for Dynamically Linked Files) in the following Windows Installerbased projects:

Basic MSI
ISP-1600-UG00 345

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

InstallScript MSI Merge Module

This information does not apply to dynamic links that use the best practice method of component creation.

A dynamically linked file whose component uses the one-component-per-directory method of component creation cannot be the key file of a component. To set a key file for a component containing a dynamic link, add a static link to the desired file, and then set the static link to be the key file of the component. In the dynamic link settings, enter the full name of the key file in the Exclude files with the following extensions field. For example, you might have a source directory containing several .txt files, and you want the file called Key.txt to be the key file. First, add a static link to Key.txt to a component, and set Key.txt as the key file. Next, create a dynamic link with the same source folder, setting the Include files with the following extensions setting to *.txt and the Exclude files with the following extensions setting to Key.txt. For a dynamic link that includes subdirectories, the build process sets the first file in a subdirectorys component as the key file of the dynamically generated component.

Overwriting Files and Components on the Target System


At run time, Windows Installer considers the following questions when determining whether files should be overwritten on the target system:

Should the component be installed? If the component should be installed, do its files need to be installed or updated?

The following sections explain how Windows Installer evaluates these questions.

Determining Whether a Component Needs to Be Installed


During costing, Windows Installer checks the key path of a component to determine if the component should be installed. If the component has a directory or ODBC key path, Windows Installer installs the component. In addition, if a registry key path is used for the component and both of the following conditions are true, Windows Installer installs the component:

No is selected for the Never Overwrite setting of the component. The key path does not exist on the target system.

If one or both of those conditions are false for a component that has a registry key path, Windows Installer does not install the component at run time. If a component has a key file instead of a key path, Windows Installer checks the target system for the presence of that file. Windows Installer installs the component in all of the following scenarios:

The file is not present on the target system. The file is present on the target system, and the key file of the component has a higher or equal version number compared to the version number of the file on the target system. The file is present on the target system, and the key file of the component and the file on the target system are unversioned.

346

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

If the file on the target system has a higher version number than the key file of the component, or if the key file of the component is unversioned, Windows Installer does not install the component at run time. Thus, Windows Installer does not install a component if its key file would be downgraded at run time.

Determining Whether a File Needs to Be Installed


If Windows Installer determines that a component needs to be installed, it reviews the files for that component and determines if they need to be installed. If the name and target location of the key file matches the name and location of a file on the target system, Windows Installer uses the following rules by default to determine whether the file in your installation should overwrite the corresponding file on the target system:

Always OverwriteIf the Always Overwrite check box for the file is selected, the file on the target system is overwritten, regardless of version number. Versioned FilesIn all cases, the file with the highest version is maintained, even if the file already on

the target system has a higher version than the one being installed. Additionally, a file of any version is maintained over unversioned files.

File LanguageAll other things being equal, the file that is the same language as the installation is maintained over different language versions of the file. The only exception to this rule applies to multiple language files. Files with multiple languages are maintained over single language versions of a file. DateIf the modified date of a file already present on the target system is later than the creation date

of that file, the file is not overwritten. This rule protects user preference files from being overwritten during an upgrade or reinstallation. If a file is in the component that is being installed but it is not present on the target system, Windows Installer always installs that file.

Note: The REINSTALLMODE property can be set to modify the default file-versioning rules. For more information, see Understanding File Overwrite Rules.

Companion Files
Project: This information does not apply to the following project types:

InstallScript InstallScript Object

The use of companion files enables you to bind the installation action of one file to another file. For example, if your installation project has two filesFileA.exe and FileB.datcompanion files let you bind FileB.dat to FileA.exe so that if FileA.exe needs to be installed or reinstalled, then FileB.dat is also installed or reinstalled. If FileA.exe needs to be uninstalled, then FileB.dat is also uninstalled.

InstallShield 2010 User Guide

ISP-1600-UG00

347

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Using Companion Files


This mechanism is useful when trying to override the Windows Installers default file versioning rules. For instance, file versioning rules state that for non-versioned files, any file on the target machine that has a modified date later than its created date is considered user data and should not be overwritten. This is not always a valid assumption, so you may want to use companion files to bind a non-versioned file to a versioned file.

Creating Companion File Associations

Task

To create a companion file association: 1. 2. 3. 4. 5. 6. 7. 8.

In the Files and Folders view, add the versioned file to your project. Open the Components view. In the Components explorer, expand the component that contains the file that you just added, and then click Files. Note the value in the Key column for that file. Right-click the file and then click Add. Select the unversioned file to add it to the selected component. Right-click the second file and then click Properties. The Properties dialog box opens. Select the Override system version check box. In the Version box, type the name of the value noted in the Key column from step 3.

Note: InstallShield generates a unique file key every time you add a file. Therefore, if you remove the file that you have created a binding to, it is possible that the file key will not persist. You would need to update the version of the unversioned file.

Finding Files and Folders in Your Project


If you have added numerous folders and files to your project, you may have trouble finding a particular folder or file. You can perform a search for folders and files in the Files view; InstallShield locates any matches and highlights the first one. You can keep searching until you find all matches for your search criteria.

Task

To find files and folders in your project: 1. 2. 3.

Open the Files and Folders view. In the Destination computers folders pane, select Destination Computer. On the Edit menu, click Find. The Find dialog box opens. As an alternative, you can press CTRL+F.

348

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

4. 5. 6. 7. 8.

In the Find What box, type the text to be found. You can use wildcard expressions, such as *.exe. In the Look at area, specify whether you want to search for files, folders, or both. Specify any other desired criteria. Click Find Next. The first item (if any) that matches your search criteria is selected in either the Destination computers folders pane or the Destination computers files pane. To find the next item (if any) that matches your criteria, press the F3 key. Repeat this step as necessary.

Configuring Permissions for Files and Folders


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield lets you configure settings for securing files and folders for end users who run your product in a locked-down environment. You can assign permissions for a file or folder to specific groups and users. For example, you may assign Read, Write, and Delete permissions for a particular file to the Administrators group, but only Read permissions for all of the users in a different group.

Task

To configure the permissions for a file or folder: 1. 2.

In the View List under Application Data, click Files and Folders. For a file: In the Destination computers files pane, right-click the file and then click Properties. The Properties dialog box opens. For a folder: In the Destination computers folders pane, right-click the folder and then click Properties. The Properties dialog box opens.

3. 4.

Click the Permissions button. The Permissions dialog box opens. Add, modify, and remove permissions entries as needed. For more information, see Permissions Dialog Boxes for Files and Directories.

Depending on what is selected for the Locked-Down Permissions setting in the General Information view of your project, InstallShield adds permissions data to either the ISLockPermissions table or the LockPermissions table. To learn more, see Securing Files, Folders, and Registry Keys in a LockedDown Environment.

InstallShield 2010 User Guide

ISP-1600-UG00

349

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Tip: You can also configure permissions for a components destination folder. To do so, first click a component in the Components view. Next, click the value for the Destination Permissions setting, and then click the ellipsis button (...). The Permissions dialog box opens. On this dialog box, you can configure permissions as needed.

Extracting COM Data When Files Are Added


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

When you drag and drop new files in the Files and Folders view or in the Files subview under a component, you can statically extract COM data for self-registering files. This is an alternative to extracting COM registration data at build time. This option is also available in the COM Registration node under Advanced Settings in the Components view.

Extracting a Files COM Data

Task

To extract COM data on demand, rather than at build time:

Right-click the file (or in the COM Registration node, right-click COM Registration) and click Extract COM Data for Key File.

Note: This option is enabled only if the file is an .exe file or a file that is self-registering, and if the file is the components key file.

Tip: If you are using InstallShield on a 64-bit system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. To learn more about 64-bit support, see Targeting 64-Bit Operating Systems.

Refreshing a Files COM Data


If the files COM data has already been statically extracted, you can select Refresh COM Data for Key File. When you refresh the COM data, the old COM data is deleted from the project, then the current COM data for the file is added to the project.

350

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Installing Fonts Through InstallScript and InstallScript Object Projects


Project: This information applies to the following project types:

InstallScript InstallScript Object

When you include a font file.ttf, .ttc, or .fon filein your installation project (using either the Components view or the Files and Folders view), the file is automatically marked internally to be registered on the target machine if you have enabled global font registration. At run time, the OnInstalledFontFile event handler function is called immediately after each font file is installed; the default code for this event handler function calls the RegisterFontResource function to register the font if it is internally marked for registration.

Font Titles
InstallShield determines the font title that the installation registers for the font in the following manner:

For an .fon file, InstallShieldby defaultreads the font title from the registry of the source system. If no title can be found in the registry, InstallShield stores the file name as the font title. For an .fon file in a component whose Link Type property is set to Static, InstallShield displays the font title in the Font title box on the files File Properties dialog box. For a TrueType file (.ttf or .ttc file), by default the installation reads the font title from the file at run time, and at design time no text is displayed in the Font title box. For all three types of files, in a component whose Link Type property is set to Static, if you enter non-default text in the Font title box, the installation registers that text as the font title.

Installing Fonts to the Windows Fonts Folder

Project: This information applies to the following project types:

InstallScript InstallScript Object

Task

To install a font file to the Windows Fonts folder, do either of the following:

In the Files and Folders view, place the font file in the Destination computers folders panes Fonts Folder folder, which is a subfolder of the Windows folder. In the Components view, place the font file in a component whose Destination property is set to <FOLDER_FONTS>.

InstallShield 2010 User Guide

ISP-1600-UG00

351

Chapter 11: Organizing Files for Your Installation Including Files and Folders

Enabling or Disabling Global Font Registration

Project: This information applies to the following project types:

InstallScript InstallScript Object

You can enable or disable automatic registration of font files globally.

Task

To enable or disable global font registration: 1. 2.

In the View List under Installation Information, click General Information. In the Font Registration setting, specify the appropriate option:

To enable global font registration, select Enabled. To disable global font registration, select Disabled.

Enabling or Disabling Registration of a Font File

Project: This information applies to the following project types:

InstallScript InstallScript Object

You can enable or disable automatic registration of font files for individual files.

Task

To enable or disable automatic registration of an individual font file: 1. 2. 3.

Open the Components view, Setup Design view, or Files and Folders view. Right-click the font file and click Properties. The Properties dialog box opens. To enable automatic registration of the font file, select the Register Font File check box. To disable automatic registration, clear the Register Font File check box.

4.

Click OK.

352

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Using Components
Components are elements of the application from the installation developers perspective. Components are not visible to the end user. When the user selects a feature for installation, the installer determines which components are associated with that feature and then those components are installed. Components of an application would contain the executable binary files, data files, shortcuts, help system files, and registry entries. You can create and modify components in the Setup Design view (for installation projects) or the Components view.

Component-Feature Relationships

Project: Features are not used in merge module projects.

Components are associated with features in the Setup Design view. For more information, see Associating New Components with Features.

Files
Expand a components tree in the Setup Design view or the Components view and click Files to view a list of all files associated with that component. To learn how to add files, see Adding Files to Components.

Setup Best Practices


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield makes adhering to Setup Best Practices easier by alerting you to Best Practices violations while you are creating components in the Setup Design view and in the Component Wizard. By following these guidelines, you can create clean installations that distribute reusable components efficiently and avoid problems that result from file incompatibility. When you are creating components in the Setup Design view, the Setup Best Practices Wizard monitors the files that you add to the components, alerts you when you have done anything that conflicts with Best Practices, and then gives you the opportunity to correct the action in the wizard. To turn off the wizards automatic scanning of your setup design, select Options from the Tools menu.

InstallShield 2010 User Guide

ISP-1600-UG00

353

Chapter 11: Organizing Files for Your Installation Using Components

InstallShield checks for compliance with the following Setup Best Practices:
Table 11-5: Setup Best Practices that InstallShield Monitors Best Practice Components should not contain multiple .exe, .dll, .ocx, .chm, or .hlp files Description Each component should contain only one portable executable file (an .exe, .dll, or .ocx file) or WinHelp file (.hlp file). Windows Installer components are designed such that all of the advanced settings and component settings, such as the GUID code, refer ideally to a single portable executable file or help file. Place other .exe, .dll, .ocx, and .hlp files into new components. One reason for this rule is that, at run time, if the user chooses Repair for an installed product, Windows Installer checks for the existence of each installed components key file. If the key file is missing, Windows Installer reinstalls the missing component. Therefore, if a file that is not the key file of a component is missing, it may not be restored during repair mode. Use merge modules Merge modules contain all of the files, registry entries, and logic necessary to install a distinct piece of functionality. You should not distribute a file for which a merge module is available. Using merge modules also helps you comply with two related requirementsthe Best Practice to avoid associating a file with more than one component and the Windows logo guideline not to ship any core components. If the Best Practices monitoring option is enabled, the Setup Best Practices Wizard alerts you whenever you try adding to a component any file that is part of the merge modules that InstallShield provides.

You should also be aware of the following component creation Setup Best Practices, to which InstallShield does not automatically alert you:
Table 11-6: Setup Best Practices for which InstallShield Does Not Automatically Provide Alerts Best Practice Put a shortcut target in its own component Group other files into components Description Any file that serves as the target for a shortcut requires its own component. That file must be the key file for the component. Organize all files that do not fall into any of the above categories in components according to the files requirements, such as a common destination folder or version checking. Instead of calling self-registration functions to register and unregister COM server information, you should register this information for the component during installation (and the installer will unregister it during uninstallation). Self-registration is an unreliable method for registering and unregistering files. One advantage of having the installation register the information is that if the file is advertised, or not immediately installed, the registration is in place when the file is later requested from the installer. Therefore, InstallShield supports advanced settings specifically for registering COM servers.

Do not self-register files

Component Creation
InstallShield offers several methods for creating components.
354 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Use the Setup Design view (in installation projects only) or the Components view to create a new component and manually configure it. For more information, see Using the Setup Design or Components Views to Create a Component. Use the Component Wizard to allow InstallShield to define components for you according to Setup Best Practices. This wizard is available in the following project types: Basic MSI, InstallScript MSI, and Merge Module. For more information, see Using the Best Practices Option with the Component Wizard. If you are creating a component for a COM server, or a font, it is recommended that you use the Component Wizard. This wizard is available in the following project types: Basic MSI, InstallScript MSI, and Merge Module. For more information, see Using the Component Type Option with the Component Wizard.

Using the Setup Design or Components Views to Create a Component


For installation projects, you can create a new component in the Components view and then associate it later with a feature, or you can create a component under a specific feature in the Setup Design view, as described below. Note that the Setup Design view is not available in merge module projects.

Using the Setup Design View to Create a Component


For installation projects only, follow the steps below to create a component in the Setup Design view.

Task

To create a component in the Setup Design view: 1. 2.

In the View List under Organization, click Setup Design. In the Setup Design explorer, right-click a feature or subfeature and click New Component, or press CRTL+INSERT. InstallShield adds a new component with the default name New Component n (where n is a successive number). Enter a new name, or right-click it later and click Rename to give it a new name.

3.

The new component is automatically associated with the selected feature.

Using the Components View to Create a Component


For installation projects and merge module projects, follow the steps below to create a component in the Components view.

Task

To create a component in the Components view: 1. 2.

In the View List under Organization, click Components. Right-click the Components explorer and click New Component, or press INSERT. InstallShield adds a new component with the default name New Component n (where n is a successive number). Enter a new name, or right-click it later and click Rename to give it a new name.

3.

InstallShield 2010 User Guide

ISP-1600-UG00

355

Chapter 11: Organizing Files for Your Installation Using Components

4.

For installation projects, associate the component with one or more features.

Note: In installation projects, components that are not associated with a feature are displayed with the orphaned component icon ( ).

In InstallScript projects, the following characters are invalid in component names:


\ / : * ? " < > |

When you create a component, its property sheet is displayed to the right. You should immediately specify the components properties, including the required Component Code (Windows Installerbased projects only) and Destination properties. After you have created a component and specified its properties, you can associate your applications files, registry entries, and shortcuts with it.

Using the Best Practices Option with the Component Wizard

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The fastest way to create components is to launch the Component Wizard and have InstallShield organize your files into components for you. Select the Create components for me using best practices option to have the wizard generate components by applying Setup Best Practices to the files you specify.

Task

To launch the Component Wizard, do one of the following:

For installation projects only: Right-click a feature in the Setup Design view and select Component Wizard. For installation projects and merge module projects: Right-click Components in the explorer of the Components view and click Component Wizard.

Best Practice Rules for Creating Components

Project: This information applies to the following project types:

356

Basic MSI
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

InstallScript MSI Merge Module MSI Database MSM Database Transform

When you select the Best Practices option for creating a component through the Component Wizard, the wizard automatically organizes your files into components based on Setup Best Practices. It creates components according to the following rules:

The wizard looks at every file that you add to see if it is already included in your project. If the file is a duplicate, the wizard does not create a component for it. A new component must be created for each portable executable file (.exe, .dll, or .ocx file). The component bears the name of the portable executable file. The wizard creates a GUID for the Component Code property and sets the portable executable file as the components key file. The Component Wizard attempts to extract registration information for each portable executable file. If it succeeds, the wizard creates a COM server component and writes the data to the components COM Server advanced setting. Every help (.hlp) file that you specify will reside in its own component along with its associated contents (.cnt) file. The component is named after its help file. The wizard creates a GUID for the Component Code property and makes the help file the components key file. The same rule applies to HTML Help (.chm) files and the .chi files that accompany them. The Component Wizard puts all font (.ttf and .ttc) files into a single component called Font Files. The wizard creates a GUID for the Component Code property and sets the first file in the list as the key file. Any .fon files that you specify will automatically be included in the AllOtherFiles component that is created. Since .fon files do not have a title, they will not be added to the Font table in the .msi package. To have these files added as fonts, you will need to use the Fonts option in the Component Wizard. Any files that do not fall into the above categories are grouped into a single component named All Other Files. The wizard creates a GUID for the Component Code property and sets the first file in the list as the key file.

Letting InstallShield Create a COM Server Component

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

357

Chapter 11: Organizing Files for Your Installation Using Components

If you select the Create components for me using Best Practices option on the Welcome panel of the Component Wizard, InstallShield automatically creates a separate component for each portable executable file that you specify. The wizard also attempts to extract registration information for each portable executable file. If it succeeds, all of the registration information that maps to the COM Registration advanced setting is written there. The wizard creates any additional entries, such as the InProcServer32 ThreadingModel value, in the components registry data.

Note: If your COM server is an executable, you must put an OLESelfRegister attribute with the value of 1 into the Version section of the components resource file.

Letting InstallShield Create Font Components

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If you select the Create components for me using Best Practices option on the Welcome panel of the Component Wizard, InstallShield automatically creates a separate component for all font (.ttf and .ttc) files that you specify. Any .fon files are added to the AllOtherFiles component that is created due to the fact that these files do not have an embedded font title. To have .fon files added to your setup as fonts, use the Fonts option in the Component Wizard. The destination folder for the font component is set to the destination folder that you chose in the Component Wizard. After the component is created, you can set its Destination Folder to the Windows Installer folder property FontsFolder (that is, use [FontsFolder] as the destination), the usual default location for fonts. Place square brackets around FontsFolder, as you would when specifying [INSTALLDIR].

Task

If the font was not registered on your system, you must specify the font title by doing the following: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (in installation projects only) or Components. In the explorer, expand the component that contains the font file and click Files. The Files view opens. Right-click the font file and click Properties. The Properties dialog box opens. In the Font title box, type a font title in the format FontName (FontType)for example, Roman (All
res).

358

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

5.

Click OK.

Using the Component Type Option with the Component Wizard

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If you have files with special installation requirements, using the Let me select a type and define the component myself option of the Component Wizard is the recommended method for organizing them into components.

Task

To launch the Component Wizard, do one of the following:

For installation projects only: In the Setup Design view, right-click a feature and click Component Wizard. For installation projects and merge module projects: In the Components view, right-click the Components explorer and click Component Wizard.

The Let me select a type and define the component myself option of the Component Wizard supports the following component types:

COM servers Font files Install services Control services

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

Installing COM Servers

Project: This information applies to the following project types:


InstallShield 2010 User Guide ISP-1600-UG00 359

Chapter 11: Organizing Files for Your Installation Using Components

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Although you can create a component in one of several ways, the recommended method for installing a COM server (.exe, .dll, or .ocx) file in an installation is to create a COM server component in the Component Wizard. The wizard panels displayed depend on the selections you made in previous panels. For example, the Classes panel is not displayed if the wizard succeeds in extracting the registration information in the COM Server Executable panel.

Tip: InstallShield includes support for 64-bit COM extraction. For more information, see Targeting 64-Bit Operating Systems.

Installing Fonts

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Although you can create a component in one of several ways, the easiest way to install a font (a .ttf, .fon, or .ttc file) in an installation is to create a Fonts component in the Component Wizard. In the Component Wizard, the panels that are displayed depend on the selections made in previous panels. For example, the Add New Fonts panel is not displayed unless you selected I also want to add fonts not installed on this system in the Add Installed Fonts panel.

Exporting Components to Other Projects

Project: This information applies to the following project types:


360

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Transform

Task

To save a component to another project: 1. 2.

In the View List under Organization, click Setup Design (in installation projects only) or Components. Right-click the component and click Export Components Wizard.

Tip: You can also access the Export Components Wizard from the Project menu in InstallShield.

When you export a component into a project, a copy of this component is added to the specified .ism file, along with all of the components data, such as its files, shortcuts, registry entries, and advanced settings. Any string entries, properties, and path variables used in the dialog are also copied to your new project. If the target .ism file already has a component of the same name with different properties, the Resolve Conflict dialog box opens to offer you options for resolving the conflicts.

Deleting a Component in Your Project

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

You can permanently delete components in both the Setup Design view and the Components view.

Task

To delete a component: 1. 2.

In the View List under Organization, click Setup Design or Components. Right-click the component and click Delete from project.

The component is permanently deleted from your project.

InstallShield 2010 User Guide

ISP-1600-UG00

361

Chapter 11: Organizing Files for Your Installation Using Components

Component-Feature Associations
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

A component can be associated with as many features or subfeatures as necessary. For example, a text editor product might have two featuresan editor and a spell checker. Both the editor and spell checker have dependencies that are in a System .dll files component. When designing this installation, you should associate the System .dll files component with both the editor and the spell checker features. You can associate components with features in the Setup Design view. There are two ways to associate components with features in the Setup Design view, depending on whether or not the component already exists. For more information, see Associating New Components with Features and Associating Existing Components with Features.

Note: Components that are not associated with a feature are displayed with the orphaned component icon:

Associating New Components with Features

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

Task

To associate a new component with a feature: 1. 2.

In the View List under Organization, click Setup Design. Right-click the feature or subfeature and click New Component or Component Wizard. InstallShield creates a component and associates it with the selected feature.

362

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Associating Existing Components with Features

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

Task

To associate an existing component with a feature: 1. 2. 3.

In the View List under Organization, click Setup Design. Right-click the feature or subfeature and click Insert Components. Select the components you want to associate with this feature from the list of components, and click OK.

You can move or copy existing components from one feature to another using a drag-and-drop operation:

To move an existing component, drag the component from one feature to another. To copy an existing component, press CTRL while you drag the component from one feature to another.

Disassociating Components from Features

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

Task

To remove a component-feature association: 1. 2.

In the View List under Organization, click Setup Design. Right-click the component that you want to dissociate from the feature, and click Remove from feature.

InstallShield 2010 User Guide

ISP-1600-UG00

363

Chapter 11: Organizing Files for Your Installation Using Components

Even though the component is no longer associated with this feature, it is still present in your project.

Adding Data to a Component


You can use the Components view to add files, registry data, and shortcuts to components.

Adding Files to Components


All of the files in a component must share the same component settings.

Criteria for Adding Files to a Component


You can add a group of files to a component only if they satisfy all of the following criteria:

All files have the same destination folder. All files should be installed with the same conditions (including operating system and language).

Create new components organized around your files installation needs and component properties. You should also be aware of Setup Best Practices when adding files to a component. Setup Best Practices helps you to write clean installations and distribute reusable components effectively.

Methods for Adding Files to Components


The way in which you add files to a component varies slightly depending on how you create your component. The sections below discuss how to associate files with components based on the way in which the component was created. Creating a New Component in InstallShield When you create a component by right-clicking in the Setup Design view (for installation projects) or the Components view, first select the components Files item to view its file list.

Task

Use one of the following methods to associate files with this component:

Drag and drop files from Windows Explorer onto the file list. Right-click in the file list and click Add. In the resulting dialog box, browse to select as many files as you want to add from that folder. Click Open.

Creating a New Component Using the Component Wizard If you use the Component Wizard to create a component, you can add files to the component in the Files panel.

Task

Use one of the following methods to associate files with this component:

Drag and drop files from Windows Explorer onto the file list.

364

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Right-click in the file list and click Add. In the resulting dialog box, browse to select as many files as you want to add from that folder. Click Open.

InstallShield creates links to your applications files. These links are used to locate the files when you build a release of your installation. If any of these links becomes invalid, File Not Found appears next to the file. All of the above methods for adding files link the files statically, which means that the file links do not change if new files are added to or removed from the source folder. For an alternative to static linking, see Adding Dynamic File Links to Components.

Changing the Value in the Link To Column for a Components File

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

In the Components view, you can expand a component to display the Files node, which shows the files associated with that component. In the Files explorer, the Link To column provides the directory or the path variable that you used when you added the file. You can use the Direct Editor to change what appears in this column.

Task

To edit the directory: 1. 2. 3.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, click File. Locate the file and edit the value in the ISBuildSourcePath column.

Deleting a File from a Component

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database

InstallShield 2010 User Guide

ISP-1600-UG00

365

Chapter 11: Organizing Files for Your Installation Using Components

MSM Database Transform

Task

To delete a file from a component: 1. 2.

In the View List under Organization, click Components. In the Components explorer, expand the component that contains the file that you want to delete, and then click Files item under it. The files associated with that component are displayed in the right pane. Right-click the file that you want to delete and click Delete.

3.

Adding Registry Data to Components


You can use the Registry view to add registry keys and values to a component. This information is written to the target systems registry if the component is installed. To learn how to add registry keys and values, see the following:

Creating Registry Keys Dragging and Dropping Registry Entries to Create Registry Keys Creating Registry Values Importing Registry Files Exporting Registry Files

Creating Shortcuts in the Components View

Project: For installation projects, you can create shortcuts in the Shortcuts view.

Before you can create a shortcut, you must create a component that contains the file to which the shortcut is going to link.

Task

To create a new shortcut: 1. 2. 3.

Open the Components view. In the Components explorer, expand the component that should be associated with the shortcut that you are creating, and then click Shortcuts. The Shortcuts explorer opens in a new pane. In the Shortcuts explorer, right-click a destination folder and click either New Folder or New Shortcut. You can create a program folder if you want your shortcut to appear under your company name, for example. If you created a folder for your shortcut, create the shortcut by right-clicking your new folder and clicking New Shortcut.

366

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

4.

Define the shortcuts properties.

Adding Subfolders to Statically Linked Components

Project: This information does not apply to Basic MSI projects or InstallScript MSI projects.

Task

To add a subfolder to a statically linked component:

In the Components or Setup Design view, right-click the components Static File Links subnode and then click New Folder.

Component Key Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

One of your components files can serve as its key file. A key file is a file that the Windows Installer uses to detect the components presence on the target machine and determine whether it needs to be updated. In order to create advanced component settings or shortcuts, a key file must be specified.

Caution: If your project includes dynamically linked files, InstallShield may automatically set some of the dynamically linked files as the key file of a component. For more information, see Determining the Appropriate Component Creation Method for Dynamically Linked Files.

Setting Component Key Files

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

InstallShield 2010 User Guide

ISP-1600-UG00

367

Chapter 11: Organizing Files for Your Installation Using Components

Transform

Task

To specify one of your components files as the key file: 1. 2. 3.

In the View List under Organization, click Setup Design (in installation projects only) or Components. In the explorer, expand the component and click Files. Right-click in the files list and click Set Key File. The file icon ( key icon ( ). ) for that file is replaced with a

A component can have either one key file or one key path. If you have already set a key file or a key path for a component, a warning message box appears if you try to set another key file. Click Yes in the message box to replace the existing key file or key path with the new key file.

Note: You cannot specify a key file in the Files and Folders view. Key files must be set in either the Setup Design or Components view.

Clearing a Key File from a Component

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If you no longer want a file to serve as the components key file, you can clear the key file from that component.

Task

To clear the key file from a component: 1. 2. 3.

In the View List under Organization, click Setup Design (in installation projects only) or Components. In the explorer, expand the component and click Files. Right-click the key file and click Clear Key File.

368

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Component Settings
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

When you create a component, its settings have default values, depending on whether you created the component using a view, or using a wizard.

Task

To edit a components settings: 1. 2.

In the View List under Organization, click Setup Design or Components. Click the component that you want to configure, and modify its settings as needed.

For descriptions of each of the settings, see Component Settings.

Component Destination vs. Feature Destination

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

Both components and features have a destination setting, but there are some differences in how they are used when an end user runs your installation.

InstallShield 2010 User Guide

ISP-1600-UG00

369

Chapter 11: Organizing Files for Your Installation Using Components

Allowing End Users to Change the Destination


You can use the features destination setting if you want to allow the end user to modify where the feature is installed on the target system. Because a features destination can be changed by the end user, you must use a public property for the feature destination. A public property has a name with only uppercase letters (for example, INSTALLDIR).

Note: If you want all the components in a feature to be installed to the features destination, you must set all of the components destinations to match the features destination.

Setting a Specific Destination


If you want a component to go to a specific location that cannot be changed by the end user, you must set the component destination to some directory that is not used as a feature destination.

Setting a Destination Folder for the Components Files

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

Each component can have a different destination location for its files. The default value for the Destination setting is as follows:

For Basic MSI, InstallScript MSI, MSI Database, and Transform projectsINSTALLDIR, initialized to [ProgramFilesFolder]Company Name\Product Name in the products INSTALLDIR property For InstallScript and InstallScript Object projectsTARGETDIR, initialized by default to PROGRAMFILES ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME in the default script code for the OnFirstUIBefore event handler function For Merge Module and MSM Database projectsINSTALLDIR, initialized to [ProgramFilesFolder]Company Name\Product Name in the merge modules INSTALLDIR property

Windows Logo Guideline: According to Windows logo requirements, the default destination of your applications files must be a subfolder of the end users Program Files folder. If you use INSTALLDIR or ProgramFilesFolder as the parent folder for your features Destination setting, your files will be installed to the correct location.

370

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Task

To change the components destination folder: 1. 2. 3.

In the View List under Organization, click Components or Setup Design. Select the component whose destination you want to change. In the Destination setting, select one of the options from the list, or click the ellipsis button (...) to select or create a directory.

Other Destination Folder Considerations

Project: These considerations apply to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Components Remote Installation Property Setting the components Remote Installation setting to Favor Source (or to Optional when the components feature is set to Favor Source) means that the components files will not be installed on the target system, regardless of the components Destination setting. Features Remote Installation Property Each feature also has a Destination setting. If different, the components Destination setting overrides the features destination. The features Destination setting is optional, but the components is required. INSTALLDIR as Default Destination The assumption behind using INSTALLDIR as the default Destination setting for all of your features and components is that you want all of your applications files installed to the same root folder. This way, when an end user changes the destination folder for any of the features in the CustomSetup dialog, the destination folders for all of the features that are set to be installed to the path contained in INSTALLDIR also change.

Note: If the components destination is set to something other than INSTALLDIR, the components are installed to the destination specified for each component and changing INSTALLDIR has no effect on the components destinations. An installer folder property such as INSTALLDIR specifies a default value. An end user can change this value by setting a property when launching Msiexec.exe at the command line or by selecting a new destination folder for a feature in the CustomSetup dialog.

InstallShield 2010 User Guide

ISP-1600-UG00

371

Chapter 11: Organizing Files for Your Installation Using Components

[GlobalAssemblyCache] for Components Containing a .NET Assembly If a component contains a .NET assembly, you can set the components destination to [GlobalAssemblyCache]. When a .NET assembly is installed to a target systems Global Assembly Cache, the assembly can be accessed by other applications on the system. In general, it is preferable to install assemblies to the local application directory. This increases application isolation.

Note: To install an assembly to the Global Assembly Cache, the .NET Scan at Build component property must be set to either Properties Only or Dependencies and Properties.

Specifying a Components Destination from the Script

Project: This applies to InstallScript projects only.

Specifying the target destination of a components files from the script lets you change that destination at run time based on end-user input or other conditions.

Task

To specify the target destination of a components files from the script: 1. 2.

In the View List under Application Data, click Files and Folders. In the Destination computers folders pane, right-click Script-defined Folders and click New Folder. InstallShield adds a subfolder with the default name <NEW VARIABLE N>, where N is a successive number. You can rename this subfolder to any string that is enclosed in angle brackets; for example, <My Script-defined Folder>. To specify the target destination of an existing components files:
a. b. c.

3.

In the View List under Organization, click Components or Setup Design. Select the component that you want to configure. In the components property grid, click the value of the Destination property and in the list, select the name of the subfolder that you created in step 1.

To create a new component and specify the target destination of its files:
a.

In the Files and Folders view, drag the desired file or files from the Source computers folders pane and drop them on the subfolder that you created in step 1. InstallShield creates a new component with the default name FilesN. In your script, call FeatureSetTarget to assign a target location to the subfolder that you created in step 1; for example:
AskDestPath( "" , "Choose a location for the XYZ files." , svEndUserSelectedPath, 0 ); ComponentSetTarget( MEDIA , "<My Script-defined Folder>" , svEndUserSelectedPath);

b.

372

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Uppercase Directory Identifiers and Component Destinations

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Declaring a Directory Identifier in uppercase letters makes that value a public property that can be set from the user interface. In order to allow the end user or administrator to change the destination via the user interface or from the command line, the Directory Identifier for the components destination must be a public property. Using mixed-case or lowercase letters for the Directory Identifier defines the directory entry as a private property. Private properties cannot be changed from the user interface.

Specifying Whether a Components Files and Other Associated Data Are Uninstalled During Uninstallation
You may need to ensure that a components files, registry entries, shortcuts, and other data are not uninstalled when end users uninstall your product. Following are examples of scenarios where it may be appropriate to ensure that a components data are not uninstalled:

You want to prevent the uninstallation of files that may be used by other products. The component contains a font. The component is being installed to [SystemFolder]. According to validation rules, if a component is installed to this location, it should not be uninstalled during uninstallation.

The setting that controls whether the components data are uninstalled depends on which project type you are using.

Task

To specify whether a components files, registry entries, and other data are uninstalled: 1. 2.

In the Setup Design view or the Components view, select the component that you want to configure. InstallShield displays its settings in the right pane. In Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsConfigure the Permanent setting as appropriate:

If the component data should not be uninstalled when end users uninstall the product, select Yes. If the component data should be uninstalled, select No.

In InstallScript and InstallScript Object projectsConfigure the Uninstall setting as appropriate:


InstallShield 2010 User Guide ISP-1600-UG00 373

Chapter 11: Organizing Files for Your Installation Using Components

If the component data should not be uninstalled when end users uninstall the product, select No. If the component data should be uninstalled, select Yes.

The Permanent and Uninstall settings apply to all types of data that are associated with a component. This includes files, registry entries, shortcuts, XML file changes, and SQL scripts.

Configuring Component Conditions

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Conditional installation of your components can be useful if you are creating different versions of the same productfor example, a trial version and a full version. You might not want to provide full functionality in the trial version, therefore you would not install all of the components. Another use for conditional component installation is to save disk space. If the target system does not have enough disk space for all of the components, you can set non-required components to install conditionally. Using the components Condition setting, you can enter a statement that the installation must evaluate before setting up your components data on the target system. The component is not installed if its condition evaluates to false. However, the component is installed or advertised if its condition evaluates to true, assuming that its feature is selected for installation.

Task

To set a condition for a component in your project: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure. Click the Condition setting and then click the ellipsis button (...). The Condition Builder dialog box opens. Do one of the following:

In the Conditions box, type the component condition. Use the Properties list, the Operators list, and the Add buttons to build your condition:
a.

In the Properties list, select a property and then click the Add button. InstallShield adds the property to the Condition column.

374

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

b.

If your conditional statement should contain an operator, select an operator in the Operators list and then click the Add button. InstallShield adds the operator to the conditional statement. If your conditional statement should contain a value, enter the value.

c. 5.

Click OK.

Important: InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements.

Reevaluating Component Conditions During Reinstallation

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Windows Installer evaluates a components condition again when a product is reinstalled if you select Yes for the components Reevaluate Condition setting. If the condition evaluates to true upon reinstallation, the component is reinstalledor installed for the first time if the condition initially evaluated to false or if the component was never selected for installation.

Transitive Components
Components that were installed but whose conditions evaluate to false upon reinstallation are removed. Because of this special feature, which allows you, in effect, to swap components during reinstallation, components with Yes selected for the Reevaluate Condition setting are considered transitive components. Consider an application that requires a different .dll file depending on whether it is installed on Windows XP or Windows Vista. You could create a component for each file and attach a condition to each component to check the version of the operating system. The component for Windows Vista would have the following condition:
VersionNT=600

The Windows XPspecific component might have the following condition:


VersionNT<600

When the product is installed on a Windows XP system, the appropriate version of the .dll file is installed and the Windows Vista version is not. What happens if the end user upgrades to Windows Vista? When the product is reinstalled, the Windows XPspecific component is uninstalled, and the Windows Vistaspecific component is installed (as long as these components are both transitive).

InstallShield 2010 User Guide

ISP-1600-UG00

375

Chapter 11: Organizing Files for Your Installation Using Components

Managing Reference Counts for Shared Files

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

A files reference count (also referred to as refcount) is the number of products on a target system that use the file. Reference counts help to ensure that if multiple products are sharing a file, the file remains on the target system until all of the products that share it are removed. Reference counts for shared files are stored in the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs

Both Windows Installerbased projects and InstallScript-based projects include support for managing the reference counts for shared files. The functionality is slightly different, depending on the project type.

Behavior in Windows InstallerBased Installations


In Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projects, you can indicate that a key file is shared by selecting Yes for the Shared setting of the key files component. If the installation installs the key file and Yes is selected for the components Shared setting, a reference count is created in the registryif it does not already existand incremented. During uninstallation of the key file, the reference count is decremented.

Windows Logo Guideline: Windows logo guidelines require that the reference count be incremented when installing shared files and decremented when uninstalling. Core component files (which they recommend you not install) should not be reference counted.

Behavior in InstallScript-Based Installations


In InstallScript and InstallScript Object projects, you can mark a component as shared. If the installation installs the components files and Yes is selected for the components Shared setting, a reference count for each file is created in the registryif it does not already existand incremented. During uninstallation of the component, the reference count is decremented. You can call the InstallScript function GetFileInfo with the FILE_SHARED_COUNT constant to determine an existing files reference count.

376

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

How to Mark a Component as Shared

Task

To specify that a components key file (in a Windows Installerbased project) or that a component (in an InstallScript-based project) is shared: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure. For the Shared setting, select Yes.

Tip: One example of when you should always mark a component as shared is if its files are to be installed to a shared directory such as the System folder or the Common Files folder.

Note: Note that the installation increments any existing reference count for any file in a component regardless of whether you mark the component as shared. However, if no reference count exists, the installation does not create one unless you select Yes for this Shared setting.

Checking File Versions Before Installing

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

For InstallScript projects, this functionality is handled by the components Overwrite setting. When you click the ellipsis button (...) in this setting, the Overwrite dialog box opens, enabling you to specify whether files of the component should overwrite existing files on the target system.

The Never Overwrite setting for a component enables you to indicate whether you want your installation to overwrite a file if it already exists on the target system:

If you select Yes, the fileif it exists on the target systemis never overwritten, regardless of the file version. Selecting Yes for this setting overrides file versioning rules. If you select No and the file version on the target system is newer than the version being installed, the file on the target system is not overwritten. However, if the version being installed is newer, the file on the target system is overwritten.

InstallShield 2010 User Guide

ISP-1600-UG00

377

Chapter 11: Organizing Files for Your Installation Using Components

Windows Installer checks for the existence of the components key file when determining if it should install the component. For more information, see Overwriting Files and Components on the Target System.

Installing Files of the Same Name

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The Source Location setting for a component identifies a subfolder where the components files will be stored in the source disk images, if the components files are not compressed. The components files will be copied to this subfolder in your release image. The Source Location setting does not require a value, and in most cases, it can be left blank. If you enter a value, it must be a valid Windows folder name. One instance where the Source Location setting could be used is when you are creating an installation that contains more than one language. In this scenario, you can have multiple files with the same name. You can create a component for each language and configure the Source Location setting as needed for each one. When you use the Source Location setting, any file with the same name can be copied onto the disk in two different locations, without the risk of being overwritten. For example, create two components called German and English. For the first components Source Location setting, enter GermanVersion. For the second components Source Location setting, enter EnglishVersion. Create two files called Test.txt, giving them slightly different contents. Assign each file to a component. When you build your installation with uncompressed files, two separate folders on the disk images will be created, one called GermanVersion and one called EnglishVersion. Separate versions of Test.txt will be copied to each of these folders, but neither copy will be overwritten.

Note: The Source Location setting is not the same as the destination location. While it is conceivable that you might want to copy both versions of the file to the end users machine, it is more likely that you would want to filter the files by language.

Setting a Components Remote Installation Setting

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

378

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

MSM Database Transform

The Remote Installation setting for a component determines whether the components files are installed on the target system or run from the source medium, such as a CD-ROM or network server. The default value for a new component is Favor Local, which means that the components files are installed on the target system.

Task

To change this value so the components files run only from the source medium: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure. Click the value for the Remote Installation property to display a list, and then select Favor Source. Selecting Optional gives this component the Remote Installation property of its feature.

The components Remote Installation setting overrides the features. For more information, see Components Remote Installation Setting vs. Features Remote Installation Setting.

Caution: If the component contains a Windows service, select the Favor Local option. Although an end user could change the features installation state through the CustomSetup dialog, the Windows Installer cannot install a service remotely.

Components Remote Installation Setting vs. Features Remote Installation Setting

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module Transform

The components Remote Installation setting always overrides the features Remote Installation setting. For example, if a components Remote Installation setting is set to Favor Local, its files are installed on the target system regardless of the features Remote Installation setting. The files are run from the source medium when a components Remote Installation setting is set to Favor Source. If you want a components feature to dictate whether the files run from the source medium, select Optional for the components Remote Installation setting. When a component is associated with more than one feature and Optional is selected for the components Remote Installation setting, the files are installed locally if any of its features is set to Favor Local. If the component is set to Favor Local or Favor Source, the files are installed accordingly.

InstallShield 2010 User Guide

ISP-1600-UG00

379

Chapter 11: Organizing Files for Your Installation Using Components

Extracting COM Registration at Build Time

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

By selecting Yes for a components COM Extract at Build setting, you indicate that you want InstallShield to scan the components key file for COM registration data whenever you build a release. The extracted information is placed into the release so that Windows Installer registers the COM server when it is installed or advertised. All the necessary registry settings made by the components /RegServer will be extracted when you select Yes for this property. Unlike the Component Wizard, the build process does not write the extracted COM information to the project (.ism) file. Instead, it is dynamic, in that it is updated each time that you rebuild. It also means that you can rebuild an existing release through InstallShield or the command line even when you do not have write access to the project file.

Note: The PATH system variable on the build machine must be set to include the directories of all of the .dll files to which the COM server links; otherwise, the file will fail to register and COM information will not be extracted. The build feedback (displayed in the Output window and in the build log files) details the registration information that was extracted.

Tip: If you are using InstallShield on a 64-bit system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. To learn more about 64-bit support, see Targeting 64-Bit Operating Systems.

Resolving Conflicts
Despite selecting Yes for the COM Extract at Build setting, you can still specify COM information under the components COM Registration advanced setting and in the components Registry explorer. The existing information will always be registered when the component is installed. If entries are detected under COM Registration, InstallShield asks you if you want to delete them if Yes is selected for the COM Extract at Build setting. If any conflicts are found during the build, you receive a warning about the item in the advanced setting that was overwritten with the dynamically acquired data. Even with these safeguards, you might want to check the COM Registration advanced setting and the components registry data to verify that the entries are intentional and do not conflict with the data extracted at build time.

Scanning for .NET Dependencies and Properties

Project: This information applies to the following project types:

380

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

InstallShield lets you indicate that a component should be scanned for .NET dependencies and properties at build time. The functionality depends on the project type that you are using.

Windows InstallerBased Projects


In Basic MSI, InstallScript MSI, and Merge Module projects, you can use the .NET Scan at Build setting to indicate whether you want a components key file to be scanned for .NET dependencies and properties at build time.

Note: The build-time scan does not scan the key file of a component if the key file is not a .NET assembly file.

Several options are available from the .NET Scan at Build setting for a component:
Table 11-7: Options for the .NET Scan at Build Setting in Windows InstallerBased Projects Option None Description InstallShield does not scan the key file of this component for .NET dependencies or properties. At build time, InstallShield scans the key file of this component for .NET properties. InstallShield populates the MsiAssembly and MsiAssemblyName tables with the assembly properties, as needed. At build time, InstallShield scans the key file of this component for .NET dependencies and properties. InstallShield populates the MsiAssembly and MsiAssemblyName tables with the assembly properties, as needed. In addition, InstallShield adds the missing files, components, and merge modules that are required by the .NET assembly to the release.

Properties Only

Dependencies and Properties

Note: To install an assembly to the Global Assembly Cache, the .NET Scan at Build setting must be set to either Properties Only or Dependencies and Properties. This setting affects how the Static Scanning Wizard scans the files in your project.

InstallScript-Based Projects
In InstallScript and InstallScript Object projects, you can use the .NET Scan at Build setting to indicate whether you want a components files to be scanned for .NET dependencies at build time.

InstallShield 2010 User Guide

ISP-1600-UG00

381

Chapter 11: Organizing Files for Your Installation Using Components

Several options are available from the .NET Scan at Build setting for a component:
Table 11-8: Options for the .NET Scan at Build Setting in InstallScript-Based Projects Option None Dependencies Description InstallShield does not scan the files of this component for .NET dependencies. InstallShield scans the files of this component for .NET dependencies. InstallShield adds the missing dependencies to the release.

Specifying the .NET Application File

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The .NET Application File setting is used when the component is scanned at build time (based on the .NET Scan at Build setting) or by the Static Scanning Wizard. The scanner uses this settingalong with the component destinationto determine the value of the File Application setting for the assembly. The scanning algorithm works in the following way to configure the .NET assemblys File Application setting:
1. 2.

The scanning algorithm checks the components Destination setting. If the value is [GlobalAssemblyCache], the .NET assemblys File Application setting is set to null. If the components destination is something other than [GlobalAssemblyCache], the scanning algorithm checks the components .NET Application File setting. If this value is not null, the value of this setting is used to set the assemblys File Application setting. If the components destination is something other than [GlobalAssemblyCache] and the .NET Application File setting is null, the components key file is used to set the assemblys File Application setting.

3.

Reading Properties Passed to the .NET Installer Class


This is an example of a .NET class that implements the installer class and demonstrates how to read properties that are passed to the installer class from the installation.
using using using using System; System.Configuration.Install; System.Windows.Forms; System.Collections;

namespace MyInstall { /// /// Summary description for Class1. /// [System.ComponentModel.RunInstallerAttribute(true)]
382 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

public class MyInstallClass : Installer { public MyInstallClass() { } public override void Install(IDictionary stateSaver) { base.Install(stateSaver); foreach(string strKey in Context.Parameters.Keys) { MessageBox.Show(strKey + " is " + Context.Parameters[strKey]); } } public override void Commit(IDictionary stateSaver) { base.Commit(stateSaver); foreach(string strKey in Context.Parameters.Keys) { MessageBox.Show(strKey + " is " + Context.Parameters[strKey]); } } public override void Uninstall(IDictionary stateSaver) { base.Uninstall(stateSaver); foreach(string strKey in Context.Parameters.Keys) { MessageBox.Show(strKey + " is " + Context.Parameters[strKey]); } } public override void Rollback(IDictionary stateSaver) { base.Rollback(stateSaver); foreach(string strKey in Context.Parameters.Keys) { MessageBox.Show(strKey + " is " + Context.Parameters[strKey]); } } }; }

Enabling and Disabling Registry Reflection

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module Transform

Registry reflection keeps the 32-bit registry view and the 64-bit registry view in sync on the target machine.

InstallShield 2010 User Guide

ISP-1600-UG00

383

Chapter 11: Organizing Files for Your Installation Using Components

Note: Only 64-bit systems with Windows Installer 4 and later support registry reflection. In addition, only Windows Vista and later and Windows Server 2008 and later support it.

If an end user installs a 64-bit application that has a component with registry reflection enabled, Windows Installer makes the associated registry changes in the 64-bit view of the registry, and the reflector copies the registry changes to the 32-bit registry view. Similarly, if an end user then installs a 32-bit application that modifies the same registry key or value, Windows Installer makes the associated registry changes in the 32-bit view of the registry, and the reflector copies the registry changes to the 64bit registry view. If registry reflection is disabled, Windows Installer calls the RegDisableReflectionKey function on each key being accessed by the component. This function disables registry reflection for the specified key. Disabling reflection for a key does not affect reflection of any subkeys.

Task

To enable or disable registry reflection for all new and existing registry keys that are affected by a component: 1. 2. 3.

In the View List under Organization, click Components. In the Components explorer, select the component for which you want to configure the registry reflection setting. To enable registry reflection, set the Disable Registry Reflection setting to No. This is the default value. To disable registry reflection, set the Disable Registry Reflection setting to Yes.

For more information about registry reflection, see Registry Reflection in the MSDN Library.

Specifying Whether Shared Component Patching Should Be Enabled for a Component

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

InstallShield lets you specify whether you want to enable shared component patching for a component. By default, it is disabled. If this multiple-package sharing feature were enabled in at least one package that is installed on the target system, Windows Installer 4.5 treats the component as shared among all of those packages. If a patch that shares this component is uninstalled, Windows Installer can continue to share the highest version of the components files on the system.

384

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

The purpose of this multiple-package component sharing is to prevent files from being downgraded during the uninstallation of a patch that contains a component that is shared with one or more other installed packages. The intent is to keep the highest version of the components files present on the machine after uninstallation of that patch.

Note: If the DisableSharedComponent policy is set to 1 on a target system, Windows Installer ignores this setting for all packages. Windows Installer 4.0 and earlier ignore this setting.

The following diagram illustrates an example of two products, ABC and XYZ, that share a component that contains a file called file.dll. An end user installs product ABC first, and version 1.0.0.0 of file.dll in the shared component is installed. Next, the end user installs product XYZ, which includes version 1.1.0.0 of file.dll. Since this version is higher than the file that was installed for product ABC, Windows Installer overwrites the current version with version 1.1.0.0. Then, the end user installs an uninstallable patch for product ABC. This patch contains version 1.2.0.0 of file.dll. Since this version is higher than the one that is already present on the target system, Windows Installer overwrites the current version with version 1.2.0.0. If the end user uninstalls the patch, either of the following results may occur:

If the value of the Multiple Package Shared Component setting is Yes for either product ABC or product XYZ and if Windows Installer 4.5 is present, uninstalling the patch from product ABC could restore version 1.1.0.0 to the target system. If the value of this setting is No for product ABC and product XYZ, the file would be downgraded to version 1.0.0.0, even though product XYZ used 1.1.0.0. As a result, if product XYZ requires version 1.1.0.0, product XYZ may no longer work properly.

InstallShield 2010 User Guide

ISP-1600-UG00

385

Chapter 11: Organizing Files for Your Installation Using Components

Figure 11-1: If the Multiple Package Shared Component setting for the shared component is set to Yes in either package and if Windows Installer 4.5 is present, version 1.1.0.0 of the file may be restored. Otherwise, the file may be unintentionally downgraded to version 1.0.0.0.

386

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Task

To specify whether to enable shared component patching for a component: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure. Select the appropriate value for the Multiple Package Shared Component setting:

To enable shared component patching, select Yes. InstallShield sets the msidbComponentAttributesShared attribute of the selected component to indicate that it should be shared. To disable shared component patching, select No. InstallShield does not set the msidbComponentAttributesShared attribute of the selected component. However, if this component is shared with another package, the msidbComponentAttributesShared attribute may be set for this component in that package. Therefore, Windows Installer 4.5 would consider the multiple-package component to be shared.

Advanced Component Settings


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Advanced Settings area under a component in the Components view (and in the Setup Design view) enables you to fulfill installation requirements for special component types. For example, when you copy an .ocx file to the target system, you must register its classes, ProgIDs, and type libraries so that the files methods can be properly accessed. Advanced settings use Windows Installers built-in functionality for registering COM servers; setting up ODBC drivers, data sources, and translators; installing, controlling, and configuring Windows services; and registering a file association. By specifying the advanced settings, you can publish your component and register COM servers, file extension servers, and MIME types. If the component is selected, an advanced setting is made on the target system when the component is installed or advertised. That way, the file is ready to execute once it is installed. Publishing componentsa type of advertisingis accomplished through the Publishing advanced setting.

InstallShield 2010 User Guide

ISP-1600-UG00

387

Chapter 11: Organizing Files for Your Installation Using Components

Configuring COM Registration Settings Manually

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Important: The recommended method for installing a COM server is to have Windows Installer register its classes, ProgIDs, and so on. Calling self-registration functions violates Setup Best Practices. It is recommended that you avoid using the TypeLib table. For more information, see TypeLib Table in the Windows

Installer Help Library. The easiest way to populate the COM Registration advanced setting is to have the Component Wizard extract the necessary information or extract COM data for a key file. (You can also have it extracted dynamically at build time, in which case you do not need to use this advanced setting.) It is recommended that you modify the COM Registration advanced setting or create COM entries in the components Registry explorer only if you are familiar with the technical details behind your files registration.

Task

To install a COM server solely through editing the components advanced settings: 1. 2. 3. 4. 5.

Ensure that a single COM server is added to the component. The file must be a single portable executable file (such as an .exe, .dll, or .ocx file), according to Setup Best Practices. Make the COM server the components key file. For the components COM Extract at Build setting, select No. Expand the components Advanced Settings item to view all of the advanced settings. Click COM Registration to configure COM server information.

Right-click one of the items in the COM Registration explorer to modify or to create registration information for your COM server. Right-click an item and click Rename to rename the new item.

Note: The PATH system variable on the build machine must be set to include the directories of all of the .dll files to which the COM server links; otherwise, the file will fail to register and COM information will not be extracted.

Configure the settings for each registration item or subitem that you create. More help is available in the help pane in InstallShield when you click each registration setting.

388

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Configuring COM Classes for COM Registration Manually

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Task

To register a class ID: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select COM Registration. The COM Registration explorer appears in a separate pane. In the COM Registration explorer, right-click COM Classes and click New COM Class. Type a new name for the COM class if needed. The name that you give the COM class will be registered as the default value under HKEY_CLASSES_ROOT\CLSID\<GUID>. To give the class a new name, right-click it and click Rename. Click the new COM class to configure its settings. Specify a context type for this class. The following list tells you which server context is appropriate for which type of COM server:

5. 6.

LocalServer3232-bit .exe file LocalServer16-bit .exe file InprocServer3232-bit .dll or .ocx file InprocServer16-bit .dll or .ocx file

If the server context is LocalServer or LocalServer32, click the context to configure the Default Inproc Handler and Argument settings.

Configuring ProgIDs for COM Registration Manually

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database


ISP-1600-UG00 389

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

MSM Database Transform

A progID is a string used to identify a class in the format Component.Class.N.

Task

To specify a new programmatic identifier: 1. 2. 3. 4. 5.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select COM Registration. The COM Registration explorer appears in a separate pane. In the COM Registration explorer, right-click ProgIDs and click New ProgID. Type a new name for the ProgID. Use the format Component.Class.N. To give the class a new name, right-click it and click Rename. Click the new ProgID to configure its settings.

Version-Independent ProgIDs
A version-independent progID is a string used to identify a class in the format Component.Class, which is constant for all versions of a class.

Task

To specify a new version-independent programmatic identifier: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select COM Registration. The COM Registration explorer appears in a separate pane. In the COM Registration explorer, right-click Version-Independent ProgIDs and click New ProgID. Type a new name for the ProgID. Use the format Component.Class. To give the class a new name, right-click it and click Rename.

Configuring Type Libraries for COM Registration Manually

Project: This information applies to the following project types:


390

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Important: It is recommended that you avoid using the TypeLib table. For more information, see TypeLib Table in the

Windows Installer Help Library.

Task

To specify a type library or libID: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select COM Registration. The COM Registration explorer appears in a separate pane. In the COM Registration explorer, right-click Type Libraries and click New Type Library. Type a new name for the type library, or libID, referenced by this COM server. The name that you give the type library item is registered as the default value under HKEY_CLASSES_ROOT\TYPELIB\<libID>\<version>. Use the format Component.Class. To give the class a new name, right-click it and click Rename. Click on the type library to configure its settings.

5.

Registering a File Extension

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If your application manipulates files with a unique file extension, you can register your file type in the File Types area, which is available as an advanced setting within the Components view and the Setup Design view (for installation projects only). For example, if your application manipulates files with the .xyz extension, registering the file type instructs the operating system to open the file with your application when the user double-clicks its icon. This advanced setting registers the following information about a file type on the target system when the component is installed or advertised:
Table 11-9: File Type Information Information Registered File Extensions Description You can associate file extensions (such as .doc and .txt) with the components key file.

InstallShield 2010 User Guide

ISP-1600-UG00

391

Chapter 11: Organizing Files for Your Installation Using Components

Table 11-9: File Type Information (cont.) Information Registered ProgIDs Description By setting the ProgID property in the extension, you can name a ProgIDfor example, extfilethat will contain the file type registration. You can register command verbs (such as Open and Print) that appear in the context menu that Windows Explorer displays when an end user right-clicks a file with the current extension. You can also register multipurpose Internet mail extension (MIME) types, also known as media types or content types, for the components key file. You can also associate a MIME type with a class ID.

Verbs

MIME Type

Note: File associations are stored in both HKLM\SOFTWARE\Classes and HKCU\SOFTWARE\Classes; you can see a merged view of the data under HKEY_CLASSES_ROOT. It is recommended that you use the File Types editor instead of writing directly to the registry to support Windows Installer feature advertisement. Note also that Windows Installer writes file-extension advertisement information to the registry, which appears to be a string of random characters. This behavior is normal.

Installing, Controlling, and Configuring Windows Services

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Windows services are executable files that Windowsbased systems run in the background to manage various system tasks, even if no user is currently logged in. A service is an executable file, but it must be designed as a service; you cannot automatically use an arbitrary executable file as a service. Windows services can be installed to run every time that the system starts or on demand when needed. InstallShield enables you to install new Windows services and configure existing services. Windows has a Services administrative tool with which you can view and configure the services that are installed on a system. You can use the Setup Design view (in installation projects) or the Components view to create a component that installs, starts, stops, or deletes a service during installation or uninstallation. You can also use these views to configure extended service customization options that are available with Windows Installer 5. Note that the service that you are starting, stopping, deleting, or configuring can either be already present on the target system during installation or uninstallation, or it can be installed as part of your installation.
392 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Task

To install, start, stop, delete, uninstall, or configure a service: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Create the component that you want to contain the service. For more information, see Using the Setup Design or Components Views to Create a Component. Add the service (a single executable file) to the component. For more information, see Adding Files to Components. The file must be an .exe file, since the Windows Installer does not support driver services. Make the executable file that contains this components service the components key file. For more information, see Component Key Files. Expand the components Advanced Settings item to view all of the advanced settings. Right-click the Services node and then click Add Service. InstallShield adds a new service. Type a new name for the service now, or click it and then press F2 later to rename it. The Services node in the Advanced Settings area is where you specify the required information about the service that is included in the selected component. To add the service information to the component, right-click the Services node and then click Add Service. Next specify the service name for the service that you are configuring. The name that you enter must match the name that is shown on the services Properties dialog box. (To access an installed services properties: In the Services administrative tool, right-click the service and then click Properties.)

4. 5. 6. 7.

8.

Select the service that you added, and then configure the settings that are displayed in the right pane as needed. For information about each of the settings, see Services Settings.

Note: You must be familiar with the technical details of your service before you can configure its settings.

Tip: If configuring the service fails at run time, the installation may fail with an error message. ICE102 validates some of the service-related settings to help avoid such configuration failures. Therefore, it is recommended that you perform validation for your release.

Repeat the process for each service in this components key file.

Installing Assemblies

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database


ISP-1600-UG00 393

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

MSM Database Transform

Note: The recommended way to add a .NET assembly to your installation project is to add an assembly as a components key file and set the components .NET Scan at Build property.

In the Assembly section of a components Advanced Settings, you can add a private or global Win32 assembly or .NET assembly to be registered when the current component is installed. Using assemblies helps you install products that are self-contained, without affecting other applications on the system. Note that a component can contain only one assembly.

Adding Assemblies

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

When you add a .NET assembly as the key file of a component, InstallShield automatically adds values to the .NET Assembly property grid when the component is scanned at build time, or when you run the Static Scanning Wizard.

Task

To add a .NET or Win32 assembly to a component: 1. 2. 3. 4. 5.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component. Click the Advanced Settings item to expand it. Right-click Assembly and then click New Win32 Assembly or New .NET Assembly. Click the assembly and then configure the Manifest, File Application, and related settings.

InstallShield adds the information that you enter for the assembly to the MsiAssembly and MsiAssemblyName tables of your Windows Installer database. You can view and edit these tables using the Direct Editor.

394

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Deleting Assemblies

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Task

To delete an assembly from a component: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component. Click the Advanced Settings item to expand it. Right-click the assembly and click Delete.

Testing for .NET Assembly Support on the Target System

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

To see if a target system supports .NET assemblies, you can test the MsiNetAssemblySupport property. To see if a target system supports Win32 assemblies, you can test the MsiWin32AssemblySupport property. (Win32 assemblies are supported only on Windows XP and later.) The assembly tables, actions, and properties require Windows Installer version 2.0 or later.

Specifying an Application Path for a Component

Project: This information applies to the following project types:

Basic MSI InstallScript MSI


ISP-1600-UG00 395

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Merge Module MSI Database MSM Database Transform

The App Paths registry key is a useful installation-related key that helps an executable file find its .dll files without having to modify the PATH environment variable. An executable files App Paths key looks like this: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Filename.exe A programs App Paths key typically contains a value named Path, which should contain a semicolondelimited list of directories where the programs .dll files could be located. Windows uses this key to find your application and its .dll files if their locations are not already in the systems path. If an end user moves or renames your applications executable file through the Explorer shell, Windows automatically updates the files App Paths key.

Task

To specify an application path for your component: 1. 2. 3. 4. 5.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure, and expand its Advanced Settings item. Click the Application Paths item under Advanced Settings. Select the check box of the file for which you would like to create a key. In the Application Path column, enter the paths to the files dependencies, or select a Windows Installer folder property from the list rather than hard-coding a path. Separate multiple paths with a semicolon (;). Click OK.

6.

Configuring Device Driver Settings

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

For information on installing device drivers in InstallScript projects, see Installing Device Drivers.

Once you run the Device Driver Wizard, which adds the table and entries, custom actions, features, and components needed to include device drivers in your installation, you can set properties associated with a component that includes a device driver. The following information describes the various options that you can set within InstallShield.

396

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

The Device Driver advanced settings Common tab within the Components view enables you to specify whether the current component includes a device driver and, if so, select desired run-time installation options. The Sequence tab enables you to specify the order in which the projects device drivers (not just the current components device drivers) should be installed.

Publishing Components

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Publishing advanced setting for a component enables you to specify publishing information for your component. Publishing is a type of advertising (just-in-time installation) in which no user-interface elements are created for the component during installation, but the component can be installed through Add or Remove Programs or when an installed component requests the published component from the installer. You must create at least one component ID for each advertised component.

Important: Do not confuse the component ID with the GUID that is entered in the Component Code setting for the component; they must be unique values. The component ID that you use for the Publishing advanced setting is a category identifier that represents the category of components that are being grouped together as a qualified component.

Each component ID must have at least one qualifier. The qualifier is a string that you can use to distinguish this language or version of the component from any other (for example, to specify a language). It must be unique for the component. At run time, the installation registers the component IDs and qualifiers and uses these unique values to manage the published components. By calling the Windows Installer functions, your installed componentor another installed component (known as cross-product advertisement)can request information about an advertised component and install it.

Specifying Publishing Information

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 397

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Transform

The Publishing advanced setting for a component enables you to specify publishing information for your component. Publishing is a type of advertising (just-in-time installation) in which no user-interface elements are created for the component during installation, but the component can be installed through Add or Remove Programs or when an installed component requests the published component from the installer.

Task

To publish a component that you have created: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (in installation projects only) or Components. In the explorer, expand the component that you want to publish, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. Right-click the Publishing explorer and then click New ComponentID to generate an ID for your new component. InstallShield adds a unique componentID and a corresponding qualifier. In the Publishing explorer, click the new qualifier and configure its value.

In the Custom Actions and Sequences view of an installation project, you can set the conditions that need to be fulfilled in order for your product to be advertised on the target system.

Task

To set the advertisement conditions in an installation project: 1. 2. 3.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Sequences explorer, expand the Advertisement item, and then the Execute item. Click the appropriate Execute action, and then configure its Conditions setting as needed.

Adding ComponentIDs for a Component to Be Published

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

You must add at least one componentID to the Publishing advanced setting of a component if you want the component to be published.

398

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Using Components

Task

To add a componentID: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component that should have the new componentID, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. Right-click the Publishing explorer and then click New ComponentID. InstallShield adds a unique componentID and a corresponding qualifier.

Removing ComponentIDs

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Task

To remove a componentID: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. In the Publishing explorer, right-click the componentID and click Delete.

Adding Qualifiers to ComponentIDs

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

399

Chapter 11: Organizing Files for Your Installation Using Components

Each componentID must have at least one qualifier. When you create a componentID, by default it has a qualifier. To rename this qualifier, right-click it and click Rename.

Task

To add a new qualifier: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. In the Publishing explorer, right-click the componentID and click New Qualifier. InstallShield creates a new qualifier with a default name. Type a name for the qualifier.

Removing Qualifiers from ComponentIDs

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Task

To remove a qualifier: 1. 2. 3.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. In the Publishing explorer, right-click the qualifier and click Delete.

Configuring Qualifier Settings

Project: This information applies to the following project types:


400

Basic MSI InstallScript MSI Merge Module MSI Database


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

MSM Database Transform

You have the option of specifying an informational string, called application data, for each qualifier.

Task

To set the qualifier properties: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. In the explorer, expand the component, and under Advanced Settings, select Publishing. The Publishing explorer appears in a separate pane. In the Publishing explorer, click the qualifier. In the Application Data setting, enter the appropriate value. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Defining Features
A feature is the smallest installable part of a product, from the end users perspective. It represents a specific capability of your productsuch as its help files or a part of a product suite that can be installed or uninstalled based on the end users selections. Your entire installation should be divided into features, each of which performs a specific purpose. Subfeatures are further divisions of a feature. Because features should be self-contained elements of a product or product suite that an end user can selectively install, it might make sense for you to organize portions of your installation as subfeatures of a parent feature.

Tip: Although you can create many levels of subfeatures, you should keep the design as simple as possible for organizational purposes.

Creating Features
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database

InstallShield 2010 User Guide

ISP-1600-UG00

401

Chapter 11: Organizing Files for Your Installation Defining Features

Transform

You can use the Setup Design view or the Features view to create features, as well as subfeatures, for your project.

Task

To create a feature: 1. 2. 3. 4.

In the View List under Organization, click Setup Design or Features. Right-click the top-level item in the explorer and click New Feature. InstallShield adds a new feature with the default name New Feature_n (where n is a successive number). Enter a new name, or right-click it later and click Rename to give it a new name. Configure the features settings in the right pane.

Project: In Basic MSI, InstallScript MSI, MSI Database, and Transform projects, feature names must contain only letters, digits, underscores (_), and periods (.), and they must begin with a letter or an underscore. In InstallScript and InstallScript Object projects, the following characters are invalid in feature names: \/:*?"<>|

Tip: To add a subfeature, right-click the parent feature and click New Feature. You can create multiple nested features at one time by adding a new feature and typing Feature 1\Feature 2\Feature
3 for the features name. InstallShield creates a nested feature structure where Feature 3 is a subfeature of Feature 2,

which is a subfeature of Feature 1.

After you have created all of your products features and subfeatures, you need to create components and then associate them with your features.

Configuring Feature Settings


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

402

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

Task

To configure a features settings: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. Configure the settings in the grid in the right pane.

Setting a Features Destination


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Each feature and subfeature can have a different destination location for its files. The default value for a new features Destination setting is INSTALLDIR, which is set in the General Information view.

Windows Logo Guideline: According to the Certified for Windows Vista program requirements, the default destination of your products files must be a subfolder of the Program Files folder or the end users Application Data folder, regardless of the language of the target system.

Task

To change the features destination folder: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature whose destination you want to change. In the Destination setting, select one of the options from the list, or click the ellipsis button (...) to select or create a directory. If you want the destination to be configurable at run time, the destination folder that you select must be a public property (containing all uppercase letters).

Note: You can leave the features Destination setting blank.

InstallShield 2010 User Guide

ISP-1600-UG00

403

Chapter 11: Organizing Files for Your Installation Defining Features

Other Destination Folder Considerations


Changing Feature Destinations at Run Time If you want to change a features destination directory at run time based on the end users feature selection, you can use Windows Installer custom action type 35. For more information about changing a directorys target location, see Changing the Target Location for a Directory in the Windows Installer Help Library. Features Remote Installation Setting Setting the features Remote Installation setting to Favor Source (or to Favor Parent when the subfeatures parent feature is set to Favor Source) means that the features files will not be installed on the target system, regardless of the features Destination setting. Components Destination Setting Each component also has a Destination setting. If the features Destination setting and the components Destination setting have different values, the components Destination setting overrides the features. The features Destination setting is optional, but the components Destination setting is required. INSTALLDIR as Default Destination The assumption behind using INSTALLDIR as the default Destination property for all features and components is that all of your applications files should be installed to the same root folder. As a result, when an end user changes the destination folder for any of the features in the CustomSetup dialog, the destination folders for all of the features that are set to be installed to the path contained in INSTALLDIR also change.

Note: If the components destination is set to something other than INSTALLDIR, the component is installed to the destination that is specified for the component; changing INSTALLDIR has no effect on the components destination. A directory property such as INSTALLDIR specifies a default value. An end user can change this value by setting a property when launching Msiexec.exe at the command line or by selecting a new destination folder for a feature in the CustomSetup dialog.

Setting Feature Conditions


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Conditional installation of your features can be useful if you are creating different versions of the same productfor example, a trial version and a full version. You might not want to provide full functionality in the trial version; therefore, you would not install all of the features. Another use for conditional feature installation is to save disk space. If the target system does not have enough disk space for all of the features, you can set non-required features to install conditionally.
404 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

Task

To set a condition for a feature in your project: 1. 2. 3. 4. 5.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. Click the Condition setting and then click the ellipsis button (...). The Feature Condition Builder dialog box opens. Click the New Condition button. InstallShield adds a new condition row to the Conditions box. In the Level column, type the install level that should be used for the feature if the condition is met. Note that if the condition is met, this value overrides the value that is specified for the features the Install Level setting.

6.

Do one of the following:

In the Condition column, type the feature condition. Use the Properties list, the Operators list, and the Add buttons to build your condition:
a. b.

In the Properties list, select a property and then click the Add button. InstallShield adds the property to the Condition column. If your conditional statement should contain an operator, select an operator in the Operators list and then click the Add button. InstallShield adds the operator to the conditional statement. If your conditional statement should contain a value, double-click the condition field, press END so that the insertion point is at the end of the condition statement, and enter the value.

c. 7.

Click OK.

Important: InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements.

Run-Time Behavior for Feature Conditions


The default install level of a feature is the value that is configured in the Install Level setting in the Features view or the Setup Design view. This value is overridden if a feature condition evaluates as true; in this case, the install level of the feature is set to the Level value that is associated with the true conditional statement. Each features install level value is compared to the value of the global public property INSTALLLEVEL; only those features with install level values less than or equal to INSTALLLEVEL are selected for installation.

InstallShield 2010 User Guide

ISP-1600-UG00

405

Chapter 11: Organizing Files for Your Installation Defining Features

For example, if you have a feature that you want to be selected by default only if the end user has elevated privileges, you can give the feature a condition of Not Privileged and set the install level for that condition to 200. If the end user does not have elevated privileges, the condition is true, and the feature will be given the install level 200. Because 200 is greater than the default product install level (100), the feature will not be selected by default.

Tip: You can conditionally hide a feature by giving the feature a condition that sets the install level to the number 0. If the condition is true, the feature will be deselected, and it will not be displayed in the CustomSetup dialog.

Displaying Features to End Users


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

InstallShield enables you to indicate how you want a feature to be presented to the end user in the custom setup type dialog that corresponds with your project type:

For Basic MSI, MSI Database, and Transform projectsCustomSetup dialog For InstallScript MSI projectsSdFeatureDialog2, SdFeatureMult, or SdFeatureTree

The Display setting for a feature in the Features view or the Setup Design view is where you indicate whether and how the feature should be displayed. Available options are:
Table 11-10: Options that Are Available for the Display Setting Option Visible and Collapsed Description The feature is displayed in the run-time dialog with its subfeatures collapsed by default. The feature is displayed in the run-time dialog with its subfeatures expanded by default. The feature and subfeatures are not displayed in the run-time dialog.

Visible and Expanded

Not Visible

Note: Selecting Not Visible for this setting does not have any direct impact on whether a feature is installed. A feature is not automatically installed if it is invisibleit just cannot be deselected if it would otherwise be installed, or selected if it should not be installed.

406

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

Conditionally Selecting Features


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The procedure for conditionally selecting features at run time depends on the project type that you are using.

Basic MSI, MSI Database, and Transform Projects


The Condition setting for a feature enables you to specify a non-default Install Level value if the condition that you specify succeeds. If a features Install Level value is less than or equal to the projects INSTALLLEVEL property, the feature will be selected to be installed.

Task

For example, to deselect a feature if the end user does not have administrator privileges: 1. 2. 3. 4. 5. 6. 7.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. Click the Condition setting and then click the ellipsis button (...). The Feature Condition Builder dialog box opens. Click the New Condition button. InstallShield adds a new condition row to the Conditions box. In the Level column, type 200. In the Condition column, type Not AdminUser. Click OK.

At run time, if the end user does not have administrator privileges (that is, if the condition succeeds), the Install Level property for the feature is set to 200. Because the default INSTALLLEVEL property for a project is 100, the feature is deselected.

Task

You can change the INSTALLLEVEL property in the Property Manager.

InstallScript and InstallScript MSI Projects


The FeatureSelectItem function enables you to select or deselect a feature displayed in a feature-selection dialog such as SdFeatureTree.

InstallShield 2010 User Guide

ISP-1600-UG00

407

Chapter 11: Organizing Files for Your Installation Defining Features

Conditionally Hiding Features


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The procedure for conditionally hiding features at run time depends on the project type that you are using.

Basic MSI, MSI Database, and Transform Projects


Any feature given an Install Level of zero will be hidden (and deselected).

Task

For example, to hide a feature if the end user running your installation does not have administrative privileges: 1. 2. 3. 4. 5. 6. 7.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. Click the Condition setting and then click the ellipsis button (...). The Feature Condition Builder dialog box opens. Click the New Condition button. InstallShield adds a new condition row to the Conditions box. In the Level column, type 0. In the Condition column, type Not AdminUser. Click OK.

After rebuilding your project and running the installation, the feature will not be displayed or installed if the end user does not have administrative privileges.

InstallScript and InstallScript MSI Projects


The FeatureSetData function accepts a FEATURE_FIELD_VISIBLE constant that lets you control whether a specific feature is displayed. For example, to hide a feature called HiddenFeature, include the following function call in your script:
FeatureSetData (MEDIA, "HiddenFeature", FEATURE_FIELD_VISIBLE, FALSE, "");

Note: Hiding a feature does not automatically deselect it. To deselect the feature so that its data is not installed, call the following:
408 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

FeatureSelectItem(MEDIA, "FeatureName", FALSE);

Requiring Features to Be Installed


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

When you select Yes for a features Required setting, the end user cannot deselect it in the CustomSetup dialog (for Basic MSI, MSI Database, and Transform projects), or the SdFeatureDialog2, SdFeatureMult, or SdFeatureTree dialogs (for InstallScript MSI projects). The feature will be installed to the target system. For InstallScript MSI projects, this setting pertains only to root-level features. If a subfeature should be installed to the target system, use the Required Features setting to make the subfeature a required feature of the parent feature. The value for the parent features Required setting must be Yes. If the value for the Required setting is No, the feature is installed by default, but the end user can deselect it.

Advertising Features
Project: This information applies to the following project types:

Basic MSI MSI Database Transform

InstallShield enables you to selectively enable or disable a feature for advertisement. Advertised features are not installed immediately during the installation process. Instead, they are installed when requested. If the feature is assigned, the feature appears to be already installed, although it is not installed until the end user requests it. (Assigned features have their shortcuts installed, and they can be installed from Add or Remove Programs in the Control Panel. However, an assigned feature is advertised until a user requests it.) A published feature does not appear on the target system until it is requested from the installer. (Published features lack any end userinterface elements. They are installed programmatically or through an associated MIME type.)

InstallShield 2010 User Guide

ISP-1600-UG00

409

Chapter 11: Organizing Files for Your Installation Defining Features

Use the Advertised setting in the Features view to specify whether advertisement should be allowed. Available options for this setting are:
Table 11-11: Options that Are Available for the Advertisement Setting Option Allow Advertise Description End users have the ability to select the advertisement option for this feature in the CustomSetup dialog. Although advertisement is allowed, it is not the default option when the installation is run. The feature is advertised by default. End users can change the advertisement option for a feature in the CustomSetup dialog. Advertising is not allowed for this feature. End users cannot elect to have the feature advertised in the CustomSetup dialog. Advertisement works only on systems with Internet Explorer 4.01 or later. If the target system does not meet this criterion, advertising is not allowed. If the target system can support advertisement, advertising is allowed.

Favor Advertise

Disallow Advertise

Disable Advertise if Not Supported

When you allow feature advertisement, the feature is advertised, regardless of the mode in which the installation is running, as long as no other factors prevent it from being advertised. In the CustomSetup dialog, the end user can control which features are immediately installed and which are available later. Advertisement usually requires support from the application. For example, your products spell checker can be advertised. The application interface offers use of the spell checker through a menu command or toolbar button. You must write to check the features installation state and install it when the customer clicks the Spell Check command or button.

Configuring a Features Install Level Setting


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

For InstallScript MSI projects, this information applies only if no setup types are defined in the project.

The Install Level setting for a feature is compared against the INSTALLLEVEL property at run time to determine which features are available for installation. You can use this setting to create specific feature configurations. Unless the end user deselects features in the CustomSetup dialog, all features with an install level less than or equal to the value of the packages INSTALLLEVEL property are installed to the target system.

Note: You can change the packages INSTALLLEVEL property in the Property Manager.

410

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

Task

To set a features Install Level property: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. For the Install Level setting, type an integer for this features install level. The recommended value is 100.

Setting a Features Remote Installation Setting


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The Remote Installation setting for a feature determines whether the features files are installed on the target system or run from the source medium, such as a CD-ROM or network server. The default value for a new feature is Favor Local, which means that the files in the selected feature are installed on the target system.

Task

To change the Remote Installation setting so that the features files run only from the source medium: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. In the Remote Installation setting, select Favor Source.

Tip: Selecting Favor Parent gives a subfeature the same value as its parent feature.

Caution: If any of the features components contain a Windows service, select Favor Local for the Remote Installation setting. Although an end user could change the installation state through the CustomSetup dialog, the Windows Installer cannot install a service remotely.

Using Release Flags with Features


Project: The following project types include support for release flags:

InstallShield 2010 User Guide

ISP-1600-UG00

411

Chapter 11: Organizing Files for Your Installation Defining Features

Basic MSI InstallScript MSI

Release flags enable you to create different versions of your product without having to create more than one project. There are two steps for filtering features according to release flags: assigning release flags and specifying which flags to include in the release.

Assigning Release Flags to Features

Project: The following project types include support for release flags:

Basic MSI InstallScript MSI

Release flags must be set on features that you want to exclude from certain builds. For example, if you have a feature called Add-ons that should be included only in a special edition of your product, you can flag that feature and include it only when needed.

Task

To add a release flag to a feature: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. For the Release Flags setting, type a string. The string can be any combination of letters or numbers. To have more than one flag on a feature, use a comma to separate the flags.

To learn how to filter features based on release flags, see Release Flags.

Removing Release Flags

Project: The following project types include support for release flags:

Basic MSI InstallScript MSI

Task

To remove a release flag from a feature: 1. 2. 3.

In the View List under Organization, click Setup Design or Features. Select the feature that you want to configure. In the Release Flags setting, delete the value.

412

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Defining Features

Reordering Features
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

When your end users install your product, the CustomSetup dialog (in Basic MSI, MSI Database, or Transform installations) or one of the feature selection dialogs (in InstallScript or InstallScript MSI installations) displays the features in the same order that they are displayed in the Features view in InstallShield. You can change the order in which the features are displayed.

Task

To change the feature order: 1. 2.

In the View List under Organization, click Setup Design or Features. Right-click the feature that you want to move and click Move Up or Move Down. You can also move a feature left or right, thereby making it a subfeature of another feature or a top-level feature.

Tip: You can also reorder your features by dragging and dropping. Any feature or subfeature can be moved in this way.

Using the Required Features Setting


Project: This information applies to the following project types:

InstallScript InstallScript MSI InstallScript Object

The Required Features setting enables to you specify features that are required by the selected feature. For example, you might have an installation with two featuresProgramFiles and HelpFiles. If it is necessary that end users install ProgramFiles whenever the HelpFiles feature is selected, you need to use the Required Features property.

Task

To arrange this feature requirement: 1. 2.

In the View List under Organization, click Setup Design or Features. Select the HelpFiles feature.
ISP-1600-UG00 413

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Working with Setup Types

3. 4. 5.

Click the Required Features property and then click the ellipsis button (...). The Required Features dialog box opens. Select the ProgramFiles check box. Click OK.

At run time, if the user selects a Custom setup type, feature-selection dialogs such as SdFeatureTree will not allow the user to deselect the ProgramFiles feature if the HelpFiles feature is selected.

Working with Setup Types


Project: Setup types are available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level setting.

Setup types enable you to provide different versions of your product to your end users. For example, the default setup types are Complete and Custom for an InstallScript project and Minimal, Typical, and Custom for an InstallScript MSI project. The Complete and Typical setup types install all of the files included in your installation. Minimal installs only those files necessary for your product to run. Such things as multimedia demos are not installed in order to preserve hard disk space. The Custom setup type lets the end user select which features are installed. Setup types are based on features. You select the features that you would like to associate with each setup type. Then, when an end user selects a certain setup type, only those features that you associated with that setup type are installed. By default, each project that you create contains predefined setup types. In the Setup Types view, you can add or remove setup types, rename existing setup types, and change which features are associated with each one.

Adding Setup Types


Project: Setup types are available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level setting.

Task

To add a setup type: 1. 2.

In the View List under Organization, click Setup Types. Right-click the Setup Types explorer and click Add. InstallShield adds a new setup type.
ISP-1600-UG00 InstallShield 2010 User Guide

414

Chapter 11: Organizing Files for Your Installation Working with Setup Types

3.

Type a new name for the setup type.

Editing Setup Types


Project: Setup types are available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level setting.

Task

To change which features are associated with a setup type: 1. 2. 3.

In the View List under Organization, click Setup Types. In the Setup Types explorer, click the setup type that you want to edit. All of the features in your installation project appear in the lower-left pane. Clear the check boxes next to the features that should not be included in the selected setup type. Select the check boxes next to those features that you want included.

Any setup types listed in the Setup Types pane are automatically added to your installation project.

Note: The SetupType function displays only the standard setup typesTypical, Compact, and Customwith fixed description text for each. If you want greater flexibility, call SdSetupTypeEx in your script instead. (The default code for the OnFirstUIBefore event handler includes a call to the SetupType function.)

Tip: To provide an accelerator key for your setup type, include an ampersand (&) before a letter in the name. For example, the name Cu&stom becomes the label Custom, and the end user can select it during installation by pressing the S key.

Renaming Setup Types


Project: Setup types are available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level setting.

InstallShield 2010 User Guide

ISP-1600-UG00

415

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To rename a setup type: 1. 2. 3.

In the View List under Organization, click Setup Types. In the Setup Types explorer, right-click the setup type that you want to edit and then click Rename. Type a new name for your setup type.

This updates the Display Name setting for the selected setup type. The name is displayed in the SetupTypes dialog at run time.

Deleting Setup Types


Project: Setup types are available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level setting.

Task

To delete a setup type: 1. 2.

In the View List under Organization, click Setup Types. In the Setup Types explorer, right-click the setup type that you want to delete and then click Remove.

Including Redistributables in Your Installation


InstallShield includes many commonly used third-party redistributables, making it easy to add support for popular technologies such as Crystal Reports, Microsoft Access, and MDAC to your installation. When you add redistributables to your project, the redistributables, plus all of the associated dependencies, are added to your installation. This simplifies the process of packaging redistributables and helps to facilitate consistency for internal or external use. The Redistributables view (or in InstallScript and InstallScript Object projects, the Objects view) contains all of the InstallShield objects and third-party merge modules that are included with InstallShield. In Basic MSI and InstallScript MSI projects, this view also contains InstallShield prerequisites that you can add to your installation. In InstallScript projects, you can use the Prerequisites view to add InstallShield prerequisites to your installation.

416

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

InstallShield Prerequisites
An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects. InstallShield includes a base set of InstallShield prerequisites. You can also use the InstallShield Prerequisite Editor in InstallShield to define custom InstallShield prerequisites or to edit settings for any existing InstallShield prerequisites. InstallShield includes support for two types of InstallShield prerequisites:

Setup prerequisiteThe installation for this type of prerequisite runs before your installation runs. Feature prerequisiteThis type of prerequisite is associated with one or more features. It is installed if the feature that contains the prerequisite is installed and if the prerequisite is not already installed on the system. Thus, if a feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed.

Project: Basic MSI projects include support for feature prerequisites.

Merge Modules
A merge module (or .msm file) contains all of the logic and files needed to install distinct pieces of functionality. For example, some applications require Microsoft Visual Basic run-time .dll files. Instead of having to include the file in a component and figure out its installation requirements, you can simply attach the Visual Basic Virtual Machine merge module to one of your projects features.

Note: Many of the merge modules included in the Redistributables view are authored by Microsoft or another third party. InstallShield distributes these modules as a courtesy to assist you in creating your installation project. However, InstallShield cannot modify or fix any problems that may exist within third party-authored modules. You are encouraged to contact the vendor regarding issues with specific third party-authored modules.

Objects
Like merge modules, objects contain logic and files needed to install distinct pieces of functionality. Some objects, such as the Microsoft Access object included with InstallShield, require customization through a wizard. As soon as you add such an object to your installation, its customization wizard opens. You can either customize your object at the time you add it, or cancel the wizard and customize your object later by right-clicking the object and selecting Change Objects Settings.

Live Redistributables Gallery


Because the file size of many of the redistributables is so large, some that are available for use in your projects are not added to your computer when you install InstallShield. However, these redistributables are still available for download from the Internet to your computer. In addition, a newer version of a redistributable that you have on your computer may be available for download.

InstallShield 2010 User Guide

ISP-1600-UG00

417

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Configurable Merge Modules


A configurable redistributable is a merge module or an object that has at least one row in the ModuleConfiguration table that is referenced by at least one row in the ModuleSubstitution table. This enables you to change a value in the redistributable. When you select a configurable module in the Redistributables view, the Merge Module Configurable Values dialog box is displayed to enable you to configure the module at the time you add it. To customize the merge module later, right-click it and select Configure merge module.

Shipping Redistributable Files


InstallShield provides third-party redistributables that you can incorporate into your installation project. If you include redistributable technology in your projectfor example, Crystal Reportsthat redistributable must be licensed from the vendor. You cannot legally redistribute these technologies without the appropriate licensing. For details, consult the vendors documentation. To learn which InstallShield files you may redistribute with your installation, see KB article Q104371.

Managing the Redistributables Gallery


Live Redistributables Gallery
Because the file size of many of the redistributables is so large, some that are available for use in your projects are not added to your computer when you install InstallShield. However, these redistributables are still available for download from the Internet to your computer. In addition, a newer version of a redistributable that you have on your computer may be available for download. You can identify the status of a redistributable by its icon. Following is a list of the possible icons in the Redistributables view (or in InstallScript projects, the Objects view or the Prerequisites view) and a description of each:
Table 11-12: Redistributable Icons Icon Project Type Basic MSI, InstallScript, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI Basic MSI, InstallScript MSI Description This object is installed on your computer.

This object is not installed on your computer but it is available for download.

An old version of this object is installed on your computer. A new version is available for download. This merge module is installed on your computer.

This merge module is stored in a repository and is available for inclusion in your project. For more information about repositories, see Using a Repository to Share Project Elements.

418

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Table 11-12: Redistributable Icons (cont.) Icon Project Type Basic MSI, InstallScript, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI Description This merge module is not installed on your computer but it is available for download.

An old version of this merge module is installed on your computer. A new version is available for download. This InstallShield prerequisite is installed on your computer.

This InstallShield prerequisite is not installed on your computer but it is available for download.

Project: If you add to your project a redistributable that is not installed on your computer, one or more build errors are generated when you build a release. To eliminate the build errors, either remove the redistributable from your project or download it before rebuilding the release. If a redistributable is not installed on your computer, Needs to be downloaded is specified in the Location column for that redistributable. InstallShield does not permit you to add a redistributable in the Objects view to an InstallScript project if it is not installed on your computer.

Working with the Live Redistributables Gallery


The Redistributables view in Basic MSI and InstallScript MSI projects displays the redistributables gallery, which consists of InstallShield prerequisites, merge modules, and objects, that you can include with your installations. The Prerequisites view in InstallScript projects also displays the gallery of InstallShield prerequisites that you can add to your project. InstallShield Prerequisites Many InstallShield prerequisites are available in InstallShield. In addition, the InstallShield Prerequisite Editor in InstallShield enables you to modify these prerequisites and create your own. All InstallShield prerequisite (.prq) files are stored in the following location:
InstallShield Program Files Folder\SetupPrerequisites

Merge Modules Merge modules are available from a variety of sources. Although InstallShield includes many redistributable modules, new versions may be available or other software developers may have released a module that you need. In addition, InstallShield enables you to create your own merge modules and add them to your redistributables gallery. The source of the merge module files listed in the Redistributables view is the folder or folders specified on the Merge Modules tab of the Options dialog box. To access the Options dialog box, on the Tools menu, click Options. The following directory is the default location for the modules that come with InstallShield:

InstallShield 2010 User Guide

ISP-1600-UG00

419

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

InstallShield Program Files Folder\Modules\i386

Objects InstallShield provides many redistributable objects and lets you create your own for inclusion in your installations. Furthermore, you may want to add to your projects the objects that other developers created with InstallShield. The default location for the objects that come with InstallShield is:
InstallShield Program Files Folder\Objects

The objects that are included in the above location are listed in the Redistributables view.

Downloading Redistributables to Your Computer


The procedures for downloading redistributables to your computer differ, depending on what type of project you are using.

For Basic MSI and InstallScript MSI Projects


The Redistributables view enables you to download the latest InstallShield prerequisites, merge modules, and objects from the Acresso Web site to your computer. If a redistributable is not installed on your computer, Needs to be downloaded is specified in the Location column for that redistributable.

Task

To download a specific InstallShield prerequisite, merge module, or object: 1. 2.

In the View List under Application Data, click Redistributables. Right-click the InstallShield prerequisite, merge module, or object that you would like to download and then click Download Selected Item.

Task

To download all of the InstallShield prerequisites, merge modules, and objects that are needed for your installation project: 1. 2.

In the View List under Application Data, click Redistributables. Right-click any InstallShield prerequisite, merge module, or object and then click Download All Required Items.

For InstallScript Projects


The Prerequisites view enables you to download the latest InstallShield prerequisites from the Acresso Web site to your computer. If a redistributable is not installed on your computer, Needs to be downloaded is specified in the Location column for that redistributable.

420

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To download a specific InstallShield prerequisite: 1. 2.

In the View List under Application Data, click Prerequisites. Right-click the InstallShield prerequisite that you would like to download and then click Download Selected Item.

Task

To download all of the InstallShield prerequisites that are needed for your installation project: 1. 2.

In the View List under Application Data, click Prerequisites. Right-click any InstallShield prerequisite and then click Download All Required Items.

The Objects view enables you to download the latest merge modules and objects from the Acresso Web site to your computer. If a merge module is not installed on your computer, its icon ( ) indicates that it is not installed. InstallShield does not permit you to add a merge module to your InstallScript project if the merge module is not installed on your computer. If an object is not installed on your computer, it is not listed in the Objects view.

Task

To download a specific merge module: 1. 2.

In the View List under Application Data, click Objects. In the InstallShield Objects/Merge Modules pane, right-click the merge module that you would like to download and then click Download Selected Item.

Task

To download objects: 1. 2. 3.

In the View List under Application Data, click Objects. In the InstallShield Objects/Merge Modules pane, right-click any object and click Check Web. The Downloads page at the Acresso Web site opens in an Internet browser. Select the object that you would like to download and install. You are prompted during the installation to close InstallShield in order to complete the object installation.

Adding InstallShield Prerequisites to the Redistributables Gallery

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

421

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To add an InstallShield prerequisite to the redistributables gallery: 1. 2.

Acquire the new or updated InstallShield prerequisite (.prq) file. Using Windows Explorer, copy the new prerequisite to the following location:
InstallShield Program Files Folder\SetupPrerequisites

3. 4.

Close InstallShield if it is currently open. Launch InstallShield.

The modifications that you made are reflected in the Redistributables view (in Basic MSI and InstallScript MSI projects) and in the Prerequisites view (in InstallScript projects).

Removing InstallShield Prerequisites from the Redistributables Gallery

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Task

To remove an InstallShield prerequisite from the redistributables gallery: 1. 2.

Close InstallShield. Using Windows Explorer, locate and delete the InstallShield prerequisite that you want to remove from the gallery. InstallShield prerequisites are located in the following directory:
InstallShield Program Files Folder\SetupPrerequisites

3.

Launch InstallShield.

The modifications that you made are reflected in the Redistributables view (in Basic MSI and InstallScript MSI projects) or in the Prerequisites view (in InstallScript projects).

Browsing for Merge Modules

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If a merge module that you would like to add to your project is not listed in the Redistributables view, you can browse to find it and also add it to your project and this view.

422

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To browse for a merge module: 1. 2. 3. 4.

In the View List under Application Data, click Redistributables. Right-click an item and click Browse for Merge Module. The Open dialog box opens. Browse to the merge module file. Click OK.

What Happens When You Browse for a Merge Module


InstallShield does not maintain references to merge modules as explicit paths. Instead, it generates a key for a merge module based on the merge module GUID and the merge module locale. When InstallShield needs to access the merge module, it looks in the folders specified in the Merge Module Locations box for a file that matches that key. The Merge Module Locations box is on the Merge Modules tab of the Options dialog box. When you browse for a merge module, the path to the folder containing the merge module is added to the list of paths in the Merge Module Locations box. In addition, a GUID:Locale key is added to your installation project based on the selected file.

Impact on Your Installation


If two merge modules in the Merge Module Locations box have the GUID:Locale key, only one is included into your installation, even if they have different file names. Because of the way InstallShield uses the Merge Module Locations box to search, it is not possible to predict which merge module will be included.

Limiting the Number of Directories in the Merge Module Locations Box


If you use a shared merge module gallery, there might be earlier or later versions of a merge module in the gallery than what exists on the target machine. For this reason, it is sometimes prudent to try and limit the number of directories in your Merge Module Locations box.

Task

To limit the number of directories, do one of the following:

Using Windows Explorer, copy the merge module that you want into one of the folders that is already listed in the Merge Module Locations box. Remove the default folders from the search path so that you are referencing only the shared location.

Adding Merge Modules to the Redistributables Gallery

Project: This information applies to the following project types:

InstallShield 2010 User Guide

ISP-1600-UG00

423

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Basic MSI InstallScript InstallScript MSI

Task

To add a merge module to the redistributables gallery: 1. 2.

Acquire the new or updated merge module. Using Windows Explorer, copy the new module to one of the folders specified on the Merge Modules tab of the Options dialog box. The default location for the modules that come with InstallShield is:
InstallShield Program Files Folder\Modules\i386

3. 4.

Close InstallShield if it is currently open. Launch InstallShield.

The modifications that you made are reflected in the Redistributables view (in Basic MSI and InstallScript MSI projects) and in the Objects view (in InstallScript projects).

Removing Merge Modules from the Redistributables Gallery

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Task

To remove a module from the redistributables gallery: 1. 2.

Close InstallShield. Using Windows Explorer, locate and delete the merge module that you want to remove from the gallery. Ensure that you search each directory specified on the Merge Modules tab of the Options dialog box. Launch InstallShield.

3.

The modifications that you made are reflected in the Redistributables view (in Basic MSI and InstallScript MSI projects) and in the Objects view (in InstallScript projects).

Note: If you delete a merge module that is currently associated with your installation, the message [Merge Module Not Found] is displayed to inform you that the module cannot be included in your installation.

424

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Registering Objects in InstallScript Projects

Project: This information applies to InstallScript projects.

When you register an object from within an InstallScript project, InstallShield adds that object to the redistributables gallery, which makes it available for inclusion in other projects.

Task

To register an object: 1. 2. 3. 4.

In the View List under Application Data, click Objects. Right-click an item, point to Advanced, and click Register new object. The Project Settings dialog box opens. On the Language-Independent Object Properties tab, specify a media file (Data1.hdr file). Specify any other desired settings, and click OK.

Incorporating InstallShield Prerequisites, Merge Modules, and Objects in Projects


InstallShield includes many third-party redistributables that are packaged as InstallShield prerequisites, merge modules, and objects. You can add these built-in redistributables to your installation projects. To learn how, see this section of the documentation.

Tip: For information on creating your own InstallShield prerequisites, merge modules, and objects, see Designing InstallShield Prerequisites and Other Redistributables.

Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding redistributables to InstallScript projects, see Adding InstallShield Prerequisites, Merge Modules, and Objects to InstallScript Projects.

Two types of redistributablesmerge modules and objectsmust be associated with a feature in order to be installed. You can associate a single merge module or object with as many features or subfeatures as needed. If no features exist in your installation project when you attempt to add a merge module or object, the Create a New Feature dialog box opens, enabling you to create a feature. If you do not create a feature, these two types of redistributables cannot be added to your installation project.
InstallShield 2010 User Guide ISP-1600-UG00 425

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

When you add an InstallShield prerequisite to an InstallScript MSI project, you cannot associate it with one or more features. When you add an InstallShield prerequisite to a Basic MSI project, it is not associated with any feature by default, and it is called a setup prerequisite, since it is run before your main installation runs. If appropriate, you can associate an InstallShield prerequisite with one more features that are currently in your project.

Task

To add an InstallShield prerequisite, merge module, or object to a Basic MSI or InstallScript MSI project: 1. 2. 3. 4.

In the View List under Application Data, click Redistributables. If you want merge modules that have been published to a repository to be displayed, right-click a redistributable and ensure that Show Merge Modules in Repository is enabled. Select the check box in front of the redistributable that you want to add. If you select an object, the associated wizard opens to guide you through the customization process. For a merge module or an object: In the Conditional Installation pane, select the check box for each feature that should contain this redistributable. If you are working with a Basic MSI project and you want to associate a prerequisite with a feature: In the Conditional Installation pane, select the check box for each feature that should contain this prerequisite. If you do not want to associate the prerequisite with a feature, leave the Install before feature selection check box selected. This check box is selected by default when you add an InstallShield prerequisite to a Basic MSI project.

Tip: The right pane in the Redistributables view shows details about the merge module, object, or InstallShield prerequisite that is selected in the list of available redistributables. Review this details pane to find out information such as which files a redistributable installs. You can hide or show the details pane by clicking the Show Details button in this view.

Note: If Needs to be downloaded is specified in the Location column for an InstallShield prerequisite that you added to your project, that InstallShield prerequisite is not installed on your computer. You can download the InstallShield prerequisite from the Internet to your computer if you would like to include it in your project. If you build a release without first downloading one or more required InstallShield prerequisites, and if you specify that the InstallShield prerequisites should be extracted from Setup.exe or copied from the source media (instead of being downloaded from the Web to the end users computer), one or more build errors may be generated. To eliminate the build errors, remove the InstallShield prerequisite from your project, download it to your computer, or change the InstallShield prerequisite location for the release to the download option; then rebuild the release.

Obtaining InstallShield Prerequisites and Objects


Note that some of the InstallShield prerequisites and objects are not installed with InstallShield. You may need to download them. For more information, see Obtaining Updates for InstallShield.

426

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Also note that if you have an installation (for example, a Setup.exe file or an .msi package) that you want to launch during your installation, you can create your own custom InstallShield prerequisite, and then add that InstallShield prerequisite to your Basic MSI, ClickOnce and InstallScript MSI projects as needed. To learn how to create your own InstallShield prerequisite, see Defining InstallShield Prerequisites.

Adding InstallShield Prerequisites, Merge Modules, and Objects to InstallScript Projects

Project: This information applies to InstallScript projects. For information on adding redistributables to Basic MSI and InstallScript MSI projects, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects.

Merge modules and objects must be associated with a feature in order to be installed during an InstallScript installation. You can associate a single merge module or object with as many features or subfeatures as needed. If no features exist in your installation project when you attempt to add a merge module or object, the Create a New Feature dialog box opens, enabling you to create a feature. If you do not create a feature, these two types of redistributables cannot be added to your installation project. When you add an InstallShield prerequisite to an InstallScript project, you cannot associate it with one or more features.

Task

To add an InstallShield prerequisite to an InstallScript project: 1. 2.

In the View List under Application Data, click Prerequisites. Select the check box in front of the InstallShield prerequisite that you want to add.

Tip: The right pane in the Prerequisites view shows details about the InstallShield prerequisite that is selected in the list of available redistributables. Review this details pane to find out information such as which files a redistributable installs. You can hide or show the details pane by clicking the Show Details button in this view.

Note: If Needs to be downloaded is specified in the Location column for an InstallShield prerequisite that you added to your project, that InstallShield prerequisite is not installed on your computer. You can download the InstallShield prerequisite from the Internet to your computer if you would like to include it in your project. If you build a release without first downloading one or more required InstallShield prerequisites, and if you specify that the InstallShield prerequisites should be included with the media (instead of being downloaded from the Web to the end users computer), one or more build errors may be generated. To eliminate the build errors, remove the InstallShield prerequisite from your project, download it to your computer, or change the InstallShield prerequisite location for the release to the download option; then rebuild the release.

InstallShield 2010 User Guide

ISP-1600-UG00

427

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To add a merge module or object to an InstallScript project: 1. 2. 3.

In the View List under Application Data, click Objects. In the Features pane, select the feature to which you want to add an object or merge module. Right-click the object or merge module that you want to add and select Add to selected feature. (You can instead drag the object or merge module and drop it on the feature.) For some objects, an associated wizard appears to guide you through the customization process.

Note: Merge modules that are added to a feature in an InstallScript project appear in the Features pane as subitems of the Merge Module Holder object. This object requires the Windows Installer engine. For more information, see Adding Windows Installer Redistributables to Projects.

Tip: To see information about an object or merge module, such as files it installs and other actions it performs, select the object or merge module name. The information is displayed in the pane on the right.

Caution: You should not alter another companys merge module.

Obtaining Objects
Note that some of the objects are not installed with InstallShield. You may need to download them. For more information, see Obtaining Updates for InstallShield.

Removing InstallShield Prerequisites from a Project

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Task

To remove an InstallShield prerequisite from your project: 1. 2.

In the View List under Application Data, click Redistributables (in Basic MSI and InstallScript MSI projects) or Prerequisites (in InstallScript projects). Clear the check box in front of the InstallShield prerequisite that you want to remove.

428

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Tip: If an InstallShield prerequisite is included in your installation as a dependency of another InstallShield prerequisite but you want to remove that dependency prerequisite from the installation, you must remove the corresponding dependency from the InstallShield prerequisite. For more information, see Removing a Dependency from an InstallShield Prerequisite.

Removing Merge Modules and Objects from a Project

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Task

To remove a merge module or object from your project:

In Basic MSI and InstallScript MSI projects: In the Redistributables view, clear the check box in front of the redistributable. In InstallScript projects: In the Objects view, right-click the redistributable in the Features window and click Delete from project.

InstallShield moves the merge module or object from your project. In addition, InstallShield automatically removes from the project any dependencies that are associated with that redistributable.

Determining the Files in InstallShield Prerequisites, Merge Modules, and Objects

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

If you need to see a list of files in an InstallShield prerequisite, a merge module, or an object, you can do so from within the Redistributables view in Basic MSI and InstallScript MSI projects. The right pane in this view shows details about the InstallShield prerequisite, merge module, or object that is selected in the list of available redistributables. This details pane provides information such as which files a redistributable installs. You can hide or show the details pane by clicking the Show Details button in this view. Clicking the Show Details button in the Prerequisites view of an InstallScript project lets you see the files in the selected InstallShield prerequisite. If you are using an InstallScript project and you want to see details about a merge module or object that is listed in the Objects view, select that object; InstallShield displays a list of the redistributables files, as well as additional information, in the right pane.

InstallShield 2010 User Guide

ISP-1600-UG00

429

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Tip: For another way to see the files contained in a merge module or object, see Knowledge Base article Q106474. This article contains a link to a downloadable Merge Module Dependency Viewer.

Working with InstallShield Prerequisites that Are Included in Installation Projects


Project: This information applies to the following project types:

Basic MSI ClickOnce InstallScript InstallScript MSI

An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. Some examples of InstallShield prerequisites that are included with InstallShield are Java Runtime Environment (JRE), Jet 4.0, and SQL Server 2008 Express Edition. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects.

Project: Including InstallShield prerequisites in Windows Installerbased projects enables you to chain multiple installations together, bypassing the Windows Installer limitation that permits only one Execute sequence to be run at a time. The Setup.exe setup launcher serves as a bootstrap application that manages the chaining.

Note: Unlike Windows Installer 4.5 chaining, the InstallShield prerequisite installations are not processed as a single transaction; that is, successful installations are not rolled back after failures in later prerequisites. To learn more about Windows Installer 4.5 chaining support, see Configuring Multiple Packages for Installation Using Transaction Processing.

The Redistributables view is where you add InstallShield prerequisites to Basic MSI and InstallScript MSI projects. The Prerequisites view is where you add InstallShield prerequisites to InstallScript projects. The Installation Requirements page in the ClickOnce Assistant is where you add InstallShield prerequisites to ClickOnce projects.

Setup Prerequisites vs. Feature Prerequisites

Project: Basic MSI projects include support for feature prerequisites. The following project types include support for setup prerequisites but not feature prerequisites:


430

ClickOnce InstallScript InstallScript MSI

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

An InstallShield prerequisite that is run before the main installations user interface sequence begins is called a setup prerequisite. Setup prerequisites are useful for base applications and technology frameworks that must be installed for all configurations of the installed product or that provide functionality that is used during the installation itself. When you add an InstallShield prerequisite to a project, it is the setup prerequisite type of InstallShield prerequisite by default. Basic MSI projects enable you to associate InstallShield prerequisites with features in your main installation. When an InstallShield prerequisite is associated with one or more features, it is called a feature prerequisite. Feature prerequisites are installed after an end user has chosen which features to install; like merge modules, a feature prerequisite is installed only if one or more of the features that contain it are installed. Thus, feature prerequisites are useful for applications or components that are used by only some configurations of the installed product and are not used during the installation itself. Review the following sections for more information that will help you determine which type of InstallShield prerequisite will best fit your requirements.

Special Considerations for Setup Prerequisites


Following are some tips to consider if you are including one or more setup prerequisites in your project. .NET Framework Requirements If your product requires that the .NET Framework be installed on the target system, you may include the .NET Framework redistributable to your project. If the target system does not have the .NET Framework, it is installed during your installation. For more details, see Adding .NET Framework Redistributables to Projects. If your installation includes the .NET Framework redistributable and a setup prerequisite that requires that the .NET Framework be present on the target machinefor example, if it installs files to the GAC you can specify that the .NET Framework should be installed before the setup prerequisite is installed. To learn more, see Specifying Parameters for Installing an InstallShield Prerequisite. Displaying an Error If an End User Launches the .msi Package Instead of the Setup Launcher If your Basic MSI or InstallScript MSI installation includes a setup prerequisite and end users launch the .msi package for your product directly, rather than launch the Setup.exe setup launcher, the setup prerequisite installation will not run. If the prerequisite is not already present on a target system, your product may not work as expected. This scenario may occur if you build an uncompressed release, where the .msi package is not streamed into the Setup.exe file. To prevent this issue from occurring, you may want to add a type 19 custom action to your Basic MSI or InstallScript MSI project. This custom action would evaluate the same conditions that were configured for the prerequisite on the Conditions tab in the InstallShield Prerequisite Editor. The custom action would verify whether the setup prerequisite is still needed; if it is needed, the type 19 error custom action would display an error message and end the installation.

Special Considerations for Feature Prerequisites


Following are some tips to consider if you are including one or more feature prerequisites in a Basic MSI project. Windows Installer Requirements If your project includes a prerequisite that installs the Windows Installer, the prerequisite should be a setup prerequisite, not a feature prerequisite. That is, this prerequisite should not be associated with a feature.
InstallShield 2010 User Guide ISP-1600-UG00 431

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

.NET Framework Requirements If your project include a prerequisite that installs the .NET Framework and your installation requires that the .NET Framework be presentfor example, if your installation installs files to the GACthe .NET Framework prerequisite should be a setup prerequisite, not a feature prerequisite. That is, this prerequisite should not be associated with a feature. Potential Restart Issues for Feature Prerequisites If you add an InstallShield prerequisite to your project and it may require a restart, it is recommended that you avoid associating the prerequisite with a feature. If a feature prerequisite does trigger a restart, the ReadyToInstall dialog is displayed again after the restart, and the end user will need to click the Install button again to proceed with the rest of the installation. Calculations for Disk Space Requirements When the Windows Installer performs the file costingrelated actions, it does not automatically include the disk space that is required by any feature prerequisites. Therefore, if the CustomSetup dialog is displayed at run time, the disk space amounts that are listed for various features may be inaccurate, since they will not account for the disk space that is required by feature prerequisites. In addition, it is possible that a target system may have sufficient disk space for the main installation, but not for the feature prerequisites. In this scenario, the target system may run out of disk space midway through the installation. To prevent file-costing issues for a feature prerequisite in your project, you may want to add a custom action that evaluates the same conditions that were configured for the feature prerequisite on the Conditions tab in the InstallShield Prerequisite Editor. This custom action would detect whether the feature prerequisite needs to be run if its associated feature is selected to be installed. If the feature prerequisite would need to be run, the custom action would add a temporary row to the ReserveCost table.

Associating an InstallShield Prerequisite with a Feature in a Basic MSI Project

Project: Basic MSI projects include support for associating prerequisites with features. To learn about the differences between setup prerequisites and feature prerequisites (which are the two types of InstallShield prerequisites), see Setup Prerequisites vs. Feature Prerequisites.

If an InstallShield prerequisite is associated with a feature in a project, it is considered to be a feature prerequisite. If it is not associated with a feature, it is considered to be a setup prerequisite. Whenever you add an InstallShield prerequisite to an installation project, it is automatically added as a setup prerequisite by default. You can make it a feature prerequisite by associating it with one or more features that already exist in your project.

Task

To associate an InstallShield prerequisite with a feature: 1. 2.

In the View List under Application Data, click Redistributables. In the list of redistributables, select the InstallShield prerequisite that you want to associate with a feature.
ISP-1600-UG00 InstallShield 2010 User Guide

432

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Note: The InstallShield prerequisites check box must already be selected; this indicates that it is being included in your project. For more information, see Adding InstallShield Prerequisites, Merge Modules, and Objects to Basic MSI and InstallScript MSI Projects. 3.

In the Conditional Installation pane, select the check box of each feature to which you want to add this InstallShield prerequisite.

If you want to associate the prerequisite with a new feature, you must first create it. To learn how to create a new feature, see Creating Features. If you associate a prerequisite with all of the features in your project and then you later add a new feature, InstallShield does not automatically associate the feature prerequisite with the new feature.

Note: Feature prerequisites have some limitations that setup prerequisites do not have. For more information, see Setup Prerequisites vs. Feature Prerequisites.

Disassociating an InstallShield Prerequisite from a Feature in a Basic MSI Project

Project: Basic MSI projects include support for associating prerequisites with features. To learn about the differences between setup prerequisites and feature prerequisites (which are the two types of InstallShield prerequisites), see Setup Prerequisites vs. Feature Prerequisites.

If an InstallShield prerequisite is associated with a feature in a project, it is considered to be a feature prerequisite. If it is not associated with a feature, it is considered to be a setup prerequisite.

Task

To remove an InstallShield prerequisite from a feature: 1. 2. 3.

In the View List under Application Data, click Redistributables. In the list of redistributables, select the InstallShield prerequisite that you want to disassociate from a feature. In the Conditional Installation pane, select the Install before feature selection check box. This check box is selected by default when you add an InstallShield prerequisite to a Basic MSI project.

Note: Setup prerequisites have some advantages over feature prerequisites. For more information, see Setup Prerequisites vs. Feature Prerequisites.

InstallShield 2010 User Guide

ISP-1600-UG00

433

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Specifying the Installation Order of InstallShield Prerequisites

Project: Basic MSI projects include support for feature prerequisites. The following project types include support for setup prerequisites but not feature prerequisites:

InstallScript InstallScript MSI

To learn about the differences between setup prerequisites and feature prerequisites (which are the two types of InstallShield prerequisites), see Setup Prerequisites vs. Feature Prerequisites. Note that ClickOnce Deployment projects include support for setup prerequisites, but they do not currently have built-in support for specifying their installation order.

The Redistributables view is where you specify the order in which InstallShield prerequisites should be installed if you include more than one in a Basic MSI project or an InstallScript MSI project. The Prerequisites view is where you specify the order in which InstallShield prerequisites should be installed if you include more than one in an InstallScript project.

Task

To specify the order in which the InstallShield prerequisites should be installed on the target machine: 1. 2. 3. 4.

In the View List under Application Data, click Redistributables (in a Basic MSI or InstallScript MSI project) or Prerequisites (in an InstallScript project). Add the necessary InstallShield prerequisites to your project if you have not already done so. Right-click any redistributable and click Set InstallShield Prerequisite Order. The InstallShield Prerequisite Installation Order dialog box opens. Select a prerequisite in the list and then click the up or down arrow to move it up or down in the order for installation.

Project: Note that when you are specifying the order in a Basic MSI project, InstallShield does not distinguish between setup prerequisites and feature prerequisites. Thus, if your project contains a mix of setup prerequisites and feature prerequisites, they are all listed in one combined list on the InstallShield Prerequisite Installation Order dialog box. At run time, before the main installation launches, the Setup.exe setup launcher evaluates only the setup prerequisites andif appropriateinstalls them in the order that you specified on the InstallShield Prerequisite Installation Order dialog box. Then later during the installation, the Windows Installer engine evaluates only the feature prerequisites andif appropriateinstalls them in the order that you specified.

Tip: If the Windows Installer engine, the .NET Framework, or both must be installed before an InstallShield prerequisite is installed, you can open the InstallShield prerequisite in the InstallShield Prerequisite Editor and specify this requirement. For more information, see Specifying Parameters for Installing an InstallShield Prerequisite.

434

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Configuring a Release that Includes InstallShield Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

When you package a Basic MSI or InstallScript MSI installation that includes InstallShield prerequisites, you can use any one of the following methods for supplying the InstallShield prerequisite files to end users:

Store the InstallShield prerequisite files on the source media. Compress the InstallShield prerequisite files into Setup.exe, to be extracted at run time, as needed. If necessary, your installation can download the InstallShield prerequisite files that are included in your project from the URL that is specified in the InstallShield prerequisite file (.prq) for each prerequisite.

For InstallScript installations that include InstallShield prerequisites, the methods that are available are slightly different:

Store the InstallShield prerequisite files on the source media or in Setup.exe, depending on how you configure the settings for the release. If needed, your installation can download the InstallShield prerequisite files included in your project from the URL specified in the InstallShield prerequisite (.prq) file for each prerequisite.

You can specify different methods for each InstallShield prerequisite in your project. To learn more, see Specifying a Location for a Specific InstallShield Prerequisite. You can also override individual methods at the release level if you want all of the InstallShield prerequisites in a release to be available through the same method. For more information, see Specifying the Location for InstallShield Prerequisites at the Release Level. You can configure an InstallShield prerequisite so that it is installed either before or after any installation of the Windows Installer engine and the .NET Framework. For more information, see Specifying Parameters for Installing an InstallShield Prerequisite.

Specifying a Location for a Specific InstallShield Prerequisite

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

435

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Task

To specify a different location for each InstallShield prerequisite in your installation: 1. 2. 3. 4.

In the View List under Application Data, click Redistributables (in a Basic MSI or InstallScript MSI project) or Prerequisites (in an InstallScript project). Select the check box for one of the InstallShield prerequisites that you want to include in your installation. Right-click the InstallShield prerequisite and click Properties. The InstallShield Prerequisites Properties dialog box opens. In the Build Location list, click the appropriate option.

Note that the location that you specify can be overridden at the release level. To avoid overriding the value that you selected for an individual InstallShield prerequisite, the InstallShield Prerequisites Location setting at the release level setting must be set to Follow Individual Selections. For more information, see Specifying the Location for InstallShield Prerequisites at the Release Level.

Tip: If an InstallShield prerequisite is added to a project as a dependency of another prerequisite, the location for the InstallShield prerequisite dependency follows the location setting of the InstallShield prerequisite that requires it.

Assigning Release Flags to InstallShield Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

You can set release flags for InstallShield prerequisites that you want to exclude from certain builds. For example, if you have an InstallShield prerequisite that should be included only in a special edition of your product that contains a special add-on that requires the InstallShield prerequisite, you can flag that InstallShield prerequisite and include it only when it is needed.

Task

To add a release flag to an InstallShield prerequisite that you have added to your installation project: 1. 2. 3.

In the View List under Application Data, click Redistributables. Right-click the InstallShield prerequisite and click Properties. The InstallShield Prerequisites Properties dialog box opens. In the Release Flags box, type a string. The string can be any combination of letters or numbers. To have more than one flag on a prerequisite, use a comma to separate the flags.

To learn more about filtering InstallShield prerequisites based on release flags, see Release Flags.

436

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Building a Release that Includes InstallShield Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When InstallShield builds a Setup.exe file for a project that does not include any prerequisites, it starts with the base Setup.exe file (if you are using an ANSI setup launcher) or the base SetupW.exe file (if you are using a Unicode setup launcher) that is stored in the following location:
InstallShield Program Files Folder\redist\Language Independent\i386

However, when InstallShield builds a Setup.exe file for a project that includes prerequisites, the aforementioned files cannot be used as the base because it does not have the capability of including prerequisites. A slightly larger file called SetupPrereq.exe (ANSI) or SetupPrereqW.exe (Unicode) is used instead. The base SetupPrereq.exe and SetupPrereqW.exe files are located in the same directory as the base Setup.exe and SetupW.exe files. Since different base filesSetup.exe, SetupW.exe, SetupPrereq.exe, and SetupPrereqW.exeare used, only installation authors who are actually including prerequisites in their projects incur the additional size overhead in the final, built Setup.exe file that is distributed to end users.

Run-Time Behavior for an Installation that Includes InstallShield Prerequisites

Project: The following project types include support for both setup prerequisites and feature prerequisites:

Basic MSI

The following project types include support for setup prerequisites but not feature prerequisites: ClickOnce InstallScript InstallScript MSI

To learn about the differences between setup prerequisites and feature prerequisites (which are the two types of InstallShield prerequisites), see Setup Prerequisites vs. Feature Prerequisites.

Overview of an Installation that Includes InstallShield Prerequisites


The following procedure explains what typically occurs at run time when an end user launches an installation that includes setup and feature prerequisites. Note that some of the steps apply to only certain project types.
1. 2. 3.

The setup launcher (typically called Setup.exe) displays the language selection dialog if appropriate. The setup launcher displays the setup prerequisite dialog and launches the setup prerequisite installations if appropriate. The installation displays the installation UI, which may allow the end user to select features or configure items. The installation UI shows a progress dialog.

InstallShield 2010 User Guide

ISP-1600-UG00

437

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

4.

In Basic MSI installations, the setup launcher launches the feature prerequisite installations if appropriate:
a.

The built-in InstallShield custom action ISInstallPrerequisites, which is scheduled between the SetupProgress dialog and the ExecuteAction action, compares the features that were selected for installation against the list in the Windows Installer property IsPrerequisiteFeatures. If there are no matches, no feature prerequisites are installed. The ISInstallPrerequisites action attempts to find and launch the setup launcher, and it provides the list of features that are being installed. The path to the setup launcher is identified by the Windows Installer properties SETUPEXEDIR and SETUPEXENAME:
[SETUPEXEDIR]\[SETUPEXENAME]

b.

If ISInstallPrerequisites cannot find the setup launcher in that location, it searches elsewhere. For a first-time installation, ISInstallPrerequisites checks SourceDir. For maintenance mode, ISInstallPrerequisites checks paths that are related to the installation source path. If ISInstallPrerequisites still cannot find the setup launcher, or if it finds multiple .exe files, the installation prompts the end user to browse to the setup launcher file. If the end user identifies the file, the installation continues. Otherwise, the installation ends.
c. 5. 6.

The setup launcher evaluates the list of features to select which feature prerequisites to install, and it launches their installations as appropriate.

The installation finishes making changes on the target system according to the end users selections. The installation switches from the progress dialog to the SetupCompleteSuccess dialog.

The User Interface for an Installation that Includes InstallShield Prerequisites


If a target system needs one or more setup prerequisites to be installed, the setup launcher typically displays the setup prerequisite dialog before the main installation starts. This setup prerequisite lists all of the nonhidden setup prerequisites that are missing from the target system. When an end user clicks the Install button on this dialog, the setup launcher launches the necessary setup prerequisite installations. If one or more of the setup prerequisites is marked as requiring administrative privileges and the installation is run on a system on which User Account Control (UAC) is enabled, the Install button on this dialog has the shield icon to alert the end user that elevated privileges are required.

438

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Figure 11-2: Sample Setup Prerequisite Dialog that Shows the List of Setup Prerequisites that Need to Be Installed

If a setup prerequisite is configured to be hidden, it is not listed in the setup prerequisite dialog, but it is still installed. If all of the setup prerequisites in an installation are hidden, the installation displays the setup launchers standard initialization dialog instead of the setup prerequisite dialog.

Tip: For instructions on how to show or hide the setup prerequisite in the setup prerequisite dialog, see Specifying Whether to Include the Name of a Prerequisite in the List of Setup Prerequisites to Be Installed on the Target System.

If the file that a setup prerequisite installation launches is an .msi package and the prerequisite is marked to show progress, the user interface shows a status bar, along with installation progress messages from Windows Installer, while the prerequisite is being installed. This is applicable only if the main installation is a Basic MSI or InstallScript MSI installation. For more details, see Specifying Whether to Show the Progress of an InstallShield Prerequisite Installation at Run Time. If a setup prerequisite is configured to be optionally installed by the end user, the setup launcher displays a message box that enables end users to choose whether to install the setup prerequisite. For more information, see Allowing End Users to Choose Whether to Install an InstallShield Prerequisite.

InstallShield 2010 User Guide

ISP-1600-UG00

439

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Figure 11-3: Message Box for an Optional Prerequisite

If an installation includes feature prerequisites, the setup launcher does not list them in any prerequisite dialog. However, the user interface does show progress messages if appropriate. In addition, the setup launcher displays the optional prerequisite message box if the feature prerequisite is marked as optional.

Silent ScenariosSuppressed User Interface in Basic MSI Installations


The installation can install setup prerequisites and feature prerequisites even if the installation is run silently. That is, InstallShield prerequisites are supported in any of the following scenarios:

Silent setup launcher and visible .msi packageThe user interface for the setup launcher is

suppressed, but the user interface for the .msi package is visible. For example, the end user might use the following command-line statement:
Setup.exe /s

In this scenario, the language selection dialog and the setup prerequisite dialog are not displayed.

Visible setup launcher and silent .msi packageThe user interface for the setup launcher is displayed, but the user interface for the .msi package is suppressed. For example, the end user might use the following command-line statement:
Setup.exe /v/qn

In this scenario, the feature selection dialog and all of the other dialogs of the main installation are not displayed. However, the end user can set Windows Installer properties such as ADDLOCAL, ADDSOURCE, ADDDEFAULT, and ADVERTISE from the command line to indicate which features should be installed.

Silent setup launcher and silent .msi packageThe user interface for the setup launcher and the .msi

package are suppressed. For example, the end user might use the following command-line statement:
Setup.exe /s /v/qn

In this scenario, all of the setup launcher and .msi package dialogs are suppressed. If the UI sequence of the main installations .msi package is skipped, the setup launcher evaluates Windows Installer properties such as ADDLOCAL, ADDSOURCE, ADDDEFAULT, and ADVERTISE to determine if any feature prerequisites should be installed, and it installs feature prerequisites accordingly.

440

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Silent ScenariosSuppressed User Interface in InstallScript and InstallScript MSI Installations


An InstallScript or InstallScript MSI installation can install setup prerequisites even if the installation is run silently. That is, InstallShield prerequisites are supported if the end user launches the installation by entering the following command-line statement:
Setup.exe /s

Note that a response file (Setup.iss) is required. To learn more, see Creating the Response File. The language selection dialog and the setup prerequisite dialog are not displayed.

UAC Prompts
Depending on how it is configured, an installation that includes InstallShield prerequisites may prompt for elevated privileges on Windows Vista systems at several different points during the installation:
1. 2. 3. 4.

When the end user launches the Setup.exe file When the Setup.exe file launches a setup prerequisite that requires elevated privileges When the Setup.exe file launches a feature prerequisite that requires elevated privileges When the Windows Installer begins the Execute sequence of the .msi package

For more information, see Minimizing the Number of User Account Control Prompts During Installation.

Changing the Behavior of InstallShield Prerequisites


The InstallShield Prerequisite Editor enables you to modify an InstallShield prerequisite if you want to change its installations behavior. For example, you can specify whether end users may skip the prerequisite installation, whether the prerequisite requires administrative privileges, and how the prerequisite installation should proceed if it appears that the target machine does or does not need to be restarted. To learn more, see Specifying Installation Behavior for an InstallShield Prerequisite. You can configure an InstallShield prerequisite so that it is installed either before or after any installation of the Windows Installer engine and the .NET Framework. For more information, see Specifying Parameters for Installing an InstallShield Prerequisite.

Uninstalling an Application Whose Installation Included InstallShield Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

441

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Your installation may consist of your application plus one or more InstallShield prerequisites. If end users uninstall your application through Add or Remove Programs in the Control Panel, the InstallShield prerequisites are still installed on their machines. If an InstallShield prerequisite installation added an entry to Add or Remove Programs, an end user would be able to remove that InstallShield prerequisite through Add or Remove Programs.

Working with Merge Modules that Are Included in Installation Projects


This section of the documentation offers guidance for working with merge modules from within installation projects. For information on creating or modifying your own merge modules, see Designing Merge Modules.

Overriding a Merge Modules Destination


Although you should not alter a third-party merge module, you can override the destination for an InstallShield-created merge module and some third-party merge modules.

Note: This procedure redirects only the TARGETDIR directory in the merge module, or directories that derive directly from TARGETDIR. If the merge module is configured to send files to a predefined folder (for example, SystemFolder), you cannot override the modules destination.

Task

To override a merge modules destination: 1. 2. 3. 4. 5. 6.

In the View List under Application Data, click Redistributables. Select the check box next to the merge module to add it to your installation. Right-click the module and click Properties. The Merge Module Properties dialog box opens. In the Destination box, type a destination or select one from the list of predefined destinations. Click OK. In the Conditional Installation pane, select the feature or features that should contain the merge module.

Troubleshooting Merge Module Issues


Deleting an Associated Merge Module
If you delete a merge module that is currently associated with your installation, the message [Merge Module Not Found] is displayed, thereby making you aware that the module cannot be included in your installation.

442

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Changing the Language Property of a Merge Module


If you change the language property of a user-defined merge module or another companys merge module after it has been added to the redistributables gallery, a build error occurs if you try to associate the changed merge module with your project. This error occurs because InstallShield uses the language identifieralong with the module identifier to identify the module file. If the language identifier of a merge module file is changed after the file is added to the redistributables gallery, InstallShield cannot find the file. To locate the correct merge module file, you can browse to it from within the Redistributables view. To learn how, see Browsing for Merge Modules.

Publishing a Merge Module to a Repository from Within an Installation Project

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you have an existing merge module that you would like to reuse in Windows Installerbased installation projects or share with other users, you can publish it to a repository.

Task

To publish a merge module to a repository when you are working on a Windows Installerbased installation project: 1. 2. 3.

In the View List under Application Data, click Redistributables. Right-click the merge module and then click Publish Wizard. The Publish Wizard opens. Complete the panels in the Publish Wizard.

Merge modules are built into an installation at build time. If you make a change to a repository merge module and then republish it to the repository, any project that has the old version of the repository merge module will be updated the next time that a release of the projects installation is rebuilt.

Adding Windows Installer Redistributables to Projects


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Although the Windows Installer is built into most versions of Windows, a Windows Installerbased installation may depend on certain functionality that is available in only the latest versions of Windows Installer. In addition, some InstallScript installations may require a particular version of Windows Installer.
InstallShield 2010 User Guide ISP-1600-UG00 443

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

InstallShield enables you to include a redistributable for Windows Installer in your project. The method for adding a Windows Installer redistributable to your project depends on the project type that you are using, as well as the version of Windows Installer that your installation requires. For a list of the minimum operating system requirements for each version of Windows Installer, see Target System Requirements. For a list of which versions of Windows Installer were released with which versions of Windows, see Released Versions of Windows Installer in the Windows Installer Help Library. Note that Windows Installer 5 and Windows Installer 4 are not available as redistributables.

Basic MSI and InstallScript MSI Projects


InstallShield gives you the option of including with your installation a Windows Installer redistributable in a self-extracting executable file called Setup.exe. Windows Installer Distribution By default, InstallShield creates a Setup.exe setup launcher along with your installation package. The setup launcher is required if you want your installation to install the Windows Installer engine. If you want to include the Windows Installer redistributable in a Basic MSI or InstallScript MSI project, do one of the following:

For Windows Installer 4.5Add one or more Microsoft Windows Installer prerequisites to your

project. InstallShield includes several versions that target different versions of Windows. For more information, see Including Microsoft Windows Installer Prerequisites.

For Windows Installer 3.1, 3.0, or 2.0The Setup.exe tab for a release in the Releases view is where

you specify information such as whether you want to use a Setup.exe launcher, whether you want to include one of these versions of the Windows Installer redistributable, and which version of Windows Installer you want to include. To learn more, see Setup.exe Tab for a Release. As an alternative, you can add one or more Microsoft Windows Installer prerequisites to your project. For more information, see Including Microsoft Windows Installer Prerequisites.

Tip: You can also specify setup launcher requirements in the Setup Launcher panel of the Release Wizard.

Overview of the Installation Process At run time, Setup.exe determines if Windows Installer is already installed on the target system. If the Windows Installer is found on the target system and it meets the minimum version requirement, it launches your installation package. If Windows Installer is not installed, or a more recent version needs to be installed, Setup.exe installs Windows Installer and then launches your installation package. Note that the system may need to be restarted for Windows Installer to be updated.

InstallScript Projects
In some cases, you may want to add a Windows Installer redistributable to an InstallScript project. For example, you may be using an InstallScript project to chain together multiple Windows Installerbased installations that require a particular minimum version of Windows Installer. In addition, if you add a merge module to an InstallScript project, that merge module must be added as a subitem of the Merge

444

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Module Holder object in the Objects view. This Merge Module Holder object requires the Windows Installer engine, so if target systems may not have the Windows Installer present, you need to add the Windows Installer redistributable to your InstallScript project. If you want to include the Windows Installer redistributable in an InstallScript project, add one or more Microsoft Windows Installer prerequisites to your project. InstallShield includes several versions that target different versions of Windows. For more information, see Including Microsoft Windows Installer Prerequisites.

Including Microsoft Windows Installer Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield includes InstallShield prerequisites for several versions of Windows Installer. You can use the Redistributables view (in Basic MSI and InstallScript MSI projects) or the Prerequisites view (in InstallScript projects) to add these InstallShield prerequisites to your project.

Checking for the Presence of Windows Installer 4.5 During Basic MSI or InstallScript MSI Installations
You may want your installation to check the target system to determine if Windows Installer 4.5 is installed; if it is not installed, the installation would display an error message box and prevent the installation from continuing. This may be helpful under the following conditions:

Your installation depends on Windows Installer 4.5 features. It is possible that the .msi file might be used to install your product, rather than the Setup.exe setup launcher (which would install Windows Installer 4.5 if appropriate). For example, if you deploy your installation as an uncompressed release, end users would be able to launch the .msi file directly rather than the Setup.exe file. In addition, if systems administrators want to customize your installation for deploying your product throughout an enterprise environment, they might create an administrative installation version and deploy that.

To determine whether Windows Installer 4.5 is installed and display an error message if it is not, create an error custom action (a type 19 custom action). The following procedure explains how.

Task

To determine whether Windows Installer 4.5 is installed and display an error message if it is not: 1. 2. 3.

In the Custom Actions and Sequences view, right-click the Custom Actions explorer and click New Error. Select the new custom action. In the Error Message setting, type the error message text that should be displayed when an end user launches your installation without Windows Installer 4.5 being already installed.

InstallShield 2010 User Guide

ISP-1600-UG00

445

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

4.

In the Install UI Sequence and Install Exec Sequence settings, select an option that would schedule the error message somewhere before the LaunchConditions action. For example, a common sequence for this error action is <First Action>. In the Install UI Condition and Install Exec Condition settings, type the following condition:
VersionMsi < "4.05"

5.

Locked File/Reboot Issues


When the InstallShield prerequisite installs the Windows Installer 4.5 engine, the existing engine files are often locked. If your installation needs to use the updated engine before the target system is rebooted, be aware of the following behavior. On Windows XP and Windows Server 2003 systems, the Windows Installer 4.5 engine files are updated immediately and the requirement for a reboot is noted and delayed until the end of the main installation (or any reboot that precedes it). The main installation uses the updated Windows Installer 4.5 engine, and it requests a reboot at the end of the installation. On Windows Vista and Windows Server 2008 systems, the Windows Installer 4.5 engine files are not updated until after a reboot, so a reboot is requested immediately. If the end user allows the machine to be rebooted, the installation continues after the reboot. If the end user does not allow the machine to be rebooted, the installation ends. While the reboot is pending, the Windows Installer 4.5 engine appears as not installed, and subsequent attempts to run the prerequisite would result in a failure and would not allow installation to continue. Rebooting the machine completes the installation of Windows Installer 4.5 and allows the installation to continue as planned.

Adding .NET Framework Redistributables to Projects


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

If your product requires that the .NET Framework be installed on the target system, you can add the .NET Framework redistributable to your project. If the target system does not have the .NET Framework, it is installed during your installation. You can also include redistributables for .NET Framework language packs in your project. The language packs contain translated text, such as error messages, for languages other than English. The method for adding the .NET Framework and .NET Framework language packs to your project depends on the project type that you are using, as well as the version of .NET Framework that your product requires.

Note: Some .NET Framework versions include earlier .NET Framework versions:


446

.NET Framework 3.5 includes .NET Framework 3.0 SP1 and .NET Framework 2.0 SP1. .NET 3.0 Framework SP1 includes .NET Framework 2.0 SP1. .NET 3.0 Framework RTM includes .NET Framework 2.0 RTM .
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Basic MSI and InstallScript MSI Projects


If you want to include .NET support in a Basic MSI or InstallScript MSI project, do one of the following:

For .NET Framework 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP2, 2.0 SP1, or 2.0 (only x64, IA64) redistributablesAdd the appropriate Microsoft .NET Framework prerequisite.

For more information, see Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites.

For 32-bit .NET Framework 2.0, 1.1, or 1.0 redistributablesConfigure the .NET settings for the release through the .NET/J# tab in the Releases view. As an alternative, you can select the appropriate options through the Release Wizard.

If you would prefer to distribute InstallShield prerequisites of these redistributables, you can use the InstallShield Prerequisite Editor to create them. For more information, see Defining InstallShield Prerequisites. To test whether the .NET Framework is already installed on the target system, you can use the built-in MsiNetAssemblySupport property. It is set to the version of a particular .NET DLL (fusion.dll) if the .NET Framework is installed, and it is not set if the .NET Framework is not installed.

InstallScript Projects
InstallScript projects support two methods for adding the .NET Framework redistributables to your project:

Use the Prerequisites view to add one or more .NET Framework prerequisites to your project. Use the Objects view to add the Microsoft .NET Framework object to your installation. This object also enables you to add one or more language packs to an InstallScript project. To learn more, see Microsoft .NET Framework Object Wizard.

To determine whether a particular version of the .NET Framework or a language pack is installed, use the Is function and pass the DOTNETFRAMEWORKINSTALLED predefined constant.

Obtaining InstallShield Prerequisites and Objects


Note that some of the InstallShield prerequisites and objects are not installed with InstallShield. You may need to download them. For more information, see Obtaining Updates for InstallShield.

Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

447

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

InstallShield includes InstallShield prerequisites for some versions of the .NET Framework and the .NET Framework language packs. You can include these InstallShield prerequisites in Basic MSI, InstallScript, and InstallScript MSI projects if you want to redistribute these versions of the .NET Framework and the language packs. Following is a list of the .NET Framework redistributables that are available as InstallShield prerequisites. The associated language pack prerequisites are included if available.

Microsoft .NET Framework 3.5 SP1 (One InstallShield prerequisite is for the full package, and one is for the Web Download package. The Web Download package is smaller in size, but it requires an Internet connection on the target system at run time.) Microsoft .NET Framework 3.5 (One InstallShield prerequisite is for the full package, and one is for the Web Download package. The Web Download package is smaller in size, but it requires an Internet connection on the target system at run time.) Microsoft .NET Framework 3.0 SP1 (This is a Web Download package, which requires an Internet connection on the target system at run time.) Microsoft .NET Framework 3.0 Microsoft .NET Framework 3.0 (x64) Microsoft .NET Framework 2.0 SP2 Microsoft .NET Framework 2.0 SP2 (x64) Microsoft .NET Framework 2.0 SP2 (IA64) Microsoft .NET Framework 2.0 SP1 (x86) Microsoft .NET Framework 2.0 SP1 (x64) Microsoft .NET Framework 2.0 SP1 (IA64) Microsoft .NET Framework 2.0 (x64) Microsoft .NET Framework 2.0 (IA64)

Tip: For information on other versions of the .NET Framework redistributables, see Adding .NET Framework Redistributables to Projects.

These InstallShield prerequisite installations are run in silent mode. Therefore, the language in which the .NET Framework installation runs is not an issue. Since there currently is no way to install Windows Installer 3.x on 64-bit Itanium systems running Windows XP, and since .NET Framework 2.0 and later require Windows Installer 3.x or later, the 64-bit .NET Framework 2.0 prerequisites cannot be installed on 64-bit Itanium systems running Windows XP. The InstallShield prerequisite installations determine if the corresponding version of the .NET Framework is already installed on the target machine by checking the Install or InstallSuccess value data for a particular HKEY_LOCAL_MACHINE key. For more details, you can open any InstallShield prerequisite in the InstallShield Prerequisite Editor and note the conditions that are set.

448

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Including the MySQL Connector ODBC Prerequisite


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

You can include in your installation an InstallShield prerequisite that installs MySQL Connector/ODBC 3.51. It enables end users to connect to a MySQL database server that uses ODBC. Before you can add this InstallShield prerequisite to your projects, you must download the MySQL Connector/ODBC driver and configure the InstallShield prerequisite on your system.

Task

To add the MySQL Connector ODBC 3.51 prerequisite to your system so that you can add it to your projects: 1.

Open Windows Explorer and browse for the InstallShield prerequisite template folder. The default location is:
C:\Program Files\InstallShield\2010\SetupPrerequisites\Templates

2.

Copy the MySQL Connector ODBC 3.51.prq file that is in the Templates folder, and paste it in the InstallShield prerequisite folder. The default location is:
C:\Program Files\InstallShield\2010\SetupPrerequisites

3. 4.

Visit http://dev.mysql.com/downloads/connector/odbc/3.51.html and download the MSI installer for the MySQL Connector/ODBC 3.51 driver for Windows. Save the file in the following location:
InstallShield Program Files Folder\Objects\MySQL\Redist

The next time that you launch InstallShield, the MySQL Connector ODBC prerequisite is available in the Redistributables view. If you want to change the location on your machine where you store the installer for the MySQL Connector/ODBC 3.51 driver, you can do so by opening the MySQL Connector ODBC 3.51.prq file in the InstallShield Prerequisite Editor and modifying the settings. To open the InstallShield Prerequisite Editor, click Prerequisite Editor on the Tools menu. For more information, see Specifying Files for an InstallShield Prerequisite.

Including the InstallShield Prerequisite for the Oracle 10g Instant Client
Project: This information applies to the following project types:

Basic MSI InstallScript

InstallShield 2010 User Guide

ISP-1600-UG00

449

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

InstallScript MSI

If you want to install the Oracle 10g Instant Client before your installation is run, you can include the Oracle 10g Instant Client prerequisite in your project. Before you can add this InstallShield prerequisite to your projects, you must download Oracle Instant Client and create an .msi package on your system. For more information, see Connecting to an Instance of Oracle and Running SQL Scripts.

Note: If you want your installation to download the Oracle 10g Instant Client whenever it needs to be installed on a target system, check with Oracle to ensure that it is allowed. If it is allowed, you must host the download on your own Web site and add its download path to the InstallShield prerequisite. Acresso Software does not make this installation available for download.

Installing BDE Support


The Borland Database Engine is a data access engine that is used by Delphi, dBase, and Paradox for Windows. This data access engine consists of the core technology that allows any ODBC driver to be used as an IDAPI driver for any application using the Borland Database Engine. Additionally, the Borland Database Engine can be augmented with optional native SQL drivers that provide transparent and efficient connectivity to widely used SQL servers. BDE support is provided through the use of a merge module. Unlike most of the redistributables in the gallery, the BDE module requires customization in order to function properly. This customization is accomplished with the BDE Designer Wizard.

Note: The BDE module is available only if a Borland tool was present on the system when you installed InstallShield.

Task

To launch the BDE Designer Wizard: 1. 2. 3.

In the View List under Application Data, click Redistributables. Select the BDE check box. Right-click the BDE module and select Configure merge module .

InstallShield launches the BDE Designer Wizard to lead you through the process of configuring the merge module.

Note: When you add the BDE merge module to an installation, a single-file installation cannot be created. You need to use a utility that compresses and packages your installation into a single, self-extracting executable file.

450

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Including the DirectX 9.0 Object


DirectX provides supporting API libraries for multimedia applications and hardware, including the latest graphics cards. If your product requires DirectX to be installed on the target system, you can add the DirectX objecteither the Windows Installerbased object for Basic MSI and InstallScript MSI projects, or the InstallScript object for InstallScript projectsto your project. If the target system does not have DirectX, it is installed during your installation. After installation, the DirectX runtime cannot be uninstalled. DirectX is a system component; end users cannot uninstall it without reinstalling the operating system.

Tip: The DirectX object is not installed with InstallShield; you need to download it. To include the DirectX object in Basic MSI or InstallScript MSI projects, obtain the MSI object download. To include the DirectX object in InstallScript projects, obtain the InstallScript object download. To learn more, see Obtaining Updates for InstallShield.

Redistributable Files
The DirectX objects install all DirectX 9.0c core and optional components, including 32-bit- and 64-bitspecific components.

Including the DirectX Object in Basic MSI and InstallScript MSI Projects
When you add the DirectX object to a Basic MSI or InstallScript MSI project, InstallShield launches the DirectX Object Wizard. You can use the DirectX object in compressed or uncompressed installations; the DirectX Object Wizard lets you specify whether the DirectX files should be in a folder in the Disk1 folder, or they should be streamed into the .msi file:

If you specify that the files should be in a folder in the Disk1 folder, InstallShield creates a DirectX folder for your installation at build time and places it in the Disk1 folder of your release. InstallShield lists the DirectX folder in the Disk1 area of the Support Files view (in Basic MSI projects) or the Support Files/Billboards view (in InstallScript MSI projects). If you specify that the files should not be in the Disk1 folder, InstallShield embeds the files in your installations .msi file. InstallShield lists these files in the Language Independent area of the Support Files view (in Basic MSI projects) or the Support Files/Billboards view (in InstallScript MSI projects).

Note: The custom action that launches the DirectX installation is sequenced in the Execute sequence and run in deferred system context so that it can be run with elevated privileges on Windows Vista systems.

Updating the DirectX Object Files for Basic MSI and InstallScript MSI Projects
If you obtain updates for any of the DirectX files and you want to include them in your DirectX object, place them in the appropriate InstallShield Program Files subfolder with the other DirectX files. The location is:
InstallShield Program Files Folder\Objects\DirectX9c\Redist

InstallShield 2010 User Guide

ISP-1600-UG00

451

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

You can also remove files from that folder if your product does not require them and you do not need to include them in your installation. For more information about the DirectX redistributable files, including details about any updates that Microsoft may have released since the current version of InstallShield was released, see the latest DirectX SDK or Microsofts Web site (http:// msdn.microsoft.com/directx). At build time, InstallShield uses whatever redistributable files are in that DirectX folder to build your release.

Including the DirectX 8.0a Object


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The DirectX 8.0a object contains a merge module that has the logic required to install DirectX 8.0a. It does so by launching a redistributable .exe file. The object performs a configuration step that does not require user intervention. When the object performs the configuration step, it adds the required redistributable .exe files to the to the Disk1 in the Support Files view. As a result, the build engine copies these files to your disk image at build time. From this location on the disk image, the merge module attempts to run the DirectX 8.0a installation.

Operating System Requirements


The object installs DirectX 8.0a to all Windows 9x machines and to Windows 2000 or later. However, it does not install DirectX 8.0a on a Windows NT 4 machine. To install DirectX 8.0a on Windows NT 4, you must install the NT 4 Service Pack 6 manually. When an installation containing the DirectX 8.0a object is run on an Windows NT 4 machine that does not have at least SP6, a warning is displayed. When the end user clicks OK at the message prompt, the installation completes normally.

Tip: To change the text of the warning message, you can set a Windows Installer property called DIRECTX8_NT4_MESSAGE to the text you want to display. If you want the installation to exit instead of continuing normally, you can set the DIRECTX8_NT4_ISERROR property to any value such as Yes.

Including the MDAC Object


The MDAC object will always try to install MDAC unless a newer version exists on a machine. Since you cannot distinguish whether a correct version of MDAC is properly installed by simply looking at a version key in the registry, InstallShield has created the following properties that you can set through the Property Manager to modify this behavior:

ISINSTALL_MDAC_BYVERSION ISINSTALL_MDAC_SKIP

452

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

Note: MDAC 2.5 SP1 has been updated to install MDAC 2.5 SP2.

Using the InstallShield MSDE 2000 Object for NT Platforms in an InstallScript MSI Project
To use the InstallShield MSDE 2000 Object for NT Platforms in an InstallScript MSI project, you must add code to your installation script. This is because a limitation of MSDE 2000 is that it cannot be installed as a nested .msi file; so an installation cannot run the MSDE 2000 installation from the InstallExecute sequence but must run it from the Install UI sequence, which in InstallScript MSI projects is executed by the script. You must add two new functions, one to install MSDE 2000 and the other to uninstall it, and then call them in your script, as described in the following steps.

Task

To use the InstallShield MSDE 2000 Object for NT Platforms in an InstallScript MSI project: 1.

Place the following three function declarations in the function prototypes section of your script (below the line #include "ifx.h"):
prototype int Msi.MsiGetPropertyA(int, byval string, byref string, byref int); prototype InstallMSDE(); prototype UninstallMSDE();

2.

Place function definitions like the following examples at the end of your script. Be sure to replace YourMSDEFeatureName in the call to FeatureIsItemSelected with the name of the feature with which the MDSE object is associated. You can customize the following code to meet your particular needs.
function InstallMSDE() string szPropVal, svResult; number nBuffer, nResult, nvResult; BOOL bFeatVal; begin nBuffer = MAX_PATH; bFeatVal = FeatureIsItemSelected ( MEDIA , "YourMSDEFeatureName" ); MsiDoAction(ISMSI_HANDLE, "CheckInstance.DEAEC3E7_8F5C_4115_ABD3_E5742E47D469"); nResult = Msi.MsiGetPropertyA(ISMSI_HANDLE,"INSTANCEFOUND",szPropVal,nBuffer); GetSystemInfo (OS, nvResult, svResult); if ((szPropVal="")&&(bFeatVal=TRUE)) then if (nvResult=IS_WINDOWS9X) then MessageBox("Cannot install MSDE on Windows 9X machines. " + "Please contact your setup provider for more information. " + "Setup will now exit.", WARNING); abort; else MessageBox("Preparing the MSDE 2000 setup. " + "This may take a few minutes...", INFORMATION); nResult = MsiDoAction(ISMSI_HANDLE, "InstallMSDE.DEAEC3E7_8F5C_4115_ABD3_E5742E47D469"); if (nResult!=0) then MessageBox("MSDE 2000 Installation failed. " + "Setup will now stop.", WARNING); abort; else

InstallShield 2010 User Guide

ISP-1600-UG00

453

Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation

nResult = Msi.MsiGetPropertyA(ISMSI_HANDLE, "REBOOTISMSDE2000",szPropVal,nBuffer); if (szPropVal="") then MsiDoAction(ISMSI_HANDLE, "SetReboot.DEAEC3E7_8F5C_4115_ABD3_E5742E47D469"); endif; endif; endif; endif; end; function UninstallMSDE() string szUninstKey, svUninstVal, svRemMSDE, szProdCode; number BufSize, nvType, nResult; begin nvType = REGDB_STRING; BufSize = MAX_PATH; nResult = Msi.MsiGetPropertyA(ISMSI_HANDLE,"ProductCode",szProdCode,BufSize); szUninstKey = "SOFTWARE\\InstallShield\\ObjectRuntime\\ISMSDE2000\\" + szProdCode; RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE ); RegDBGetKeyValueEx ( szUninstKey, "UninstallKey" , nvType, svUninstVal , BufSize); nResult = Msi.MsiGetPropertyA(ISMSI_HANDLE,"REMOVEMSDE",svRemMSDE,BufSize); if ((svRemMSDE!="")&&(svUninstVal!="")) then MsiDoAction(ISMSI_HANDLE, "UninstallMSDE.DEAEC3E7_8F5C_4115_ABD3_E5742E47D469"); endif; end;

3. 4.

Call InstallMSDE in the OnFirstUIBefore event handler function just before or after the line Enable(STATUSEX);. Call UninstallMSDE in the OnMaintUIBefore event handler function just before the Dlg_Start blocks endif statement, so that UninstallMSDE is called only if the end user selects and confirms uninstallation.

Declaring a Script-Defined Variable for Access 97, ODBC 3.51, and DCOM Deployment Objects
Project: This information applies to InstallScript projects.

If you specify the destination directory of a file that one of your InstallScript objects usesfor example, a database filewith a script defined variable, your object will not automatically know about your scriptdefined variable. To provide this information to the object, you need to add some code to your installation script as in the following example:
function OnBegin() /* Declare an object variable to hold a reference to the object. */ OBJECT oObj; begin /* Get a reference to an Access 97 Object named "New Access 97 1". */ set oObj = GetObject("New Access 97 1"); // Tell the object the value of <MyVar1>. */ szDir = "c:\\MyApps\\GoodApp"; oObj.ScriptDefinedVar("<MyVar1>") = szDir;

454

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Identifying Application Dependencies

/* Tell the object the value of <MyVar2>. */ szDir = szDir ^ "\\help files"; oObj.ScriptDefinedVar("<MyVar2>") = szDir; end;

Note: This method will work only for the Access 97, ODBC 3.51, and DCOM Deployment objects. You cannot and need not use script-defined variables with other objects.

Identifying Application Dependencies


A file often relies on functions in other files to perform a task. However, you may not be aware of all these other filesknown as dependencieswhen you include your applications files in your installation project. To help you identify dependencies, InstallShield offers three dependency scanners that automatically add these files to your project. You can access these scanners in the Dependency Scanners view.
Table 11-13: Available Dependency Scanners Scanning Option Perform Static Scanning Description The Static Scanning Wizard looks at many of the files that you have in your installation and checks for any dependencies that they may require. The Dynamic Scanning Wizard monitors your system while an executable file is running. It then adds to your project any .dll or .ocx files that are required by the application. The Visual Basic Wizard scans your Visual Basic project for all dependencies and adds them to your installation project.

Perform Dynamic Scanning

Import Visual Basic Project

Any files that are added to a Windows Installerbased installation through one of these scanners are added in accordance with Setup Best Practices. To include all files needed by a .NET solution, open your project from within Microsoft Visual Studio and drag project outputs from your .NET project to the InstallShield project.

Importing Visual Basic Projects


You can import an existing Visual Basic project into your installation with the Visual Basic Wizard. This wizard scans your project for any dependencies and then creates components for your files. The wizard requires that you have Visual Basic installed on your system. If you do not have it installed, and want to import a Visual Basic project, you need to install Visual Basic before you launch the wizard.

Task

To launch the Visual Basic Wizard in InstallShield, do one of the following:

On the Tools menu, click Import Visual Basic Project.


ISP-1600-UG00 455

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Identifying Application Dependencies

In the Dependency Scanners view, click Import Visual Basic Project.

Filtering Files in Dependency Scanners


When you run the Static, Dynamic, and Visual Basic scanning wizards, you may find that they list as dependencies certain files that you do not want added to your installation. To avoid having these files added every time you run the scanner, you can edit Filters.xml. This file enables you to specify any files that you want the scanners to ignore or include.
Filters.xml

is in the following location:

InstallShield Program Files Folder\Support

The file must remain in this location after you edit it; otherwise, the scanners will not work properly.

Tip: You can also use the Filters.xml file to control which registry items should be excluded during COM extraction. For more information, see Filtering Registry Changes for COM Extraction. The Filters.xml file also lets you control which IIS settings should be excluded when you are importing an IIS Web site. For more information, see Filtering IIS Data When Importing a Web Site and Its Settings into an InstallShield Project.

Excluding Files
The <Exclude> element in the Filters.xml file is where you add subelements for each of the files that you want the scanners to exclude. Any files that are listed here will not be added to your installation project by the scanners. By default, the <Exclude> element has subelements for common system files that are present on all Windowsbased machines.

Including Files
The <Include> element in the Filters.xml file gives you the ability to override individual files that are subelements of the <Exclude> element. Any files that are listed in subelements of the <Include> element will be added to your installation project by the scanners, even if the files are also listed in subelements of the <Exclude> element.

Note: The following vital operating system files are never recognized by the scanner, even if you add them as subelements of the <Include> element:

kernel32.dll ntdll.dll user32.dll gdi32.dll advapi32.dll shell32.dll ole32.dll

456

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Registering COM Servers

Specifying Files in the <Exclude> and <Include> Elements


If you want to list a file under the <Exclude> or <Include> elements, you must add the file as a subelement. Following is a sample of a properly formatted subelement:
<File name="myfile.dll" path="[SystemFolder]" We="needthis"/>

Table 11-14: Recognized Attributes for the <File> Subelement Attribute name Description This attribute must be lowercase. The value of this attribute (for example, myfile.dll in the above example) indicates the name of the file that you want to include or exclude. This attribute is optional. The value of this attribute (for example, [SystemFolder] in the above example) indicates the path of the file.

path

Any other attributes are optional and are not recognized by the scanners. You may want to add additional attributessuch as the We attribute in the example above and the corresponding "needthis" valueto identify why an item is being excluded or included.

Important: Ensure that your XML code is well formed; if its not well formed, all of the filters fail. In most cases, you can identify improperly formed XML code by opening the Filters.xml file in Internet Explorer. You should be able to expand and contract the <Filters>, <Include>, and <Exclude> elements; if you cannot, check the code for errors. If you add subelements to the <Exclude> or <Include> elements, be sure that you do not place them within the commented-out section, since InstallShield ignores that area of the Filters.xml file.

The following sample XML code shows the format of the Filters.xml file:
<Filters> <Include> <!--Instructions on how to add files to this element. --> <File name="mfc42.dll" We="needthis"/> </Include> <Exclude> <!--Instructions on how to add files to this element. --> <Registry key="HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046}"/> <File name="12520437.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> <File name="12520850.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> </Exclude> </Filters>

Registering COM Servers


Project: This information applies to the following project types:

Basic MSI
ISP-1600-UG00 457

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Registering COM Servers

InstallScript MSI Merge Module MSI Database MSM Database

Most applications require certain COM servers in order to operate properly. In order for the operating system to recognize these COM servers, you need to register them. With traditional COM, COM data is written directly to the registry. Registry-free COM, or Reg-Free COM, offers a simple alternative to the traditional method. With Reg-Free COM, COM data is written to an application manifest file.

Traditional COM Registration


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

InstallShield supports multiple methods for registering a COM server on a target machine. The following methods are the ones used traditionally:

The COM information can be extracted from the file at build time (or design time) and written to the COM-related tables of your .msi database. The COM servers self-registration function can be called at installation time.

The first method listedextracting the COM information and writing it to the .msi databaseis preferred over the self-registration method. The first method writes the COM class information to the Class, ProgID, and Registry tables of the .msi database.

Determining Whether a COM Server Supports Self-Registration


Not all COM servers support self-registration. Although it is likely that you will know which files in your installation are self-registering, there may be times when you do not know. Because you must handle self-registering files differently than non-self-registering files, you need to be able to determine if a file is self-registering. In most cases, you can determine whether a file is self-registering if you add it to an InstallShield project. InstallShield tests COM server files when they are added to a project to determine if they are selfregistering files. If InstallShield determines that a COM server added to your project is self-registering:

For Windows Installerbased projects: InstallShield sets the COM Extract at Build property of the files component to Yes (if you have specified on the Preferences tab of the Options dialog box that COM extraction should occur at build time). For InstallScript-based projects: InstallShield marks the file as self-registering.

458

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Registering COM Servers

Extracting COM Information from a COM Server

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Note that for MSI Database and MSM Database projects, COM information cannot be extracted at build time; it is extracted at design time.

The recommended method for registering COM servers is to use Windows Installer tables in the .msi database to make the necessary registry entries for your COM server. With this method, Windows Installer is capable of registering files when they are advertised, and it can safely roll back the registration information in case of a failed installation. Since each component should have only one portable executable file, the assumption is that all of the registration information belongs to a single file, marked as the key file of its component. InstallShield supports several methods for extracting COM information from a COM server:

Use the Component Wizard. You can use this wizard to create a new COM server component. With this method, the wizard performs a one-time scan of COM information from the components key file. For a components COM Extract at Build setting, select Yes. Since InstallShield extracts the COM data every time that you build a release, this method is helpful if your COM servers interfaces change frequently. The COM server must be the key file of its component for this method. Extract the information by right-clicking the file in the Files and Folders view and then clicking Extract COM Data for Key File. Use this method if you have already added the COM server file to a component.

As an alternative to having InstallShield extract the COM data, you can manually add COM information to a component in the components Advanced Settings. If you do not want InstallShield to extract COM information every time that you build a release, select No for the COM Extract at Build setting of the component. Use this method if you want InstallShield to register the file according to the information that is statically contained in the components COM Registration advanced setting. This advanced setting stores information about the files COM classes, ProgIDs, and so on, that were either extracted in the Component Wizard or entered manually in the Advanced Setting area. When InstallShield extracts COM information from a COM server, the COM class information is written to the Class, ProgId, and Registry tables of the .msi database. If you are using InstallShield on a 64-bit operating system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. To learn more about 64-bit support, see Targeting 64-Bit Operating Systems.

InstallShield 2010 User Guide

ISP-1600-UG00

459

Chapter 11: Organizing Files for Your Installation Registering COM Servers

InstallShield employs a special technique to find all COM information on a COM server without actually registering it. Therefore, COM extraction does not affect the system registry. However, some COM servers registration processes depend on existing registry entry values. Although InstallShield has developed an algorithm to avoid this scenario, it may not be foolproof in some extreme cases.

Caution: Some applications, like WinRunner, insert hook .dll files into the COM extraction engine. This causes COM extraction to fail and displays the following message: "ISRegSpy detects following module %1 hooked into this process, which causes ISRegSpy to malfunction. You need to shut the application down and restart COM extraction." If you encounter this message, shut down the application and restart COM extraction, as the dialog box instructs. Do not select the self-registering property for .exe files that are not self-registering. To self-register an .exe file, you need to launch the .exe file with the /regserver command. However, if the .exe file does not support the command line switch, the .exe file will be launched during extraction at build time.

Note: The definitions of the COM-related Windows Installer tables prevent a COM server from being placed in more than one feature. If a COM server needs to be placed in more than one feature, the following are two available options:

Make the second feature that requires the COM server a child of the first, and place the file in the parent feature. Use self-registration on the COM server instead of using the COM-related Windows Installer database tables.

Filtering Registry Changes for COM Extraction

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

To prevent InstallShield from extracting undesired COM data from a COM server (either at build or design time), you can edit the Filters.xml file and specify the registry keys to be excluded. Filters.xml is in the following location:
InstallShield Program Files Folder\Support

The file must remain in this location after you edit it; otherwise, COM extraction will not work properly.

Tip: You can also use the Filters.xml file to control which files should be included or excluded during dependency scanning. For more information, see Filtering Files in Dependency Scanners. The Filters.xml file also lets you control which IIS settings should be excluded when you are importing an IIS Web site. For more information, see Filtering IIS Data When Importing a Web Site and Its Settings into an InstallShield Project.

460

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Registering COM Servers

Excluding Registry Keys from COM Extraction


The <Exclude> element in the Filters.xml file is where you add subelements for each of the registry keys that you want the COM extraction process to exclude. Any keys that are listed here will not be uninstalled when your product is uninstalled. By default, the <Exclude> element has subelements for common system registry keys that are required.

Specifying Registry Keys in the <Exclude> Element


If you want to list a key under the <Exclude> element, you must add the key as a registry subelement. Following is a sample of a properly formatted registry subelement that blocks changes to an InprocServer32 registry key, all of its values, and all of its subkeys:
<Registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000231-0000-0010-800000AA006D2EA4}\InprocServer32"/>

Following is a sample of a properly formatted registry subelement that blocks changes to only the default value of an InprocServer32 registry key:
<Registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000231-0000-0010-800000AA006D2EA4}\InprocServer32" value=""/>

Following is a sample of a properly formatted registry subelement that blocks changes to only the ThreadingModel value name for an InprocServer32 registry key:
<Registry key="HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000231-0000-0010-800000AA006D2EA4}\InprocServer32" value="ThreadingModel"/>

Table 11-15: Recognized Attributes for the <Registry> Subelement Attribute key Description This attribute must be lowercase. The value of this attribute (for example, HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000231-0000-0010-800000AA006D2EA4}\InprocServer32 in the above examples) indicates the name of the registry key that you want to filter. This attribute is optional:

value

To block changes to an entire registry key, do not include the value attribute. To block changes to the default value of the specified key, set the value of this attribute to a null value. To block changes to the name of a value of the specified key, set the value of this attribute to the name of that registry value.

Any other attributes for the <Registry> subelement are optional and are not recognized by the COM extraction process. You may want to add additional attributes to identify why an item is being excluded.

Important: Ensure that your XML code is well formed; if its not well formed, all of the filters fail. In most cases, you can identify improperly formed XML code by opening the Filters.xml file in Internet Explorer. You should be able to expand and contract the <Filters>, <Include>, and <Exclude> elements; if you cannot, check the code for errors. If you add subelements to the <Exclude> or <Include> elements, be sure that you do not place them within the commented-out section, since InstallShield ignores that area of the Filters.xml file.
InstallShield 2010 User Guide ISP-1600-UG00 461

Chapter 11: Organizing Files for Your Installation Registering COM Servers

The following sample XML code shows the format of the Filters.xml file:
<Filters> <Include> <!--Instructions on how to add files to this element. --> </Include> <Exclude> <!--Instructions on how to add files to this element. --> <Registry key="HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046}"/> <File name="12520437.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> <File name="12520850.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> </Exclude> </Filters>

Self-Registering COM Servers

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

If you have a COM server that is self-registering, you can call the COM servers self-registration functions at installation time to register the COM server on the target machine. InstallShield supports different methods for indicating that a COM-related file (.ocx, .dll, .exe, .tlb, or .olb) is self-registering:

You can specify that a particular file is self-registering. For more information, see File Properties Dialog Box. You can specify that a dynamic link is self-registering. For more information, see Dynamic File Link Settings Dialog Box.

Tip: If the self-registering file is part of a 64-bit component, 64-bit self-registration occurs on the target machine. For more information, see Targeting 64-Bit Operating Systems.

When you mark a COM server .dll or .ocx file as self-registering, the files own registration function (DllRegisterServer) is called during installation to register it with the target system, and its unregistration function (DllUnregisterServer) is called during uninstallation to unregister the file. Registering a file with DllRegisterServer has several limitations:

COM information registered with DllRegisterServer cannot be advertised. Because DllRegisterServer is .dll code, its effects cannot reliably be rolled back during a failed installation.
ISP-1600-UG00 InstallShield 2010 User Guide

462

Chapter 11: Organizing Files for Your Installation Registering COM Servers

DllRegisterServer cannot distinguish between per-user and per-machine COM information on systems running Windows 2000 and later.

Self-registration may require COM servers to be registered in a particular order. InstallShield selfregistration (ISSelfReg) enables you to overcome this limitation.
DllRegisterServer generally does not register a file with a relative path, as needed by systems that

support side-by-side sharing. In addition, if you use any type of self-registration in a patch, the patch will not be uninstallable. When you mark one or more files as self-registering, InstallShield adds data to a table of your .msi database, and adds some custom actions related to self-registration to your installation Execute sequence. For details, see Self-Registration Methods and InstallShield Self-Registration (ISSelfReg). On systems running Windows 2000 and later, per-machine self-registration information is stored in the registry key HKLM\SOFTWARE\Classes\CLSID, and per-user self-registration information is stored in HKCU\SOFTWARE\Classes\CLSID; a merged view of the data is available under HKCR\CLSID. On systems running Windows NT 4 and Windows 9x, COM registration information is stored in HKCR\CLSID.

Self-Registration Methods

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

On the Preferences tab of the Options dialog box, you can select whether you want to use the InstallShield self-registration method (ISSelfReg) or the Windows Installer self-registration method (SelfReg).

Note: If you use any type of self-registration in a patch, the patch will not be uninstallable.

Windows Installer Self-Registration


Windows Installer self-registration does the following:

Registers only .dll and .ocx files. Registers files in arbitrary order. Can register 64-bit files if the self-registering file is part of a 64-bit component.

InstallShield Self-Registration
InstallShield self-registration does the following:

InstallShield 2010 User Guide

ISP-1600-UG00

463

Chapter 11: Organizing Files for Your Installation Registering COM Servers

Can register .exe, .tlb, .dll, and .ocx files. Uses batch mode registration to handle any registration dependencies at run time. Requires the inclusion of a self-registration engine that is 70 KB in overhead. Can register 64-bit files if the self-registering file is part of a 64-bit component.

Note: With InstallShield self-registration, you can specify the order in which the files are registered at run time. You can set the order in the ISSelfReg table (Order column) in the Direct Editor.

InstallShield Self-Registration (ISSelfReg)

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

If you have selected ISSelfReg as the self-registration method for COM servers, and if your project contains any files (or dynamic links) marked as self-registered, InstallShield adds information about those files to the ISSelfReg table of your .msi database. You can view and edit the ISSelfReg table in the Direct Editor. To learn about the fields in this table, see ISSelfReg Table. In addition, if your project contains any files (or dynamic links) marked as self-registered, InstallShield adds the following custom actions to the Execute sequence of your installation.
Table 11-16: Custom Actions Added to Projects that Have Self-Registering COM Servers Action ISSelfRegisterCosting Description Immediate-execution action that reads the ISSelfReg table and determines which files need to be registered or unregistered. A file will be registered when its component is scheduled to be installed, and unregistered when its component is scheduled to be uninstalled. Deferred-execution custom action that unregisters each file whose component is scheduled to be removed. Deferred-execution custom action that registers each file whose component is scheduled to be installed. Displays error information for files that failed to self-register.

ISUnSelfRegisterFiles

ISSelfRegisterFiles

ISSelfRegisterFinalize

464

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Registering COM Servers

Registry-Free COM Registration


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

With Reg-Free COM, COM data is written to an application manifest file that is stored in the application folder. The manifest file is an XML file that contains information about an application and the libraries that are associated with it. Note that the Reg-Free COM manifest file, the executable file, and the COM libraries should all be installed to the same folder on the target machine.

Benefits of Reg-Free COM


Reg-Free COM has several advantages over traditional COM. For example, with Reg-Free COM, the component is defined within the scope of the application itself. Even if other applications that use the same COM component or a different version of it require that it be registered, it will not interfere with this application. Problems may occur with traditional COM registration if multiple versions of shared libraries exist on a target system. For example, an installation may overwrite a new version of a shared library with an older version, or a new version might not be backwardly compatible with older versions. This may cause applications that require features of a specific version to crash. These types of situations are commonly known as DLL Hell. With Reg-Free COM, you can avoid these problems because other applications cannot access your applications COM component. In addition, Reg-Free COM streamlines the upgrade and uninstallation processes. For an upgrade, simply replace the application folder. For an uninstallation, simply remove that folder.

Limitations of Reg-Free COM


Reg-Free COM is not appropriate for some solutions. Several limitations exist:

Reg-Free COM works on only Windows XP or later. A component is not suitable for Reg-Free COM if it is a system component or part of the operating system. In addition, it is not suitable if it is a data access component such as Microsoft Data Access Components (MDAC). These types of components should not be isolated. Some of these components, such as MDAC, can be included in an installation as a redistributable. A COM component can be isolated only once per application. Consider grouping COM components in a single class library as a workaround to this limitation.

Creating and Modifying Reg-Free COM Files for Your Installation

Project: This information applies to the following project types:

Basic MSI InstallScript MSI


ISP-1600-UG00 465

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

Merge Module

Use the Reg-Free COM Wizard to create and modify Reg-Free COM manifest files to be included in your installation. Before you use the Reg-Free COM Wizard, you should add the COM libraries (.dll and .ocx files) and the executable file that uses them to your InstallShield project. The wizard extracts COM information from the libraries that you specify and adds them to the application manifest files. It also creates a new component with the manifest file set as the key file. The manifest component has the same destination and condition as the associated executable-file component.

Sample Manifest File for a Reg-Free COM File

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The contents of the manifest file include the name of the executable file, the file names of the libraries that are associated with the executable files, and the COM information. For the following sample manifest file, the name of the executable file is Sample.exe, and the name of the library is SampleCircle.dll.
<?xml version="1.0" encoding="utf-8"?> <assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemasmicrosoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemasmicrosoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity type="win32" name="Sample.exe" version="1.0.0.10"/> <file asmv2:size="24576" name="SampleCircle.dll"> <hash xmlns="urn:schemas-microsoft-com:asm.v2"> ... </hash> <typelib flags="HASDISKIMAGE" helpdir="" resourceid="0" tlbid="{6A2304BC-F200-49B8955E-0ACDE272B6E0}" version="1.0"/> <comClass clsid="{C621F4D3-8463-4B0C-9BEC-84D979C41385}" description="SampleCircle.Server" progid="SampleCircle.Server" threadingModel="Apartment" tlbid="{6A2304BC-F200-49B8-955E-0ACDE272B6E0}"/> </file> </assembly>

On a Windows XP system, the presence of the manifest file enables the application to use methods from the COM library without the libraries having been registered in the target systems registry. Windows XP uses the COM libraries in the current directory before using any other versions of the libraries that may be registered on the target system.

Referencing DIM Files in a Project


Project: This information applies to the following project types:

Basic MSI

466

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

Merge Module

Traditionally, release engineers have been fully responsible for interacting with software developers and creating installations for software deployment. With the InstallShield Collaboration model, software developers can directly participate in the installation design. They can communicate all their installation requirements in an XML-structured text file that is authored alongside other source code that makes up a software module. These files are Developer Installation Manifest (.dim) files and can be authored using InstallShield Collaboration or InstallAnywhere Collaboration and edited in any text editor. Once the .dim files have been created, they can be referenced in a Basic MSI or Merge Module project in InstallShield. When a project that contains .dim files is built, all DIM references are automatically consumed in the process.

Project: In Basic MSI projects, DIM references must be associated with a feature. Merge Module projects do not contain features. If you add a merge module that contains DIM references to an installation project, InstallShield associates the DIM references with the feature in the installation project that contains the merge module.

Currently, you can reference .dim files in the following InstallShield views:

Setup Design (Basic MSI projects) DIM References (Basic MSI and Merge Module projects) SQL Scripts (Basic MSI projects) Internet Information Services (Basic MSI projects) Shortcuts (Basic MSI and Merge Module projects)

Although the DIM References and Setup Design views enable you to create and modify DIM references in the same way in both views, there is one major difference between them. The Setup Design view is different because it enables you to associate DIM references with features. Both views, however, are recommended for managing DIM references.

Adding a New DIM Reference in the DIM References View


Project: This information applies to the following project types:

Basic MSI Merge Module

Task

To add a new DIM Reference in the DIM References view: 1. 2.

In the View List under Organization, click DIM References. Right-click the DIM References explorer, and click New DIM Reference.

InstallShield adds a DIM reference to your project.

InstallShield 2010 User Guide

ISP-1600-UG00

467

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

Review or update the writable settings on the General, Variables, Meta Info, Data, and Dependencies tabs that are associated with the DIM reference.

Tip: You can also add a new DIM references to a Basic MSI project by adding it to a feature. For more information, see Adding a New DIM Reference to a Feature.

Associating a DIM Reference with a Feature


Project: In Basic MSI projects, DIM references must be associated with a feature. Merge Module projects do not contain features. If you add a merge module that contains DIM references to an installation project, InstallShield associates the DIM references with the feature in the installation project that contains the merge module.

You can associate a DIM reference with one or more features in a Basic MSI project.

Task

To associate a DIM reference with a feature: 1. 2.

In the View List under Organization, click Setup Design. Right-click the feature that you want to associate a DIM reference with, and click Associate DIM References.

Review or update the writable settings on the General, Variables, Meta Info, Data, and Dependencies tabs that are associated with the DIM reference.

Adding a New DIM Reference to a Feature


Project: This information applies to Basic MSI projects.

Task

To add a new DIM Reference to a feature: 1. 2.

In the View List under Organization, click Setup Design. In the Setup Design explorer, right-click the feature that you want to associate a DIM reference with, and click New DIM Reference.

InstallShield adds a DIM reference to the feature. Review or update the writable settings on the General, Variables, Meta Info, Data, and Dependencies tabs that are associated with the DIM reference.

468

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

Inserting SQL Script Files Associated with a Referencing DIM File


Project: This information applies to Basic MSI projects.

Task

To insert a SQL script associated with a referencing DIM: 1. 2. 3.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, right-click a SQL connection, and click Insert DIM Script. The Associate DIM References dialog box opens. Select the .dim file that you want to associate with the SQL connection, and click OK.

InstallShield adds the DIM reference to the SQL connection.

Inserting DIM Virtual Directories


Project: This information applies to Basic MSI projects.

Task

To insert a DIM virtual directory: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, right-click a Web site, and click Insert DIM Virtual Directories. The Associate DIM References dialog box opens. Select the .dim file that you want to associate with the Web site, and click OK.

InstallShield adds the DIM reference to the IIS Web site.

Creating a Shortcut to a File Referenced in a DIM


Project: This information applies to the following project types:

Basic MSI Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

469

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

Task

To create a shortcut to a file referenced in a DIM: 1. 2. 3. 4. 5.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, right-click a shortcut destination and click New Shortcut to File in DIM. The Browse for a Destination File dialog box opens. In the DIM list, select a DIM. Select the file associated with the DIM, and click Open. Configure the settings that are associated with the new shortcut.

Editing Build and Run-Time Variables Referenced in a DIM


Project: This information applies to the following project types:

Basic MSI Merge Module

Task

To edit build and run-time variables referenced in a DIM: 1. 2. 3. 4. 5.

In the View List under Organization, click DIM References. In the DIM References explorer, select the DIM reference that you want to edit. Click the Variables tab. Click within the Value field to update it, or select from an available list of properties. Click within the Description field to update the information.

Identifying the Location of DIM Dependencies


Project: This information applies to the following project types:

Basic MSI Merge Module

When you add a DIM reference to your project, InstallShield automatically attempts to add any of its dependent DIM files to your project. InstallShield shows a DIM references dependencies on the Dependencies tab in the DIM Reference view and in the Setup Design view. InstallShield searches in several locations for a DIMs dependencies:

In the folder that contains the DIM file

470

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

In the locations that are specified on the DIMs tab on the Options dialog box In the subfolders of the aforementioned locations

Each dependency is identified by its UUID and Version property values. If InstallShield finds a DIM dependency that has the required UUID and Version property values in one of the aforementioned locations, InstallShield adds it to the project. If InstallShield cannot find a DIM dependency, the Source Path column on the Dependencies tab is left blank. You can either manually specify the location for the DIM dependency, or you can add the dependencys location to the Options dialog box.

Task

To manually specify the source path for a DIM dependency: 1. 2. 3. 4. 5.

In the View List under Organization, click DIM References. In the DIM References explorer, click the DIM reference whose dependencies you want to configure. InstallShield displays its settings on the tabs in the right pane. Click the Dependencies tab. Click the Source Path field for the dependency whose location you want to specify, and then click the ellipsis button (...). The Open dialog box opens. Browse to find the dependency .dim file, and then click the Open button.

InstallShield adds the path that you specified.

Note: If you manually specify the source path for a DIM dependency and more than one DIM file references that DIM dependency, InstallShield automatically uses the same dependency source path for all DIM references in your project.

Task

To add a DIM dependency location to your machine: 1. 2. 3.

On the Tools menu in InstallShield, click Options. The Options dialog box opens. Click the DIMs tab. Specify the folder or folders where InstallShield should search for dependencies of DIM files. Separate multiple locations with a comma.

You do not need to manually specify the source path for any DIM dependencies that are stored in the locations that you specified.

Tip: If you have added one or more DIM dependency locations, you may need to refresh the DIM reference in your project. To do so, right-click the DIM reference in the DIM References view, and then click Refresh.

InstallShield 2010 User Guide

ISP-1600-UG00

471

Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project

472

ISP-1600-UG00

InstallShield 2010 User Guide

12
Configuring the Target System

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

In addition, certain portions do not apply to certain types of project, as noted.

Every installation changes the target system in some way. The simplest installations might only copy files. More in-depth installations make registry changes, edit .ini files, create shortcuts, configure ODBC resources, use environment variables, and modify XML files. For more information on how to configure the target system, refer to this section of the documentation.

Creating Shortcuts and Program Folders


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database
ISP-1600-UG00 473

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

MSM Database Transform

You can create shortcuts and program folders on the Windows desktop and on the Start menu by using the Shortcuts explorer in the Shortcuts view. Like files, shortcuts are associated with components. In installation projects, they are created on the target system only if the feature to which the component belongs is selected for installation.

Types of Shortcuts
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

InstallShield offers several types of shortcuts:


Table 12-1: Types of Shortcuts Shortcut Type New Shortcut Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform InstallScript Description Creates a new shortcut to a file that exists in your project.

Note: This option is disabled when there is no file specified for a component.

New Advertised Shortcut

Creates an advertised shortcut. The components files are not installed to the target system until the end user launches the shortcut.

New Internet Shortcut

Creates an Internet shortcut (one whose Internet Shortcut setting is set to Yes) with a default value of http:// www.YourCompanyName.com for the Target setting; change this value to the desired URL.

474

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

Table 12-1: Types of Shortcuts (cont.) Shortcut Type New Shortcut to Preexisting File Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, Merge Module Description Creates a shortcut to a file that already exists on the target system.

New Folder

Creates a program folder. You can create a program folder if you want your shortcut to appear under your company name, for example.

New Shortcut to file in DIM

Creates a shortcut to a file in a DIM.

Creating Shortcuts
Before you create a shortcut, you should create at least one feature and component. If you have not created a component when you create your first shortcut, InstallShield creates a component for you. You can change the component to which the shortcut belongs by configuring the shortcuts Component setting.

Task

To create a shortcut: 1. 2.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, right-click one of the destination directories and then click the appropriate command. For a list of available commands, see Types of Shortcuts. InstallShield adds a new shortcut with the default name NewShortcutN (where N is a successive number).

3. 4.

Enter a new name, or right-click it later and click Rename to give it a new name. Configure the shortcuts settings.

For details about each of the settings that you can configure for shortcuts and folders, see:

Shortcut Settings Folder Settings

InstallShield 2010 User Guide

ISP-1600-UG00

475

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

Note: You can create a program folder if you want your shortcut to appear under your company name, for example. When you have created a folder for your shortcut, you can create the shortcut by right-clicking your new folder and then clicking New Shortcut. You cannot create shortcuts to a dynamically linked file. For more information, see Limitations of Dynamic File Linking.

Tip: You can also use the Components view orin installation projects onlythe Setup Design view to create a shortcut. If you use either the Components view or the Setup Design view, click the Shortcuts item in the explorer; a separate Shortcuts explorer opens in a new pane.

Configuring Shortcut Settings


When you have created a shortcut, you need to configure its settings. Shortcut settings enable you to link your shortcut to a file, provide a description of the shortcut, or pass arguments.

Task

To configure the settings for a shortcut: 1. 2. 3.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, click the shortcut. The shortcuts settings are displayed in the right pane. Configure the settings as needed.

For details about each of the settings that you can configure for shortcuts and folders, see:

Shortcut Settings Folder Settings

Specifying the Icon for a Shortcut


InstallShield enables you to specify the icon that should be used for a shortcut that is created on the target system at run time.

Task

To specify the icon for a shortcut: 1. 2. 3.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, click the shortcut whose icon you want to specify. The shortcuts settings are displayed in the right pane. In the Icon File setting, specify the file that contains the icon for the shortcut that you are creating. You must specify an .ico file or the executable file (.dll or .exe) that contains the icon resource.
For Basic MSI, InstallScript MSI, or Merge Module projects: You can either type the fully qualified path

to the file that contains the icon, or click the ellipsis (...) button to browse to it.
476 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

For InstallScript projects: Type the fully qualified path to the file on the target system that contains

the icon.
4.

If the icon file that you specify contains more than one icon resource, enter the index in the Icon Index setting. A nonnegative integer refers to the order of the icon resources in the executable file. For example, 0 refers to the first icon in the file, 1 refers to the second icon, and 2 refers to the third icon.

InstallShield changes the icon that is displayed for the shortcut in the Shortcuts explorer to the one that you specified, unless either of the following conditions is true:

The project type is InstallScript. The shortcut is for a pre-existing file on the target system.

For both of the aforementioned conditions, the icon file is not known until run time. Therefore, InstallShield shows the following icon for each shortcut in the Shortcuts explorer, instead of displaying the icon that is used at run time on target systems.

InstallShield also uses this icon for a shortcut in the Shortcuts explorer if the file that is selected in the Icon File setting does not contain an icon.

Project: For Basic MSI, InstallScript MSI, and Merge Module projects: Since Windows Installer requires a separate icon when the component is advertised, InstallShield extracts the icon from any executable file that you specify.

Tip: For Basic MSI, InstallScript MSI, and merge module projects: You can also right-click the icon in the Shortcuts view and then click Change Shortcut icon to specify a different shortcut icon. InstallShield updates the value in the Icon settings with the values that you specify using this method.

Creating Internet Shortcuts


An Internet shortcut is a text file with the .url extension.

Task

To create an Internet shortcut that opens your Web site: 1.

Create a text file called MySite.url with the following contents:


[InternetShortcut] URL=http://www.MySite.com

2.

Add this file to a component. Otherwise, if you simply right-click and click Add, then you will add what the shortcut points to and not the shortcut itself.

When the end user launches the shortcut, the specified Web site (www.MySite.com) opens in the default browser.
InstallShield 2010 User Guide ISP-1600-UG00 477

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

Creating Shortcuts to Folders


InstallShield lets you create a shortcut to a folder. The method that you use to create a shortcut to a folder depends on the project type that you are using.

Basic MSI Project


The Target setting of a shortcut can contain a directory identifier inside square brackets. For example, to create a shortcut to INSTALLDIR, create a shortcut with the following settings:

Display Name: Shortcut to INSTALLDIR Advertised: No Target: [INSTALLDIR]

InstallScript Project
The AddFolderIcon function creates a shortcut to a folder if you pass the path to the folder in the third (szCommandLine) parameter. For example, this code creates a shortcut to the Common Files folder in the end users Program Files folder:
ProgDefGroupType(COMMON) szFolder = TARGETDIR; LongPathToQuote(szFolder, TRUE); AddFolderIcon( ProgramMenuFolder, // where shortcut will appear "Shortcut to TARGETDIR", // shortcut display name szFolder, // what shortcut launches ""// working directory TARGETDIR ^ "Sample.exe", 0, // icon file, index "", // shortcut key NULL); // special settings

InstallScript MSI Project


Use the same basic procedure as in the preceding InstallScript section, changing all occurrences of TARGETDIR to INSTALLDIR in the example code.

Specifying a Keyboard Shortcut for Accessing a Shortcut


Keyboard shortcutsalso sometimes called hot keysenable you to perform tasks quickly by pressing a combination of keys, such as CTRL+ALT+A, instead of using the mouse. You can assign a keyboard shortcut to your products shortcut so that end users can press the appropriate hot keys to launch the shortcut.

Caution: It is recommended that you avoid configuring keyboard shortcuts for your shortcuts because they may conflict with existing keyboard shortcuts on the target system.

478

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

Task

To assign a keyboard shortcut to a shortcut in your project: 1. 2. 3. 4. 5.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, select the shortcut for which you are specifying a hot key. In the Hot Key setting, click the ellipsis button (...). The Hot Key dialog box opens. Press the keyboard shortcut that you want to use for this shortcut. Click OK.

In the Hot Key setting, InstallShield displays the appropriate decimal value that represents the combination of keys that you pressed. For example, if your key combination is CTRL+ALT+A, InstallShield displays 1601 in this setting. This number is obtained by combining the hex value of CTRL (200) and the hex value of ALT (400) with the logical Or operator. Then, that number (600) is added to the hex value for the A key (41) and converted to a decimal value. In this example, the number that is converted to decimal is 641. After the conversion, it is 1601.

Renaming Shortcuts
When you create a shortcut, your shortcut appears with a default internal name. This name is not displayed to end users, but you can change it to something that is relevant to your project.

Task

To rename a shortcut: 1. 2. 3.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, right-click the shortcut that you want to rename and click Rename. Type the new name.

Setting Shell Properties for a Shortcut


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

479

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

InstallShield lets you specify one or more shortcut properties that need to be set by the Windows Shell at run time. For example, you can set the System.AppUserModel.ExcludeFromShowInNewInstall property to 1 for a shortcut if you do not want the Start menu entry for your shortcut to be highlighted as newly installed after end users install your product. This has the same effect as clearing the Highlight newly installed programs check box in the Customize Start Menu dialog box for an individual item on a target system. You might want to use this property with shortcuts that are for tools and secondary products that are part of your installation.

Note: Windows Installer 5 introduced support for the Shell property settings. Earlier versions of Windows Installer ignore these settings.

Task

To set a Shell property for a shortcut that is in your project: 1. 2. 3.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, select the shortcut that you want to configure. The shortcuts settings are displayed in the right pane. In the Shell Properties setting, click the Add new Shell Shortcut Property button. InstallShield adds a new Key Name setting, plus additional rows of related settings under it. Configure each of the settings as necessary.

You can add multiple properties for the shortcut if necessary. The properties that the Shell can set are defined in propkey.h, which is part of the Windows SDK. For more information about configuring shortcut properties, see MsiShortcutProperty Table in the Windows Installer Help Library.

Creating Uninstallation Shortcuts for Basic MSI Projects


Project: This information applies to Basic MSI projects.

Windows Logo Guideline: According to current Microsoft Certified for Windows Vista guidelines, best practice is to not place shortcuts to remove the application in the Start menu. An uninstallation shortcut is unnecessary because your applications uninstaller is in Add or Remove Programs.

You can create an uninstallation shortcut to make it easier for end users to uninstall your product from their systems. When launched, the shortcut automatically starts the uninstallation process.

480

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders

Task

To create an uninstallation shortcut: 1. 2.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, right-click the destination directory that should contain the uninstallation shortcut, and then click New Shortcut to Preexisting file. InstallShield adds a new shortcut with the default name NewShortcutN (where N is a successive number). Enter a new name, or right-click it later and click Rename to give it a new name. In the Arguments field, type /x [ProductCode]. Separate the two arguments with a space.
Msiexec.exe is the command-line engine for the Windows Installer service. The /x argument instructs the Windows Installer service to uninstall the product referenced by the product code.

3. 4.

5. 6. 7.

Set the Advertised field to No. In the Target field, select [SystemFolder], and then append msiexec.exe to this location. In the Component field, select the component with which you want this shortcut associated. If the shortcut should always be installed, associate it with the component containing your applications main executable file.

Creating Uninstallation Shortcuts for InstallScript and InstallScript MSI Projects


Project: This information applies to the following project types:

InstallScript InstallScript MSI

Note: You may not want to create an uninstallation shortcut. An uninstallation shortcut is unnecessary because your applications uninstaller is in Add or Remove Programs.

You can create an uninstallation shortcut to make it easier for end users to uninstall your product from their systems. When end users launch the shortcut, the uninstallation process automatically starts. The following InstallScript code creates a shortcut called Uninstall Application on the desktop after file transfer. Launching this shortcut runs your installation in maintenance mode. This code works for both InstallScript and InstallScript MSI projects.
function OnMoved() begin if( !REMOVEALLMODE ) then AddFolderIcon( FOLDER_DESKTOP, "Uninstall Application", UNINSTALL_STRING + ADDREMOVE_STRING_REMOVEONLY, "", "", 0, "", REPLACE ); endif; end;

InstallShield 2010 User Guide

ISP-1600-UG00

481

Chapter 12: Configuring the Target System Editing the Registry

Tip: If you include ADDREMOVE_STRING_REMOVEONLY, -removeonly is added to the command line. As a result, REMOVEONLY is set, and the OnMaintUIBefore event handler shows only the uninstallation option. To display the standard maintenance user interface, do not include ADDREMOVE_STRING_REMOVEONLY.

Editing the Registry


The Windows registry is a system-wide database that contains configuration information used by applications and the operating system. The registry stores all kinds of information, including the following:

Application information such as company name, product name, and version number Path information that enables your application to run Uninstallation information that enables end users to uninstall the application easily without interfering with other applications on the system System-wide file associations for documents created by an application License information Default settings for application options such as window positions

Keys, Value Names, and Values


The registry consists of a set of keys arranged hierarchically under the My Computer explorer. Just under My Computer are several root keys. An installation can add keys and values to any root key of the registry. The root keys that are typically affected by installations are:

HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_USER HKEY_CLASSES_ROOT

A key is a named location in the registry. A key can contain a subkey, a value name and value pair, and a default (unnamed) value. A value name and value pair is a two-part data structure under a key. The value name identifies a value for storage under a key, and the value is the actual data associated with a value name. When a value name is unspecified for a value, that value is the default value for that key. Each key can have only one default (unnamed) value. Note that the terms key and subkey are relative. In the registry, a key that is below another key can be referred to as a subkey or as a key, depending on how you want to refer to it relative to another key in the registry hierarchy.

InstallShield Projects and the Registry


InstallShield includes the Registry view to help you with the task of modifying the end users registry. Use this view to create keys and values in much the same way that you use the Windows Registry Editor.

482

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

All registry data (except the <Default> registry set in a InstallScript project) must be associated with a component. In installation projects, if the components feature is selected for installation, the components registry data are set up on the target system.

Caution: It is important not to modify or delete registry keys indiscriminately because the registry is a vital part of the Windows operating system, and the system may fail to function if vital registry keys are altered.

Note: The installer automatically creates certain registry entries based on values that you provide in the General Information view.

Windows Logo Guideline: These informational keys are required if you want to meet the requirements for the Certified for Windows Vista program.

Also, all of a components advanced settings are used to register files on the target system.

Filtering Registry Entries by Component or Feature


The Registry view includes a View Filter. This filter enables you to select a component or feature whose registry data you want to display in the view. The View Filter lists your projects hierarchy of features, subfeatures, and components. Selecting a feature shows the registry data for all of the components in that feature, but it allows you only to modify and delete existing entries. You need to select a component in order to add a new registry key. If the feature hierarchy contains a subfeature, selecting a parent feature displays only the registry entries in that feature. It does not display the registry entries in the subfeature.

Browsing for Components


You can browse for components from within the registry explorer. Click the ellipsis button to the right of the View Filter to launch the Browse for Component dialog box. From that dialog box, you can select a feature in the Feature list and then select an existing component or click the new component button to create a new component. If the View Filter is set to All Application Data, you can right-click a registry hive in the Destination computers registry view pane and click Browse for Component to display the dialog box.

Viewing All Registry Entries in Your Project


To view all of the registry entries in your installation, select the All Application Data option in the View Filter. You can export registry data by selecting Export All or Export Selected Branch from the context menu after right-clicking a registry key.

Note: You can modify, rename, or delete registry keys and values while filtering the view by All Application Data.

InstallShield 2010 User Guide

ISP-1600-UG00

483

Chapter 12: Configuring the Target System Editing the Registry

When you click a registry key in the Destination computers Registry view pane of the Registry view, InstallShield displays all of the registry data for that key in the lower-right pane of the Registry view. The Component column shows the component with which the registry data is associated. If the same value exists for more than one component, the last component that was associated with the registry data is displayed. If you have not set a value for a key, no registry data is displayed for that key when you select All Application Data in the View Filter.

Refreshing the Registry View


Project: This information does not apply to InstallScript projects.

Task

To refresh the Registry view:

Press F12.

Creating Registry Keys


Task To specify a registry key to be created on the target system when a component is installed: 1. 2.

In the View List under System Configuration, click Registry.


Windows Installer projects: In the View Filter list, click the component with which you want to associate the registry data.

Note: If All Application Data is selected, the Registry view is read-only. InstallScript projects: In the Destination computers Registry view pane, open an existing

registry set or create one by right-clicking the Destination Computer folder. Associate the registry set with one or more components by clicking the registry set and selecting the desired components in the Registry Set Install Conditions pane.
3.

In the Destination computers Registry view pane, right-click a registry hive or key, point to New, and then click Key. InstallShield adds a new key with the name New Key-n (where n is a successive number). Enter a meaningful name to rename the key, or right-click the key and click Rename to give it a new name later.

4.

InstallShield adds your new key with an empty default string value. By default, all keys that you create are set for automatic installation and uninstallation. This means that they are installed if the component they belong to is installed, and they are uninstalled when that component in uninstalled. For more information on registry key flags, see Registry Flags.
484 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

Tip: You can create multiple nested keys at one time by creating a new key and typing, for example, Key 1\Key 2\Key
3 in the keys name. InstallShield creates a nested key structure where Key 3 is a subkey of Key 2, which is a subkey of

Key 1.

Dragging and Dropping Registry Entries to Create Registry Keys


The quickest way to add registry entries to your installation project is to drag them from one of the Source panes in the Registry view and drop them into one of the Destination panes. When you drop an entire key onto the Destination computers Registry view pane, all of that keys subkeys and values are added to the selected component or, in a InstallScript project, to the registry set on which you drop the entry.

Using the Context Menu to Drag and Drop Keys


You can use the context menu to move multiple keys and values at one time. Right-click a registry entry, drag it to a destination, and click a command on the context menu.
Table 12-2: Commands Available from the Registry Entry Context Menu Option All keys & values Key and its values only Only this key Cancel Description Adds all selected keys, subkeys, and values. Adds only the selected key and the keys values. No subkeys are added. Adds only the selected key, not any of its subkeys or values. Ends the drag and drop operation without making any changes.

Importing Data From Another Machine


The above procedure works only if the registry entries exist on your installation development system. If you have registry data from another machine, you can import that data with the Import REG File Wizard.

Removing Registry Keys


Task To remove a registry key: 1. 2.

In the View List under System Configuration, click Registry.


Windows Installer projects only: In the View Filter list, click the component that contains the registry

key, or select All Application Data to view all of the registry keys for your product.

InstallShield 2010 User Guide

ISP-1600-UG00

485

Chapter 12: Configuring the Target System Editing the Registry

InstallScript projects only: In the Destination computers Registry view pane, open the existing registry set that contains the registry key. 3.

In the Destination computers Registry view pane, right-click the registry key that you want to remove and then click Delete.

Creating Registry Values


Task To specify a registry value to be created on the target system: 1. 2.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, click the key to which you want to add a value. All existing registry values for that key are listed in the Destination computers registry data pane. Right-click in the list of values and then click the type of data you want to register. Available options are as follows:
Table 12-3: Types of Registry Values Option Default Value String Value Binary Value DWORD Value Multi-String Value Description The keys default value. A fixed-length text string. The value is interpreted and stored as a hexadecimal value. Data represented by a number that is four bytes (32 bits) long. Multiple text strings formatted as an array of null-terminated strings, and terminated by two null characters. Selecting this command launches the Multi-Line String Value dialog box.

3.

Expandable String Value The value is interpreted and stored as an expandable string. According to the Microsoft Developer Network (MSDN), an expandable string registry value is a nullterminated string that contains unexpanded references to environment variables (for example, %PATH%).

InstallShield adds a new value with the name New Value n (where n is a successive number). Enter a meaningful name now to rename the value, or right-click the value name and then click Rename to give it a new name later.

Project: In Windows Installer projects, any registry value can serve as the components key path.

486

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

Modifying Registry Value Data


Task To modify the data for a registry value to be created on the target system: 1. 2.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, click the registry key that has the value that you want to modify. All registry values are listed in the Destination computers registry data pane. Double-click the value that you want to modify. The Edit Registry Data dialog box or the Multi-Line String Value dialog box opens. Complete the information in the dialog box, and then click OK.

3. 4.

Project: In Windows Installer projects: To add value data that contains square brackets ([]), you must precede each bracket with a backslash (\) and surround it with an opening and closing bracket. Otherwise, Windows Installer treats the value as a property. For example, if you wanted to write [stuff] to the registry, you would use [\[]stuff[\]] as the value data.

Removing Registry Values


Task To remove a registry value from your project: 1. 2.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, click the registry key that has the value that you want to delete. All registry values are listed in the Destination computers registry data pane. In the Destination computers Registry data pane, right-click the registry value that you want to remove and then click Delete.

3.

Registry Flags
Registry flags enable you to control the installation of your registry entries. By default, your registry entries are installed if the component to which they belong is installed. They are then uninstalled when that component is removed. If you would like your registry entries to remain on the target system even after the product has been uninstalled, or if you want to create registry entries only if they do not already exist, you need to set the installation flag for that key. Right-click a key to change its installation flag. Select from any of the choices listed below.

InstallShield 2010 User Guide

ISP-1600-UG00

487

Chapter 12: Configuring the Target System Editing the Registry

Registry keys that have special installation flags can be identified by the folder icon. Below is a list of the icons, and the type of installation flags to which they correspond.
Table 12-4: Types of Registry Flags Icon Command Automatic Description This is the default option for all registry keys. The key is installed if not already present.

Project: In a Windows Installer-based installation, the key is always removed on uninstallation. In an InstallScript installation, the key is removed only if it was created by the installation, that is, if it did not already exist at the time of installation. Install only (+) Project: This registry key is available in Windows Installer projects. If the key does not already exist, it is installed. However, when the component to which this key belongs is uninstalled, the key remains on the target system. Shared among several applications (+)

Project: This registry key is available in InstallScript projects. When the component to which this key belongs is uninstalled, if the key has any subkeys or values, the key is not removed from the system. (Note that a value created by your installation will have already been uninstalled unless you unset its Remove during uninstall flag.) If the key does not have any subkeys or values, the key is removed from the system regardless of whether it was created by the installation, that is, whether it already existed at the time of installation.

Uninstall entire key () Project: This registry key is available in Windows Installer projects. During uninstallation, the key and all its subkeys and values will be removed. Install if absent, Uninstall if present (*)

Project: This registry key is available in Windows Installer projects. This option is similar to the default behavior, with one exception. By default, if the key already exists during installation, the installation does not remove it during uninstallation. Setting your registry keys installation flag to this option forces the key to be removed during uninstallation if it is present, no matter who put the key there.

488

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

Searching for Registry Entries


Task To search for a registry entry within a certain component (in Windows Installer projects) or registry set (in InstallScript projects): 1. 2.

In the View List under System Configuration, click Registry.


Windows Installer projects only: In the View Filter list, select the component that you would like to search. Note that if View All Entries is selected, the Registry view is read only. InstallScript projects only: Open the registry set that you would like to search.

3. 4. 5.

Right-click a registry entry and click Find. The Find dialog box opens. Enter the string that you are searching for. Click Find to start the search.

In a Windows Installer project, InstallShield searches only the registry entries for the current component, not all the registry data for the project. The search starts from the top item and works its way down, regardless of which item is selected. It stops at the first match, highlighting this key. To continue the search, right-click and select Find Next, or press F3. The Find Next feature finds the next match, moving down the explorer.

Setting Uninstall Behavior for Registry Keys


In InstallShield, uninstall behavior for registry entries is set at the key level.

Task

To set the uninstall behavior for a registry key: 1. 2.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, right-click a key and click the appropriate uninstall behavior.

Uninstall Behavior Options


In InstallShield, installation behavior is set at the subkey level. All values beneath the key must have the same installation and uninstallation behavior. For a list of available options, see Registry Flags.

Using Environment Variables in Registry Values


With REG_EXPAND_SZ string values, you can use environment variables for paths that are stored in the registry. These entries require special formatting in order to be recognized by the operating system as environment variables. The format for a REG_EXPAND_SZ value as it appears in the registry is %TEMP%. TEMP is the standard environment variable for the TEMP directory.

InstallShield 2010 User Guide

ISP-1600-UG00

489

Chapter 12: Configuring the Target System Editing the Registry

Syntax
When creating registry entries of this type, you need to begin the entry with a pound sign followed by a percent sign (#%). Then, you can enter your environment variable, complete with the beginning and ending percent sign. Therefore, if you enter #%%TEMP% in the Registry view in InstallShield, it appears as %TEMP% when written to the registry. In the Windows 2000 (or later) registry, the Type field for this entry appears as REG_EXPAND_SZ, and the Data field is %TEMP%.

Note: Windows 95, Windows 98, and Windows NT machines do not have the Type field in the registry.

Writing Property Values to the Registry


For Windows Installer projects, you can use Windows Installer properties in registry values to store information for later use by your product. At run time, Windows Installer automatically expands expressions of the form [PropertyName] in registry data to the value of the property called PropertyName. Any property defined in the Property Manager View can be used in this way. For example, if you would like to store the destination location of your software, create a registry value whose data is [INSTALLDIR]. At run time, when your installation creates the registry value, the data for that registry value is set to the location where your application is installed. You can use the same format for registry key names and value names. For example, if you want a key name to be the name of your company, enter [Manufacturer] for the name of the key. When the registry key is created on the target system, the name of this key will be the value of the Publisher setting, as entered in the General Information view.

Importing Registry Files


InstallShield enables you to import any existing registry (.reg) files that you may have from other installation projects or that you have created outside InstallShield

Task

To import a .reg file: 1. 2.

Launch the Import REG File Wizard. Follow the instructions in the wizard panels to import your .reg file.

When you import a .reg file into a component or registry set, that registry data is added to the components or registry sets registry data and written to the end users system if the component or registry set is installed.

Exporting Registry Files


When you export a registry (.reg) file, you are copying a portion of your programs registry data to a registry file.

490

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

Task

To export a registry file: 1. 2.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, right-click the registry entry that you want to export and click either Export REG File or Export Selected Branch.

Export REG File exports the entire components registry data. Export Selected Branch exports only the current registry key and any subkeys.

Setting Key Paths for Components


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

A key path is a unique registry value for each component that the Windows Installer uses to detect the components presence. This value must contain a file or a folder.

Task

To set a components key path: 1. 2. 3.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, click the registry entry that contains the registry data that you want to use for the key path. In the Destination computers registry data pane, right-click the registry keys value name and then click Set Key Path.

The values string, binary, or DWORD icon is replaced with a key icon.

Task

To remove a components key path:

Right-click the key path and click Clear Key path.

InstallShield 2010 User Guide

ISP-1600-UG00

491

Chapter 12: Configuring the Target System Editing the Registry

Note: A component can have either one key path or one key file. If you have already set a key file or a key path for a component, you will get a warning prompt if you try to set another key path. Click Yes in the dialog box to replace the existing key file or key path with the new key path.

Configuring Permissions for Registry Keys


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield lets you configure settings for securing registry keys for end users who run your product in a locked-down environment. You can assign permissions for a registry key to specific groups and users. For example, you may assign Read, Write, and Delete permissions for a particular registry key to the Administrators group, but only Read permissions for all of the users in a different group.

Task

To configure the permissions for a registry key: 1. 2. 3.

In the View List under System Configuration, click Registry. In the Destination computers Registry view pane, right-click the registry key and then click Permissions button. The Permissions dialog box opens. Add, modify, and remove permissions entries as needed. For more information, see Permissions Dialog Boxes for Registry Keys.

Depending on what is selected for the Locked-Down Permissions setting in the General Information view of your project, InstallShield adds permissions data to either the ISLockPermissions table or the LockPermissions table. To learn more, see Securing Files, Folders, and Registry Keys in a LockedDown Environment.

Primary Keys for the Registry Table


Project: This information does not apply to InstallScript projects.

Windows Installer requires a unique primary key for each registry key and value that you add to the Registry table. To enable you to create registry entries in a completely visual environment, InstallShield assigns a unique name to every entry in the databases Registry table at build time.

492

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

You may need to know the entrys primary key when authoring a custom action. InstallShield supports specifying a primary key on a registry key or value in the Registry Data explorer in the Setup Design view or the Components view. Note that it is not possible to assign the key or value a primary key in the Registry view.

Specifying a Primary Key for the Registry Table

Project: This information does not apply to InstallScript projects.

Task

To specify a primary key for a registry key or value: 1. 2.

Right-click the key or value and click MSI Value. The MSI Value dialog box opens. Enter the name of the key. Since the primary key must be a Windows Installer identifier, the name may contain only letters, numbers, underscores (_) and periods (.), and it must begin with a letter or underscore.

To view or modify the primary key, right-click the registry key or value and click MSI Value again. If you do not specify a value, InstallShield generates a unique primary key for this entry in the Registry table.

Entering Multi-Line String Values for Registry Keys


The Registry view provides multi-line string support when you want to add a value to a particular registry key.

Task

To add a multi-line string value: 1. 2. 3.

Right-click the registry key to which you want to add the multi-line value, point to New, and click Multi-String Value. The Multi-Line String Value dialog box opens. Select how you want to modify the registry value, and then enter a line for each null-delimited string. Click OK.

Note: Strings can contain just spaces, but they cannot be empty or [~], which is the delimiter for the strings.

Writing Entries Under HKCU for a Per-User Installation


Since the current user may not have sufficient privileges for modifying keys under HKEY_LOCAL_MACHINE on Windows NT and Windows 2000 (or later) platforms, you may need to write the entries under HKEY_CURRENT_USER.

InstallShield 2010 User Guide

ISP-1600-UG00

493

Chapter 12: Configuring the Target System Editing the Registry

When you select HKEY_USER_SELECTABLE in the Registry view, the entries are created under the appropriate registry hive, according to the type of installation and the users access rights. In a per-user installation, which means that the ALLUSERS property is set to 2 or that the installation is being run by someone with user-level access privileges, these entries would be made under HKEY_CURRENT_USER. In a per-machine installation, which means that ALLUSERS is not null and that the user is an administrator, the entries would be written under HKEY_LOCAL_MACHINE.

Note: Windows NTbased systems do not allow a new key to be created directly under HKEY_LOCAL_MACHINE. For this reason, any information that you create under HKEY_USER_SELECTABLE must be placed under the SOFTWARE subkey, which is the only subkey common to HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER. For example, creating the key HKEY_USER_SELECTABLE\SOFTWARE\MyCompany is valid, but creating HKEY_USER_SELECTABLE\MyCompany is not.

Setting or Getting Multi-Line Strings in the Windows NT Registry


Project: This information applies to InstallScript projects.

Note: The Windows 95 registry does not support multi-line strings. If you use the multi-line string option under Windows 95, a binary value will be placed in or read from the registry.

Setting Multi-Line Strings


To set multi-line strings, call the RegDBSetKeyValueEx function. The szValue parameter should contain the substrings to be added, separated by null characters. You must add two null characters to the end of the main string to denote its end. To create such a string, follow these steps:
1. 2. 3.

Initialize the string to contain each of the substrings, separated by space characters. Assign the ASCII value for a null string to the string positions after each line. Assign an additional null character (ASCII value 0) to the end of the string.

For example:
svValue = "This is line one. This is line two. This is line three. "; svValue[17] = 0; svValue[35] = 0; svValue[55] = 0; svValue[56] = 0;

Retrieving Multi-Line Strings


To get multi-line strings, call the RegDBGetKeyValueEx function. The substrings will be returned in a main string, separated by null characters. To extract them, use the following code to read the strings into a string list and display them in an SdShowInfoList dialog:
// svValue is the string read in by RegDBGetKeyValueEx listID = ListCreate( STRINGLIST );
494 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Editing the Registry

if (listID != LIST_NULL) then StrGetTokens( listID, svValue, "" ); SdShowInfoList( szTitle, szMsg, listID ); endif;

Working with Registry Functions


The InstallScript language includes many built-in functions that help you configure an installation so that it accesses the registry; reads, creates, and deletes registry keys; and establishes registry-related parameters for uninstallation. For example, you can sometimes determine if an application is present on the target system by detecting registry keys used by the application. Many applications store data in the registry key HKLM\SOFTWARE\CompanyName\ProductName\ProductVersion. To detect if a registry key exists, you can call the RegDBKeyExist function in the script of an InstallScript-based or InstallScript MSI based project, as follows:
// always set root key before calling other RegDB functions RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); if (RegDBKeyExist("Software\\ThisCo\\ThisApp") = 1) then MessageBox("ThisApp is on the system.", INFORMATION); endif;

To learn more about the built-in registry functions available with InstallScript, see the following:

Registry Functions Special Registry-Related Functions

Reading Data from the Registry


Basic MSI Project
The AppSearch and RegLocator tables can read a value from the registry. To read the RegisteredOwner value mentioned above, add the following record to the AppSearch table, using the Direct Editor:
Table 12-5: Values for the AppSearch Table Field Property Signature_ Value REGISTERED_OWNER registry_sig Comments Must be a public property

Next, add the following record to the RegLocator table:


Table 12-6: Values for the RegLocator Table Field Signature_ Value registry_sig Comments Same signature as above

InstallShield 2010 User Guide

ISP-1600-UG00

495

Chapter 12: Configuring the Target System Changing .ini File Data

Table 12-6: Values for the RegLocator Table (cont.) Field Root Key Name Type Value 2 Software\Microsoft\Windows NT\CurrentVersion RegisteredOwner 2 Registry data Comments HKEY_LOCAL_MACHINE

After the AppSearch action runs, the REGISTERED_OWNER property will contain the data read from the registry. If the value is not found, the property will be undefined (empty). For more information regarding the AppSearch and RegLocator tables, see the Windows Installer Help Library. For Windows Installer-based projects, you can use the System Search Wizard to find data.

InstallScript MSI Project


With InstallScript, you can use the RegDBGetKeyValueEx function. For example, to read the RegisteredOwner value from the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion, you can use code similar to the following:
function readRegisteredOwner( ) STRING svRegisteredOwner; NUMBER nvType, nvSize; begin RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); RegDBGetKeyValueEx( "Software\\Microsoft\\Windows NT\\CurrentVersion", "RegisteredOwner", nvType, svRegisteredOwner, nvSize); MessageBox( "Registered owner is: " + svRegisteredOwner, INFORMATION); end;

You can set a Windows Installer property equal to the value you read using the MsiSetProperty function.

Changing .ini File Data


Initialization (.ini) files serve as a database in which you can store and retrieve information between the uses of your applications. Some .ini files, such as Boot.ini and Wininit.ini, are used by the operating system. The INI File Changes view enables you to specify changes that should be made to .ini files on the target system. Although you can edit any .ini file found on the target system, editing system .ini files is not recommended.

496

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Changing .ini File Data

Task

To edit an .ini file: 1. 2. 3.

Create an .ini file reference. Add a section to the .ini file. Add a keyword to the .ini file.

Before you can create an .ini file reference, you must have at least one component created. If no components exist when your .ini file reference is created, the Create a New Component dialog box is displayed, enabling you to create a component.

Creating .ini File References


The first step in creating an .ini file change is to create a reference to the file that you would like to edit. In order to do this, you need to know the name and location of the file on the target system that you would like to edit. If the file is not in the location that you specify, the installation cannot make changes to this file.

Task

To create a reference to an .ini file: 1. 2.

In the View List under System Configuration, click INI File Changes. Right-click the INI Files explorer and then click Add INI File.

InstallShield adds a new reference for the .ini file to the INI Files explorer. Configure the .ini files settings in the right pane. For details about each setting, see .ini File Settings. After you have created a reference to an .ini file, you can move on to the next step, which is to add a section to your .ini file.

Importing an Existing .ini File


InstallShield lets you import an existing .ini file into your project. Once you have imported the .ini file, you can use the INI File Changes view to configure the changes that you want to be made on the target system as needed.

Task

To import an existing .ini file: 1. 2. 3.

In the View List under System Configuration, click INI File Changes. Right-click the INI Files explorer and then click Import INI File. The Open dialog box opens. Select the .ini file that you want to import, and then click Open.

InstallShield imports the .ini file, along with all of its sections, keywords, and values, into your project.

InstallShield 2010 User Guide

ISP-1600-UG00

497

Chapter 12: Configuring the Target System Changing .ini File Data

Specifying a Section in an .ini File


Once you have specified the .ini file that you would like to edit, you can move onto the second step: specifying which section of that file you want to change. The .ini files are divided into sections, with each section containing keywords. Sections are identified by the square brackets surrounding themfor example, [SectionName].

Task

To specify an .ini file section: 1. 2. 3.

In the View List under System Configuration, click INI File Changes. Create a reference to an .ini file if it does not exist. In the INI Files explorer, right-click the .ini file that should contain the section and click Add Section.

InstallShield adds a section to the INI Files explorer. Configure the sections settings in the right pane. For details about each setting, see Section Settings for an .ini File. After you have specified a section in your .ini file, you can add a keyword.

Specifying a Keyword in an .ini File


The keywords in an .ini file are the lowest level of organization in the .ini file. Keywords store data that must persist between uses of an application. Once you have added an .ini file to your project and set up one or more sections, you can add keywords to the sections and then configure the keywords properties. The properties of a keyword include the value for the keyword, as well as the action that should be performed (such as replace a data value or append to an existing data value).

Task

To specify a keyword for an .ini file: 1. 2.

In the View List under System Configuration, click INI File Changes. In the INI Files explorer, right-click a section and click Add Keyword.

InstallShield adds a keyword to the INI Files explorer. Configure the keywords settings in the right pane. For details about each setting, see Keyword Settings for an .ini File.

Reading Data from .ini Files


You can use the GetProfString function to read data (such as key names) from an .ini file, regardless of where the .ini file is located (for example, on a network). The following example script provides a guide:
/* Assuming the .ini file is called Test.ini, and contains the following: [ProductSettings]

498

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Changing .ini File Data

Key1=One Key2=2 Key3=III Key4=.... [OtherSettings] Key1=Value1 Key2=Value2 */ function OnBegin( ) STRING svKey1Value; // filled in by GetProfString begin // read a single value GetProfString( "\\\\Server\\Config\\Test.ini", // file name; note the double backslash for each "real" backslash "ProductSettings", // section name without square brackets "Key1", // key name svKey1Value); // STRING variable to capture key value MessageBox("Key1's value is: " + svKey1Value, INFORMATION); end;

Reading All Key Names from .ini Files


To read all of the key names from a section in an .ini file, use the following script:
function OnBegin( ) STRING svAllKeyNames; // filled in by GetProfString LIST listKeyNames; // string list containing key names begin // read a single value GetProfString( "\\\\Server\\Config\\Test.ini", // file name; note the double backslash for each "real" backslash "ProductSettings", // section name without square brackets "", // key name; null string "" means to get all key names svAllKeyNames); // STRING variable to store key names listKeyNames = ListCreate(STRINGLIST); // take apart string containing key names StrGetTokens(listKeyNames, svAllKeyNames, ""); SdShowInfoList("Key names", "Here they are:", listKeyNames); // if desired, you can loop over the key names in the list and read each key's value... ListDestroy(listKeyNames); end;

InstallShield 2010 User Guide

ISP-1600-UG00

499

Chapter 12: Configuring the Target System Configuring ODBC Resources

Configuring ODBC Resources


One of the more complex areas of system configuration involves setting up ODBC drivers, data source names (DSNs), and translators. The ODBC resource must be properly registered on the system with all of the required attributes and, in the case of drivers and translators, install the necessary files, including any installation .dll files. This process is simplified in the ODBC Resources view, in which you can select the drivers, data sources, and translators installed on your development system.

Installing ODBC Resources


Project: This information does not apply to the following projects:

InstallScript InstallScript Object QuickPatch Smart Device

All of the ODBC drivers, data source names (DSNs), and translators registered on your system are displayed in the ODBC Resources view. DSNs are shown as children of their associated driver. Expand the explorer to view all of the existing ODBC resources. To include an ODBC resource in your installation, select the check box next to its name in the ODBC Resources pane in the upper-left corner of the view. In installation projects, the resource must then be associated with at least one feature so that it can be installed. Then, you can set the attributes for the selected resource.

Including Additional ODBC Resources


Project: This information does not apply to the following projects:

InstallScript InstallScript Object QuickPatch Smart Device

You can also install ODBC resources not listed in the explorer. Where you add them depends on the type of resource.

Task

To add a driver that is not listed in the ODBC Resources explorer in the ODBC Resources view: 1. 2. 3.

In the ODBC Resources explorer, right-click Drivers and DSNs and click New Driver. Enter a new name for the driver, or press the F2 key later to rename it. Select the check box next to the new driver to include it in your installation.

500

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Configuring ODBC Resources

Task

To add a data source that is not listed in the ODBC Resources explorer in the ODBC Resources view: 1. 2. 3.

In the ODBC Resources explorer, right-click a driver and click New DSN. Enter a new name for the DSN, or press the F2 key later to rename it. Select the check box next to the new DSN to include it in your installation.

Note: You cannot add a translator to the list. Instead, you must install it on the development system and then select it.

Associating ODBC Resources with Features


Project: This information does not apply to the following projects:

InstallScript InstallScript Object QuickPatch Smart Device

Like most of the data in your project, ODBC resources must be associated with a feature. When the feature is installed to the target system, the ODBC resource is installed as a part of the feature. After you choose to install a driver, DSN, or translator for installation, the Features list is enabled on the right side of the ODBC Resources explorer. Select all of the features to which the ODBC resource belongs. InstallShield creates a new component and associates it with each selected feature. The resource will be installed only once even if it is associated with multiple features, but the resource cannot be installed if none of its features is installed. In an InstallScript MSI project, if no other feature exists, the resource is added to the DefaultFeature. In a Basic MSI project, if a feature does not exist when you add an ODBC resource to your installation, the Create a New Feature dialog box is displayed. This dialog box prompts you to create a feature. If only one feature is associated with an ODBC resource, it cannot be deselected until you select at least one additional feature.

Setting ODBC Resource Attributes


Project: This information does not apply to the following projects:

InstallScript InstallScript Object QuickPatch Smart Device

InstallShield 2010 User Guide

ISP-1600-UG00

501

Chapter 12: Configuring the Target System Configuring ODBC Resources

When an ODBC resource is registered on the development system, its current attributes are displayed in the Properties list of the ODBC Resources view. You can edit the attributes in the Properties pane after you have selected the driver, data source name (DSN), or translator.

Adding and Deleting New Attribute Entries


Note that adding attributes to a translator is not supported.

Task

To add a new attribute to a driver or DSN: 1. 2. 3.

Open the ODBC Resources view. In the ODBC Resources explorer, click the driver or DSN that should contain the new attribute entry. Click in the last row of the property sheet, and add the appropriate information for the Property and Value columns.

Task

To delete an attribute from a driver or DSN: 1. 2. 3.

Open the ODBC Resources view. In the ODBC Resources explorer, click the driver or DSN that should contains the attribute entry that you want to delete. In the property sheet, right-click the row that you want to delete and then click Delete.

ODBC Attributes and Values


Project: This information does not apply to the following projects:

InstallScript InstallScript Object QuickPatch Smart Device

There is no universal list of attributes and their possible values. Check with the files vendor or author if you are unsure about what to specify for its installation. Some attributes are common to each type of ODBC resource, as described below:

502

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Configuring ODBC Resources

Drivers
In addition to the required attributes below, the driver must have a name in the tree. This name is registered as the drivers description. The drivers name cannot be localized, which means that it does not appear as one of your projects string entries. Because of this, the same value is used regardless of the systems language.
Table 12-7: Required Driver Attributes Attribute Driver Expected Value The complete path to the file on the development system that serves as the ODBC driver. Enter the value, or click the ellipsis button (...) to browse to the .dll file. The complete path to the installation .dll file for this driver. Enter the value, or click the ellipsis button (...) to browse to the .dll file. You can leave this property empty if the driver file is also the installation.dll file.

Setup

Data Sources
In addition to the required attributes below, the DSN must have a name in the tree. This name is registered as the DSNs description. The DSNs name cannot be localized, which means that it does not appear in your projects list of string entries. Because of this, the same value is used regardless of the systems language.
Table 12-8: Required Data Source Attributes Attribute Registration Expected Value Select one of the following values:

System data sourceThe data source is available to all users on the system. User data sourceThe data source is registered only for the current user.

Translators
In addition to the required attributes below, the translator must have a name in the tree. This name is registered as the translators description. The translators name cannot be localized, which means that it does not appear in your projects list of string entries. Because of this, the same value is used regardless of the systems language.
Table 12-9: Required Translator Attributes Attribute Translator Expected Value The complete path to the file on the development system that serves as the ODBC translator. Enter the value, or click the ellipsis button (...) to browse to the file. The complete path to the installation .dll file for this translator. Enter the value, or click the ellipsis button (...) to browse to the .dll file. You can leave this property empty if the translator file is also the installation .dll file.

Setup

InstallShield 2010 User Guide

ISP-1600-UG00

503

Chapter 12: Configuring the Target System Using Environment Variables

Note: Attributes cannot be added to a translator.

Using Environment Variables


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The InstallScript language includes the GetEnvVar function for retrieving the current value of an environment variable, and it enables you to create an environment variable.

Environment variables are name and value pairs that can be set on the target system with your installation and can be accessed by your application and by other running programs. In the Environment Variables view, you can create, set (or modify), and remove environment variables on the target system through your installation. You can also specify environment variable properties in this view.

Note: For target systems running Microsoft Windows 95 or 98, the environment variables are modified in, created in, or removed from Autoexec.bat. Environment variables are stored in the registry on systems running Windows NT 4.0 or Windows 2000 and later.

Setting Environment Variables


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The InstallScript language includes the GetEnvVar function for retrieving the current value of an environment variable, and it enables you to create an environment variable.

504

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Using Environment Variables

Task

To create a new environment variable or modify the value of an existing environment variable: 1. 2. 3. 4.

In the View List under System Configuration, click Environment Variables. Right-click the Environment Variables explorer and click Add Environment Variable. InstallShield adds a new environment variable with the default name NewEnvironmentVariableX (where X is a number). Type the name of the variable that you want to modify, remove, or create. In the pane on the right, configure the environment variables settings. For details about each setting, see Environment Variable Settings.

Environment Variables Example


/********************************************************************\ * The following code creates an environment variable under Windows NT * for an entire system. You can modify the OnEnd event handler * function block (or any other function block) to include this example * code. * * NOTE: This code is only for InstallShield running on Windows NT. * Also, the current user must have administrator privileges for this * code to work. \********************************************************************/ #define WM_WININICHANGE 0x001A #define HWND_BROADCAST 0xffff NUMBER nResult; STRING szKey, szEnv; POINTER pEnv; begin szKey = "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"; RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); nResult = RegDBSetKeyValueEx(szKey, "Fame", REGDB_STRING, "C:\\Test", -1); if (nResult < 0) then MessageBox("Failed to Set Environment Variable", WARNING); else MessageBox("Successfully Set Environment Variable", INFORMATION); // Flush the NT registry to all applications. szEnv = "Environment"; pEnv = &szEnv; SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv ); endif; // RebootDialog("", "", SYS_BOOTMACHINE); end;

/********************************************************************\ * The following code creates an environment variable under Windows NT * for the current user. You can modify the OnEnd event handler * function block (or any other function block) to include this example * code. * * NOTE: This script is only for InstallShield running on Windows NT. * Also, the current user must have administrator privileges for this
InstallShield 2010 User Guide ISP-1600-UG00 505

Chapter 12: Configuring the Target System Modifying XML Files

* code to work. \********************************************************************/ #define WM_WININICHANGE 0x001A #define HWND_BROADCAST 0xffff NUMBER nResult; STRING szKey, szEnv; POINTER pEnv; begin szKey="Environment"; RegDBSetDefaultRoot(HKEY_CURRENT_USER); nResult=RegDBSetKeyValueEx(szKey,"Fame",REGDB_STRING,"C:\\test",-1); if (nResult < 0) then MessageBox("Failed to Set Environment Variable",WARNING); else MessageBox("Successfully Set Environment Variable",INFORMATION); // Flush the NT registry to all applications. szEnv = "Environment"; pEnv = &szEnv; SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv ); endif; //RebootDialog("","",SYS_BOOTMACHINE); end;

Modifying XML Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

You may need to modify .xml files that store settings related to your product, or you may need to modify standard configuration files such as web.config and machine.config. InstallShield includes support for modifying XML files on the target system at run time. The XML files can be part of your installation, or they can be files that are already present on target systems. For instructions on how to modify an XML file during installation, consult this section of the documentation. For background information about XML, see the following Web sites:

World Wide Web Consortium (http://www.w3.org) W3 Schools (http://w3schools.com)

506

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Tip: Support for XML files extends into other areas of InstallShield product functionality. The System Search feature in InstallShield enables you to search for an attribute value, contents, or existence of the element in the XML file that you specify. For more information, see Searching for XML Data.

Overview of XML File Changes


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Design-Time Tasks
The XML File Changes view enables you to define modifications that should be made to an XML file at run time. The typical process for defining those modifications is as follows:
1. 2. 3. 4. 5.

If the XML file that you are modifying is part of your installation, add the base XML file to a component in your project through the Files and Folders view. In the XML File Changes view, create an XML file reference for the file that you want to modify. Specify the location for the XML file on the target machine. Specify which feature or features should contain the XML file changes. This may be the same feature that contains the component in step 1, or it may be a different feature. Configure the changes that you want to occur at run time.

You may need to add an MSXML redistributable to your project. For more information, see Run-Time Requirements for XML File Changes.

Run-Time Behavior
The XML File Changes view enables you to configure run-time behavior such as the following:

Add a namespace mapping to an XML file, and add namespace prefixes to elements and attributes. Create a specified element if it does not already exist. Modify an element if it exists, but do not create it if it does not exist. Modify only the first element in the XML file that matches the specified XPath expression, or modify all matching instances. Remove an element during uninstallation. Set content for an element.

InstallShield 2010 User Guide

ISP-1600-UG00

507

Chapter 12: Configuring the Target System Modifying XML Files

Create a new attribute during installation, during uninstallation, or both. Remove an existing attribute during installation, during uninstallation, or both. Append a string to an existing attribute value during installation, during uninstallation, or both. For Basic MSI and InstallScript MSI projects: Replace Windows Installer properties in elements, attributes, attribute values, and element content with the appropriate values at run time. For InstallScript projects: Substitute InstallScript string variables for elements, attributes, attribute values, and element content with the appropriate values at run time.

When an installation that contains XML file changes runs on a target system, MSXML parses the XML file and executes the XPath expressions that are associated with the changes that you configured. The Advanced tab in the XML File Changes view for an XML file shows the XPath expressions that are executed on target systems. When MSXML finds an area of the XML file that matches the XPath expression, the changes that were configured in the XML File Changes view are made. For examples of how to create some basic XPath expressions, see Using XPath Expressions to Find XML Data in an XML File.

Note: If the XML file does not exist on the target system at run time and the Always create XML file if it does not already exist check box is selected on the Advanced tab for the XML file, the XML file is created with the XML data that is configured in the XML File Changes view.

Run-Time Requirements for XML File Changes


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The run-time functionality for XML file changes requires the presence of Microsoft XML Core Services (MSXML) 3.0 or later on the target system. When an installation that contains XML file changes runs on a target system, MSXML parses the XML file and executes the XPath expressions that are associated with the changes that you configured. When MSXML finds an area of the XML file that matches the XPath expression, the changes that were configured in the XML File Changes view are made. InstallShield includes redistributables for different versions of MSXML. If it is possible that target systems may not have MSXML, or they may not have the appropriate version of MSXML, you can add the appropriate MSXML redistributable to your project in either the Redistributables view (for Basic MSI and InstallScript MSI projects) or the Objects view (for InstallScript projects). For detailed information about MSXML, see the MSDN Library.
508 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Creating an XML File Reference


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The recommended way to add an XML file that you want to modify at run time is to add the base XML file to a component in your project through the Files and Folders view. Then add an XML file reference to the XML File Changes view, where you can specify the changes that should be made to that file at run time. The easiest way to add the XML file reference is to import the file into the XML File Changes view.

Important: The XML File Changes view is not designed to list a node for every node in an XML file. To improve performance, the XML File Changes view should show only the settings that differ from the base XML file:

If the XML file that you are modifying is part of your installation, the XML File Changes view should list only the nodes and node sets that should be added, changed, or deleted after the XML file is installed at run time. If the XML file that you are modifying is a file that is already present on the target system, the XML File Changes view should list only the nodes and node sets that need to be added, changed, or deleted at run time.

Therefore, when you are importing a file, import only the nodes in the XML file that you want to modify at run time. Note that the XML File Changes view does not enable you to specify the order in which new elements should be listed in the XML file. Therefore, importing only the nodes that you want to modify at run time helps to avoid issues that may occur if your product requires that the elements be listed in a particular order.

Task

To import an XML file into the XML File Changes view: 1. 2. 3. 4.

In the View List under System Configuration, click XML File Changes. Right-click the XML Files explorer and then click Import. The Import XML Settings Wizard opens. Complete the panels in the wizard, selecting only the XML file nodes that you want to change. Click Import.

InstallShield adds a new node for the XML file that you imported. The XML file node contains each of the nodes that you selected in the wizard. Each node represents an XPath query that occurs at run time. InstallShield also adds a new component for the XML file that you have imported through the XML File Changes view. Now you can configure the XML files settings and specify any element, attribute, and content changes for it.

InstallShield 2010 User Guide

ISP-1600-UG00

509

Chapter 12: Configuring the Target System Modifying XML Files

Tip: You can also add an XML file by right-clicking the XML Files explorer and then clicking New File. However, in most cases, you may want to create your XML file in a third-party XML editor or text editor. Next, add this file to your project through the Files and Folders view. Then, import the file, as described in the aforementioned procedure, and configure the changes that should be made to the file at run time.

Specifying the Location of the XML File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

When you add an XML file reference in the XML File Changes view, you need to specify the location of the XML file. If the XML file is part of your installation, the location should match the destination that you specified for the base XML file when you added it to your project through the Files and Folders view.

Task

To specify the location of the XML file on the target system: 1. 2. 3. 4. 5. 6.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the XML file whose location you want to specify. Click the General tab. In the XML File Destination area, click the Browse button. The Browse for Directory dialog box opens. In the Destination Directories box, select the location. Click OK.

InstallShield adds the destination that you specified to the Specify the location of the XML file on the target machine box.

Associating an XML File Change Reference with a Feature


Project: This information applies to the following project types:


510

Basic MSI InstallScript InstallScript MSI

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

MSI Database Transform

When you add an XML file reference in the XML File Changes view, InstallShield automatically creates a new component for it. In addition, InstallShield associates the component with the feature that is at the top of your feature list by default. To change this association, you can use the XML File Changes view.

Note: If your project does not contain any features when you add an XML file reference, InstallShield displays the Create a New Feature dialog box, which lets you to create a new feature.

Task

To associate an XML file change reference with a feature in your project: 1. 2. 3. 4.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the file whose component you want to associate with a feature. Click the General tab. In the Select Features the XML file belongs to box, select the check box of any feature that should contain the selected XML file change reference. This may be the same feature that contains the base XML file that you added to your project through the Files and Folders view, or it may be a different feature.

If an end user chooses to install the feature that contains the XML file changes, the XML file changes are performed at run time.

Adding a Root Element


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

If you are adding an XML file reference in the XML File Changes view, you can add a root element. Note that an XML file can contain only one root element.

Task

To add a root element to an XML file: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file to which you want to add a new root element and click New Root Element.

InstallShield 2010 User Guide

ISP-1600-UG00

511

Chapter 12: Configuring the Target System Modifying XML Files

InstallShield adds the new root element. Use the tabs that are displayed in the right pane to configure its settings.

Tip: To add a root element and one or more levels of subelements in one step, type the name of the root element plus the subelements, with each separated by a slash. For example, to add a root element called Root, a Sub element under the Root element, and a Sub2 element under the Sub element, type the following:
Root/Sub/Sub2

InstallShield automatically expands it in the explorer.

Adding a New Element


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

You can add a new element to the root element or any element in your XML file.

Task

To add a new element: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file to which you want to add a new element and click New Element.

InstallShield adds the new element. Rename it as appropriate, and use the tabs that are displayed in the right pane to configure its settings.

Tip: When you are adding elements and subelements under the root element in the XML File Changes view, you can type the full XPath expression for the name of the element, and it will automatically expand in the explorer. To add a root element and one or more levels of subelements in one step, type the name of the root element plus the subelements, with each separated by a slash. For example, to add a root element called Root, a Sub element under the Root element, and a Sub2 element under the Sub element, type the following:
Root/Sub/Sub2

InstallShield automatically expands it in the explorer so that each element has its own node.

512

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Adding an Element for a .NET Configuration File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

If you define .NET configuration settings for your product in a web.config file, you can specify those settings through the XML File Changes view.

Task

To add an element for a .NET configuration file: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file to which you want to add a configuration element, click Add Predefined Element, point to .NET Configuration Files, point to Web Configuration File, point to a given set of settings, and click the appropriate command.

InstallShield adds the new element in the explorer. For detailed reference information about the different elements and attributes in .NET configuration files, see Configuration File Schema on the MSDN Web site.

Adding an Attribute to an Element


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

You can add attributes to an element in your XML file and then specify whether the attribute should be created at run time, the attribute should be removed at run time, or the attribute value should be appended to the existing value at run time. You can also schedule whether the task should occur during installation, uninstallation, or both. If an attribute that you add already exists in the XML file on the target machine but the attribute has a different value than the one that you specified in the XML File Changes view, the installation updates the value at run time.

InstallShield 2010 User Guide

ISP-1600-UG00

513

Chapter 12: Configuring the Target System Modifying XML Files

Task

To add an attribute to an XML element: 1. 2. 3. 4.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the XML file to which you want to add an attribute. Click the General tab. Click the Add button.

InstallShield adds a new rowwith default values for the Attribute, Value, Operation, and Scheduling columnsto the attribute table. Change any of the settings as needed. To learn more about each of the columns, see General Tab for an XML Element.

Tip: If you configure your installation so that the XML file remains on the target system when its component is uninstalled, you may want to create installation/uninstallation attribute pairs in the attribute table. For example, to add a key attribute during installation and remove that same key attribute during uninstallation, add two rows with the key attribute to the attribute table; schedule one row for installation, and the other for uninstallation.

Editing an Attributes Value


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

InstallShield enables you to edit the value of an attribute if it is already present on the target machine at run time. To do so, add the attribute to the element in the XML File Changes view, and configure the value for the attribute as needed. The procedure for editing an attribute value is the same as adding an attribute value. To learn more, see Adding an Attribute to an Element. At run time, if a different value exists for the attribute, the installation replaces the value with the one that you configured in the XML File Changes view.

Adding Content to an Element


Project: This information applies to the following project types:


514

Basic MSI InstallScript InstallScript MSI


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

MSI Database Transform

XML elements can contain text content. For example, in the following XML code, feature is the content for the element product:
<product>feature</product>

Task

To add content to one of the elements listed in the XML File Changes view: 1. 2. 3. 4. 5.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, select the element to which you want to add content. Select the Advanced tab. Select the Set element content check box. In the Content box, type the text content. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) next to this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Using XPath Expressions to Find XML Data in an XML File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

In order for your installation to add a new element or attribute to an XML file, or to perform some other change to an XML file at run time, MSXML must use the XPath expressions that are defined in the XML File Changes view to navigate through the XML file and locate the areas that need to be modified. For detailed information about writing XPath expressions, see the following Web sites:

World Wide Web Consortium (http://www.w3.org) W3 Schools (http://w3schools.com)

The following sections show examples of how to create some basic XPath expressions.

Example 1: Adding Two Elements


In example 1, the installation adds the bold lines in the following XML document:
<?xml version="1.0" encoding="UTF-8"?> <Books>

InstallShield 2010 User Guide

ISP-1600-UG00

515

Chapter 12: Configuring the Target System Modifying XML Files

<Biographies> <Book Author="Bill Smith" Copyright="2007">Bill's Great Biography</Book> <Book Author="John Smith" Copyright="2006">John's Great Biography</Book> </Biographies> </Books>

To add those elements, the following XPath expressions are added under the Biographies node in the XML File Changes view:
Book[@Author="John Smith"] Book[@Author="Bill Smith"]

The following screen shots show the settings in the XML File Changes view.

Figure 12-1: Settings for the Sample.xml File

Figure 12-2: Settings for the Biographies Node, which Contains the Child Nodes to Be Added

516

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Figure 12-3: General Settings for One of the Child Nodes to Be Added

Figure 12-4: Advanced Settings for One of the Child Nodes to Be Added

Figure 12-5: General Settings for One of the Child Nodes to Be Added

InstallShield 2010 User Guide

ISP-1600-UG00

517

Chapter 12: Configuring the Target System Modifying XML Files

Figure 12-6: Advanced Settings for One of the Child Nodes to Be Added

Example 2: Adding Attributes to Elements


In example 2, the installation adds the bold attributes and values in the following XML document:
<?xml version="1.0" encoding="UTF-8"?> <Books> <Biographies> <Book Author="Bill Smith" Copyright="2007" Publisher="Bill & John's Publish Co.">Bill's Great Biography</Book> <Book Author="John Smith" Copyright="2006" Publisher="Bill & John's Publish Co.">John's Great Biography</Book> </Biographies> </Books>

The following screen shot shows the settings in the XML File Changes view.

Figure 12-7: Settings for the Book Node

Example 3: Updating an Attributes Value


In example 3, the installation searches for the attribute that has the 2006 Copyright value (as shown in bold in the following XML document) and replaces its value with a 2007 Copyright value:
<?xml version="1.0" encoding="UTF-8"?> <Books> <Biographies> <Book Author="Bill Smith" Copyright="2007" Publisher="Bill & John's Publish Co.">Bill's Great Biography</Book>
518 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

<Book Author="John Smith" Copyright="2006" Publisher="Bill & John's Publish Co.">John's Great Biography</Book> </Biographies> </Books>

To update the value, the following XPath expression is added under the Biographies node in the XML File Changes view:
Book[@Copyright="2006"]

The following screen shot shows the settings in the XML File Changes view.

Figure 12-8: General Settings for the Attribute to Be Updated

Using Windows Installer Properties to Dynamically Modify XML Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

For Basic MSI and InstallScript MSI projects, you can use a Windows Installer property to specify an XML element, an attribute, an attribute value, or an elements content. At run time, Windows Installer uses MsiFormatRecord to resolve the property value, and it uses that value as the data in your XML file. This enables you to use data that end users enter in dialogs, or other configuration information that is determined during the installation, in your products XML files. For example, your installation may include the SQL Login dialog, which lets end users select a SQL Server. The name of the server that they select is typically stored in the IS_SQLSERVER_SERVER property. If you want an XML file to contain the name of the SQL server that an end user selects, you can use this property, surrounded by brackets (that is, [IS_SQLSERVER_SERVER]), when you configure your XML file changes in the XML File Changes view. Then at run time, Windows Installer automatically replaces the property with its associated value.
InstallShield 2010 User Guide ISP-1600-UG00 519

Chapter 12: Configuring the Target System Modifying XML Files

Tip: Use a Windows Installer property for an element, an attribute, or element content only if the value of the property would make a well-formed XML document. If a property value would lead to syntax errors in the XML document, your product or installation may not behave as expected. For example, if you set the name of an element to [INSTALLDIR]a Windows Installer property whose value is a path on the target systemthe result at run time is an element name that contains backslashes. Element names cannot contain backslashes, and XML documents that contain element names with backslashes are not valid.

Note: If test your XML file from within the XML File Changes view, any Windows Installer properties that are used for XML data are not replaced with the appropriate values during testing. For more information about testing, see Testing Installation Changes to an XML File or Testing Uninstallation Changes to an XML File.

Example
The following procedure demonstrates how to use the name of the SQL Server that an end user selects in the SQL Login dialog as the content for one of the elements in your XML file. Note that you can substitute a hard-coded value with a property for any of the elements, attributes, attribute values, or element content in the XML File Changes view. The property that you specify in this view must be enclosed within square brackets, and the property name must be in all uppercase letters; for example, [MYPROPERTY].

Task

To use the name of the SQL Server that end users select as the content for an XML element: 1.

Configure the SQL connection and any associated SQL scripts if you have not already done so, and determine the name of the server property name:
a. b. c. d. e.

In the View List under Server Configuration, click SQL Scripts. Add a SQL connection and SQL scripts as needed. For instructions, see Configuring SQL Support. In the SQL Scripts explorer, click the SQL connection. Click the Advanced tab. Note the name that is selected for the Target Server Property Name setting. The default value is typically IS_SQLSERVER_SERVER.

2. 3. 4. 5. 6.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, select the element to which you want to add content. Select the Advanced tab. Select the Set element content check box. In the Content box, type the name that is selected in step 1e, and enclose it within brackets. For example:
[IS_SQLSERVER_SERVER]

7.

Build your release.


ISP-1600-UG00 InstallShield 2010 User Guide

520

Chapter 12: Configuring the Target System Modifying XML Files

Using InstallScript Text Substitution to Dynamically Modify XML Files


Project: This information applies to InstallScript projects.

For InstallScript projects, you can use a text substitution string variable for an XML element, an attribute, an attribute value, or an elements content. When the XML file changes occur at run time, the InstallScript run-time code uses the TextSubSubstitute function to replace the string variable with the appropriate value. This enables you to use data that end users enter in dialogs, or other configuration information that is determined during the installation, in your products XML files.

Tip: Use text substitution for an element, an attribute, or element content only if the value of the property would make a well-formed XML document. If a property value would lead to syntax errors in the XML document, your product or installation may not behave as expected. For example, if you set the name of an element to a text substitution string variable that will be replaced with text that includes one or more spaces, end users may have problems with your product or your installation. Element names cannot contain spaces, and XML documents that contain element names with spaces are not valid.

Note: If test your XML file from within the XML File Changes view, any text substitution string variables that are used for XML data are not replaced with the appropriate values during testing. For more information about testing, see Testing Installation Changes to an XML File or Testing Uninstallation Changes to an XML File.

Example
The following procedure demonstrates how to use the name of the SQL Server that an end user selects in the SQL Login dialog as the content for one of the elements in your XML file. Note that you can substitute a hard-coded value with a text substitution string variable for any of the elements, attributes, attribute values, or element content in the XML File Changes view. The string variable that you specify in this view must be enclosed within angle brackets; for example, <MYPROPERTY>. The string variable that you specify is case-sensitive.

Task

To use the name of the SQL Server that end users select as the content for an XML element: 1.

Configure the SQL connection and any associated SQL scripts if you have not already done so:
a. b.

In the View List under Server Configuration, click SQL Scripts. Add a SQL connection and SQL scripts as needed. For instructions, see Configuring SQL Support.

2. 3. 4.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, select the element to which you want to add content. Select the Advanced tab.

InstallShield 2010 User Guide

ISP-1600-UG00

521

Chapter 12: Configuring the Target System Modifying XML Files

5. 6.

Select the Set element content check box. In the Content box, type the following:
<MYPROPERTY>

7. 8.

In the View List under Behavior and Logic, click InstallScript. Find the dialog code in the OnSQLLogin event for the SQL Login dialog that contains the SQL Server control, and add a call to the InstallScript function TextSubSetValue. For example:
// Display login dialog (without connection name) // COMMENT OUT TO SWAP DIALOGS nResult = SQLServerSelectLogin2( szConnection, szServer, szUser, szPassword, bWinLogin, szDB, FALSE, TRUE ); TextSubSetValue("<MYPROPERTY>", szServer, TRUE);

9.

Build your release.

Using Reserved Characters (<, >, &, ', and ") Inside Elements
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

If you use a reserved character such as a less than symbol (<) inside an XML element, the MSXML parser converts it at run time on target systems to its predefined entity (&lt;). Using the less than symbol instead of its entity would generate an error because XML parsers would interpret it as the start of a new element, and it would result in invalid XML code. Note that if you open the resulting XML file in a browser such as Internet Explorer, the characternot its entityis displayed inside the XML element. The following table lists the reserved XML characters and their entity equivalents. The table also indicates whether each reserved character is replaced by its entity at run time.
Table 12-10: Reserved Characters and Their Predefined Entities Character < Entity &lt; Description Less than Notes This character cannot be used as content in an XML element because it is reserved to be used to indicate the start of an XML element. This character is automatically replaced by its entity at run time. > &gt; Greater than This character is automatically replaced by its entity at run time.

522

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Table 12-10: Reserved Characters and Their Predefined Entities (cont.) Character & Entity &amp; Description And Notes This character cannot be used as content in an XML element unless it indicates the start of an entity. If this character is used as content in an XML element but it does not indicate the start of an entity, it is automatically replaced by its entity at run time. &apos; Apostrophe This character is not automatically replaced by its entity at run time. This character is not automatically replaced by its entity at run time.

"

&quot;

Quotation mark

Using Namespaces in XML Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

XML namespaces provide a method for avoiding element name conflicts. When you are specifying XML file changes in InstallShield, you can specify the namespace mappings that should be declared in the XML file and then specify namespace prefixes for any of the files elements.

Tip: If you use the Import XML Settings Wizard to import an XML file into the XML File Changes view, InstallShield imports any namespaces that are declared for the file.

Declaring Namespace Mappings for an XML File

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

You can declare namespace mappings for an XML file in the XML File Changes view.

InstallShield 2010 User Guide

ISP-1600-UG00

523

Chapter 12: Configuring the Target System Modifying XML Files

Task

To declare a namespace mapping for an XML file: 1. 2. 3. 4. 5. 6.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the XML file that should contain the namespace. Click the Namespace tab. Click a row in the table to add a new namespace. In the Prefix column, type the prefix that should be used for any elements that are associated with the corresponding namespace. In the URI column, type a URL or a string of characters that identifies the Internet resource.

Adding a Namespace Prefix to an Element

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

If you have declared a namespace mapping for an XML file, you can associate any element in the file with that namespace by adding the corresponding prefix to the element.

Task

To add a namespace prefix to an element: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the element to which you want to add a prefix and then do one of the following:

To add a prefix to only the selected element, point to Namespace Prefix, and then click to the appropriate namespace mapping. To add a prefix to the element and all of its subelements, point to Namespace Prefix (include all subelements), and then click to the appropriate namespace mapping.

InstallShield adds the prefix to the element (and all of its subelements, if appropriate) in the XML Files explorer.

Tip: You can also add a namespace prefix by right-clicking an element, clicking Rename, and adding the prefix and the colon (:) before the element name.

524

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

Adding a Namespace Prefix to an Attribute

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

If you have declared a namespace mapping for an XML file, you can associate any attribute in the file with that namespace by adding the corresponding prefix to the attribute.

Task

To add a namespace prefix to an attribute: 1. 2. 3. 4. 5.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the element that contains the attribute. In the right pane, click the General tab. In the grid, double-click the attribute to which you want to add the prefix, and then place the cursor at the start of the attribute name. Add the prefix and a colon (:) before the attribute name.

Removing a Namespace Prefix from an Attribute

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Task

To remove a namespace prefix from an attribute: 1. 2. 3. 4.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the element that contains the attribute. In the right pane, click the General tab. In the grid, double-click the attribute from which you want to remove the prefix, and then place the cursor at the start of the attribute name.

InstallShield 2010 User Guide

ISP-1600-UG00

525

Chapter 12: Configuring the Target System Modifying XML Files

5.

Delete the prefix and a colon (:) before the attribute name.

Removing a Namespace Prefix from an Element

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Task

To remove a namespace prefix from an element: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the element whose prefix you want to remove, and then do one of the following:

To remove the prefix from only the selected element, point to Namespace Prefix, and then click <None>. To remove the prefix from the element and all of its subelements, point to Namespace Prefix (include all subelements), and then click <None>.

InstallShield removes the prefix from the element (and all of its subelements, if appropriate) in the XML Files explorer.

Removing Namespace Mappings from an XML File

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Task

To remove a namespace mapping from an XML file: 1. 2. 3.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, click the XML file that contains the namespace that you want to remove. Click the Namespace tab.
ISP-1600-UG00 InstallShield 2010 User Guide

526

Chapter 12: Configuring the Target System Modifying XML Files

4.

Click the row that contains the namespace mapping that you want to remove, and then click the Delete button.

InstallShield removes the namespace from the table.

Testing Installation Changes to an XML File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

InstallShield enables you to test just the XML file changes that are configured for your project through the XML File Changes view without requiring you to build and run your entire installation. When you test the installation changes, InstallShield uses the latest version of MSXML that you have on your machine to parse the XML file and execute the XPath expressions that you configured. When MSXML finds an area of the XML file that matches the XPath expression, the changes that were configured in the XML File Changes view are made.

Note: If your XML file changes include Windows Installer properties or InstallScript text substitutions, they are not replaced with the appropriate values during testing.

Task

To test installation changes to an XML file: 1. 2. 3.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file that you want to test and then click Test XML File Install Changes. The Select Test XML File dialog box opens. In the File name box, select the target file to which you want the installation changes applied, or specify a new target file name and location:

If you are modifying an XML file that is installed as part of your installation, select a copy of that file. (Do not select the actual file in your installation because testing the XML installation changes would modify it.) If you are modifying an XML file that already exists on the target system, select a copy of that file. To test what happens if the XML file does not exist at run time and it is not installed as part of your installation, specify a new file name and location.

The default file name is the name of the test file that you right-clicked in step 2.
4.

Click Open.
ISP-1600-UG00 527

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying XML Files

If the target file already exists, InstallShield applies the changes from the test file to the target file. If the target file that you specified does not exist and the Always create XML file if it does not already exist check box is selected on the Advanced tab for the XML file, InstallShield creates the file and applies the changes from the test file. InstallShield displays details about the installation test on the Results tab of the Output window. The details include a hyperlink to the test file.

Tip: If the target file is open in a browser window when you perform the testing, you may need to refresh the browser to see the test changes.

Testing Uninstallation Changes to an XML File


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

After you have tested the XML file installation changes that you have configured through the XML File Changes view, you may want to test the XML file changes that occur during uninstallation. This enables you to determine whether the changes that you configured behave as you expected during uninstallation. When you test the uninstallation changes, InstallShield uses the latest version of MSXML that you have on your machine to parse the XML file and execute the XPath expressions that you configured. When MSXML finds an area of the XML file that matches the XPath expression, the changes that were configured in the XML File Changes view are made.

Note: If your XML file changes include Windows Installer properties or InstallScript text substitutions, they are not replaced with the appropriate values during testing.

Task

To test uninstallation changes to an XML file: 1. 2. 3.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file that you want to test and then click Test XML File Uninstall Changes. The Select Test XML File dialog box opens. In the File name box, select the target file to which you want the uninstallation changes applied. The default value is the name of the file whose installation changes you last tested.

4.

Click Open.

528

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying Text Files

InstallShield applies the uninstallation changes that are configured in the XML File Changes view to the test file. InstallShield displays details about the uninstallation test on the Results tab of the Output window. The details include a hyperlink to the test file. Note that if you have configured the XML file to be removed during uninstallation, the hyperlink may not work, since the file may no longer be present.

Tip: If the target file is open in a browser window when you perform the testing, you may need to refresh the browser window to see the test changes.

Removing an Element or an XML File from the XML File Changes View
Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Task

To remove an element or an XML file from the XML File Changes view: 1. 2.

In the View List under System Configuration, click XML File Changes. In the XML Files explorer, right-click the XML file or XML element that you want to remove and click Delete.

If you delete an XML file, InstallShield displays a message that explains that the component associated with the XML file will be deleted along with the file itself.

Modifying Text Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

InstallShield 2010 User Guide

ISP-1600-UG00

529

Chapter 12: Configuring the Target System Modifying Text Files

InstallShield enables you to configure search-and-replace behavior for content in text filesfor example, .txt, .htm, .xml, .config, .ini, and .sql filesthat you want to modify at run time on the target system. The text files can be part of your installation, or they can be files that are already present on target systems. The Text File Changes view is where you define the changes that you want to be made to the text files. This view lets you do the following:

Add one or more text replacement sets to your project. A text replacement set is a reference to one or more text files that you want to search at run time. Add one or more text replacement items to a text replacement set. A text replacement item identifies the search-and-replace criteria.

Task

To configure text file changes: 1. 2.

Create a text file reference. Specify the search-and-replace criteria for the text file.

For more information on how to modify a text file at run time, consult this section of the documentation.

Creating a Text File Reference


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

The first step in configuring text file changes is to create a reference to the file that you would like to edit. The file can be any non-binary filefor example, a .txt, .htm, .xml, .config, .ini, or .sql file. The file can be part of your installation (that is, one that you added to your project in the Files and Folders view), or it can be a file that is already present on target systems.

Note: Each text file reference must be associated with a component in your project. Therefore, before you can create a text file reference, your project must have at least one component. If no components exist when you are creating a text file reference, the Create a New Component dialog box is displayed, enabling you to create a component.

Task

To create a reference to one or more text files that you want to change at run time: 1. 2.

In the View List under System Configuration, click Text File Changes. Right-click the Text File Changes explorer and then click Add Replacement Set.
ISP-1600-UG00 InstallShield 2010 User Guide

530

Chapter 12: Configuring the Target System Modifying Text Files

InstallShield adds a new replacement set item with a default name.


3.

Enter a new name, or right-click it later and click Rename to give it a new name. The name is not displayed at run time; it is an internal name that is used to differentiate between various replacement sets in your project.

4.

In the right pane, configure the settings for the replacement set. For details about each setting, see Replacement Set Settings.

After you have created a reference to a text file and configured its settings, you can move on to the next step, which is to specify the search-and-replace criteria.

Tip: You can use Windows Installer public properties to specify the names of the text files that you want to include in or exclude from your search. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files.

Specifying Search-and-Replace Criteria for a Text File Change


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

Once you have specified the text file that you would like to edit, you can move onto the next step of configuring text file changes: specifying the search-and-replace criteria. Each set of criteria is known as a replacement item.

Task

To specify the search-and-replace criteria for a text file change: 1. 2.

In the View List under System Configuration, click Text File Changes. In the Text File Changes explorer, right-click the replacement set item whose search-and-replace criteria you want to define, and then click Add Replacement. InstallShield adds a new replacement item with a default name.

3.

Enter a new name, or right-click it later and click Rename to give it a new name. The name is not displayed at run time; it is an internal name that is used to differentiate between various replacement items in your project.

InstallShield 2010 User Guide

ISP-1600-UG00

531

Chapter 12: Configuring the Target System Modifying Text Files

4.

In the right pane, configure the settings for the replacement. For details about each setting, see Replacement Set Settings.

To modify additional strings in the text file, add additional replacement items to the replacement set in this viewone for each string change.

Tip: You can use Windows Installer public properties to specify the search strings and the replacement strings. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files.

Changing the Order in Which Text File Changes Are Made


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

Text file changes are made on the target system in the order in which they are listed in the Text File Changes view.

Task

To change the order in which text file changes are made at run time: 1. 2.

In the View List under System Configuration, click Text File Changes. In the Text File Changes explorer, right-click one of the replacement set items or replacement items that you want to move, and then click either Move Up or Move Down.

Repeat the last step until all of the text file changes are correctly sorted.

Using Windows Installer Properties to Dynamically Modify Text Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

532

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying Text Files

Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

You can use a Windows Installer property to specify text strings for which you are searching or replacing. You can also use a property to specify the text files that you are including or excluding in your search. At run time, Windows Installer uses MsiFormatRecord to resolve the property value, and it uses that value to modify your text file. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time.

Example
The following procedure demonstrates how to let end users specify during installation an IP address that must be written to an XML-based web.config file at run time. The web.config file is installed with the product to INSTALLDIR, and it contains XML such as the following:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appSettings> <add key="IP Address" value="default" /> </appSettings> </configuration>

The default value in bold must be replaced by the IP address that an end user enters. Note that you can substitute a hard-coded value with a property for the following replacement set settings in the Text File Changes view:

Include Files Exclude Files

In addition, you can use a property for the following replacement item settings in the Text File Changes view:

Find What Replace With

The property that you specify in any of these settings must be enclosed within square brackets, and the property name must be all uppercase; for example, [MYPROPERTY]. Step 4 of the procedure is slightly different, depending on the project type, since Windows Installer controls the user interface of Basic MSI installations, and the InstallScript engine controls the user interface of InstallScript MSI installations.

Task

To let end users specify the IP address: 1. 2.

In the View List under System Configuration, click Text File Changes. Add and configure a replacement set item, which identifies the file for which you want the installation to search:
a.

Right-click the Text File Changes explorer and then click Add Replacement Set.
ISP-1600-UG00 533

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying Text Files

InstallShield adds a new replacement set item. Steps 2b through 2d explain how to configure its settings, which are displayed in the right pane.
b. c.

In the Target Folder setting, select the [INSTALLDIR] directory property. In the Include Files setting, enter the following:
web.config

d. 3.

Leave the default values for the other settings.

Add and configure a replacement item, which identifies the search-and-replace criteria:
a.

In the Text File Changes explorer, right-click the replacement set item that you created in step 2, and then click Add Replacement. InstallShield adds a new replacement item. Steps 3b through 3d explain how to configure its settings, which are displayed in the right pane.

b.

In the Find What setting, enter the following:


<add key="IP Address" value="default"

c.

In the Replace With setting, enter the following:


<add key="IP Address" value="[MYPROPERTY]"

d. 4.

Leave the default values for the other settings.

Use the property in a dialog. This part of the procedure depends on which project type you are using.

For Basic MSI projects:


a. b.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and click the language under the dialog that should contain the User Name control. As an alternative, you can add a new dialog. Add an Edit Field control to the dialog, and set its Property property to the following:
MYPROPERTY

c.

For InstallScript MSI projects:


a. b.

In the View List under Behavior and Logic, click InstallScript. Find the dialog code in the OnFirstUIBefore event for the dialog that should contain the User Name control, and add a call to the Windows Installer API function MsiSetProperty. For example, if you want end users to enter the IP address in an edit box on the SdShowDlgEdit1 dialog that you have added to your project, you would add an MsiSetProperty call as shown in the following lines of code:
Dlg_SdShowDlgEdit1: nResult = SdShowDlgEdit1 (szTitle, szMsg, szField1, svEdit1); MsiSetProperty (ISMSI_HANDLE, "MYPROPERTY", svEdit1); if (nResult = BACK) goto Dlg_SdWelcome;

5.

Build your release.

534

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Modifying Text Files

Tip: If you are creating a multilanguage project and you want to use a property that can have different values based on the language that your installation uses, you can use a localizable property. For more information, see Creating a Localizable Property.

Specifying the Code Page that Should Be Used for Opening ANSI Text Files
Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

When an installation opens an ANSI text file to make the changes that are configured in the Text File Changes view, the installation uses the code page that is specified in the CodePage column of the ISSearchReplaceSet table of your project. The default value of this column is the number 0, which is CP_ACP, the code page that is currently configured to be the system Windows ANSI code page on the target system. You can use the Direct Editor view to override this value with a specific code page.

Task

To override the default code page that should be used to open an ANSI text file: 1. 2. 3.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, click the ISSearchReplaceSet table. InstallShield displays the table in the right pane. In the grid, find the row that corresponds with the replacement set item whose code page you want to configure. The ISSearchReplaceSet column in this grid shows all of the names of the replacement sets that are available in the Text File Changes explorer in the Text File Changes view.

4.

Change the value of the CodePage field in the appropriate row.

Removing a Replacement Item or a Replacement Set from the Text File Changes View
Project: This information applies to the following project types:

InstallShield 2010 User Guide

ISP-1600-UG00

535

Chapter 12: Configuring the Target System Per-User vs. Per-Machine Installations

Basic MSI InstallScript MSI MSI Database Transform

This information does not apply to InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals. You can use these functions in InstallScript projects.

If you no longer want a particular search-and-replace task to be performed for a text file, you can remove its replacement item from the Text File Changes view. In addition, if you no longer want a file or group of text files to be searched, you can remove the corresponding replacement sets from the Text File Changes view.

Task

To remove a replacement item or a replacement set from the Text File Changes view: 1. 2.

In the View List under System Configuration, click Text File Changes. In the Text File Changes explorer, right-click the replacement set item or replacement item that you want to remove, and then click Delete.

InstallShield removes the item from the Text File Changes view.

Per-User vs. Per-Machine Installations


Project: This information applies to Basic MSI projects.

Two Windows Installer properties, along with the current users privileges, affect where the configuration information such as your products shortcuts and registry entries are stored on a target machineto the All Users profile or the current users profile:

ALLUSERS determines where the configuration information is stored. MSIINSTALLPERUSER indicates that the Windows Installer should install the package for only the current user. The MSIINSTALLPERUSER property is available with Windows Installer 5 and on Windows 7 or Windows Server 2008 R2. Earlier versions of Windows Installer and Windows ignore this property.

You can set the ALLUSERS and MSIINSTALLPERUSER properties for your project through the Property Manager. You can also set these properties using the following methods:

At the command line Through a custom action In the CustomerInformation and ReadyToInstall dialogs

ALLUSERS, MSIINSTALLPERUSER, and Windows 7 or Windows Server 2008 R2


If the ALLUSERS property is set to 2 and MSIINSTALLPERUSER is set to 1, the Windows Installer performs a per-user installation.
536 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Per-User vs. Per-Machine Installations

During a per-machine installation, the Windows Installer requires elevated privileges, and it directs files and registry entries to per-machine locations. If User Account Control (UAC) is available on the target system, a per-machine installation typically prompts for consent or credentials, depending on the access level of the user. During a per-user installation, the Windows Installer does not prompt for credentials, and it redirects files and registry entries to per-user locations. For more information, see Single Package Authoring on the MSDN Web site.

Effects of ALLUSERS on Windows Vista and Later


Custom actions that have an in-script execution setting of deferred in system context are used to perform an action with the rights granted to the LocalSystem account on Windows, since the Windows Installer service runs in the system context. Actions not marked as deferred in system context run with user impersonation and have the rights that the user who launches the installation has. When a per-user installation (that is, one where ALLUSERS is not set) is run, deferred-in-systemcontext actions run in the same context in which normal deferred or immediate custom actions run, which is with user impersonation. This can potentially cause a run-time issue with the custom action in the following circumstances:

The user who launches the Windows Installer installation is not an administrator; or the user is running the installation on Windows Vista, the user is part of the Administrators group, and the user does not have administrator privileges by default. The custom action attempts to modify a resource in a per-machine location on the machine, such as a file in the Program Files folder, or a registry key or value in HKEY_LOCAL_MACHINE.

While this may not be an issue with Windows XP or earlier versions of Windows, Windows Vista does not give users full administrator privileges by default. Therefore, since a deferred-in-system-context action runs with user impersonation when ALLUSERS is not set, the custom action could fail. The recommended method for preventing this behavior is to specify that a per-machine installation should always be performed by setting ALLUSERS to 1 in the Property Manager. Per-machine installations are generally easier to manage than per-user installations.

Default Value of ALLUSERS


The ALLUSERS property is set to 1 by default in all Basic MSI projects. If you configure your installation so that it can be installed per user without administrative privileges, you may want to consider changing the value of the ALLUSERS property or removing this property from your project.

Default Controls on the ReadyToInstall Dialog


Use the Show Per-User Option setting in the General Information view to specify whether you want to give end users the option of installing your product for all users or for only the current user. Available options for the Show Per-User Option setting are:

NoInstallShield does not set any related properties. At run time, the ReadyToInstall dialog does not include the buttons that let end users specify how they want to install the product. This is the default value. YesInstallShield sets the ISSupportPerUser property equal to 1.

If the following conditions are true at run time, the ReadyToInstall dialog includes the per-user and permachine buttons:

The ISSupportPerUser property is equal to 1.


ISP-1600-UG00 537

InstallShield 2010 User Guide

Chapter 12: Configuring the Target System Per-User vs. Per-Machine Installations

The target system has Windows 7 or later, or Windows Server 2008 R2 or later. The product is not already installed on the target system.

The buttons on the ReadyToInstall dialog let end users specify how they want to install the product. If elevated privileges are required, the shield icon is included on the all-users button. If an end user selects the all-users button, the ALLUSERS property is set to 2, and the MSIINSTALLPERUSER property is set to 1. If an end user selects the per-user button, the ALLUSERS property is set to 1, and the MSIINSTALLPERUSER property is not set.

Note: Selecting No for the Show Per-User Option setting in the General Information view does not prevent end users from setting MSIINSTALLPERUSER from the command line when they run your installation. If your installation does not support this, you may want to add a launch condition or other run-time check to prevent this from occurring.

Default Controls on the CustomerInformation Dialog


By default, the CustomerInformation dialog in all 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.

Task

To display the radio button group that lets end users set ALLUSERS from the CustomerInformation dialog: 1. 2. 3. 4. 5. 6.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, under All Dialogs, expand the CustomerInformation dialog, and then click Behavior. InstallShield displays the list of controls for the CustomerInformation dialog. At the bottom of the lower-right pane, click the Conditions tab. In the upper-right pane, InstallShield displays the conditions for the selected control. In the list of controls, click DlgRadioGroupText. InstallShield displays this controls conditions in the upper-right pane. In the upper-right pane, right-click the row that contains the condition whose value is 1 and whose action is Hide, and then click Delete. Repeat steps 4 and 5 for the RadioGroup control.

538

ISP-1600-UG00

InstallShield 2010 User Guide

13
Customizing Installation Behavior
An important aspect of creating an installation is customizing it for your end users needs. The help topics in the Customizing Installation Behavior section of the documentation discuss various features of InstallShield that help you extend the functionality of your installation. For example, you may find it useful to create custom actions to add support for something not directly supported by Windows Installer. Furthermore, you may set up custom actions to call any script that you write in the InstallScript views script editor. Refer to this section of the documentation for more information on how you can customize the installation behavior in your project.

Using InstallScript
You can leverage the power and ease of InstallScript to extend the functionality of your installation package. The InstallScript view includes a script editor pane for you to author your InstallScript code.

Project: You must have a file named Setup.rul in your project if you are using InstallScript. InstallScript and InstallScript MSI projects contain a Setup.rul file by default. You must add a Setup.rul file in a Basic MSI project if you want to use InstallScript custom actions.

Using Event-Driven InstallScript in InstallScript and InstallScript MSI Projects


InstallScript and InstallScript MSI projects contain an event-driven script. When you use InstallScript in these project types, many of the functions are logged for uninstallation.

Using InstallScript in Custom Actions


Basic MSI Projects In a Basic MSI project, you can use custom actions to run InstallScript in your installation project. Basic MSI projects do not support event-driven script.

InstallShield 2010 User Guide

ISP-1600-UG00

539

Chapter 13: Customizing Installation Behavior Using InstallScript

Merge Module Projects In a merge module project, you can use custom actions to run InstallScript in your merge module. Merge module projects do not support event-driven script. InstallScript MSI Projects In an InstallScript MSI project, you can use an InstallScript custom action to extend functionality in an execute sequence where the default event handlers are not scheduled appropriately for your installations needs. Creating and Using Custom Actions

Task

To author an InstallScript custom action and execute it in your installation: 1. 2. 3. 4. 5.

Add a blank Setup.rul to your project in the InstallScript view if it does not already exist. Write an entry-point function. Note that you cannot call an entry-point function in the User Interface sequence for an InstallScript MSI installation project. Compile the script. Create a custom action that calls your InstallScript function. Invoke the InstallScript custom action by either including it in a sequence (InstallScript MSI, Basic MSI, and merge module projects) or executing it as a control event (Basic MSI and merge module projects). Debug if necessary.

6.

Note: As with other custom actions, changes made to the system through InstallScript custom actions are not automatically restored when the package is uninstalled. Because InstallScript custom actions are not logged and removed by the uninstaller, you must write a corresponding custom action to uninstall any changes that your custom action makes.

Overview of ISSetup.dll
ISSetup.dll

is a C++ MSI DLL that contains the full InstallScript scripting run-time engine. For InstallScript MSI, Basic MSI, and merge module installations, ISSetup.dll executes InstallScript custom actions. For InstallScript projects, ISSetup.dll must be in the Disk1 folder. Your installation always uses the InstallScript scripting run-time engine with which it was built, even if more a more recent version is installed on a target machine by another installation.

Important: Note the following information:

ISSetup.dll allows you to add only 1,000 InstallScript custom actions to your InstallScript MSI, Basic MSI, or

merge module project. If your project includes more than 1,000 InstallScript custom actions, a build error is generated.

The version of ISSetup.dll that is used for InstallScript projects is different than the one that is used in InstallScript MSI, Basic MSI, and merge module projects. These two versions are not interchangeable.
ISP-1600-UG00 InstallShield 2010 User Guide

540

Chapter 13: Customizing Installation Behavior Using InstallScript

Editor Functionality
InstallShield includes a full-featured text editor that is activated automatically when you select a script file while using the InstallScript view. The InstallShield script editor pane operates much like other standard Windows-based editors. The script editor pane includes the following functionality:
Table 13-1: Script Editor Features Functionality IntelliScript Description Use IntelliScript to automatically complete a function name and to provide parameters for the function. You can assign more than 120 different edit commands to specified keystrokes. You can record a series of keystrokes and assign a keystroke to play back the keystrokes repeatedly. You can record up to 10 macros.

Keystroke edit commands Keystroke macros

Drag and drop text manipulation Highlighted text can be dragged and dropped between any window supporting OLE text drag-and-drop functionality. Text can be copied or moved. Unlimited undo/redo All edit actions are fully undoable and redoable. You can set a limit on the number of edit actions that can be undone. As you enter code, the script editor automatically indents lines according to the scoping rules of the selected language. Columns of text can be selected and manipulated. You can select empty columns (columns with a width of zero characters) to cause subsequent typing and deletion to occur over multiple lines at the same time. Microsoft IntelliMouse functionality is supported in the script editor pane.

Auto indentation

Column selection and manipulation

Microsoft IntelliMouse support

IntelliScript
IntelliScript technology assists you as you work in the script editor pane by automatically completing function names and providing function parameter information.

Automatically Completing a Function Name

Task

To automatically complete a function name: 1. 2. 3. 4.

Open the InstallScript view. In the InstallScript explorer, select the InstallScript file (.rul) that you want to edit. Place the insertion point where you want to put the function call in your script. (Optional) Type the first characters of the function name.

InstallShield 2010 User Guide

ISP-1600-UG00

541

Chapter 13: Customizing Installation Behavior Using InstallScript

5.

Press CTRL+SPACEBAR. An alphabetical list of built-in function names appears. The first function name that matches the characters you typed is selected in the list. If no function name matches the characters that you typed, or you did not type any characters, no function name in the list is selected. If the selected function name is not the one you want (or no function name is selected), select another function name in one of the following ways:

6.


7.

Navigate the list by using the lists scroll bar, then click the desired function to select it. Change the selection to the previous or next function name by using the UP ARROW and DOWN ARROW keys. If no function name is selected, type a letter to select the first function name that begins with that letter.

To paste the selected function name into your script, double-click the function or press the ENTER, SPACEBAR, or TAB keys.

To close the list without pasting a function name, press ESC or click outside the list.

Viewing a Functions Parameters


After you have included a function name in your script, you can use IntelliScript to view the functions parameter information.

Task

To view a functions parameter information: 1. 2. 3. 4.

Enter a function name in your script by typing it or using automatic function name completion, as described earlier. Type a left parenthesis(after the function name. InstallShield displays a tooltip that shows a complete call to the function, including all of its parameters. The first parameter appears in bold. Type the parameters as indicated by the tooltip. Each time that you type a comma, the next parameter in the function syntax appears in bold. To close the tooltip, type the right parenthesis). Or, press ESC or click in the script editor pane outside the tooltip.

Syntax Coloring
The script editor pane displays InstallScript source files with color attributes that identify keywords, comments, strings, and other script elements (listed in the table below). The elements in each category are displayed in the same color so that you can easily identify them. This functionalitycalled syntax coloringis designed to help you avoid errors caused, for example, when you attempt to use a reserved word as a user-defined identifier. It can also help you locate other errors in your script, such as misspelled keywords, missing quotation marks at the end of a string, and missing comment characters.

Note: Syntax coloring occurs only with files that have the extension .rul (script files) or .h (header files).

542

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

The following table shows the default color that is applied to each script element. You can change the color attribute of a category.
Table 13-2: Default Colors for Script Elements Language Element Bookmarks Comments Keywords Left margin Numbers Operators Scope Keywords Strings Text Window Name of Default Color Teal Green Blue Magenta Teal Red Blue Dark red Black (system default) White (system default) Sample of Default Color

To make the best use of this functionality, keep the following points in mind:

Files with an extension other than .rul or .h (for example, log or report files) are not displayed with syntax coloring. Misspelled reserved words are not recognized by the editor and are not displayed with syntax coloring. If you see in your script a reserved word that is not displayed with indicating attributes, it is probably misspelled. Coloring of string literals includes both the opening and closing quotation marks. If the closing quotation mark is missing, string coloring will extend to the end of the line; in that case, text that should have followed the quotation will be displayed as though it were part of the string literal. Syntax coloring makes it easy to identify comments that open with /* and are not closed properly with */. In that case, all of the text that follows the comment is displayed with the comment color attribute. In lines that include comments starting with two slashes (//), all text from the comment character to the end of the line is recognized as a comment.

Function Wizard
The Function Wizard automates the process of adding function calls to your scripts. Instead of looking up a function in the online help; deciphering parameter descriptions; and copying, pasting, and editing the function call, you can launch the Function Wizard to insert a function at the insertion point.
InstallShield 2010 User Guide ISP-1600-UG00 543

Chapter 13: Customizing Installation Behavior Using InstallScript

Checking the Insertion Point


The current position (line and column number) of the insertion point in the active script editor pane is displayed on the right side of the Status bar, which is located in the bottom window border of the InstallShield interface.

Going to a Line Number

Task

To move the insertion point to a specific line number in your script: 1. 2. 3.

On the Edit menu, click Go To. The Go To Line dialog box opens. In the Line box, type the number of the line where you want to move the insertion point. Click OK.

Bookmarks
Bookmarks are markers that let you jump to specific lines within your script with a minimum of keystrokes. They are visible in the left margin when the margin is displayed. Note that bookmarks are deleted when a file is saved.

Setting Bookmarks

Task

To set a bookmark at a specific line: 1. 2.

Place the insertion point in the line. Press the keyboard shortcut for the BookmarkToggle command. (By default, the shortcut is CTRL+F2.)

Note that if the line is already marked, this command will remove the bookmark.

Task

To mark all lines that contain specific text (such as a specific keyword or function name): 1. 2. 3.

On the Edit menu, click Find. The Find dialog box opens. In the What box, type the text that must appear in the lines that you want to mark. Click Mark All.

InstallShield adds a bookmark to each line that contains the text string. Lines with matching text that are already marked remain marked.

544

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Going to a Marked Line


InstallShield offers several methods for navigating to marked lines:

To navigate to the next bookmark, press the keyboard shortcut for the BookmarkNext command. (By default, the shortcut is F2.) To navigate to the previous bookmark, press the shortcut for BookmarkPrev (SHIFT+F2 by default). To navigate to the first bookmark, press the shortcut for BookmarkJumpToFirst. (By default, no shortcut is assigned to this command.) To navigate to the last bookmark, press the shortcut for BookmarkJumpToLast. (By default, no shortcut is assigned to this command.)

Clearing Bookmarks

Task

To clear a bookmark at a specific line: 1. 2.

Place the insertion point in the line. Press the keyboard shortcut for the BookmarkToggle command. The default shortcut is Ctrl+F2.

Note that if the line is not marked, this command sets a bookmark at that line.

Task

To clear all bookmarks in the active script editor pane:

Press the keyboard shortcut for BookmarkClearAll. By default, no shortcut is assigned to this command. For instructions on assigning a shortcut, see Changing the Keyboard Shortcut Assigned to a Command.

Configuring the Script Editor


The topics in this section describe how to configure various settings in the script editor pane.

Enabling and Disabling Scroll Bars

Task

To enable or disable the vertical or horizontal scroll bar in the script editor pane: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab. To change the state of the vertical scroll bar, select or clear the Show vertical scrollbar check box. InstallShield displays a vertical scroll bar on the right side of the script editor pane when this check box is selected.

InstallShield 2010 User Guide

ISP-1600-UG00

545

Chapter 13: Customizing Installation Behavior Using InstallScript

To change the state of the horizontal scroll bar, select or clear the Show horizontal scrollbar check box. InstallShield displays a horizontal scroll bar at the bottom of the script editor pane when this check box is selected.
4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

Enabling and Disabling Column Selection


If column selection is enabled, you can select one or more columns in the script editor pane by pressing and holding the ALT key while selecting with the mouse.

Task

To enable or disable column selection: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab. To enable column selection, select the Allow column selection check box. To disable column selection, clear the Allow column selection check box.

4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

Enabling and Disabling the Left Margin


The left margin is a narrow column along the left side of the script editor pane. The left margin is reserved for displaying bookmarks.

Task

To enable or disable the left margin in the script editor pane: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab. To include the left margin, select the Show left margin check box. To disable hide the left margin, clear the Show left margin check box.

4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

546

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Enabling and Disabling Drag-and-Drop Text Editing


Drag-and-drop text editing enables you to copy or move selected text by dragging it with your mouse to a location in your script.

Task

To enable or disable drag-and-drop text editing: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab. To enable drag-and-drop text editing, select the Allow drag and drop check box. To disable drag-and-drop text editing, clear the Allow drag and drop check box.

4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

Setting the Tab Size


The tab character can be set to span from 1 to 256 columns.

Task

To set the tab size: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Language/Tabs tab. In the Tab Size box, enter the sizeas a multiple of the character space sizethat you want for tabs in your scripts. InstallShield inserts a tab either as a tab character (ASCII 09) or as spaces, depending on whether the Convert tabs to spaces while typing check box is selected. Click Apply. Click OK to close the Window Properties dialog box.

4. 5.

Setting Undo and Redo Limits


You can set the maximum number of actions that can be undone or redone in the script editor pane.

Task

To set the maximum number of undo and redo actions: 1. 2.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab.

InstallShield 2010 User Guide

ISP-1600-UG00

547

Chapter 13: Customizing Installation Behavior Using InstallScript

3.

In the Max undoable actions area, do one of the following:


4. 5.

To specify a maximum number, select the Limited to option and type a number in the box. Selecting this option can save memory by limiting the size of the undo buffer. To enable an unlimited number of undo and redo actions, select the Unlimited option.

Click Apply. Click OK to close the Window Properties dialog box.

Saving Tabs as Spaces or Tabs


Tabs entered at the keyboard may be inserted as tab characters (ASCII 09) or as spaces.

Task

To set the method that you prefer: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Language/Tabs tab. To insert tabs as space characters, select the Convert tabs to spaces while typing check box. The number of spaces inserted when you press the TAB key depends on the number specified in the Tab size box. To insert tabs as tab characters, clear the Convert tabs to spaces while typing check box.

4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

Enabling and Disabling Auto Indentation


Auto indentation is designed to facilitate the writing of source code that uses indentation to improve readability. If auto indentation is enabled, a new line is indented according to the scoping rules of the selected language or the indentation of the previous line. If auto indention is disabled, a new line is not indentedthat is, the insertion point is placed in the first column of the new line.

Task

To enable and disable auto indentation: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Language/Tabs tab. In the Auto indentation style area, select the appropriate option:

OffSelect this option to disable auto indentation. When you press ENTER in the script editor pane, the insertion point appears on a new line in the first column.

548

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Follow language scopingSelect this option if auto indentation should be performed according to the scoping rules of the language selected in the Language list. If <none> is selected in this list, no auto indentation is performed. Copy from previous lineSelect this option if the indentation should be copied from the previous line. When you press ENTER in the script editor pane, the insertion point appears on a new line positioned directly beneath the first character of the previous line.

To insert tabs as tab characters, clear the Convert tabs to spaces while typing check box.
4. 5.

Click Apply. Click OK to close the Window Properties dialog box.

Changing Script Coloring

Task

To change the script coloring in the script editor pane: 1. 2. 3. 4. 5. 6. 7.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Color/Font tab. In the Item box, select the script element whose color you want to change. In the Color list, select the appropriate color. If the Background list is available for the selected type of script element, select the appropriate color. Click Apply. Click OK to close the Window Properties dialog box.

Creating a Keyboard Shortcut

Task

To change the keyboard shortcuts assigned to editing commands: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Keyboard tab. In the Command list, select the command for which you want to create a keyboard shortcut. Note that the current keyboard shortcuts (if any) for the selected command are displayed in the Key Assignments box. Place the insertion point in the New key assignment box. Press the key combination that you want to assign as a shortcut to the selected command. Note that if your shortcut is already assigned to a command, InstallShield will display a message beneath the New key assignment box to inform you about the conflict.
ISP-1600-UG00 549

4. 5.

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

6. 7. 8.

Click Assign. InstallShield adds the keyboard shortcut to the Key Assignments box. Click Apply. Click OK to close the Window Properties dialog box.

Changing the Keyboard Shortcut Assigned to a Command

Task

To change the keyboard shortcut assigned to a command: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Keyboard tab. In the Command list, select the command whose keyboard shortcut you want to change. Note that the command names for macros are listed as PlayMacroN, where N is a successive number.

4. 5. 6. 7.

In the Key Assignments list, click the keyboard short cut that you want to change. Click Remove. InstallShield removes the keyboard shortcut from the Key Assignments box. Place the insertion point in the New key assignment box. Press the key combination that you want to assign as the shortcut to the selected command. Note that if your shortcut is already assigned to a command, InstallShield will display a message beneath the New Key Assignment box to inform you about the conflict. Click Assign. Click Apply.

8. 9.

10. Click OK to close the Window Properties dialog box.

Removing a Keyboard Shortcut Assigned to a Command

Task

To remove a keyboard shortcut assigned to a command: 1. 2. 3.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Keyboard tab. In the Command list, select the command whose keyboard shortcut you want to remove. Note that the command names for macros are listed as PlayMacroN, where N is a successive number.

4. 5. 6.

In the Key Assignments list, click the keyboard short cut that you want to remove. Click Remove. InstallShield removes the keyboard shortcut from the Key Assignments box. Click Apply.

550

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

7.

Click OK to close the Window Properties dialog box.

Changing the Font that Is Used to Display Text in the Script Editor

Task

To change the font, font style, or font size that is used to display text in the script editor: 1. 2. 3. 4. 5. 6. 7.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Color/Font tab. In the Font area, click Change. The Font dialog box opens. Specify the font changes as needed. Click OK. The Font dialog box closes. Click Apply. Click OK to close the Window Properties dialog box.

Recording and Running a Macro


A macro is a sequence of keystrokes that can be executed with a single command. You can create a macro to perform a whole series of actions that you often do in the script editor. Whenever you need to perform that series of actions, you can simply type the keyboard shortcut that is assigned to your macro.

Recording a Macro in the Script Editor

Task

To record a macro in the script editor: 1. 2. 3. 4. 5. 6. 7.

Press the keyboard shortcut for the RecordMacro command. (By default, the shortcut is CTRL+SHIFT+R.) The Record Macro dialog box opens, and the insertion point changes. Type the keystrokes that you want to record. In the Record Macro dialog box, click the End Recording button. The Record Macro dialog box closes and the Save Macro dialog box opens. Place the insertion point in the Press new shortcut key box. Press the key combination that you want to assign as the shortcut to the macro. In the Save As list, select an unassigned macro number. Click OK.

InstallShield 2010 User Guide

ISP-1600-UG00

551

Chapter 13: Customizing Installation Behavior Using InstallScript

Running a Macro

Task

To run a macro:

Press the keystroke shortcut that you entered for the macro. To learn how to change the keyboard shortcut assigned to a macro, see Changing the Keyboard Shortcut Assigned to a Command.

Characters Not Properly Displayed Under Non-English Operating Systems


If you are running a non-English operating system, you may have problems with pasting or typing characters in the script editor. They may not be properly displayed. To resolve this issue, select a script editor font and script that are appropriate for the language of your operating system.

Task

To display characters property in the script editor on non-English operating system platforms: 1. 2. 3. 4. 5. 6. 7.

Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Color/Font tab. In the Font area, click Change. The Font dialog box opens. In the Font and Script boxes, select the appropriate settings. Click OK. The Font dialog box closes. Click Apply. Click OK to close the Window Properties dialog box.

Undoing or Redoing Actions in the Script Editor

Task

To undo an action that you performed in the script editor pane, do one of the following:

Press CTRL+Z. Right-click in the script editor pane and click Undo.

Task

To redo an action that you performed in the script editor pane, do one of the following:


552

Press CTRL+Y. Right-click in the script editor pane and click Redo.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Dragging and Dropping Text


When drag-and-drop text editing is enabled, you can move or copy selected text within the script editor.

Moving Text

Task

To move text: 1. 2. 3. 4.

Select the text that you want to move. Place the mouse pointer over the selected text. Press and hold down the left mouse button. When you see a small rectangle appear beneath the mouse pointer, move the pointer to the location in your script to which you want to move the selected text. Continue to hold down the left mouse button while you move the pointer. When the pointer is at the location in which you want to move the text, release the left mouse button.

5.

Copying Text

Task

To copy selected text using the drag and drop method: 1. 2. 3. 4.

Select the text that you want to move. Place the mouse pointer over the selected text. Press CTRL, and then press and hold down the left mouse button. When you see a small rectangle and a plus sign beneath the mouse pointer, move the pointer to the location in your script to which you want to copy the selected text. Continue to hold down CTRL and the left mouse button while you move the pointer. When the pointer is at the location in which you want to move the text, release the left mouse button.

5.

Maximizing the Script Editor Pane


You can maximize the script editor pane to the full size of the InstallShield interface.

Task

To maximize the script editor pane, do one of the following:

With the insertion point in the script editor pane, press CTRL+M. On the View menu, click Maximize.

InstallShield 2010 User Guide

ISP-1600-UG00

553

Chapter 13: Customizing Installation Behavior Using InstallScript

Script Files
Project: This information applies to InstallScript projects.

When you create an installation project, InstallShield creates two script files and stores them in the Script Files folder of your project folder.

Setup.rul is

created for global event handlers and exception handlers. created for feature event handlers.

FeatureEvents.rul is

Initially, these two files are empty; the default event handlers defined by InstallShield do not appear in these files unless you select them from within InstallShield. When you do so, they are inserted into the appropriate script file and displayed in the script pane in the InstallScript view, where you can edit them. Note that if you change the default feature event handler code in FeatureEvents.rul, you must put the following statement in Setup.rul to include your changes in the installation:
#include "FeatureEvents.rul"

Creating InstallScript Files

Project: You must have a file named Setup.rul in your project if you are using InstallScript. InstallScript MSI projects contain a Setup.rul file by default. You must add a Setup.rul file in a Basic MSI project or a merge module project if you want to use InstallScript custom actions.

Task

To add a new InstallScript file to your project: 1. 2. 3.

Open the InstallScript view. In the InstallScript explorer, right-click Files and click New Script File. Name the file.

New script files are named Setup.rul by default. If you already have a file called Setup.rul, a new file is added with the name Setupn.rul, where n is a successive number. You can rename the file by rightclicking it and then clicking Rename. The new script file is placed in the Link To folder. InstallShield attempts to use a path variable in case you move your project. You cannot edit the Link To value. You can also include additional header files (.h files) and script files. Repeat the above procedure to add a new script file to your project.

554

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Opening an InstallScript File

Task

To open a script file in your project so that you can edit it: 1. 2.

Open the InstallScript view. In the InstallScript explorer, click the file that you want to open.

Inserting and Importing Script Files


InstallShield enables you to reuse InstallScript files (.rul) and InstallScript header files (.h) in multiple projects. You can insert or import script files into a project through the InstallScript view:

Inserting a script file creates a link to the script file in its current location. Importing a script file copies the script file to the folder containing the script files for your project. The script files that you import can be stored somewhere on your system, or they can be stored in a repository.

InstallShield supports all path variable types that you define in the Path Variables view for the location of these script files. However, it is important to be aware that a corresponding folder structure exists in your source code database so that your source code control software can resolve paths.

Inserting Script Files

Task

To insert a script file: 1. 2. 3. 4.

Open the InstallScript view. In the InstallScript explorer, right-click Files and then click Insert Script Files. The Open dialog box opens. Select the InstallScript file (.rul) or InstallScript header file (.h) that you want to insert. Click Open.

Importing Script Files

Task

To import a script file: 1. 2. 3.

Open the InstallScript view. In the InstallScript explorer, right-click Files and then click Import Script Files. The Import InstallScript Files dialog box opens. Do one of the following:

In the Repository Items box, click the InstallScript file (.rul) or InstallScript header file (.h) that you want to add to your project.

InstallShield 2010 User Guide

ISP-1600-UG00

555

Chapter 13: Customizing Installation Behavior Using InstallScript

4.

If the script file that you want to import is not stored in the repository, click the Browse button to select it.

Click OK.

Inserting the Same Text in Multiple Lines of Script


You can select a column that has a width of zero characters. This functionality is useful when you want to insert text in multiple lines of scriptfor example, if you are including a number of header files with #include.

Task

To insert the same text in multiple lines of script: 1. 2.

Press ALT and then drag your mouse vertically to select a zero-character width column. When you release the ALT key, a vertical line appears in the script editor pane. Type the characters that you want to include on each line (for example, #include).

Compiling Scripts
You must compile your script before your InstallScript code can be called in your installation. InstallShield searches only for a file named Setup.rul when compiling the script. You can include files with different names, but they must be included in Setup.rul or in an include file with the #include preprocessor statement.

Task

To compile your script, do one of the following:

On the Build menu, click Compile. Click the Compile button on the toolbar. Press CTRL+F7.

Before compiling, InstallShield saves any changes that you have made to your script files. The compilers status, including any error or warning messages, is displayed in the Output window. Double-click a compiler message to go to the line in your script where the error was found. If you compile your script file after making changes to it, it is not necessary to rebuild your release. Note that InstallShield automatically compiles your script whenever you build a release. If your script compiled successfully, InstallShield creates Setup.inx (the object code that the setup engine executes) and streams it into your Windows Installer package when you build a release. You may also need to uninstall the release that you previously ran to test your InstallScript custom action before you can see the changes to the script. You can set compiler options on the Compile/Link tab of the Settings dialog box.

556

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Debugging Scripts
The InstallScript Debugger is useful for stepping through your InstallScript code and checking the progress of your code. Before you can debug your script, you must first compile it, execute it as a custom action (if your project is Basic MSI), and build a release.

Task

To debug your script directly from within InstallShield, do one of the following:

On the Build menu, click Debug. Press F5. Click the Debug button on the toolbar.

InstallShield will run the installation and open the InstallScript Debugger when the custom action is executed. While you are in the InstallScript Debugger, press F1 at any point to view the InstallScript Debugger Help. For information about debugging on a test system, see Debugging an Installation on any Computer.

Using Preprocessor Statements to Debug the Script


Use the #define and #ifdef statements to create an internal debugger in the script.

Task

To deug a script by using the preprocessor statements: 1.

Wherever you want to insert a debug statement in the script, start with the following #ifdef directive:
#ifdef DEBUG

2. 3.

On lines that follow that directive, type the debug statements. On a separate line after the debug statements, type:
#endif

4.

For debugging purposes, compile the following compiler setting:


DDEBUG=1

Here is an example of a debugging section using an #ifdef statement:


#ifdef DEBUG if nResult < 0 then WriteLine (LogFileHandle, "PlaceBitmap failed"); endif; #endif

The InstallScript Debugger enables you to trace program execution and inspect variables as your installation executes.

InstallShield 2010 User Guide

ISP-1600-UG00

557

Chapter 13: Customizing Installation Behavior Using InstallScript

Renaming an InstallScript File

Task

To rename an InstallScript file: 1. 2. 3.

Open the InstallScript view. In the InstallScript explorer, right-click the file and click Rename. Type a new name for the file.

Note: Your installation must contain a source file named Setup.rul; that file is the main compilation unit of an installation script. If your installation does not include a script file with that name, InstallShield will report error C8503 when you compile your installation.

Using String Entries in Scripts


You can use string identifiers in your script in place of any value that accepts a string literal. When the custom action is executed, the installation replaces the string identifier with the corresponding string value for the language in which the installation is running. String identifiers must follow an at symbol (@) in your script. The Select String dialog box lets you browse the list of string entries in your project. It also lets you modify string entries for the default language before inserting the selected string identifier into your script. For example, assuming your project contains a string identifier called MSG_ACTION_SUCCEEDED, you could display its value in a message box as demonstrated below:
szMsg = @MSG_ACTION_SUCCEEDED; nType = INFORMATION; MessageBox (szMsg, nType);

Removing InstallScript Files from Projects


When you remove a script file from your installation, you are deleting the reference to that file from your project, but not the file itself. If you later decide to insert it into your installation, you do not need to rewrite your script. Note that the script file may, in fact, still be compiled if it is included in another file.

Task

To remove InstallScript files from your project: 1. 2.

Open the InstallScript view. In the InstallScript explorer, right-click the file and click Remove.

558

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Caution: You cannot rename a file to the name of an existing file under the project location, even if the script file has been removed through the above procedure. For example, assume you have a script file called Setup.rul in your project. Next, remove that file and add a new script file, called Script1.rul by default. You cannot rename Script1.rul to Setup.rul, because doing so would overwrite the first Setup.rul. To avoid this, you should move your original Setup.rul out of your project folder, rename it, or delete it through Windows Explorer.

Creating Script Libraries (.obl Files)


InstallScripts built-in functions are defined in library files (.obl files) to which a script is linked when the script is compiled.

Task

To create a library file for functions that you have defined: 1. 2.

Create one or more .rul files containing the definitions of your functions. At the command line, for each of your .rul files, run Compile.exe with the -c switch to compile the file without linking it to any existing library file. This will create an .obs file (rather than the .inx file that is created by compiling without the -c switch). For example, enter the following command line to create the file MyFunc.obs in the current folder.
Compile MyFunc.rul -c

To create an .obs file with a different name or location, use the -o switch.
3.

Run Compile.exe with the -l switch, and one or more .obs files as parameters, to create the library file. For example, enter the following command line to create the file MyFunc.obl in the current folder.
Compile MyFunc.obs -l

Entering the following command line creates the file MyFunc1.obl in the current folder.
Compile MyFunc1.obs MyFunc2.obs -l

To create an .obs file with a different name or location, use the -o switch.

Tip: If you have many .obs files, you can shorten the command line by using a command file as in the following example:
Compile @MyObsFiles.txt -l

To quickly create the command file, you can use the MS-DOS command DIR with its /b (bare format) switch and redirect the output to a file. For example:
DIR *.obs /b > MyObsFiles.txt

To compile an installation script using your library file, specify the library file on the command line or when compiling within InstallShieldon the Compile/Link Tab of the Settings dialog box.

InstallShield 2010 User Guide

ISP-1600-UG00

559

Chapter 13: Customizing Installation Behavior Using InstallScript

Publishing InstallScript Files (.rul and .h) to a Repository


If you have an existing InstallScript file (.rul) or InstallScript header file (.h) that you would like to reuse in other projects or share with other users, you can publish it to a repository.

Task

To publish a script file to a repository: 1. 2. 3.

Open the InstallScript view. In the InstallScript explorer, right-click the script file that you would like to publish, and then click Publish Wizard. The Publish Wizard opens. Complete the panels in the Publish Wizard.

After you have imported a script file from a repository into a project, there is no link between the current script file and the existing repository script file. If you make a change to the script file and then republish it to the repository, it does not affect the script file in the project to which it was imported. However, you can reimport the script file from the repository into your project.

Printing a Script File

Task

To print the file that is displayed in the active script editor pane: 1. 2. 3.

On the File menu, click Print. Note that this command is enabled only if the insertion point is in the script editor pane. The Print dialog box opens. Specify the options that you prefer. Click OK.

Printing Settings
InstallShield uses the following settings when printing scripts:

Left margin: 5/8 inch; top margin: 5/8 inch; bottom margin 1 inch; right margin: 3/4 inch. Header contains the full path and file name of the file in bold. Footer contains the page number. Font is Courier.

InstallScript Lists
Lists are used to store related information, such as strings or numbers. InstallScript lists are very similar to single-linked lists in the C language. InstallScript list functions are very flexible, enabling you to return information in an order different from the order in which it was stored and access and use that information in a variety of ways.

560

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

List Functions
InstallShield provides a number of functions for creating and manipulating lists. There are three types of InstallScript list functions:

Functions ending in -String that work with string lists only Functions ending in -Item that work with number lists only Functions that work with either string or number lists

InstallShield also has many secondary list-related functions that use or create lists.

List Structure
Lists are used to store related informationeither strings or numbers. All the information in a list must be of the same data type, and the number of elements is limited only by the available memory. An InstallScript list has two parts. The first part is the head, which InstallShield uses internally. The head of the list contains general information about the list, such as whether it contains strings or numbers. The head also contains pointers to the beginning and end of the list. The second part of the list is the list body. The list body contains the actual strings or numbers. You can have as many strings or numbers in a list as the memory in the system will allow. Remember that lists cannot contain both numbers and strings. A list must have only strings or only numbers. Variables representing lists can be declared as type LIST or type LONG. Lists exist only in memory, meaning they are destroyed when the installation is complete. If a list is local to a function, the list is destroyed when the function returns control to the calling code.

Creating and Destroying Lists


Before creating a list, decide which type of list you want to build: a string list or a number (item) list. To create the list, call the ListCreate function:
// This builds the list head for a string list. listID1 = ListCreate (STRINGLIST);

or
// This builds the list head for a number (item) list. listID2 = ListCreate (NUMBERLIST);

ListCreate automatically builds the head of the list and returns its ID number. The ID is used in all subsequent functions that operate on the list. Therefore, you must always create a list using ListCreate before you use any other list function. You must store the return value from ListCreate in a variable of

type LIST or type LONG. This fragment creates a number list and then a string list. It also tests each one to make sure that the lists were created successfully.
// This creates an empty list for strings. listID1 = ListCreate (STRINGLIST); if (listID1 = LIST_NULL) then MessageBox ("Unable to create the string list", SEVERE); endif;

InstallShield 2010 User Guide

ISP-1600-UG00

561

Chapter 13: Customizing Installation Behavior Using InstallScript

// This will create an empty list for numbers. listID2 = ListCreate (NUMBERLIST); if (listID2 = LIST_NULL) then MessageBox ("Unable to create the number list", SEVERE); endif;

When you are finished using a list, you will typically want to destroy the list to free the memory for other uses. ListDestroy destroys the list and its contents. This example creates a list referenced by listID, adds a string to the list, and then destroys the entire list.
listID = ListCreate (STRINGLIST); if (listID = LIST_NULL) then MessageBox ("Unable to create list.", SEVERE); abort; endif; ListAddString (listID, "This is a string in the list", AFTER); ListDestroy (listID);

If you do not destroy a list using ListDestroy, the list will be destroyed when the installation is complete. If the list is local to a function, the list is destroyed when the function returns control to the calling code.

Adding Elements to Lists


InstallShield provides several functions for adding elements to lists:
Table 13-3: Functions that Are Used to Add Elements to Lists Function ListAddItem ListAddString ListReadFromFile Description Adds an item to the list. Adds a string to the list. Reads a text file into a list.

ListAddString and ListAddItem add a single element to the list that you specify. Remember that, regardless of where you place the new string in the list, it becomes the current string. Use the options BEFORE and AFTER to indicate where you want to place the new element in the list relative to the current element. If you are working with a newly created list, using either BEFORE or AFTER will add the string to the first element position in the list.

Adding elements to a list and the resulting effects on the list order and the element in the current position are most easily explained by example. The examples below use string lists and ListAddString, but the same principles and steps apply to using ListAddItem and number lists. Consider these scenarios:

Adding an element to an empty list Adding an element before the current element Adding an element after the current element Adding elements before and after the current element

562

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Adding an Element to an Empty List


The first string that you add to the list goes immediately after the head of the list. This string (String 1 in the sample code) becomes the current string in the list. The script fragment shown below results in a list like that depicted after it:
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); else // Add a string to the list. szString = "String 1"; ListAddString (listID, szString, AFTER); endif;

Figure 13-1: String 1 is added to a list.

Adding an Element Before the Current Element


If the current string is the first string in the list and you add a new string before it, the new string becomes the first string in the list. The string that was formerly in the first element position now resides in the second element position. The new string at the first element position is now the current string:
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); else // Add some strings to the list. szString = "String 1"; ListAddString (listID, szString, AFTER); szString = "String 2"; ListAddString (listID, szString, BEFORE); endif;

Figure 13-2: String 2 is added before String 1.

InstallShield 2010 User Guide

ISP-1600-UG00

563

Chapter 13: Customizing Installation Behavior Using InstallScript

Adding an Element After the Current Element


If the current string is the first string in the list, and you add the new string after the current string, the new string becomes the second string in the list, as well as the new current string. Refer to the script fragment below and to the illustration following it:
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); else // Add some strings to the list. szString = "String 1"; ListAddString (listID, szString, AFTER); szString = "String 2"; ListAddString (listID, szString, AFTER); endif;

Figure 13-3: String 2 is added after String 1.

Adding Elements Before and After the Current Element


As another example, the code segment shown below creates a new list and puts String 1 in the first position. String 2 is then added before String 1, leaving String 2 in the first position as the current string. Next, String 3 is added after the current string, resulting in the list depicted below.
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); else // Add some strings to the list. szString = "String 1"; ListAddString (listID, szString, AFTER); szString = "String 2"; ListAddString (listID, szString, BEFORE); szString = "String 3"; ListAddString (listID, szString, AFTER); endif;

564

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Figure 13-4: String 1 is added. Then String 2 is added before String 1. Last, String 3 is added after String 2.

In the example above, if String 3 were added before the current string, the result would be as shown below, with String 3 becoming the current string. This code segment is shown below:
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); else // Add some strings to the list. szString = "String 1"; ListAddString (listID, szString, AFTER); szString = "String 2"; ListAddString (listID, szString, BEFORE); szString = "String 3"; ListAddString (listID, szString, BEFORE); endif;

Figure 13-5: String 1 is added. Then String 2 is added before String 1. Last, String 3 is added before String 2.

Changing Existing Elements in a List


Call the ListSetCurrentString function to change the value of an element in a string list. Remember that only the current element may be changed, so be sure to make the string you want to update the current string in the list. Call the ListSetCurrentItem function to change the value of an element in a number list. Again, the item that you want to update must be the current element in the list. The example below demonstrates calling ListSetCurrentItem to change the value of the current item in a number list. The ListSetCurrentString function works in the same manner, but with a string list and string variables.
// Create a list and verify its creation. listID = ListCreate (NUMBERLIST); if (listID = LIST_NULL) then
InstallShield 2010 User Guide ISP-1600-UG00 565

Chapter 13: Customizing Installation Behavior Using InstallScript

MessageBox ("Unable to create list.", SEVERE); abort; endif;

// Add items (1078 and 304) to the list. nItem = 1078; ListAddItem (listID, nItem, AFTER); nItem = 304; ListAddItem (listID, nItem, AFTER); // Current item is the second item (304). // Now set current item to new value (305). nItem = 305; ListSetCurrentItem (listID, nItem); ListDestroy (listID);

Deleting Elements from a List


Call the ListDeleteString function to delete the current string from a list. Or, call the ListDeleteItem function to delete the current number from a list. If there are no more elements to delete, these functions return the END_OF_LIST constant. Note that since ListDeleteString and ListDeleteItem delete the current element, you must reset the current element to the element that you want deleted. After deletion, the next element in the list becomes the current element. You reset the element by any of the methods described in Traversing Lists. The example below illustrates the use of several list functions, including ListDeleteString. The ListDeleteItem function is used in the same manner, except that the list is a number list and the variables are number variables.
// Create the empty list of strings. listID = ListCreate (STRINGLIST); if (listID = LIST_NULL) then // Test for a valid list. MessageBox ("List not created", SEVERE); endif; // Add some strings to szString = "String 1"; ListAddString (listID, szString = "String 2"; ListAddString (listID, szString = "String 3"; ListAddString (listID, the list. szString, AFTER); szString, AFTER); szString, AFTER);

// Delete the current string. ListDeleteString (listID); // Reset the current string in the list. lResult = ListCurrentString (listID, svString); // svString contains "String 2."

566

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Finding a Particular Element in a List


You can traverse lists non-incrementally. Call the ListFindString function or the ListFindItem function when you want to search for a specific string or number element in a list. These two functions begin their search at the current element and continue forward through the list from that point. To start a search from the beginning of a list, call the ListGetFirstString or the ListGetFirstItem function before calling the ListFindString or the ListFindItem function. When the ListFindString or the ListFindItem function finds the specified string or number, it becomes the current element in the list. In the script fragment below, a number list is created, and the number 1 (in nItem) is added as the first element. Then, ListFindItem searches the list for the number 1, and deletes it, if found. Finally, the list is destroyed.
listID = ListCreate (NUMBERLIST); if (listID = LIST_NULL) then MessageBox ("Unable to create list.", SEVERE); abort; endif; nItem = 1; ListAddItem (listID, nItem, AFTER); if (ListFindItem (listID, nItem) = 0) then ListDeleteItem (listID); endif; ListDestroy (listID);

Note: The ListFindString and ListFindItem functions look for only the first instance of the specified string or number at or after the current element.

Getting the First and Next Elements in a List


Call the ListGetFirstString function or the ListGetFirstItem function to return the first string element or number element, respectively, from a list. The element that you retrieve then becomes the current element in the list. Call the ListGetNextString function or the ListGetNextItem function to return the string element or number element after the current element in a list. The element that you retrieve then becomes the current element in the list.
// Create the empty list of strings. listID = ListCreate (STRINGLIST); // Test for a valid list. if (listID = LIST_NULL) then MessageBox ("List not created", SEVERE); endif; // Add some strings to ListAddString (listID, ListAddString (listID, ListAddString (listID,
InstallShield 2010 User Guide ISP-1600-UG00

the list. "String 1", AFTER); "String 2", AFTER); "String 3", AFTER);
567

Chapter 13: Customizing Installation Behavior Using InstallScript

// Traverse the list and display the strings in a message box. lResult = ListGetFirstString(listID, szDriveName); while (lResult != END_OF_LIST) MessageBox (szDriveName, INFORMATION); lResult = ListGetNextString (listID, szDriveName); endwhile;

Reading a File into a List


Call the ListReadFromFile function to read an entire file into a string list. Each line in the file becomes an element in the list. The ListReadFromFile function provides an easy way to load a list, rather than building it one item at a time.

Setting an Index in a List


InstallShield provides the ListSetIndex function, which lets you make an element the current element using an index number. If you know the location of a particular element in a list, you can call the ListSetIndex function to access that element immediately. You can traverse a list in either direction by using the index to set a specific element in a list to the current element. The index of the list starts at 0 (zero). The ListSetIndex function works on both string and number lists. After you set the indexed element as the current element, call either the ListCurrentItem function or the ListCurrentString function to return the value of the indexed item. This example demonstrates traversing a list non-incrementally using ListSetIndex.
listID = ListCreate (STRINGLIST); GetGroupNameList (listID); nCheck = ListSetIndex (listID, LISTFIRST); while (nCheck != END_OF_LIST) ListCurrentString (listID, svString); MessageBox (svString, INFORMATION); nCheck = ListSetIndex (listID, LISTNEXT); endwhile; ListDestroy (listID);

The ListCount function tells you how many elements are in a list. The ListCount function is used mainly for general information purposes, although it can be used to establish an upper index value in conjunction with ListSetIndex. For example, you can call ListCount to get the number of elements in a list, and use that value with ListSetIndex to traverse a list. The above example, which uses a while loop, is rewritten below using an InstallScript for loop based on the number of elements in the list.
listID = ListCreate (STRINGLIST); GetGroupNameList (listID); // Get the number of elements in the list. nItems = ListCount (listID); // Display the number of elements in the list. SprintfBox (INFORMATION, "", "i = %d", nItems); // Loop for nItems times beginning with zero, // displaying each list element in turn in a message box.
568 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

for i = 0 to (nItems - 1) ListSetIndex (listID, i); ListCurrentString (listID, svString); MessageBox (svString, INFORMATION); nCheck = ListSetIndex (listID, LISTNEXT); endfor; ListDestroy (listID);

Traversing Lists
InstallShield provides these functions for traversing lists incrementally and non-incrementally:
Table 13-4: Functions that Are Used to Traverse Lists Function Description Sees how many string or numeric elements are contained in a specified list. Returns the current item in the list. Returns the current string in the list. Attempts to find a numeric element in a list. If found, the element becomes the current element of the list. Attempts to find a string element in a list. If found, the element becomes the current element of the list. Retrieves the first element from a number list. Retrieves the first string from a string list. Retrieves the element after the current element from a number list. Retrieves the element after the current element from a string list. Sets the current element of the list as an index.

ListCount ListCurrentItem ListCurrentString ListFindItem ListFindString ListGetFirstItem ListGetFirstString ListGetNextItem ListGetNextString ListSetIndex

InstallShield uses single-linked lists, which means that unless you use functions that set indices or search for specific elements in lists, you can traverse lists incrementally in one direction only: from the first element to the last. InstallShield allows you to traverse lists in non-incremental fashion by means of indices and by searching for particular elements in lists. Refer to the individual function descriptions for more details. Most list traversing and list access operations are carried out relative to the current list element. Furthermore, most of the functions used to traverse and access lists establish a current element as a result of their action. Therefore, making an element the current element in a list is not an isolated action; it is a byproduct of another action. If a list is empty, adding an element to the list will establish a current element. If a list is not empty, then making an element the current element is best accomplished by traversing the list or searching for a particular element in the list.
InstallShield 2010 User Guide ISP-1600-UG00 569

Chapter 13: Customizing Installation Behavior Using InstallScript

Tip: Lists are often processed within while loops, usually checking for END_OF_LIST. An infinite loop can result if the list is not valid. If you are processing lists in a while loop, make sure that you have created the list with the ListCreate function, and that you have not destroyed the list with the ListDestroy function.

Writing a List to a File


Call the ListWriteToFile function to write the contents of a string list to a file. Each element in the list becomes a line in the file. The example script below reads the Autoexec.bat file into the listFile string list and then writes that string list to a file named Autoexec.bak.
listFile = ListCreate (STRINGLIST); szPath = "C:\\"; szFileOld = "C:\\Autoexec.bat"; szFileNew = "C:\\Autoexec.bak"; if (ListReadFromFile (listFile, szFileOld) < 0) then MessageBox ("ListReadFromFile failed.", SEVERE); endif; ListWriteToFile (listFile, szFileNew);

Saving InstallScript Files


Table 13-5: Functions that Are Used to Add Elements to Lists Function ListAddItem ListAddString ListReadFromFile Description Adds an item to the list. Adds a string to the list. Reads a text file into a list.

All open files are saved automatically when you click Save on the File menu.

System Restore

Project: This information applies to InstallScript projects.

System Restore is a Windows feature that enables end users to restore PCs corrupted during software installation. The System Restore feature automatically monitors and records key system changes to the end users PC. System Restore reduces support costs and increases customer satisfaction by letting the end user easily undo a change that may have harmed their system or revert to a time when they knew that their system was performing optimally.

570

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

InstallScript installations support System Restore by setting a restore point before starting the file transfer; the end user can then use System Restore to restore the system to the state it was in before the file transfer.

Note: Installation actions (for example, registry changes and file modifications) that take place before file transfer cannot be undone by System Restore.

Your installations are System Restore compatible by default. You can disable System Restore compatibility by placing the following code in your scripts OnBegin event handler:
Disable( PCRESTORE );

If the file Wininit.ini exists in the target machines Windows folder, the installation cannot set a restore point. To handle Wininit.ini, put code like the following in the OnFirstUIBefore and OnMaintUIBefore event handler functions:
/* Look for Wininit.ini in the Windows folder. If it is found ... */ if FindFile( WINDIR, "Wininit.ini", svResult )=0 then bRebootForSystemRestore = TRUE; /* ... get its size. */ GetFileInfo( WINDIR ^ "Wininit.ini", FILE_SIZE, nvSize, svResult ); /* If its size is zero bytes ... */ if nvSize=0 then /* ... delete Wininit.ini. */ if DeleteFile( WINDIR ^ "Wininit.ini" )=0 then bRebootForSystemRestore = FALSE; endif; endif; /* If Wininit.ini has a non-zero size or could not be deleted, notify the end user and allow a reboot. */ if bRebootForSystemRestore then szQuestion = "Windows System Restore lets you undo " + "changes to your computer. If you want to be able " + "to use System Restore to undo this installation, " + "you must reboot your computer now.\n\n" + "Do you want to reboot your computer now?" if AskYesNo( szQuestion, YES )=YES then System( SYS_BOOTMACHINE ); endif; endif; endif;

Getting and Setting Properties


Windows Installer properties can contain useful information about the product, the setup, the operating system, and the user. By calling MsiGetProperty and MsiSetProperty, you can directly interact with these properties in your immediate InstallScript custom action.

Note: Note that the MsiGetProperty and MsiSetProperty properties cannot be used for deferred InstallScript custom actions, which do not have access to the active .msi database and do not recognize any Windows Installer properties. They can access only the information that has been written into the execution script.

The following example retrieves the user name from the Windows Installer setup package, confirms the value, gives the user the opportunity to change it, and then writes the new value back into the database:
InstallShield 2010 User Guide ISP-1600-UG00 571

Chapter 13: Customizing Installation Behavior Using InstallScript

// Include header file for built-in functions #include "isrt.h" // Include header file for MSI API functions and constants #include "iswi.h" export prototype Func1(HWND); function Func1(hMSI) STRING svName; NUMBER nvSize, nResponse; begin // Retrieve the user's name from the MSI database nvSize = 256; MsiGetProperty (hMSI, "USERNAME", svName, nvSize); nResponse = AskYesNo ("Your name will be registered as " + svName + ". Is this correct?", YES); if nResponse = NO then AskText ("Enter the name that will be registered for " + "this product.", svName, svName); MsiSetProperty(hMSI, "USERNAME", svName); endif; end;

Using Bit Flags

Project: This information applies to InstallScript projects.

Bit flags are one or more (up to 32) Boolean values stored in a single number variable. Each bit flag typically has a corresponding predefined constant associated with it; this constant has the bit for this flag set to 1 and all other bits set to 0. For example, the following constant identifies the bit flag for bit 0, that is, the right-most bit in the number:
#define BITFLAG_EXAMPLE_1 0x00000001

Other bit flags could be the following:


#define BITFLAG_EXAMPLE_2 0x00000002 #define BITFLAG_EXAMPLE_3 0x00000004

Note that 0x00000003 is not a valid bit flag, since this value corresponds to two bits in the number being set to 1.

Setting Bit Flags in a Variable


To set bit flags in a variable, use the bitwise OR operator (|). For example, to assign the value BITFLAG_EXAMPLE_1 and BITFLAG_EXAMPLE_2 to the number variable nFlags, use code like the following:
nFlags = nFlags | BITFLAG_TEST_1 | BITFLAG_TEST_2;

Clearing a Bit Flag from a Variable


To clear a bit flag from a variable, combine the bitwise AND operator (&) with the bitwise NOT operator (~). For example, to remove the BITFLAG_TEST_1 flag from nFlags, use code such as the following:
572 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

nFlags = nFlags & ~BITFLAG_TEST_1;

Testing a Variable for a Bit Flag


To test a variable for a bit flag, use the bitwise AND operator (&) and the bit flag constant to zero all the bits other than the bit for which you are testing. For example, if nFlags is currently set to BITFLAG_TEST_1 | BITFLAG_TEST_2, the following expression evaluates to true (that is, a non-zero result):
nFlags & BITFLAG_TEST_1

All bits other than the rightmost bit are set to 0 by the & operation; the rightmost bit is 1 since it is 1 in both the constant BITFLAG_TEST_1 and nFlags. The following expression evaluates to FALSE since the third bit of nFlags is 0 and all other bits are set to 0 by the & operation:
nFlags & BITFLAG_TEST_3

String Comparisons
When InstallShield compares two strings, it starts by comparing the initial character in the first string with the initial character in the second string. If those characters are equal, InstallShield then compares the characters in the next position of each string. If those characters are also equal, it moves on to the characters in the next position, continuing in sequence until it encounters one of the following conditions:

Two characters in the same relative position in the two strings do not match. In this case, InstallShield bases its resolution on the comparison of those two characters. If the character in string one has a greater value than the character in the corresponding position of string two, then string one is greater; otherwise string two is greater. The end of one string is encountered without finding unequal characters in corresponding positions. In this case, the strings are of unequal length and therefore they are not equal. The end of both strings is reached without finding unequal characters in corresponding positions. In this case, the strings are equal in length and all characters match; therefore the strings are equal.

Consider the following example:


svString1 = "trusting"; svString2 = "TRUTHFUL"; if svString1 = svString2 then MessageBox("Equal", INFORMATION); else MessageBox("Not Equal", INFORMATION); endif;

String comparisons are not case-sensitive. Because an uppercase character is equal to its lowercase counterpart, InstallShield finds that the first three characters of trusting and the first three characters of TRUTHFUL are equivalent. The comparison ends with the test of the characters in the fourth position of each string. Since s is lower than t in the ASCII character table, svString1 does not equal svString2. The remaining characters are not compared and the else branch is executed.

Note: The value of each character is based on its ASCII value. For information about the ASCII values of specific characters and symbols, refer to a basic programming manual.
InstallShield 2010 User Guide ISP-1600-UG00 573

Chapter 13: Customizing Installation Behavior Using InstallScript

Using Null-Delimited Strings

Project: This information applies to InstallScript projects.

Note the following when using a null-delimited, double-null-terminated string (for example, abc\0def\0ghi\0\0; such strings are also sometimes referred to as multiple null-delimited strings or multiple null-terminated strings):

When declaring a variable that will be set to a null-delimited string value, explicitly size the variable; for example:
STRING szString[1024];

Do not use autosizing; the installation engine expects autosized strings to not include null characters within the string.

Do not try to create arrays of null-delimited strings; since array elements must always be autosized, string arrays do not currently support this type of string. The specified size of a null-delimited string should be at least the number of characters to be stored plus two for the two terminating null characters. Since strings are automatically initialized to all null characters, you do not need to explicitly set the second-to-last character to null (though this will not cause any adverse effects) unless you have previously set the second-to-last character to something other than null. The best way to determine the length of a null-delimited string is to call the CharReplace function to replace the null characters and then call the StrLengthChars function to determine the size of the resulting string. The StrGetTokens and StrPutTokens functions may be useful when working with null-delimited strings. Most InstallScript functions other than the ones noted above do not work with multiple nulldelimited strings. If you want to use a multiple null-delimited string with a built-in function, use the CharReplace function first to replace the null characters with another character, such as an underscore (_).

Relative Path
A relative path includes all of the information necessary to locate a file by starting at the current folder on the current drive, for example, Support\Validation. That folder can be located along that relative path only if it exists in the current directory.

Long File Names


Windows operating systems that are 32 bit support long file names. Long file names enable end users to give directories and files more meaningful names. The term long file name refers to both long file names and long paths. InstallShield provides the long file name functions to facilitate the installation of 16-bit applications and 32-bit applications that do not recognize long file names. It is your responsibility to determine your applications requirements. InstallShield provides the tools to help you install any kind of application.
574 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Long File Names and 16-bit Applications


You can launch 16-bit applications using long file names, but you cannot pass long file names as arguments to 16-bit applications; 16-bit applications require the short file name versions of long file names to function correctly. If your installation passes a file name to a 16-bit application, you must provide a valid short file name to the application. Long file names will not work. If your installation writes file names to files such as .ini files, and if 16-bit applications are expected to use the files, you must write short file names that the 16-bit applications can use.

Long File Names and Double Quotation Marks


Under 32-bit operating systems, such as Windows 9x, NT, and 2000, if you pass a long file name containing one or more space characters to the command line (such as in a DOS shell or in the Command Line field in an icons properties sheet), you must enclose the long file name in double quotation marks. This is necessary because the command line recognizes the space character as a delimiter separating a command from other arguments. The double quotation marks convert the long file name to a string literal, allowing the command line to receive it as a single argument. Under 32-bit operating systems, such as Windows 9x, NT, and 2000, if you pass a long file name containing one or more space characters to the command line, it must be enclosed in double quotation marks. However, due to the manner in which Windows NT accesses icon files, if a long file name in double quotation marks is used in the Command Line field in an icons properties sheet, the default Windows icon may display instead of the applications icon. To display your products icon, you can specify the icons path in the parameter szIconPath of the function AddFolderIcon when using it to add an icon to a program folder. Double quotation marks must be removed from long file names before they can be converted to short file names in InstallShield. Refer to the LongPathToQuote and LongPathToShortPath functions.

Long File Name Format


Long file names contain names longer than the conventional 8.3 (eight characters plus a three-digit extension) short file name limit. Long file names allow the use of all the characters used in short file names. In addition, long file names can contain plus signs (+), commas (,), semicolons (;), equal signs (=), left and right square brackets ([ ]), and spaces. Leading and trailing spaces are ignored. The fully qualified long file name (including null terminating character) can be up to 256 characters long on NTFS file systems and 260 characters long on VFAT file systems. By default, the operating system creates a short file name for every long file name. The short file name consists of the first six characters of the long file name, a tilde (~), and a number.

Defining Constants Through the Compiler


You can define InstallScript constants on the Compile/Link tab of the Settings dialog box instead of in the script. The following restrictions apply when defining constants on this tab:

InstallShield 2010 User Guide

ISP-1600-UG00

575

Chapter 13: Customizing Installation Behavior Using InstallScript

You can define only numeric constants. If you define a constant that you defined with a #define statement in the script, you will generate an error. If you define a constant that you defined as a variable in the script, the value of the constant will be lost at run time.

Using Windows Constants in a Script


Some Windows constants are predefined in Windefs.h, which is automatically included when you include Ifx.h in your installation. You do not need to redefine any constants that are defined in Windefs.h; doing so will result in a compiler warning. To determine which constants are predefined, refer to Windefs.h, which is in the InstallShield folders Script\isrt\Include subfolder. To use constants that are not defined in Windefs.h, you must define them (using #define) in the declaration block of your installation script. You cannot simply include the Windows.h file that is usually part of a C++ program. The values that you need to assign to the undefined constants can generally be found in an include file provided with the appropriate Windows SDK or development tool. (For Microsoft Visual C++, most constants can be found in the Winuser.h file, which is located in the Microsoft Visual Studio folders VC98\Include subfolder.)

Coding Long String Literals


To make a very long string literal more easily readable in a script, split the long string into two or more shorter strings, place them on consecutive lines, and concatenate them. In InstallScript, concatenation is performed with the plus sign (+). The example below shows how to split a long string literal across several lines of code in this way:
szMonths = "January, February, March, April, " + "May, June, July, August, September, " + "October, November, December";

Absolute Path

Project: This information applies to InstallScript projects.

An absolute path includes all of the information necessary to locate a file by starting at the root directory of a specified drive. For example, C:\Program Files\InstallShield\2010 is the absolute path to the InstallShield folder when installed on drive C.

Building Functions
Typically, functions are declared at the top of the file, and the body is defined at the bottom of the file. After you declare a function prototype, you need to define the function itself in the function block. Each function block contains only one function.

576

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Task

To build a function: 1. 2.

Start the function body with the keyword function. Type the return value data type used in the function prototype, or type void if the function prototype specifies a return type of void (which indicates that the function does not return a value). If the function prototype does not specify a return type, it is not necessary to enter one here. Type the function name. To the right of the function name, type the names of the arguments that you are using in parentheses. The arguments must correspond in data type to the parameters that you declared in the declare block.

3. 4.

Note: InstallScript functions do not allow you to pass an assignment statement as a parameter. In addition, you cannot use the && or || operators within an argument to a function.

Steps 1 and 2 create the function header. Function headers do not end with a semicolon in InstallScript.
5. 6.

Declare any local variables that you will use in the function. Then type the keyword begin on a line by itself, without punctuation. After the begin line, add whichever statements you need in order to accomplish your particular task. You can also use a return statement, particularly if you want to return a specific value from the function. See below for information on returning values from a function.

7.

End your function with the keyword end.

A sample function block is shown below:


function GetPathParts(szFullPath, svDrv, svPath, svName) LONG lResult; begin lResult = ParsePath(svDrv, szFullPath, DISK); if (lResult = 0) then lResult = ParsePath(svPath, szFullPath, DIRECTORY); endif; if (lResult = 0) then lResult = ParsePath(svName, szFullPath, FILENAME); endif; return lResult; end;

Note: User-defined functions can return a value with a return statement. Other types of data can be returned in parameters that have been declared with the BYREF operator.

InstallShield 2010 User Guide

ISP-1600-UG00

577

Chapter 13: Customizing Installation Behavior Using InstallScript

Calling Functions
All functionswhether user-defined, built-in, Sd, or externalare called in the same way. Type the name of the function, followed by the parameters that you want to pass to the function. For example:
MyFunction (MyAge, MyHeight, MyWeight);

Note: InstallScript functions do not allow you to pass an assignment statement as a parameter. In addition, you cannot use the && or || operators within an argument to a function. An autosized string variable that is passed by reference to a function is not autosized within the called function. If the function attempts to assign a value whose length is greater than the current size of that parameter, run-time error 401 occurs. To avoid this error, declare strings with a specific size when they are to be passed by reference to a function.

Calling a .dll File Function


There are three rules you must remember when you are calling .dll file functions from your InstallScript installation script:

The maximum length of the .dll file name is 33 characters; the maximum length of the function name is 63 characters. The installation cannot accept a composite parameter (that is, a parameter with a width exceeding 4 bytes) when calling a .dll file. However, a parameter can be a pointer that points to a composite structure. A string variable whose address is stored in a pointer variable cannot be changed by passing the pointer to a .dll file function. To allow a .dll file function to change the value of a string variable, pass the variable itself as an argument to the function, after declaring the data type of that argument specifying the BYREF operator.

Task

To call a .dll file function from your script: 1. 2. 3. 4.

Add the .dll file to your project as a support file if you have not already done so. For more information, see Adding Support Files. Open the InstallScript view. In the InstallScript explorer, click the InstallScript file (.rul) that should call the .dll function. At the beginning of the script, prototype the function using the following syntax:
prototype [CallingConvention] [ReturnType] DLLName.FunctionName( ParamType1, ParamType2, ... );

For example:
prototype BOOL MyDLL.MyFunction( INT, INT, INT );

You can specify the calling convention to be cdecl or stdcall. If you do not specify a calling convention, InstallShield uses stdcall.

578

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Note that the .dll file name is case-sensitive; for example, the script compiler treats MyDLL.MyFunction and mydll.MyFunction as different functions. When prototyping functions from User.exe, User32.dll, Gdi.exe, Gdi32.dll, Krnl386.exe, Krnl286.exe, or Kernel32.dll, you may use the keywords USER, GDI, and KERNEL in place of the .dll file name. You can specify the return type to be any InstallScript data type except LIST. If you are declaring a .dll file function call in which a wide-character string argument is expected, use the wstring data type. If you do not specify a return type, the installation assumes that the .dll file function returns a 4-byte value.
5.

Load the .dll file by calling the UseDLL function. For example:
UseDLL( SUPPORTDIR ^ "MyDLL.dll" );

Note: You do not have to load _isuser.dll, _isres.dll, or Windows API .dll files, such as User.exe, User32.dll, Gdi.exe, Gdi32.dll, Krnl386.exe, Krnl286.exe, and Kernel32.dll. Do not call UseDLL and UnUseDLL to load and unload these .dll files. 6.

Call the function as you would call any other function. For example:
bResult = MyDLL.MyFunction( nInt1, nInt2, nInt3 );

It is recommended that you include the .dll file name in the function call, as in the preceding example. If your script declares functions with the same name from different .dll files, calling the function without including the .dll file name results in a compiler error. If the installation does not find the called function in the .dll file, the installation raises an exception, which you can handle by using a try...catch...endcatch block.
7.

After all script calls to the .dll have been made, unload the .dll file by calling UnUseDLL. For example:
UnUseDLL( SUPPORTDIR ^ "MyDLL.dll" );

Note: You can use the IS_NULLSTR_PTR variable to pass a null pointer to an external DLL function or Windows API through a parameter that has been prototyped as an InstallScript string. For more information, see IS_NULLSTR_PTR.

Declaring Functions
The first step in creating a user-defined function is to declare the function. The keyword prototype tells the InstallShield script compiler that the line contains a function definition.

Task

To declare a function: 1. 2.

Type the keyword prototype. Type the functions return type. (This step is optional. If you do not enter a return type, it is assumed that the function returns a NUMBER value or no value.) To specify that the function does not return a value, type void. On the same line, enter the function name.

3.

InstallShield 2010 User Guide

ISP-1600-UG00

579

Chapter 13: Customizing Installation Behavior Using InstallScript

4. 5. 6.

After the function name, type the data types of the parameters, and enclose them in parentheses and separate them by commas. If there are no parameters, put empty parentheses to the right of the function name. End the line with a semicolon (;).

In the following examples, FunctionName is a function containing three parameters. The arguments passed when calling FunctionName must be, in order, INT, STRING, and SHORT. CopyBitmapExample has no parameters. FileTransfer has five parametersthree LONG variables and two STRING variablesand returns a NUMBER value.
prototype FunctionName (INT, STRING, SHORT); prototype CopyBitmapExample( ); prototype NUMBER FileTransfer (LONG, LONG, LONG, STRING, STRING);

When you are declaring .dll functions, use the format <DLL file name>.<function name> for the name of the .dll file function. For example:
prototype MyDLL.MyFunction(INT, INT);

The above declaration signals to the InstallScript compiler that the program will call a function named MyFunction, with two INT parameters, in a file named Mydll.dll. You can also optionally declare a calling convention, either cdecl or stdcall, when declaring a .dll file function. For example:
prototype cdecl MyDLL.MyFunction(INT, INT);

If you do not explicitly declare a calling convention, InstallShield uses stdcall. If you explicitly declare both a calling convention and a return type, place the calling convention before the return type.

Note: Most Windows API functions use the stdcall calling convention, but some C or C++ development environments build .dll file functions with the cdecl calling convention unless you prototype your C or C++ function with the __stdcall modifier. For more information, consult your compiler documentation. Many Windows API functions are declared in the header file ISRTWindows.h, which is automatically included when you include Ifx.h in your script. (You can prevent the automatic definition of Windows APIs by placing the preprocessor constant ISINCLUDE_NO_WINAPI_H in the Preprocessor Defines box on the Compile/Link tab of the Settings dialog box.)

Returning Values from Functions


Like InstallScripts built-in functions, user-defined functions can be designed to return a value to the caller. To return a value from a function, you must include a return statement, followed by the value to be returned, before the functions end statement. If you do not include a return statement or if you do not specify a value after the keyword return, the value returned by the function is unpredictable. (If the function prototype specifies a return type of void, the function cannot return a value.) Many programmers use return statements to return error codes that indicate the success or failure of a function call. Most of InstallScripts built-in functions use a return statement for that purpose. The return statement also is used commonly to create functions that return the result of an operation performed on parameters passed to the function, as in the example below, which returns the area of a rectangle:

580

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

function RectangleArea (nLength, nWidth) INT nVal; begin nVal = (nLength * nWidth); return nVal; end;

The keyword return can be followed by a constant, a variable, a numeric or string expression, or a function call. In the example below, RectangleArea has been modified to eliminate the assignment statement; the arithmetic expression follows the keyword return:
function RectangleArea (nLength, nWidth) begin return (nLength * nWidth); end;

The value returned by a function can be ignored by the calling program or function, tested in a conditional expression, or assigned to a variable. In the following example, the return value from RectangleArea is assigned to the variable nArea:
nArea = RectangleArea (nLong, nWide);

In the next example, the result of RectangleArea is tested in a conditional expression:


if (RectangleArea(nLong, nWide) > nMaxArea) then MessageBox("Area exceeds maximum allowed.", INFORMATION); endif;

To return more than one value or non-numeric values, use the BYREF operator to define parameters that are passed by reference.

Unsupported Functions
Some of the functions that were available in InstallShield Professional and InstallShieldWindows Installer Edition are not supported in InstallShield.

Component Functions
In InstallShield, features are the top-most level of project organization from the end users perspective. Because of this, component functions are now feature functions. For example, ComponentDialog is now FeatureDialog. Nearly all of the component functions are available to you as feature functions in InstallShield.

Project: Feature functions are available for use in InstallScript and InstallScript MSI project types. If you have a Basic MSI project, you must convert your project to the InstallScript MSI project type in order to use feature functions in your installation.

PreShowComponentDlg and PostShowComponentDlg


In InstallShieldWindows Installer Edition 2.x, you had to call the PreShowComponentDlg and PostShowComponentDlg functions in order to use component-related (now feature-related) functions. In InstallShield, feature-related functions are available only for InstallScript and InstallScript MSI project types. If you have a Basic MSI project, you must convert your project to the InstallScript MSI project type in order to use feature functions in your script.

InstallShield 2010 User Guide

ISP-1600-UG00

581

Chapter 13: Customizing Installation Behavior Using InstallScript

Because feature functions are not supported for use in Basic MSI projects, the PreShowComponentDlg and PostShowComponentDlg functions are no longer necessary and are not supported.

Writing Entry-Point Functions

Project: This information applies to the following project types:

Basic MSI with InstallScript custom actions Merge module with InstallScript custom actions InstallScript MSI

When Windows Installer executes an InstallScript custom action, InstallShield calls the function that you specified when you created the custom action. Every InstallScript custom action must have an exported, user-defined function as an entry point into the script.

Prototyping and Defining Functions


An entry-point function is prototyped and defined like any other function, except that it has the following requirements:

Its prototype must include the keyword export to declare it as an exported function. The function can accept only one argument, which must be a handle to the .msi database. It should return a value meaningful to Windows Installer, if your custom action is designed to wait for a return value. These custom action return values are defined in IsMsiQuery.h and available to you if you include IsMsiQuery.h or Iswi.h in your script.

The following example script declares an entry-point function, which returns success if it succeeded:
// Include Isrt.h for built-in InstallScript function prototypes. #include "isrt.h" // Include Iswi.h for Windows Installer API function prototypes and constants. #include "iswi.h" export prototype MyFunction(HWND); function MyFunction(hMSI) STRING szKey, svValue, svPath; NUMBER nvType, nvSize, nReturn; begin RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE); szKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\isdev.exe"; nReturn = RegDBGetKeyValueEx (szKey, "Path", nvType, svValue, nvSize); // The App Paths key contains the folder where InstallShield was // installed, followed by a semicolon. StrSub (svPath, svValue, 0, StrFind(svValue, ";")); if nReturn = 0 then MessageBox ("InstallShield is installed to " + svPath, INFORMATION); return ERROR_SUCCESS; else MessageBox ("Cannot determine where InstallShield is installed.", SEVERE); return ERROR_INSTALL_FAILURE;
582 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

endif; end;

Multiple Entry Points


Your script can have multiple entry-point functions in it to serve multiple custom actions. However, InstallShield calls only the single entry-point function specified for each InstallScript custom action.

Adding Function Calls with the Function Wizard


You can use the Function Wizard to select a function, specify its arguments, and insert the function in your script.

Declared Windows API Functions

Project: This information applies to InstallScript projects.

This Windows API function is declared in the header file WinAPI.h or Winproto.h, which are automatically included when you include Ifx.h in your script. If this function is also explicitly declared in your script code, do one of the following:

Remove your function declaration and use the declaration provided by InstallShield. If you are creating a script that needs to be compatible in both InstallShield 2010 and versions of InstallShield Professional earlier than 7, surround your declaration with code such as the following:
#if _ISCRIPT_VER < 0x700prototype ...#endif

(The current value of _ISCRIPT_VER is 0x900.) You may also need to update code that calls the Windows API function, if the declaration defined by InstallShield is different than your declaration. You can prevent the automatic definition of Windows APIs by placing the preprocessor constant ISINCLUDE_NO_WINAPI_H in the Preprocessor Defines box on the Compile/Link tab of the Settings dialog box.

Specifying a Non-Default Feature Event Handler Function


By default, if the file Setup.rul exists in the InstallScript view and defines a function <feature name>_<event name> (for example, NewFeature1_Installing), then that function is the handler for that event of that feature. You can select a different function to be the handler for the feature event. It can be any function defined in any script file in the InstallScript view, as long as it takes no arguments and is declared using the export keyword, for example:

InstallShield 2010 User Guide

ISP-1600-UG00

583

Chapter 13: Customizing Installation Behavior Using InstallScript

export prototype MyFeatureHandler();

Task

To specify a non-default feature event handler function, do the following: 1. 2.

Open a script file (.rul file) in the InstallScript view. Do one of the following in the script editor pane:

Declare and define the function that you want to specify as a feature event handler. In the Event Category and Event lists at the top of the script editor pane, select the feature and select an event handler. InstallShield automatically creates the event handler (for example, Feature1Installing).

Note: If you put parentheses in a features name, event handler functions with names of the default form <feature name>_<event name> will not compile properly.

Accessing Global Variables

Project: This information applies to InstallScript MSI projects.

A global variable is data declared outside of a function and available to any module in the script. By using global variables, you can share persistent data with event handlers, entry-point functions, and user-defined functions. For example, if you retrieve the value of the operating systems version in your OnBegin event handler, you can later access that global value in an entry-point function. The following script excerpt illustrates this:
// Include header file for built-in functions #include <isrt.h> // Include header file for event handlers and MSI APIs #include <iswi.h> // Declare global variable NUMBER nvResult; // Prototype entry-point function export prototype MyFn(HWND); function OnBegin() // Declare local variable STRING svResult; begin GetSystemInfo (WINMAJOR, nvResult, svResult); end; function MyFn(hMSI) begin if nvResult > 4 then // Code for version of Windows later than 4.0 else // Code for Windows 4.0
584 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

endif; end;

Important: Global variables share state across all event handlers. However, if you create an InstallScript custom action for your project, global variables will not share state from the InstallScript custom action to the event-driven InstallScript code, or vice versa. Thus, if you declare a global variable in your event-driven InstallScript code, that variable would not be available to your InstallScript custom action. Similarly, if you declare a variable in your InstallScript custom action, that variable would not be available to your event-driven InstallScript code.

Uninstalling Initialization (.ini) File Entries


The uninstallation will remove modifications that are made with the InstallScript initialization file functions while logging is enabled. For more details, see the information in this section of the help library.

General Limitations of Uninstalling Initialization (.ini) File Entries


The following limitations apply to uninstalling .ini file entries and modifications automatically:

Logging must be enabled when the .ini file functions are called. If an .ini file was created by any of the .ini file functions, it is not removed. If a section name was created by any of the .ini file functions, it is not removed, even if no more keys are present. If a key value is completely replaced by an InstallScript function (not appended to, or prepended to), the key values that existed before the installation are not restored. In this case InstallShield considers the replaced key a newly created key and will uninstall it as if it is a new key that was created by the installation. The uninstallation does not restore keys or values that were deleted using WriteProfString. To append a value to existing key (for example, network under [386Enh]), the new entry must either be appended at the end or prepended in the very beginning of the existing string, but never inserted in the middle. Only the comma (,) and semicolon(;) are considered valid delimiters. If a string value to be uninstalled is found as a part of longer string, the value and the delimiter before or after it is also removed appropriately (based on the strings position) only if the delimiter is a comma or a semicolon. For example, if the uninstallation removes pqr from the string Key=pqr,rst,uvw, it also removes the comma after pqr. A character other than a comma or a semicolon in its place will not be removed. As a rule, avoid adding spaces around delimiters.

Uninstalling AddProfStrings Initialization (.ini) File Entries


The uninstallation will remove the keyname and value pair completely if the following conditions are true:

The key was successfully created by AddProfString.

InstallShield 2010 User Guide

ISP-1600-UG00

585

Chapter 13: Customizing Installation Behavior Using InstallScript

The keyname and the value pair that exist when the uninstallation is run exactly match the installed keyname and value pair. If another installation or program modifies the installed key between the installation and uninstallation, the keyname and value pair will not be removed completely. Only the value that was created by the original installation will be removed; the key itself and any additional values will not be removed by the uninstaller.

For example, if the System.ini file originally read as follows:


[386Enh] device=votc.386 device=*vmpcd

and after your call to AddProfString, it read as follows:


[386Enh] device=*vmp32 device=votc.386 device=*vmpcd

the uninstallation would remove device=*vmp32. If another installation had added a value to the existing line, only the value from the installation that is being uninstalled will be removed. The original keyname and the new value will be left in the file. For example, if you had added the line Test Values=votc.386 in Test.ini under the [Test] section:
[Test] Test Values=votc.386 Continuous Test=No

and another installation had added a new value to Test Values after your installation had run:
[Test] Test Values=votc.386,pctcp.386 Continuous Test=No

when your application is uninstalled, votc.386 will be removed and TestValues=pctcp.386 will be left in the file:
[Test] Test Values=pctcp.386 Continuous Test=No

Uninstalling ReplaceProfStrings Initialization (.ini) File Entries


The uninstallation will remove the keyname and value pair completely if the following conditions are true:

The key was successfully created by ReplaceProfString. The key did not previously exist. The keyname and value pair that exist when the uninstallation is run exactly match the installed keyname and value pair. If another installation or program modifies the installed key between the installation and uninstallation, the keyname and value pair will not be removed completely. Only the

586

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

value that was created by the original installation will be removed; the key itself and any additional values will not be removed by the uninstaller. For example, if the System.ini file originally read:
[386Enh] device=votc.386 device=*vmpcd

and after your call to ReplaceProfString, it read:


[386Enh] device=*vmp32 device=votc.386 device=*vmpcd

the uninstallation would remove device=*vmp32.

Uninstalling WriteProfStrings Initialization (.ini) File Entries


The uninstallation will remove the keyname and value pair completely if the following conditions are true:

The key was successfully created by WriteProfString. The key did not previously exist. The keyname and value pair that exist when the uninstallation is run exactly match the installed keyname and value pair. If another installation or program modifies the installed key between the installation and uninstallation, the keyname and value pair will not be removed completely. Only the value that was created by the original installation will be removed; the key itself and any additional values will not be removed by the uninstaller.

Extending Your Installation with COM Objects


Important: Do not confuse COM objects with InstallShield objects. They are two separate features.

Instead of using DLLs or other executable files, you can extend your installation with COM objects. COM objects can be integrated into your installation fairly easily. Use the following procedure to assign COM objects in your script.

Task

To assign a COM object: 1.

Declare an object variable. For example:


OBJECT oMyCOMObject

2.

Get a reference to your COM object and assign it to the variable by using the set keyword. For example:

InstallShield 2010 User Guide

ISP-1600-UG00

587

Chapter 13: Customizing Installation Behavior Using InstallScript

set oMyCOMObject = CreateObject ( szMyProgID );

The value of szMyProgID is a valid program ID for your COM object. If you leave the set keyword out, the script engine attempts to set the default property of oMyCOMObject to szProgID. Because there is no default property, since oMyCOMObject does not contain a reference to your COM object yet, the script will fail.

Important: By default, once a COM object is loaded by the installation using CoCreateObject, CoCreateObjectDotNet, CoGetObject, or DotNetCoCreateObject, it remains loaded until the installation is finished. The COM object remains loaded regardless of whether the COM object variable goes out of scope or is set to NOTHING. Consequently, the library referenced by the COM object is also not released until the installation is finished. However, it is possible to unload the library referenced by the COM object by calling the Windows API CoFreeLibrary. CoFreeLibrary unloads the library regardless of whether any object variables still reference it. Therefore, you should only call CoFreeLibrary after all objects that reference the library have gone out of scope or are set to NOTHING. See the following example code:
prototype void ole32.CoFreeLibrary( byval int ); int hModule; program // Free the library. hModule = GetModuleHandle( "CSharpClassLibrary.dll" ); if( !hModule ) then MessageBox( "Failed to get module handle", INFORMATION ); else CoFreeLibrary( hModule ); // Release the library endif; endprogram

CoFreeUnusedLibraries can also be used to unload the library. However, by default, the system waits 10 minutes before unloading the library, and in most cases, the installation requires the library to be unloaded immediately. If your installation will run on Windows XP and later only, you can call CoFreeUnusedLibrariesEx, which includes the option of unloading the library immediately.

Below is an example COM object that validates a serial number. It has one method, Validate, and one property, IsEval.
function OnFirstUIBefore() OBJECT oObj; STRING szProgID, szMsg, szTitle, svName, svCompany, svSerial; BOOL bValidSerialNumber, bEval, bValidate; NUMBER nResult; begin szProgID = "MySerialValidation"; set oObj = CreateObject( szProgID ); if ( !IsObject( oObj ) ) then MessageBox( "Object " + szProgID + " is invalid!", SEVERE ); return ISERR_GEN_FAILURE; endif; bValidSerialNumber = FALSE; while (!bValidSerialNumber)
588 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

szMsg = "Please enter your name, company name, and product serial number."; szTitle = "Enter info"; nResult = SdRegisterUserEx( szTitle, szMsg, svName, svCompany, svSerial ); if ( nResult < 0 ) then MessageBox( "Failed to display dialog box.", INFORMATION ); return ISERR_GEN_FAILURE; endif; /* Check the value of the object's IsEval property. */ bEval = oObj.IsEval; /* Execute the object's Validate method and get the return value from the method. */ bValidate = oObj.Validate( svSerial ); if ( bEval || bValidate ) then bValidSerialNumber = TRUE; else MessageBox( "Invalid serial number; please re-enter.", INFORMATION ); endif; endwhile; return ISERR_SUCCESS; end;

Note: You can pass a data structure to your COM object as long as it has the members that your COM object expects. The following is an example of passing a data structure:
#define PERSON_NAME_SIZE 1024 typedef PERSON begin STRING Name[PERSON_NAME_SIZE]; NUMBER Age; end; function OnBegin() PERSON pPerson; NUMBER nPhoneNumber; OBJECT oMyCOMObject; STRING szMyProgID; begin /* Assign a value to szMyProgID in this line. */ set oMyCOMObject = CreateObject ( szMyProgID ); if ( !IsObject( oMyCOMObject ) ) then MessageBox( "Object " + szMyProgID + " is invalid!", SEVERE ); return ISERR_GEN_FAILURE; endif; nPhoneNumber = oMyCOMObject.GetPhoneNumber( pPerson ); return ISERR_SUCCESS; end;

Note: The standard COM return value HRESULT is not visible to an automation client such as InstallScript. To return a value from your COM object method, you should have an [out,retval] parameter in your methods parameter list, as illustrated in the following code samples.

IDL:

InstallShield 2010 User Guide

ISP-1600-UG00

589

Chapter 13: Customizing Installation Behavior Using InstallScript

interface IMyInterface : IDispatch { [id(1)] HRESULT DoSomeWork([in] long nInputValue, [out,retval] long *pReturnValue); }

C++:
STDMETHODIMP MyInterfaceImpl::DoSomeWork(long nInputValue, long *pReturnValue) { // your implementation code *pReturnValue = 1; //return a value to client return S_OK; }

InstallScript:
function OnBegin() NUMBER nObjReturn; begin set oMyCOMObject = CreateObject("MyProgID"); if (IsObject(oMyCOMObject) then nObjReturn = oMyCOMObject.DoSomething(10); /*nObjReturn will contain the value 1, returned from your implementation*/ endif; end;

Calling a Windows API Function


Project: This information applies to the following project types:

InstallScript InstallScript MSI

Task

To call a Windows API function: 1.

At the beginning of the script, prototype the function using the following syntax:
prototype ReturnType DLLName.FunctionName( ParamType1, ParamType2, ... )

For example:
prototype INT User.LoadString( INT, SHORT, BYREF STRING, INT );

Use Dumpbin.exe with the /EXPORTS option to determine which functions reside in any of the Windows API DLLs Kernel32.dll, User32.dll, and GDI32.dll. Consult a Windows programming reference such as the Microsoft Development Library (MSDL) to determine the return type and parameter types for a function.

Note: You can specify the return type to be one of the following InstallScript data types: BOOL, CHAR, HWND, INT, LONG, LPSTR, NUMBER, POINTER, or SHORT. If a return type is not specified, InstallShield assumes that the DLL function returns a 4-byte value. 2.

Call the function as you would call any other function. For example:
ISP-1600-UG00 InstallShield 2010 User Guide

590

Chapter 13: Customizing Installation Behavior Using InstallScript

nResult = LoadString( iInstance, nStringID, szMyString, MAX_SIZE );

3.

To get extended error information if the function fails, check the value of the Err objects LastDllError property. (It is not possible to call the Windows API function GetLastError to get extended error information, since the setup itself changes this value before returning control to the script.)

Embedding Custom Transfer File Operations


In InstallShield, you can embed additional file transfer operations during the standard file transfer of the installation. Also, the progress bar is updated smoothly and appropriately during these operations. There are a few different common scenarios in which you would use this functionality. This table provides an overview of what functions are called for each scenario.
Table 13-6: Determining Which Functions Are Appropriate for Common Custom Transfer File Operations Scenario Using FeatureMoveData XCopyFile or CopyFile LaunchApplication (external applications) Function that Should Be Called None FeatureAddCost FeatureAddCost, FeatureSpendCost, FeatureAddUninstallCost, or FeatureSpendUninstallCost

These procedures include step-by-step information about how to use custom file transfer operations for each scenario.

Task

To install additional files during the standard file transfer operation using XCopyFile or CopyFile: 1.

Before file transfer, determine the size of the files to be installed, taking into account the cluster size on the target folder for the files. You can accomplish this using the GetAndAddFileCost, CalculateAndAddFileCost, and/or GetAndAddAllFilesCost functions. Using the FeatureAddCost function, add the cost determined in Step 1 to the cost for the feature that these files are associated with. Note that all cost must be associated with a particular feature. Therefore, if the files to be installed are not associated with an existing feature, you must create a dummy feature or use an existing feature. During file transfer, call the XCopyFile function to install the files. Typically, this would be done during the Installing event of the feature associated with the additional files or in the OnMoving or OnMoved events. The progress bar is updated smoothly and appropriately during the call. Note that you should disable the Cancel button in the status dialog during the XCopyFile operation. See the description for the XCopyFile function for more information.

2.

3.

Note: There is no additional action required for the uninstallation. The files are uninstalled while the uninstallation progress is updated appropriately.

InstallShield 2010 User Guide

ISP-1600-UG00

591

Chapter 13: Customizing Installation Behavior Using InstallScript

Task

To call an external installation that installs additional files during the standard file transfer operation: 1.

Before file transfer, determine the size and number of the files to be installed (or other operations) by the external installation by examining the external installation and taking note of what operations occur. Using the FeatureAddCost function, add the cost determined in Step 1 to the cost for the feature that this installation is associated with. Note that all cost must be associated with a particular feature. Therefore, if the files to be installed are not associated with an existing feature, you must create a dummy feature or use an existing feature. Review the two scenarios below. If the external installation is called during uninstallation, add the number of operations and size of the operations to the uninstallation cost using FeatureAddUninstallCost. During file transfer, use the LaunchApplication event to launch the installation, typically in silent mode. Typically, this would be done during the Installing event of the feature associated with the additional files or in the OnMoving or OnMoved events. Use the LAAW_USE_CALLBACK option so that your script regains control periodically during the installation and uninstallation. Override the OnLaunchAppAndWaitCallback event, and add code to poll the running installation to determine its progress. Then call the FeatureSpendCost (Installation) function or the FeatureSpendUninstallCost (Uninstallation) function to spend the appropriate amount of cost that the installation has completed. Repeat this process while the external installation is running. The progress bar is updated smoothly and appropriately during the call. Note that you might have to adjust the LAAW_PARAMETERS.nCallbackInterval so that the OnLaunchAppAndWaitCallback event is called often enough to keep the progress updated smoothly.

2.

3. 4.

5.

Expressing Large Numbers in InstallScript


When a number is stored in an InstallScript integer, only 31 bits of data are available to store the value. Therefore, the maximum value that can be expressed is 2^31 (2 GB). Note also that since InstallScript integers are always considered to be signed, the 32 bit is interpreted as the sign bit and cannot be used to store numeric data. This limits the values that can be expressed to 2^31 (2 GB) instead of 2^32 (4 GB), which could be stored in an unsigned data type. In some cases, it is necessary or desirable to be able to specify larger values. To accomplish this in InstallShield, a number of functions support the specification of large numbers as a pair of 32-bit numbers with the sign bit (32 bit) of each number always being set to 0 to indicate a positive number. Using this format, it is possible to specify and retrieve a number with up to 62 bits of data or 2^62 of size. Note however that since the language does not have a data type that can express the number as a single variable, the operations that can be performed on this data are limited. This data is typically passed between functions that support these values. The data can also be converted to a single value expressed in a larger size unit (such as KB or MB) using the ConvertSizeToUnits function or passed to an external .dll function that can handle larger data types.

592

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

When a number is specified as a high/low pair, the lower 32-bit value specifies the lower 31 bits of data (with the sign bit always set to 0 and ignored) of the full value. The upper 32-bit value specifies the upper 31 bits of data (again with the sign bit always set to 0 and ignored). For example, an upper value of 4 actually indicates 4 * 2^31 or 8589934592 (8 GB) of size. This, combined with a lower value of 100, would indicate a total size of 8589934692 units. Note that in the case of numbers less that 2^31, the high value will always be 0 and thus can be ignored if you are sure that the size of the value will never exceed 2^31. However, it is recommended that if you need to use this data for computations, you use the ConvertSizeToUnits function to convert this data to a single value of the most appropriate units with minimal amount of rounding to express the data in a single value.

Note: Note that convention differs from the unsigned high/low value pairs used by Windows in which the lower value stores the lower 32 bits of data and the high value stores the upper 32 bits of data. The ConvertWinHighLowSizeToISHighLowSize function is provided for easy conversion of data returned by Windows API functions.

The following functions support high/low value pairs:

GetDiskInfo GetFileInfo GetAndAddFileCost CalculateAndAddFileCost GetAndAddAllFilesCost FeatureFileInfo FeatureGetCostEx FeatureAddCost FeatureSpendCost ConvertWinHighLowSizeToISHighLowSize ConvertSizeToUnits

Installing Device Drivers


InstallShield supports installing device drivers in InstallScript installations using Windows Driver Install Frameworks (DIFx), which includes the DIFxAPI component. This component allows drivers to be installed or uninstalled without using the Windows Installer.

Project: This information applies to InstallScript projects. Installing device drivers is supported in InstallScript MSI and Basic MSI projects using the DIFx Windows Installer functionality. For information on configuring device drivers using the Windows Installer, see Configuring Device Driver Settings.

InstallShield 2010 User Guide

ISP-1600-UG00

593

Chapter 13: Customizing Installation Behavior Using InstallScript

Task

To install a 32-bit DIFx driver in an InstallScript project: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. For the DIFx Support (for 32-bit platforms) setting, select Enabled. Add the DIFx driver files to the project. Override the feature event for the feature containing the DIFx driver files and either call the DIFxDriverPackageInstall function for non-Plug and Play (PnP) drivers or the DIFxDriverPackagePreInstall function for PnP drivers. Build and run the installation.

5.

Task

To install a 64-bit DIFx driver in an InstallScript project: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. For the DIFx Support (for 64-bit Itanium platforms) setting or the DIFx Support (for 64bit AMD platforms) setting, select Enabled. Add the DIFx driver files to the project. Override the feature event for the feature containing the DIFx driver files and either call the DIFxDriverPackageInstall function for non-Plug and Play (PnP) drivers or the DIFxDriverPackagePreInstall function for PnP drivers. Build and run the installation.

5.

Checking the Compiler Version


In InstallShield, _ISCRIPT_VER is defined as 0xVVM, where VV is the major version of the product and M is the maintenance pack release number. For example, 0x900 evaluates as InstallShield DevStudio version 9.0 and maintenance pack 0 (the first release). This preprocessor constant was defined in InstallShield Professional 7 as 0x700 and in InstallShield Professional 6 as 0x600, but is undefined and evaluates as zero in InstallShield Professional 5.x. You can use this constant to test whether the InstallShield compiler is being used by including code like the following in your script. This code tests for the existence of the first release of InstallShield DevStudio (version 9.0, maintenance pack number 0) or later.
#if _ISCRIPT_VER >= 0x900 MessageBox( "DevStudio 9.x and above",INFORMATION ); #elif _ISCRIPT_VER >= 0x700 MessageBox ( "This is an IS 7.x compiler.", INFORMATION ); #else MessageBox ( "This is an IS 6.x compiler or below.", INFORMATION ); #endif

594

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Preprocessor Constants Maintained for Backwards Compatibility


The preprocessor constants _ISCRIPT_ISPRO and _ISCRIPT_ISDEV will be maintained for backwards compatibility. _ISCRIPT_ISPRO is defined for InstallScript projects (and InstallShield Professional projects). _ISCRIPT_ISDEV is defined for InstallScript MSI projects and Basic MSI projects.

Checking the Authoring Environment with _ISCRIPT_ISDEV and _ISCRIPT_ISPRO


Project: This information applies to InstallScript projects.

The preprocessor constant _ISCRIPT_ISPRO is defined in InstallScript projects (and in InstallShield Professional projects) but is undefined and evaluates as zero in InstallScript MSI and Basic MSI projects. The preprocessor constant _ISCRIPT_ISDEV is defined in InstallScript MSI and Basic MSI projects but is undefined and evaluates as zero in InstallScript projects (and in InstallShield Professional projects). You can use _ISCRIPT_ISDEV and _ISCRIPT_ISPRO to write a single script that produces different behavior in the different project types by including code like the following in your script:
#ifdef _ISCRIPT_ISPRO // code specific to InstallShield Professional and InstallScript projects #else #ifdef _ISCRIPT_ISDEV // code specific to Basic MSI and InstallScript MSI projects #endif #endif

Launching an Installation from Another InstallScript Installation


Project: The following information applies to InstallScript projects.

Calling DoInstall
The preferred way to launch an installation created with InstallShield is to call the DoInstall function, as described below:
1. 2.

Create a complete installation project for the child (launched) installation; all the files generated by InstallShield are necessary for the child installation to run properly. In the parent (launching) installation project, place all the files for the child installation in one of the following locations:

A subfolder of the main installations source location (SRCDIR) A file group that is installed to a temporary location; for example, a subfolder of the main installations support folder (SUPPORTDIR)

InstallShield 2010 User Guide

ISP-1600-UG00

595

Chapter 13: Customizing Installation Behavior Using InstallScript

3.

In the parent installation script, call DoInstall as in the following example if the child installations files are in a subfolder of the main installations source location:
DoInstall (SRCDIR ^ "Child\\Setup.inx", "", LAAW_OPTION_WAIT);

Perform the following if the child installations files are installed by a file group to a subfolder of the main setups support folder.
DoInstall (SUPPORTDIR ^ "Child\\Setup.inx", "", LAAW_OPTION_WAIT);

Calling LaunchApplication
You can also launch a complete installation by calling the LaunchApplication function. For example, if you left the child setups files on a CD-ROM, you would call LaunchApplication as follows:
LaunchApplication (SRCDISK ^ "Launched Setup Folder\\Setup.exe", "", "", SW_HIDE,"", LAAW_OPTION_WAIT);

Alternatively, you could insert links to the child installations files into your file groups, install the files onto the target system, and then launch the installation from the target location. (Of course, this method will leave the installation files on the target system until the parent installation is uninstalled.)

Language Support for InstallScript


The table below shows the languages supported by the Premier edition of InstallShield. Following are descriptions of each of the columns:

InstallShield LanguageName used by the InstallShield interface to refer to this language. InstallScript ConstantLanguage constant provided by InstallShield for filtering language-specific

components.
English Windows 95, NT 4.0, and Later EquivalentName that those versions of English Windows use

to refer to the language.


Table 13-7: Supported Languages English Windows 95, NT 4.0, and Later Equivalent Basque Bulgarian Catalan Chinese (Simplified) Chinese (Traditional)

InstallShield Language Basque Bulgarian Catalan Chinese (Simplified) Chinese (Traditional)

InstallScript Constant ISLANG_BASQUE ISLANG_BULGARIAN ISLANG_CATALAN ISLANG_CHINESE_SIMPLIFIED ISLANG_CHINESE_TRADITIONAL

596

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using InstallScript

Table 13-7: Supported Languages (cont.) English Windows 95, NT 4.0, and Later Equivalent Croatian

InstallShield Language Croatian

InstallScript Constant ISLANG_CROATIAN Note that for backward compatibility, this constant continues to be 0x001a rather than the more logical 0x041a (in light of its relation to Serbian); you should continue to use this constant rather than ISLANG_CROATIAN_STANDARD.

Czech Danish Dutch English Finnish French (Canadian) French (Standard) German Greek Hungarian Indonesian Italian Japanese Korean Norwegian Polish Portuguese (Brazilian)

ISLANG_CZECH ISLANG_DANISH ISLANG_DUTCH ISLANG_ENGLISH ISLANG_FINNISH ISLANG_FRENCH_CANADIAN ISLANG_FRENCH_STANDARD ISLANG_GERMAN ISLANG_GREEK ISLANG_HUNGARIAN ISLANG_INDONESIAN ISLANG_ITALIAN ISLANG_JAPANESE ISLANG_KOREAN ISLANG_NORWEGIAN ISLANG_POLISH ISLANG_PORTUGUESE_ BRAZILIAN ISLANG_PORTUGUESE_STANDAR D ISLANG_ROMANIAN ISLANG_RUSSIAN

Czech Danish Dutch (Standard) English (United States) Finnish French (Canadian) French (Standard) German (Standard) Greek Hungarian Indonesian Italian (Standard) Japanese Korean Norwegian (Bokmal) Polish Portuguese (Brazilian)

Portuguese (Standard)

Portuguese (Standard)

Romanian Russian

Romanian Russian

InstallShield 2010 User Guide

ISP-1600-UG00

597

Chapter 13: Customizing Installation Behavior Using InstallScript

Table 13-7: Supported Languages (cont.) English Windows 95, NT 4.0, and Later Equivalent Serbian (Cyrillic) Slovak Slovene Spanish (Traditional Sort) Swedish Thai Turkish

InstallShield Language Serbian Slovak Slovenian Spanish Swedish Thai Turkish

InstallScript Constant ISLANG_SERBIAN_CYRILLIC ISLANG_SLOVAK ISLANG_SLOVENIAN ISLANG_SPANISH ISLANG_SWEDISH ISLANG_THAI ISLANG_TURKISH

Preventing Color Distortion


If you are experiencing problems with color distortion in your InstallScript custom action, it is most likely due to shifts in the color palette. This section explains how colors are apportioned on Windows systems and offers troubleshooting tips to help you minimize any distortion in your installations enduser interface. On systems operating in 256-color mode, there is one 256-color palette for displaying all available colors; in 16-color mode, there is a 16-color palette, regardless of the number of colors that the video driver supports. Systems operating in high-color or true-color mode do not use a color palette of any type. The colors are displayed directly, so color distortion should not occur on these systems. On systems using a color palette, entries are allocated and used as needed when an objectsuch as a bitmapis displayed. Once the current color palette has been allocated, to display a new color Windows attempts to use a color similar to one that was already allocated. Therefore, distortion may result on a 256-color system if multiple objects that contain several different colors are displayed simultaneously. Also, Windows allocates 16 static colors (VGA colors) and four additional shades of gray during startup. These colors are used by the system to display 16-color images and are never de-allocated by Windows. See the Windows platform SDK for more information on color palette handling. Use the tips below to minimize any color distortion related to color palette shifts. Color palette tips apply to all images that you display during installation, including the background color, .avi files, metafiles, and bitmaps.

Main Installation Window Background


Try using a solid color background, which requires only one palette entry. Call the SetColor function with a solid background constant to create a solid background. Try using a 16-color gradient background, which requires only 16 palette entries. Call the SetColor function with one of the gradient color constants to create this type of background. Try using a tiled or a centered bitmap background. Call the PlaceBitmap function to create one of these backgrounds.
ISP-1600-UG00 InstallShield 2010 User Guide

598

Chapter 13: Customizing Installation Behavior Using Custom Actions

Avoid using a 256-color gradient background, which requires about 80 palette entries.

Bitmaps and Metafiles


When a bitmap is removed by calling the PlaceBitmap function with the REMOVE option, all color palette entries used by that bitmap that are not being used by any other currently displayed image are freed from the color palette when other colors are needed to display other objects. If you experience color distortion, always remove a bitmap once it is no longer visible (instead of covering it with another bitmap) so that its color palette entries are freed. Try to use similar colors (including the 16 static colors, which are always allocated) for bitmaps and billboards displayed during the installation to reduce the number of color palette entries needed. You can determine the maximum colors available on the target system by calling the GetSystemInfo function with the COLORS option. Perhaps you will want to display bitmaps of different resolutions based on the return value. Note that 24-bit bitmaps do not include a custom color palette in the bitmap file. When displaying a 24-bit bitmap on a 256-color system, only the currently available palette entries will be used, even if there are additional color palette entries available. If you are displaying 24-bit bitmaps in your installation and you expect it to run on 256-color systems, it is recommended that you also include 256-color versions of your bitmaps. Since metafiles are drawn instead of placed, additional color palette entries are not allocated when a metafile is drawn; only the existing color palette entries are used to display the metafile. If you expect your installation to run on 256 color systems, it is recommended that you use only the standard 16 static colors in your metafile, because these colors will be available, regardless of the current color palettes availability. Verify that the systems video driver supports 256 or more colors. If the video driver does not support 256 colors, the bitmap will not display properly, even if your video card and monitor support 256 colors. If a monitor is not capable of displaying 256-color bitmaps, only the 16 static colors are used. This can cause severe distortion problems. If you are using 256-color images in your installation, it is recommended that you require end users to run it on systems that support 256 colors.

Using Custom Actions


InstallShield supports calling a .dll function; launching an .exe file; running VBScript, JScript, or InstallScript code; and running another installation package as custom actions.

Task

InstallShield divides the task of creating and implementing custom actions into the following steps: 1. 2. 3.

Create a custom action in the Custom Actions and Sequences view (or the Custom Actions view) or by using the Custom Action Wizard. Decide when your custom action should run. Launch a custom action by inserting it into a sequence or placing it as the result of a dialogs control event (Basic MSI projects).

InstallShield 2010 User Guide

ISP-1600-UG00

599

Chapter 13: Customizing Installation Behavior Using Custom Actions

For details about each of the InstallShield custom actions that are added automatically to InstallShield projects to support different functionality, see InstallShield Custom Action Reference.

Project: Merge module projects only: You can control the launch of custom actions in a merge module by modifying the ModuleInstallExecuteSequence table in the Direct Editor. When you add the merge module to your installation project, all custom actions and dialogs included in the merge module are available for you to insert in the installations sequences via the Custom Actions and Sequences view.

Using the Custom Action Wizard


You can use the Custom Action Wizard to create a custom action or modify an existing one.

Task

To launch the Custom Action Wizard: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard. The Custom Action Wizard launches. Follow the wizard panels to create your custom action.

2. 3.

Alternatively, you can create a custom action in the Custom Actions and Sequences view (or the Custom Actions view) without using the Custom Action Wizard. For more information, see Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View). To learn about displaying action information on the progress dialog and in the installations log file, see Using Action Text.

Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View)
Project: The Custom Actions and Sequences view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The view is called the Custom Actions view in the following project types: Merge Module MSM Database

600

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

The recommended way to create a custom action is with the Custom Action Wizard. The wizard walks you through all the required steps to create a custom action and prompts for information. You can also create your custom action in the Custom Actions and Sequences view (or the Custom Actions view) without using this wizardby configuring all of its settings directly in the view.

Task

To add a custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and then click the type of custom action that you want to add. Rename the new custom action by selecting it, pressing the F2 key, and typing the new name. Configure the custom actions settings.

2. 3. 4.

To learn about displaying action information on the progress dialog and in the installations log file, see Using Action Text.

Configuring Custom Action Settings


When you create a custom action, you need to configure its settings. You may also need to later modify its settings. For example, you might want to edit the condition that is assigned to a custom action. Depending on the type of custom action that you want to create, the settings for that action may have different meanings. For example, if your action calls an executable file that is stored in the .msi package, the Source setting needs to have the name of the entry in the table that points to the executable file that you want to call. The target property is a command-line argument in this case.

Task

To configure the settings for a custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Custom Actions explorer, click the custom action whose settings you want to configure. In the right pane, configure the settings as appropriate.

2. 3.

For information about each setting, see Custom Action Settings. To learn about displaying action information on the progress dialog and in the installations log file, see Using Action Text.

InstallShield 2010 User Guide

ISP-1600-UG00

601

Chapter 13: Customizing Installation Behavior Using Custom Actions

Custom Action Types


The Type value that is displayed in a custom actions property sheet represents a combination of several of the options available for a custom action. Behind the scenes, it is the decimal value calculated by using the OR operator to combine several bits that are available for the Type column in the Windows Installer CustomAction table. InstallShield also offers support for extended custom action types, such as InstallScript custom actions and standard .dll file functions. The Windows Installer Help Library refers to custom actions by a numeric type. When you add a custom action to your project in the Custom Actions and Sequences view (or the Custom Actions view), the custom action type number is calculated automatically, and the MSI Type Number property is set to this number. For example, launching an executable file whose fully qualified path is stored in the Property table is calculated as custom action type 50. To learn what value is used for any of the basic types of custom actions, see Summary List of All Custom Action Types in the Windows Installer Help Library. For more information about each of the types of custom actions that are available in InstallShield, see

InstallScript Custom Actions


In order to use your InstallScript functions in a Windows Installer installation, you first need to create a custom action that calls your script. The easiest way to create a custom action is to use the Custom Action Wizard. The primary panels of this wizard are:

Action Type Panel Action Parameters Panel Respond Options Panel Insert into Sequence Panel

When you complete the wizard, a custom action of type 65536 is created. This custom action type is not defined in the Windows Installer Help Library. Because InstallScript is not natively supported by Windows Installer, InstallShield created action type 65536.

Project: You should not use an InstallScript custom action in the User Interface sequence of an InstallScript MSI project. You can use the script to provide the user interface in an InstallScript MSI project.

602

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Custom Action Return Values


Depending on your selections in the Custom Action Wizards Additional Options panel, Windows Installer will wait for a successful return code before continuing with the installation. Your custom action must return one of these values according to its status.
Table 13-8: Custom Action Return Values Return Value ERROR_FUNCTION_NOT_CALLED ERROR_INSTALL_FAILURE ERROR_INSTALL_SUSPEND Description The custom action was not executed. The custom action failed. The custom action was suspended, but it will be resumed later. The custom action could not complete successfully because the end user aborted it. The custom action succeeded, but the remaining actions should be skipped. The custom action succeeded.

ERROR_INSTALL_USEREXIT

ERROR_NO_MORE_ITEMS

ERROR_SUCCESS

If you are authoring an InstallScript custom action, your entry-point function can return either ERROR_SUCCESS or ERROR_INSTALL_FAILURE. These constants are defined for you when you include Iswi.h in your script. The InstallShield script engine reports any of the other exceptions to Windows Installer.

In-Script Execution
When you create a custom action, one property that must be set is the In-Script Execution property on the Respond Options panel of the Custom Action Wizard. Actions are executed in the order in which they appear in a sequence. However, the sequences are run many times during a typical installation. The In-Script Execution property enables you to select which iteration of the sequence will trigger your action.

(Terminal Server Aware)


If you select a Terminal Server Aware optionfor example, Immediate Execution (Terminal Server Aware)the custom action impersonates the end user during per-machine installations on terminal server machines.

Immediate Execution
As its name implies, Immediate Execution runs when the internal Windows Installer installation script is being compiled. When an .msi file is launched, the Windows Installer service converts all the tables in the installation database into an internal script. (This internal script is not the same as InstallScript code.) This script is built by cycling through all the actions in the installation in the order in which they appear. The building of this script is immediate execution. When an action is encountered whose In-

InstallShield 2010 User Guide

ISP-1600-UG00

603

Chapter 13: Customizing Installation Behavior Using Custom Actions

Script Execution property is set to Immediate Execution, that action is executed. Therefore, this action launches before any file transfers are encountered, possibly even before the end-user interface for the installation is fully loaded. As a rule, custom actions scheduled for immediate execution do not modify the target system, but only set properties and query the target system (for example, to see if the target system meets your products system requirements). Custom actions that set Windows Installer properties must be scheduled for immediate execution, and custom actions that occur in the User Interface sequence must be scheduled for immediate execution. Because actions of this type run before any changes have been made to the system, they cannot rely on files that are being installed by the installation.

Deferred Execution
Deferred Execution takes place when the internal script generated during Immediate Execution is executed by the Windows Installer service. After that script has been fully generated, the Windows Installer service runs the newly compiled script. The script runs through all of the actions in your sequences and executes them in order. However, if an action is scheduled for immediate execution, the action does not run again during Deferred Execution. Actions that launch during Deferred Execution have access to files being installed as part of the system. As a result, you can call a custom action that calls a function from a .dll file installed with your product during this phase of the installation. However, Deferred Execution custom actions must take place between InstallInitialize and InstallFinalize in order to work properly. Custom actions that rely on a file being installed to the target system, or that rely on other system changes to have already been performed, must be scheduled for deferred execution.

Rollback Execution
Rollback occurs when an error is encountered by the installation or the end user cancels the installation before it has a chance to complete. The Rollback Execution option allows you to set your action to execute only during rollback. Therefore, any actions that are enabled for Rollback Execution are written to the installation script, as are Deferred Execution actions. Unlike Deferred Execution actions, Rollback Execution actions launch only during rollback. (Rollback custom actions run only if the installation fails during deferred execution.) Any custom actions that make changes to the target system during an installation should be undone with a Rollback Execution custom action in the event of rollback. For example, if you have a custom action that creates a file, you should create a second custom action that deletes the file, and schedule the second action for rollback execution. (A rollback custom action should be scheduled before the custom action it reverses.)

Commit Execution
Commit Execution actions do not run until the InstallFinalize action completes successfully. This means that they wait until the installation has completed transferring files, registering COM servers, and creating shortcuts and registry entries. Then, any actions that are set to Commit Execution launch in the order in which they appear in the sequence. For example, if you have a custom action that creates a temporary file, you should create a second custom action that deletes the file, and schedule it for commit execution.

604

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Deferred Execution in System Context


Like Deferred Execution actions, these actions do not launch until the script generated by the Windows Installer service is run. However, actions of this type execute with no user impersonation.

Documenting the Behavior of Custom Actions


Windows Logo Guideline: The intended behavior of each custom action must be documented for the Certified for Windows Vista program. This is especially helpful if system administrators deploy your product to enterprise environments; they sometimes need to know what the custom actions do. If you validate your installation package but you have not specified a value for the Help File Path setting, InstallShield generates validation error ISICE10. For more information, see ISICE10.

Task

To document the behavior of a custom action in your project: 1.

Create a file that describes the intended behavior of the custom action. The file should be a textbased file such as a .txt, .htm, or .rtf file. Note that each custom action should have its own document. In the View List under Behavior and Logic, click Custom Actions. In the Custom Actions explorer, click the action that you are documenting. For the Help File Path setting, click the ellipsis button (...) to browse to the file that describes the behavior of the custom action.

2. 3. 4.

Tip: You can specify whether InstallShield should stream the contents of each of the custom action help files into the .msi file at build time. For more information, see the description of the Include Custom Action Help setting for a product configuration in the Releases view.

Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program
If you are applying for the Windows Vista logo, your application must meet Microsofts Certified for Windows Vista program requirements. You can use the Certified for Windows Vista Validation Suite, which includes InstallShield ICEs, to verify whether your installation package meets most of the custom actionrelated logo requirements. However, some of the requirements cannot be verified through the validation suite. Following is a list of the requirements that are not validated through the Certified for Windows Vista Validation Suite or the associated ISICEs but still must be met to achieve logo compliance for the Certified for Windows Vista program:

Do not call the Global Assembly Cache tool (Gacutil.exe) from a custom action. This tool was not designed to be used during installations.

InstallShield 2010 User Guide

ISP-1600-UG00

605

Chapter 13: Customizing Installation Behavior Using Custom Actions

All custom actions must record success or failure in the Windows Installer log by calling MsiProcessMessage. Custom actions that change system state during installation must remove or restore the system state during uninstallation. In addition, custom actions that change system state must be written as a deferred and rollback custom action pair. This does not apply to custom action types 19 (displays an error, returns failure, and ends the installation), 35 (sets the installation directory), or 51 (sets a property)

The intended behavior of each custom action in your installation must be documented. This does not apply to custom action types 19 (displays an error, returns failure, and ends the installation), 35 (sets the installation directory), or 51 (sets a property). For more information, see Documenting the Behavior of Custom Actions. For information about all of the InstallShield custom actions that are added automatically to InstallShield projects to support different functionality, see InstallShield Custom Action Reference.

Nested Installations
Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations in the Windows Installer Help Library.

A nested installation is a type of custom action that installs or removes another .msi package (sometimes called the child product) from within a running installation (called the parent product).

Note: Before using nested-installation custom actions, you should be aware of the following restrictions:

Nested installations do not display a user interface. A child product generally does not appear in Add or Remove Programs in Control Panel on the end users system, and it is not automatically uninstalled when the parent product is uninstalled.

Creating Nested Installation Custom Actions

Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations in the Windows Installer Help Library.

606

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Task

To create a nested installation custom action using the wizard: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard. The Custom Action Wizard opens. On Basic Information panel, specify a name and comment for your custom action and click Next. On the Action Type panel, in the Type list, select Launch another .msi package. In the Location list, select Included within your main setup. On the Action Parameters panel, browse for the location of the .msi file that you are launching. (For simplicity, assume that the child product is packaged with all files compressed into the .msi package.) The Target box enables you to specify command-line switches to pass to the child installation. For example, to install all of the features of the child installation with their default settings, and to use the same value for the ALLUSERS property used by the parent installation, type the following in the Target box:
ARPSYSTEMCOMPONENT=1 ADDDEFAULT=ALL ALLUSERS=[ALLUSERS]

2. 3. 4. 5.

You can use similar expressions to use the same value of INSTALLDIR in the child as in the parent.
6.

Accept the default options on the Additional Options panel and click Next until you finish the wizard.

Inserting Nested Installation Custom Actions into Sequences

Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations in the Windows Installer Help Library.

After you have created the custom action, you need to insert it into a sequence.

Task

To insert a nested installation custom action into a sequence: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Sequences explorer, under the Installation sequence, expand the User Interface item. The actions and dialogs that are scheduled for this sequence are listed. Right-click CostFinalize and click Insert. The Insert Action dialog box opens. Select the new custom action.

2. 3. 4.

InstallShield 2010 User Guide

ISP-1600-UG00

607

Chapter 13: Customizing Installation Behavior Using Custom Actions

5. 6.

In the Condition box, type Not Installed. This indicates that the nested installation should be performed only the first time that the parent product is installed. Click OK.

Removing Child Products

Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations in the Windows Installer Help Library.

A child product is not automatically removed when the parent product is removed. However, you can create a second nested-installation custom action that does this.

Task

To create the custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard. The Custom Action Wizard opens. On the Basic Information panel, specify a name and comment for your custom action and click Next. On the Action Type panel, in the Type list, select Launch another .msi package. In the Location list, select An application that is advertised or already installed. On the Action Parameters panel, browse for the location of the .msi file that you want to remove. In the Target box, leave the default properties:
ALLUSERS=[ALLUSERS] REMOVE=ALL

2. 3. 4. 5.

6.

Accept the default options on the Additional Options panel and click Next until you finish the wizard.

Task

To sequence this custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Sequences explorer, under the Installation sequence, expand the Execute item. The actions and dialogs that are scheduled for this sequence are listed. Right-click InstallValidate and click Insert. The Insert Action dialog box opens. Select the new custom action.
ISP-1600-UG00 InstallShield 2010 User Guide

2. 3. 4.
608

Chapter 13: Customizing Installation Behavior Using Custom Actions

5.

In the Condition box, type the following:


REMOVE="ALL"

6.

Click OK.

This custom action will uninstall the child product when the parent product is uninstalled.

Note: When you are creating a nested-installation custom action of type Launch another .msi package with the Location setting set to Stored on the source media, be aware of the following:

The child installation must not be compressed inside a Setup.exe installation launcher. If the child installations files are not compressed inside the child .msi database, you must manually copy the child installations files to the Disk1 folder of the parent installations release folder.

Conditionally Launching Custom Actions Based on Release Flags


When your installation is built, InstallShield automatically adds a property called ISReleaseFlags to the Property table. This property contains all of the release flags that are included in the build. These flags appear exactly as they do in the Release Flags setting in the Releases view. Multiple flags are separated by a comma. A custom action can be conditionally launched based on release flags in the following ways.

Setting the Condition Property


The easiest way to conditionally launch a custom action is to set the Condition property when you insert the custom action into a sequence. In this case, you can enter a condition such as ISReleaseFlags><"MyReleaseFlag" in the Condition property. This condition succeeds if the substring MyReleaseFlag is contained in the value of the ISReleaseFlags property.

Calling MsiGetProperty
A more robust way to set a condition on your custom action based on release flags is to author a call to MsiGetProperty within the custom action. In addition to determining if the action should launch, you can also indicate what code is executed by the action. For example, you can use one function from a .dll file for all scenarios, yet provide different functionality for each scenario through conditional logic within your function. The drawback to conditionally launching your custom action in this way is that you can use only a script or .dll custom action. Additionally, your custom action still launches behind the scenes. When the custom action launches, it can check if a specified release flag has been included in the build. If that flag exists, the custom action continues. If the flag is not there, the action exits.

Cloning Custom Actions


InstallShield provides the ability to copy or clone your custom actions. Cloning creates a new custom action of the same type and with all of the same properties and values as the original custom action. You can use cloning to create multiple custom actions that have similar attributes without having to manually set every custom action attribute.
InstallShield 2010 User Guide ISP-1600-UG00 609

Chapter 13: Customizing Installation Behavior Using Custom Actions

Note that the clone operation clones only the custom action. It does not insert the custom action into any of the installation sequences.

Task

To clone a custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Custom Actions explorer, right-click the custom action that you want to clone and click Clone.

2.

InstallShield adds a copy of the cloned custom action to the Custom Actions explorer. The name of the custom action is the same name as the cloned custom action, except that the copy has a 1 at the end of the name.

Example: Calling MessageBoxA in an Installation


Task To call the Windows API function MessageBoxA() in a custom action to display a message box:

Part A: Launch the Custom Action Wizard


1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard.

2.

Part B: Start a Custom Action


1. 2. 3.

In the Basic Information panel, type CA_Example for the custom actions name. Click Next. In the Action Type panel, for the custom actions type, select Call a function in a standard dynamic-link library. Since MessageBoxA is exported in User32.dll, which is found on every supported Windows platform, select Destination machine search path in the Location list. Click Next to continue.

Part C: Provide the Function Definition


MessageBoxA() has the following syntax:
int MessageBoxA (hWnd, lpText, lpCaption, uType);

610

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Specify this information in the Function Definition panel:


1. 2.

In the Name box, type MessageBoxA. Click the last row in the Arguments box to specify the first parameter. Edit the fields for each parameter until they mirror the following list:
Table 13-9: Parameters for the Arguments Box Type HWND STRING STRING NUMBER Source Constant in Property in Property Constant Value MsiWindowHandle MESSAGEPROP CAPTIONPROP 1

In the Value list for the HWND type, select MsiWindowHandle. If you set the HWND type to this value, your message box will not hide behind the installation window. The properties MESSAGEPROP and CAPTIONPROP are not available in the list. When you enter these names in the Value list, they are added to the Property Manager.
3. 4.

In the Return Type list, select void. (Although MessageBoxA() does return a number, checking that value in a property is outside the scope of this example.) Click Next to proceed to the Action Parameters panel.

Part D: Specify the Source for MessageBoxA


The next significant setting in the Custom Action Wizard is the Source field in the Action Parameters panel. MessageBoxA is found in User32.dll. Click the Browse button to locate User32.dll in your Windows system folder (C:\WINNT\System32 under Windows 2000 or later). In the next panel of the wizard, click Next to accept the defaults, and then click Finish in the Summary panel to dismiss the wizard and add CA_Example to your project.

Part E: Initialize the Properties Values


For the string parameters in MessageBoxA(), properties were provided, as described in the above procedures. The next step is to give those properties a value:
1.

In the View List under Behavior and Logic, click Property Manager to view the installer properties in your project. The properties MESSAGEPROP and CAPTIONPROP were created as a result of referencing these properties in the Custom Action Wizard. Locate MESSAGEPROP and click in its Value column to supply a value. Enter Can you see this text? for the value. Set the CAPTIONPROP property to Custom Action Example.

2. 3.

Part F: Insert the Custom Action into a Sequence


In order to execute the custom action, you must either place it into a sequence or make it the result of a dialogs control event.

InstallShield 2010 User Guide

ISP-1600-UG00

611

Chapter 13: Customizing Installation Behavior Using Custom Actions

Project: Because a merge module does not have any sequences of its own, you must first build the module and include it in an installation project before continuing with this example.

Follow the steps below to insert CA_Example into the Installation sequence of the installation project:
1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Sequences explorer, under the Installation sequence, expand the User Interface item. The actions and dialogs that are scheduled for this sequence are listed. Right-click the MigrateFeatureStates action (the action right before the InstallWelcome dialog) and click Insert. The Insert Action dialog box opens. In the list at the top of the dialog box, select Merge Module Custom Actions (for Merge Module projects) or Custom Actions (for installation projects). In the list of custom actions, select CA_Example. Click OK.

2. 3. 4. 5. 6.

CA_Example is added to the Installation sequence directly after MigrateFeatureStates.

Part G: Test the Call to MessageBoxA


1. 2.

Build a release. (The Output window may show build errors if you have not added any components or files to your project.) On the Build menu, click Run.

InstallShield runs your installation. After the Welcome dialog is displayed, a Custom Action Example message box opens.

Calling Functions in Standard .dll Files


Although Windows Installer restricts the parameters that you can pass to a functions in a .dll file written for a custom action, InstallShield offers a solution that enables you to pass any number of parameters to a function and store the return value. Note that the function must use the __stdcall calling convention. Functions with more than one parameter will not work properly if this convention is not used. You can specify that you are calling a function in a standard .dll file in the Custom Action Wizards Action Type panel by selecting Call a function in a standard dynamic-link library for the Type option. The next panel, the Function Definition panel, allows you to specify the functions parameters and return value.

Note: If you call a function in a standard .dll file that is installed with the product and the action is scheduled as deferred (for the In-Script Execution property), the .dll file that you are calling must be the components key file. A custom action that calls a function in a standard .dll file stored in the Binary table cannot be scheduled for deferred execution.

612

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Specifying the Parameters and Return Value as a Formatted String


Though not recommended, you can also edit the functions arguments directly in the custom actions property sheet. The formatting for the functions Target property is as follows:
DataType1=[PropertyName1] DllName::FuncName(in DataType2="Value", Direction DataType3=[PropertyName2])

The following table describes each portion of the format.


Table 13-10: Format for the Arguments of a Function Argument DataType1=[PropertyName1] Description
DataType1 is of type void, STRING, BOOL, NUMBER, HWND, HANDLE, or POINTER. PropertyName1 is the name of a property from the Property

Manager View. If the return type is void, =[PropertyName1] is omitted. DllName FuncName in DataType2="Value" Specify the name of the .dll file, without the dot or file extension. Enter the name of the function that you are calling. This is the format for an argument that is a constant. DataType1 is of type STRING, BOOL, NUMBER, HWND, HANDLE, or POINTER. Value is the data that you want to pass for this argument. The constants data type is always preceded by in. This is the format for an argument that references a Windows Installer propertys value. Direction can be in, inout, or out. For a discussion of these property types, see the Function Definition panel under the arguments source.
DataType3 can be of type STRING, BOOL, NUMBER, HWND, HANDLE, or POINTER. PropertyName2 is the name of a property whose value will be passed to or set by the function, depending on the value of Direction.

Direction DataType3=[PropertyName2]

Example
For the custom action created in Example: Calling MessageBoxA in an Installation, the Target value reads:
void User32::MessageBoxA(in HWND=0, in STRING=[MESSAGEPROP], in STRING=[CAPTIONPROP], in NUMBER=1)

In this example, the data type is void, in HWND=0 represents a numeric value of 0, and MESSAGEPROP is a property that contains a string that will be passed to the function MessageBoxA in User32.dll.

Calling Functions in Windows Installer .dll Files


A .dll file function specifically written for a Windows Installer custom action can accept only the handle to the installer database as a parameter. The steps below explain how you can retrieve information from the .msi database for use in your custom action.

InstallShield 2010 User Guide

ISP-1600-UG00

613

Chapter 13: Customizing Installation Behavior Using Custom Actions

You specify that your custom action resides in a Windows Installer .dll file (custom action types 1 and 17) by selecting Call a function in a Windows Installer dynamic-link library in the Custom Action Wizards Action Type panel. An alternative is to select Call a function in a standard dynamic link library in the Action Type panel. In this case, InstallShield allows you to specify the functions parameters.

Task

There are three major steps involved in passing a parameter to a function in a .dll file written for Windows Installer: 1. 2. 3.

Prepare your .dll file. Create a custom action and insert it into one of the sequences. Pass the parameter using the Property Manager View. These steps are explained in greater detail below.

Preparing .dll Files


In order for you to pass data to a .dll file function in a custom action, the function to which you are passing data needs to call the MsiGetProperty function, which retrieves the value of an installer property. In the example below, it retrieves the value of a public property called MYPROPERTY.
UINT __stdcall MyActionName(MSIHANDLE hInstall) { TCHAR szValue[51] = {0}; DWORD dwBuffer = 50; MsiGetProperty(hInstall, TEXT("MYPROPERTY"), szValue, &dwBuffer); MessageBox(GetForegroundWindow( ), szValue, TEXT("Value of MYPROPERTY"), MB_OK | MB_ICONINFORMATION); return ERROR_SUCCESS; }

For more information, see MsiGetProperty in the Windows Installer Help Library. If you use a C++ compiler to build your .dll file, ensure that the compiler does not change the function names exported from the .dll file. With Microsoft Visual C++, for example, you can create a .def file that specifies the function names to be exported from your .dll file. A typical .def (called MyActions.def) file looks like the following:
LIBRARY MyActions EXPORTS MyActionName

For more information about function name decoration, see your compiler documentation.

Creating Custom Actions and Inserting them into Sequences


The second step is to create your custom action and insert it into one of the Installation sequences. To create the custom action, use the Custom Action Wizard, and to place the custom action, use the Custom Actions and Sequences view.

614

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Passing the Parameter Using the Property Manager

Task

To pass the new parameter using the Property Manager: 1. 2. 3. 4.

In the View List under Behavior and Logic, click Property Manager. Scroll to the bottom of the property grid and click the last row to add a new property. In the Name column, type the name of the property that you would like to retrieve with MsiGetProperty (MYPROPERTY, in this example). In the Value column, type the value that you want to pass. For example, if you want to pass the URL to your Web site, type http://www.mycompany.com.

Passing Parameters to a .dll File Function in a Custom Action


There are a number of reasons why you might pass a parameter to a function in a custom action. For example, you might want to pass a URL for Web registration or the UserName property for a custom user interface. However, Windows Installer does not directly support passing parameters to .dll file functions. The entry-point function for a Windows Installer .dll file can have only one argument, which is the handle to the database. To learn about a suggestion for passing parameters to a .dll file written for Windows Installer, see Calling Functions in Windows Installer .dll Files.

Task

To accomplish this in InstallShield: 1. 2.

In the Custom Wizards Action Type panel, select Call a function in a standard dynamic-link library. In the Function Definition panel, specify the parameters that you want InstallShield to pass to the function.

Specifying Features and Subfeatures in Function Calls


Feature is a general term that refers to a set of components or subfeatures in InstallShield. A subfeature is a feature that is located below another featuresimilar to the relationship between a folder and a subfolder. Top-level features are the highest features in the hierarchy. Top-level features are never referred to as subfeatures.

How to Refer to Features and Subfeatures


Some feature functions and setup type dialog functions ask you to refer to a single feature, while others ask you to refer to multiple features.

InstallShield 2010 User Guide

ISP-1600-UG00

615

Chapter 13: Customizing Installation Behavior Using Custom Actions

Referring to Single Features To refer to a single feature, use the features name. To refer to a subfeature, use a path-like expression where the name of each feature in the hierarchy leading to that feature is separated by double backslashes. For example, to specify the subfeature Tutorials under the top-level feature Help Files, use the following expression in your installation script:
szFeature = "Help Files\\Tutorials";

To refer to the subfeature CBT under Tutorials, use the following:


szFeature = "Help Files\\Tutorials\\CBT";

Referring to Multiple Features Some feature and setup type dialog functions, such as SdFeatureMult, display multiple features and their subfeatures. In these cases, you refer to multiple features by specifying the feature immediately above them in the hierarchy. To refer to multiple top-level features, use a null string (""). For example, if you pass a null string to the SdFeatureMult function, the corresponding dialog displays all the top-level features in your script-created component set in the window on the left, depending on the value of the MEDIA system variable. All subfeatures appear in the window on the right.

Calling a Public Method in a Managed Assembly


The managed-code type of custom action calls a public method in a .NET assembly that is written in managed code such as Visual Basic .NET or C#. If you include a managed-code custom action in your project, InstallShield creates a C++ Windows Installer wrapper DLL for your .NET assembly. The wrapper DLL includes your assembly, as well as the information that is required to mediate, load, and run the assembly.

Note: If you specify that the location of your managed assembly should be the Binary table, InstallShield stores the wrapper DLLwhich includes your assemblyin the Binary table.

Run-Time Requirements for Managed-Code Custom Actions


The managed-code type of custom action requires the Microsoft .NET Framework on the target system. InstallShield includes redistributables for the .NET Framework. If it is possible that target systems may not have the .NET Framework, you can add the appropriate .NET Framework redistributable to your project. For instructions, see Adding .NET Framework Redistributables to Projects. You can use the property IS_CLR_VERSION to identify a semicolon-delimited list of .NET Framework versions that the custom action should attempt to load to run your managed code. In most scenarios, this property is not set in the installation package. It is set at the command line. To specify that version 1.1 is required, use the following command-line parameter:
IS_CLR_VERSION=v1.1.4322

616

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Note that the complete version number of the .NET Framework should be specified for the property value. If more than one version is acceptable, you can specify a semicolon-delimited list of versions. The first one that can be loaded is used. For the following example command-line parameter, the custom action attempts to load version 2.0. If that version is not present, the custom action attempts to load version 1.1. If version 1.1 is not present, the custom action fails.
IS_CLR_VERSION=v2.0.50727;v1.1.4322

To specify that the custom action should attempt to load whatever is the latest version of the .NET Framework that is installed if none of the specified versions are installed, add a semicolon to the end of the property value, as shown in the following example:
IS_CLR_VERSION=v2.0.50727;v1.1.4322;

The semicolon at the end of the property value also indicates that if none of the specified versions are present but a version of the .NET Framework is already loaded, the custom action uses the currently loaded version, even if it is not the latest version that is installed.

Note: If the execution of your managed-code custom action is set to deferred mode, you must use the Windows Installer property CustomActionData to pass the IS_CLR_VERSION property and value. To learn more, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

Tip: If issues with the custom action occur at run time because of .NET Framework version mismatches, you may want to instruct end users to set the IS_CLR_VERSION property at the command line when they run your installation. Note that for deferred custom actions, you must have already used the CustomActionData property to pass the IS_CLR_VERSION property. For more information, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

Specifying the Signature for a Managed Method in an Assembly Custom Action


The Managed Method Definition panel in the Custom Action Wizard is where you specify arguments for the method that your managed assembly custom action should call. You can also specify this information on the Method Signature dialog box.

Using the Default Method Signature


If you use the default method signature, the custom action handles methods with up to one parameter. If the method takes a parameter, it is passed the MsiHandle, as well as any return type. If the method returns an integer, this integer is passed directly to Windows Installer. Therefore, if a method returns integer 1603 (ERROR_INSTALL_FAILURE) in this scenario, the installation aborts. For more information, see Custom Action Return Values in the Windows Installer Help Library.

Using a Custom Method Signature for an Immediate Custom Action


If you use a custom method signature, the custom action calls the method with the arguments that you specified. If the value of a parameter is a Windows Installer property and the custom action is set for immediate execution, the method stores any by-reference and out parameter values in the passed properties. In addition, the custom action converts the return value to a string and stores it in the return property. If no return property is specified, the return value is ignored.

InstallShield 2010 User Guide

ISP-1600-UG00

617

Chapter 13: Customizing Installation Behavior Using Custom Actions

Note that if you use a custom signature, the custom actions return value is not passed to Windows Installer. However, if the managed code throws an unhandled exception, the custom action returns ERROR_INSTALL_FAILURE to Windows Installer. Therefore, in order for the custom action to indicate failure and for Windows Installer abort the installation, the managed code must throw an unhandled exception.

Using a Custom Method Signature for a Deferred, Commit, or Rollback Custom Action
Deferred, commit, and rollback custom actions have access to only some of the built-in Windows Installer properties: CustomActionData, ProductCode, and UserSID. Therefore, if you use a custom method signature and you want your managed assembly custom action to access or pass any other properties during deferred, commit, or rollback execution, you must pass them through the CustomActionData property. Note the following guidelines for deferred, commit, and rollback managed assembly custom actions:

Custom signatures that pass properties need to have their values passed in as CustomActionData in the following format:
PROPERTYNAME="Property Value"

Separate multiple property nameproperty value pairs with a space, as in the following example:
PROPERTYNAME1="Property Value 1" PROPERTYNAME2="Property Value 2"

If the managed assembly for your deferred, commit, or rollback custom action is installed with the product, use CustomActionData to identify the location of the managed assembly, and use the following format:
#filekey.dll="location of assembly"

For the location of assembly portion, use the format [#filekey.dll].

If the path for the managed assembly references one or more properties, use CustomActionData to pass each of the properties and their corresponding values. Consider using CustomActionData to pass the following property and value:
IS_CLR_VERSION="[IS_CLR_VERSION]"

If run-time issues occur because your custom action attempts to load the wrong version of the .NET Framework to run your managed code, you can have end users set the value of the IS_CLR_VERSION property at the command line when they run your installation. For deferred, commit, and rollback managed-code custom actions, IS_CLR_VERSION must be passed to CustomActionData in order for end users to use this run-time override. To learn more about the IS_CLR_VERSION property, see Run-Time Requirements for Managed-Code Custom Actions.

Specifying Parameter Values for a Custom Method Signature


If you use a custom method signature, you can enter any of the following types of values for a parameter:

A single property that is enclosed within square bracketsfor example, [ProductName]. Note that immediate-mode managed assembly custom actions can update ref and out parameters. InstallShield does not support combining multiple properties or mixing properties with strings for a parameter value. A literalfor example, a string such as the number 1 or 1603.

618

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

An explicit string that is enclosed within quotation marksfor example, My Project Name-1. The variable MsiHandle, which indicates the installation handle.

At run time, after a property has been resolved or a string has been isolated from within its quotation marks, the custom action attempts to convert the string to an instance of the type of the methods appropriate parameter. A parameter of type String is passed as is, and all normal numeric types are handled by calling the public static Parse(string) method to turn the string into the type. In addition, the custom action calls any types public static Parse(string) method and uses the return value as the passed parameter value. IntPtr is also handled despite the lack of a Parse method.

Launching Executable Files


Launching an executable file from your installation is useful to install third-party tools, display a readme file, or display a Web page that contains the most up-to-date information about the product being installed. To launch an executable file from within your installation, you need to add a custom action in the Custom Actions and Sequences view (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or the Custom Actions view (in Merge Module and MSM Database projects). You can use the Custom Action Wizard to create the custom action that launches an executable file from your installation. Each wizard panel is listed below, with the entries that you need to make in order to launch an executable file.

InstallShield 2010 User Guide

ISP-1600-UG00

619

Chapter 13: Customizing Installation Behavior Using Custom Actions

Basic Information Panel


Table 13-11: Settings for the Basic Information Panel in the Custom Action Wizard Panel Option Name Value Provide a meaningful name for your custom action. This name is used internally in your product and is for identification purposes only. Type comments about this custom action.

Comment

Action Type
Table 13-12: Settings for the Action Type Panel in the Custom Action Wizard Panel Option Type Value Select the type of custom action that you want to create. For this example, select Launch an executable. The selection that you make depends on where the target executable file will be during the installation. Because Notepad is on everyones machine, it is the target for this custom action. Because Notepad is practically guaranteed to be present in the target machines Windows or WINNT folder, you can point to it using the Directory table. Therefore, select Stored in the Directory table.

Location

Action Parameters
Table 13-13: Settings for the Action Parameters Panel in the Custom Action Wizard Panel Option Source Value Since you choose to launch an executable file stored in the Directory table, you are given a list of choices that reflect all of your current entries in the Directory table. One of these options is WindowsFolder. Choose this option to point to Notepad without having to hard-code a path. For this option, you need to enter the target file within the specified directory from the Source option. Enter Notepad.exe and click the Next button to continue.

Target

Additional Options
Table 13-14: Settings for the Additional Options Panel in the Custom Action Wizard Panel Option Return Processing Value Specify how Windows Installer should control the processing of the custom action thread. You can have the main and custom action threads run synchronously (the installation waits for the custom action thread to complete before resuming the main installation thread) or asynchronously (the installation runs the custom action simultaneously as the main installation continues). In this example, select the Synchronous (Check exit code) option.

620

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Respond Options
Table 13-15: Settings for the Respond Options Panel in the Custom Action Wizard Panel Option In-Script Execution Execution Scheduling Value Select Immediate execution to have your action executed as soon as it is encountered in the script.

Select Always execute so that your custom action launches every time that it is encountered.

Inserting Custom Actions into Sequences


After you have created a custom action, you must insert it into a sequence in the Custom Actions and Sequences view.

Using Msiexec.exe to Launch a Second Windows Installer Installation


An alternative to launching a second .msi package using the nested installation custom action type is to create a custom action that launches Msiexec.exe instead. Launching a second installation in this manner causes it to run in its own process and creates the proper entries on the target system. In addition, the uninstallation process is much more effective when you launch your second installation in this way. Registry entries are properly cleaned up and reference counts are incremented and decremented accurately.

Creating a Custom Action


The first step is to create your custom action. The easiest way to do this is to use the Custom Action Wizard.

Task

To create a custom action using the wizard: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard. The Custom Action Wizard opens. On the Basic Information panel, specify a name and comment for your custom action and click Next. On the Action Type panel, in the Type list, select Launch an executable. In the Location list, select Stored in the Directory table. The Directory table allows you to choose from predefined folders, such as SystemFolder, which is where Msiexec.exe is located.

2. 3. 4.

InstallShield 2010 User Guide

ISP-1600-UG00

621

Chapter 13: Customizing Installation Behavior Using Custom Actions

5.

On the Action Parameters panel, browse for the executable file (Msiexec.exe) of that you are launching. The Target box enables you to specify the name of the executable file that you would like to launch, as well as any command-line parameters that you would like to pass to it. For example:
msiexec.exe /i "[SOURCEDIR]AnotherSetup\SecondSetup.msi" /qb

The first part of this entry, msiexec.exe, is the name of the executable file that you would like to launch. The next section, /i "[SOURCEDIR]AnotherSetup\SecondSetup.msi", tells Msiexec.exe which package to run. In this case, it is pointing to a file one folder below that of the source folder of the initial installation. Finally, /qb tells the Windows Installer service to run the installation with minimal user interface. Only a progress bar is displayed.
6.

On the Additional Options panel, select the default options and click Next until you finish the wizard.

Inserting a Custom Action into a Sequence


After you have created a custom action, you need to insert it into a sequence.

Task

To sequence this custom action: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Sequences explorer, under the Installation sequence, expand the User Interface item. The actions and dialogs that are scheduled for this sequence are listed. Right-click CostFinalize and click Insert. The Insert Action dialog box opens. Select the new custom action. Click OK.

2. 3. 4. 5.

Next, verify that the installation package that you want to launch is located in the folder that you specified in the Action Parameters panel, build your installation, and run it.

Note: A custom action that launches Msiexec.exe must be placed in the User Interface sequence, which means that the custom action will not run if the end user runs the installation silently.

622

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Exporting Custom Actions to Other Projects


Task To save a custom action to another project: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Custom Actions explorer, right-click your custom action and click Export. The Export into dialog box opens. Browse to the location of an existing InstallShield project file (.ism file). It can be either an installation project or a merge module project, but the file cannot be open in another instance of InstallShield. Click Open.

2. 3.

4.

A copy of this custom action is added to the specified .ism file. If the other .ism file already has a custom action of that name with different properties, the Resolve Conflict dialog box opens to offer you options for resolving the conflicts.

Searching for Files on the Target System


System Search View
The System Search view provides the functionality for locating a particular file, folder, registry or .ini file on a target system before installing your application.

Direct Editor: Basic MSI Projects


Windows Installer uses records in the Signature, AppSearch, and locator tables for instructions for searching for files on the target system. The Signature table contains information about the file to be located, and the AppSearch table specifies a property to set to the full path of the located file, if found. For example, to search for a file called FindMe.exe, use the Direct Editor to add the following record to the Signature table.
Table 13-16: Sample Data for the Signature Table Table Column Signature FileName Sample Data findme_sig FindMe.exe

Note that other fields in the Signature table enable you to specify optional version, size, date, and language information.

InstallShield 2010 User Guide

ISP-1600-UG00

623

Chapter 13: Customizing Installation Behavior Using Custom Actions

Add the following record to the AppSearch table.


Table 13-17: Sample Data for the AppSearch Table Table Column Property Signature_ Sample Data LOCATION_OF_FINDME findme_sig Explanation Must be a public property. Same name used in Signature table.

There are four locator tables in which you can specify where Windows Installer should begin searching for the file: CompLocator, RegLocator, IniLocator, and DrLocator. To search for a file in a specific directory, use the DrLocator table. For example, to search for FindMe.exe in the users Program Files directory, we add the following record to the DrLocator table.
Table 13-18: Sample Data for the DrLocator Table Table Column Signature Parent Path Depth [ProgramFilesFolder] 2 Sample Data findme_sig

After the AppSearch action runs, the public property LOCATION_OF_FINDME will contain the full path to FindMe.exe on the end users system if it exists; if the file is not located, this property will be undefined.

InstallScript: InstallScript MSI Projects


The FindFile and FindAllFiles functions enable you to search for existing files on the target system. For example, an implementation of the OnAppSearch event-handler function that searches for a file called FindMe.exe in the users Program Files folder might appear as follows:
function OnAppSearch( ) STRING svFoundFile; begin FindAllFiles(PROGRAMFILES, "FindMe.exe", svFoundFile, RESET); MessageBox("Found FindMe.exe at: " + svFoundFile, INFORMATION); end;

Launching the Application After the Installation Is Complete


Project: This information applies to InstallScript projects.

624

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

The LaunchApplication function launches an executable file. For example, the following code launches a copy of Program.exe in the end users INSTALLDIR folder, returning execution to the script when the end user closes the programs window.
LaunchApplication (INSTALLDIR ^ "Program.exe", "", "", SW_NORMAL,"", LAAW_OPTION_WAIT);

Project: InstallScript projects use TARGETDIR rather than INSTALLDIR.

Placing Files in the .msi Database and Extracting Them During Run Time
The Support Files view (in Basic MSI projects) and the Support Files/Billboards view (in InstallScript MSI projects) enable you to store temporary files that are to be used by your installation program but are not to be installed. Examples are license text files (as displayed by SdLicense) or .dll files called by your installation. The location to which the support files are extracted at run time is stored in the Windows Installer property SUPPORTDIR.

Note: Deferred, commit, and rollback custom actions in Basic MSI and InstallScript MSI installations have access to only some of the built-in Windows Installer properties: CustomActionData, ProductCode, and UserSID. If you want a custom action to access any other properties (such as SUPPORTDIR) during deferred, commit, or rollback execution, you need to pass them as CustomActionData. To learn more, see Accessing or Setting Windows Installer Properties Through Deferred, Commit, and Rollback Custom Actions.

Project: Note that the value of the Windows Installer property SUPPORTDIR is not the same as the value of the InstallScript system variable SUPPORTDIR.

Custom Action Script Examples


InstallScript To access a particular support file during installation, Basic MSI projects and InstallScript MSI projects should reference the Windows Installer property SUPPORTDIR. You can use MsiGetProperty to query the path, and then append the file name to the SUPPORTDIR value to obtain the complete path of the file. In the settings for a custom action, this is just [SUPPORTDIR]. In an InstallScript custom action, you could use code such as the following:
export prototype STRING GetSupportFilePathMSI(HWND); function STRING GetSupportFilePathMSI(hMSI) STRING szSupportDir[MAX_PATH + 1]; STRING szMyFile[MAX_PATH + 1]; NUMBER nLength; begin // set initial buffer size nLength = MAX_PATH + 1; MsiGetProperty(hMSI, "SUPPORTDIR", szSupportDir, nLength); // reset buffer-size variable

InstallShield 2010 User Guide

ISP-1600-UG00

625

Chapter 13: Customizing Installation Behavior Using Custom Actions

nLength = MAX_PATH + 1; MsiGetProperty(hMSI, "MYFILE", szMyFile, nLength); // return full file path return szSupportDir ^ szMyFile; end;

In this example, the name of the support file that is being used is stored in the MYFILE property. C++ In C++, you could use the following code:
UINT __stdcall ShowSupportdir(MSIHANDLE hInstall) { TCHAR szSupportDir[MAX_PATH + 1] = {'\0'}; DWORD dwBuff = sizeof(szSupportDir); MsiGetProperty(hInstall,"SUPPORTDIR",szSupportDir,&dwBuff); MessageBox(NULL,szSupportDir,"SUPPORTDIR is ...",MB_OK); }

VBScript
In VBScript, you could use the following code:
dim strSupportDir strSupportDir = Session.Property("SUPPORTDIR")

Accessing or Setting Windows Installer Properties Through Deferred, Commit, and Rollback Custom Actions
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Deferred, commit, and rollback custom actions in Basic MSI and InstallScript MSI installations have access to only some of the built-in Windows Installer properties: CustomActionData, ProductCode, and UserSID. If you want a custom action to access any other properties during deferred, commit, or rollback execution, you can pass them as CustomActionData. You can do so by scheduling an immediate set-a-property type of custom action to set a property that matches the name of the custom action. The value of this property is then available in the CustomActionData property within the deferred, commit, or rollback custom action.

Using CustomActionData to Access a Property


The following example shows how to access the Windows Installer property SUPPORTDIR through a deferred InstallScript custom action.

626

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Custom Actions

Task

To access SUPPORTDIR through a deferred InstallScript custom action: 1.

In the Custom Actions and Sequences view, create a set-a-property custom action (type 51) called GetSUPPORTDIR. Configure the Property Name, Property Value, and Install Exec Sequence settings for the custom action as follows, and leave all of the other settings blank.


2. 3.

Property Name: DisplaySupportDir Property Value: [SUPPORTDIR] Install Exec Sequence: After InstallInitialize

In the InstallScript view, create a new function called DisplaySupportDir. Add the following code to display a message box containing the value of SUPPORTDIR:
function DisplaySupportDir(hMSI) STRING supportDirPath; NUMBER supportDirPathBuffer; begin supportDirPathBuffer = MAX_PATH; if(MsiGetProperty(hMSI, "CustomActionData", supportDirPath, supportDirPathBuffer) == ERROR_SUCCESS) then SprintfBox(INFORMATION,"Deferred Execution","The value of SUPPORTDIR is %s",supportDirPath); SprintfBox(INFORMATION,"Deferred Execution","The value of InstallScript's SUPPORTDIR is %s",SUPPORTDIR); endif; end;

4.

In the Custom Actions and Sequences view, create an InstallScript custom action called DisplaySupportDir. Configure the Function Name, In-Script Execution, and Install Exec Sequence settings for the custom action as follows, and leave all of the other settings blank.

Function Name: DisplaySupportDir In-Script Execution: Deferred Execution in System Context Install Exec Sequence: After GetSUPPORTDIR

Important: The property name that you enter in step 1 must match the name of the custom action that you create in step 4.

Using CustomActionData to Access More Than One Property


If you want a deferred, commit, or rollback custom action to access more than one Windows Installer property, you can pack the properties in CustomActionData and then have your deferred, commit, or rollback custom action unpack them after retrieving the value of CustomActionData. For example, if you want to retrieve the values of [INSTALLDIR], [SUPPORTDIR], and [SetupType], you would set the Property Value setting of your type 51 custom action to this:
[INSTALLDIR];[SUPPORTDIR];[SetupType]

where each property is separated by a semicolon.

InstallShield 2010 User Guide

ISP-1600-UG00

627

Chapter 13: Customizing Installation Behavior Using Custom Actions

You can use code such as the following VBScript to unpack the values from the CustomActionData property:
Dim PropArray PropArray = Split(Session.Property("CustomActionData"), ";") INSTALLDIR = PropArray(0) SUPPORTDIR = PropArray(1) SetupType = PropArray(2) 'Now do something with these variables...

Exiting the Installation from Within a Custom Action


Project: This information applies to the following project types:

Basic MSI with InstallScript custom actions InstallScript MSI Merge Module with InstallScript custom actions

An InstallScript entry-point function that returns the value ERROR_INSTALL_FAILURE will cause the installation to exit.

Changing ODBC Properties Through Script


If you want to change ODBC properties (such as DBQ and SystemDB) through script, you must configure these options to use installer properties. Then from the script you can set those installer properties at run time. For example, you would set SystemDB to [SYSTEM_DB_DIR]\MyDatabase in the InstallShield interface. Then from the script, you could call MsiSetProperty to set the value of SYSTEM_DB_DIR.

Set the property value before the OnMoving event, preferably in OnFirstUIBefore. After that, it is too late because the installer has already built up its internal script information, which cannot be modified. Use all uppercase letters for your property name. If SYSTEM_DB_DIR exists in the Directory table, omit the backslash (\) after the right bracket (]) when making your ODBC attribute settings. If you have defined it in the Property Manager, the backslash must be included.

Using the INSTALLDIR Property in a VBScript Custom Action


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

628

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Action Text

Transform

If you need to use the INSTALLDIR property in a VBScript custom action, use the Property property of the Session object. This object is accessible in every VBScript custom action. Following is sample code:
szInstallDir = Session.Property("INSTALLDIR")

For more information, see Session Object in the Windows Installer Help Library.

Using Action Text


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

To keep end users informed, installations commonly display text on the progress dialog to describe the installations current activity. This usually accompanies the progress bar as a means of installation status. As each standard action and custom action is encountered, a message about the action is displayed on the progress dialog. This may be especially useful for actions that take a long time to execute. The same action text is also written to the installations log file if one is created. An action can also send action data that needs to be processed to the Windows Installer; once the data is processed, it can be displayed on the progress dialog. For example, when the InstallFiles action is executing, the action text Copying new files is displayed by default on the progress dialog. This action text is also written to the installations log file. If you want to provide additional detailed information about what is occurring as actions are encountered, you can add a control to the progress dialog to show action details; the control would need to subscribe to the ActionData event. For the InstallFiles action, this could include the name, directory, and size of each file as it is being installed on the target system.

Project: InstallScript MSI installations cannot display action data on the status dialog. However, the template is written to the installations log file.

Specifying an Action Description and a Template for Action Data


Project: This information applies to the following project types:

Basic MSI InstallScript MSI


ISP-1600-UG00 629

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Action Text

MSI Database Transform

InstallShield includes default action descriptions for standard actions and built-in InstallShield custom actions. InstallShield also includes default templates for many of those actions where appropriate. The templates indicate the format that should be used for the action data. You may want to modify the default descriptions or templates of the standard actions and built-in InstallShield custom actions in your project. In addition, you may want to specify action text and action data format for your own custom actions.

Task

To specify a description and an action data template for an action in your project: 1. 2. 3.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click the Action Text explorer and click New. InstallShield adds a new action text item. For the name of the action text item, enter the name of the action.

Important: The names of the action text items under the Action Text explorer should match the names of standard and custom actions that are in your project. If you change the name of a custom action, you must also change the name of its action text item; otherwise, the actions text is not displayed at run time or written to the installations log file. Note, however, that you are not required to create action text for every action in your project. 4.

In the right pane, specify the description and the template. For more information, see Action Text Settings.

Tip: If you want to edit the description or template of an action that is already listed under the Action Text explorer, select the action and then specify the appropriate values in the right pane.

Displaying Action Descriptions on the Progress Dialog


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

In InstallScript MSI installations, the action text is automatically displayed on the progress dialog (that is, the STATUSEX dialog) if the dialog is enabled through a call to Enable (STATUSEX). This dialog is not available for editing.

By default, if a description has been specified for an action in your installation, that description is displayed above the progress bar on the progress dialog. Therefore, unless you have made some changes to this dialog in your project, you do not need to perform the following steps.

630

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Action Text

Task

To display action descriptions on the progress dialog: 1.

On the SetupProgress dialog, add a control that will display the action description:
a. b. c. d. e.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and then expand the SetupProgress dialog. Click a language under the SetupProgress dialog. The Dialog Editor in the center pane shows the dialog in the selected language. In the Controls toolbar, click the Text Area control. Draw a rectangle on the dialog in the location where you want the action description to be displayed.

2.

With the control selected, configure its settings in the right pane:
a.

For the (Name) setting, enter the following:


ActionText

b. 3.

In the Text setting, delete the value.

Add a subscription for the ActionText event to the new control:


a. b. c.

In the Dialogs explorer under the SetupProgress dialog, click the Behavior item. The grid in the center pane shows all of the controls on the SetupProgress dialog. Select the ActionText control that you just created, and then click the Subscriptions tab in the lower-right pane. In the upper-right pane, add a record with the following information: For the Event field, select ActionText. For the Attribute field, enter Text.

At run time, if the installation is run with a full or reduced user interface, the progress dialog shows the description of each action as it is encountered. If a description has not been defined for an action, no description is displayed on the progress dialog when that action is launched.

Displaying Action Data on the Progress Dialog


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

In InstallScript MSI installations, the action data cannot be displayed on the progress dialog (that is, the STATUSEX dialog). However, you can call Enable (INDVFILESTATUS) in your InstallScript to achieve a similar result. If you call the INDVFILESTATUS constant with the Enable function, the STATUSEX dialog shows the fully qualified file name of each file as

InstallShield 2010 User Guide

ISP-1600-UG00

631

Chapter 13: Customizing Installation Behavior Using Action Text

it is transferred when FeatureMoveData, CopyFile, or XCopyFile is called and the progress indicator is enabled. Note that if a template is specified for an action in an InstallScript MSI project, the template is written to the installations log file.

If you want to provide detailed information about what is occurring as actions are launched at run time, you can add a control to the progress dialog to show action details; the control would need to subscribe to the ActionData event. For example, when the InstallFiles action is executing, the control that shows the action details could include the name, directory, and size of each file as it is being installed on the target system.

Task

To display the action data on the progress dialog: 1.

On the SetupProgress dialog, add a control that will display the action details:
a. b. c. d. e.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and then expand the SetupProgress dialog. Click a language under the SetupProgress dialog. The Dialog Editor in the center pane shows the dialog in the selected language. In the Controls toolbar, click the Text Area control. Draw a rectangle on the dialog in the location where you want the action description to be displayed.

2.

With the control selected, configure its settings in the right pane:
a.

For the (Name) setting, enter the following:


ActionData

b. 3.

In the Text setting, delete the value.

Add a subscription for the ActionData event to the new control:


a. b. c.

In the Dialogs explorer under the SetupProgress dialog, click the Behavior item. The grid in the center pane shows all of the controls on the SetupProgress dialog. Select the ActionData control that you just created, and then click the Subscriptions tab in the lower-right pane. In the upper-right pane, add a record with the following information: For the Event field, select ActionData. For the Attribute field, enter Text.

At run time, if the installation is run with a full user interface, the progress dialog shows the details of each action as it is launched. If a template has not been defined for an action, the details are not displayed on the progress dialog when that action is launched.

632

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Removing an Action Description or a Template for Action Data


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Task

To remove a description or an action data template for an action in your project: 1. 2. 3.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Action Text explorer, select the action whose description or template you want to delete. In the Description setting or the Template setting, delete the value.

Note: If you want neither the action description or the action template to be used, you can delete the action text record from your project: In the Action Text explorer, right-click the action text item that you want to remove, and then click Delete. Note that the action text for the following actions cannot be deleted:

GenerateScript Rollback RollbackCleanup

In addition, the value of the Template setting for each of these actions must always be [1].

Defining Sequences
Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Defining the sequences of an installation is an important part of developing an installer package. Sequences specify the order in which Windows Installer launches the standard and custom actions that control the installation process.

InstallShield 2010 User Guide

ISP-1600-UG00

633

Chapter 13: Customizing Installation Behavior Defining Sequences

Project: In Basic MSI and Transform projects, sequences also specify the order in which the dialogs are displayed. In InstallScript MSI projects, the user-interface dialogs are defined in the InstallScript code, and the InstallScript engine controls the user interface part of the installation.

The Custom Actions and Sequences view in InstallShield is where you define the sequences of your project. The Sequences explorer in this view lists all of the actions and dialogs in your project in chronological order, according to when they are launched during the applicable sequence. Each action and dialog is given a number in the sequence, and Windows Installer runs the sequence from the lowest number to the highest number. Rather than having to manually provide a numeric value for every custom action and dialog that you add to your project, you can use the Custom Actions and Sequences view to insert actions or dialogs into a sequence or edit the sequence timeline. Refer to this section of the help for information about sequences.

Project: If you create a custom action or a custom dialog in a merge module, you need to first import that module into an installation project and then add it to a sequence through the Custom Actions and Sequences view.

Installation Sequence
The installation sequence is the series of actions that are executed when the installation runs in the default installation mode, such as when an end user double-clicks a new .msi file. These actions are broken down into two types:

User Interface Execute

Project: The User Interface dialogs described below are those for a Basic MSI project. For an InstallScript MSI project, your InstallScript code performs the user interface of the installation. An InstallScript MSI project automatically includes the ISVerifyScriptingRuntime custom action. For details, see ISVerifyScriptingRuntime.

User Interface
The User Interface sequence contains all of the actions and dialogs needed to support a full user interface. This sequence is skipped if an installation is run in silent mode. For complete technical details about each standard action, see the Standard Actions Reference in the Windows Installer Help Library.
Table 13-19: User-Interface Actions and Dialogs in the Installation Sequence Name of Action or Dialog SetupCompleteError Type of Event Dialog Description This dialog is displayed at the end of an installation if that installation was terminated because of a fatal error.

634

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-19: User-Interface Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog SetupInterrupted Type of Event Dialog Description This dialog is displayed at the end of an installation that was ended by the user. This dialog is displayed at the end of a successful installation. This custom action extracts any files that you have added in the Support Files view. For more information, see Using Support Files. The ISSetAllUsers custom action is inserted in the both the User Interface and Execute installation sequences only if one or more records are in the Upgrade table. This action can be used to identify and locate files on the target system. The Signature table that this action requires is available in the Direct Editor. Knowledge Base article Q103147 provides detailed information on using this action. This action evaluates a set of conditions that must return True if the installation is to continue. If any conditions fails, the user is presented with an error message and the installation ends. Launch conditions can be edited in the General information view. This dialog is displayed while the setup is preparing to begin. The default text for this dialog is "Preparing to install..." When this action is executed, the installer compares each installed products upgrade code to that listed in the packages Upgrade table. If a match is found, the installed packages product code is added to the ActionProperty column of the Upgrade table. The CCPSearch action allows you to check the end users system for products qualifying for upgrade. The Signature table that this action requires is available in the Direct Editor. The RMCCPSearch action allows you to check an end users system for products qualifying for competitive upgrade. The Signature table that this action requires is available in the Direct Editor. Use the Validate Product ID action to set the ProductID property to the complete product identifier. This validation allows you to protect your software from illegal use by requiring users to enter the product ID. This action is the first step in determining how much disk space is required by the current configuration of the installation. In order to complete costing, you need to use the CostInitialize action in conjunction with the CostFinalize action.

SetupCompleteSuccess ISSetupFilesExtract

Dialog Custom action

ISSetAllUsers

Custom action

AppSearch

Standard action

LaunchConditions

Standard action

SetupInitialization

Dialog

FindRelatedProducts

Standard action

CCPSearch

Standard action

RMCCPSearch

Standard action

ValidateProductID

Standard action

CostInitialize

Standard action

InstallShield 2010 User Guide

ISP-1600-UG00

635

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-19: User-Interface Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog FileCost Type of Event Standard action Description The FileCost action determines how much disk space is required by the current configuration of the installation. It checks to see if any files will be overwritten with later versions, and it calculates how overwriting those files affects disk space. To complete costing, you need to use the CostInitialize action in conjunction with the CostFinalize action. This action installs a componentusually a .dll fileinto an isolated location so that it is used by only your application. This custom action initializes the USERPROFILE directory identifier. This custom action initializes the ALLUSERSPROFILE directory identifier for Windows NT 4. This custom action initializes the ALLUSERSPROFILE directory identifier for Windows 2000 or later. Finds the location of the source and sets the SourceDir property. The Calculate Disk Space action determines the total amount of disk space required by the installation in its current configuration. This action also verifies that all target directories are writable. The actions Initialize Disk Space Calculations and Initialize Dynamic Disk Space Calculations must be called before the Calculate Disk Space action; otherwise, the action will fail. The SetARPReadme custom action resolves the directory identifier used in the Read Me setting in the General Information view. This custom action is required because ARPREADME is a Windows Installer property and these properties do not format automatically. This action is used during application upgrade. The feature states of the original installation are read from the target machine and applied to the upgraded features. The PatchWelcome dialog is displayed when a patch package is applied with a full user interface. It includes control events to set REINSTALL and REINSTALLMODE with the correct options. However, when the user interface is suppressed, you must set the properties at the command line. The InstallWelcome dialog displays your Welcome panel when an InstallScript MSI installation is run. This dialog opens when a previously canceled installation is resumed.

IsolateComponents

Standard action

setUserProfileNT

Custom action

SetAllUsersProfileNT

Custom action

setAllUsersProfile2K

Custom action

ResolveSource

Standard action

CostFinalize

Standard action

SetARPReadme

Custom action

MigrateFeatureStates

Standard action

PatchWelcome

Dialog

InstallWelcome

Dialog

SetupResume

Dialog

636

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-19: User-Interface Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog MaintenanceWelcome Type of Event Dialog Description This dialog opens when the end user tries to change a programs installed features, remove the program, reinstall the program, run an installation for the second time, or select the current product in Add or Remove Programs. This dialog displays the installations progress. This action queries the EXECUTEACTION property to determine which top-level action should be called first, and then calls that top-level action. Top-level actions include the INSTALL, ADVERTISE, and ADMIN actions. Typically, this action starts the Installation Execute sequence. This custom action appears when you add a file in the Support Files view. For more information, see Using Support Files.

SetupProgress ExecuteAction

Dialog Standard action

ISSetupFilesCleanup

Custom action

Execute
The Execute sequence contains all of the actions that can change the machines state and do not rely upon the user interface in order to function properly. These actions include file transfer, publishing components and features, and registering COM servers. Most of the Execute sequence is skipped when you run your installation in test mode, except for custom actions that have been inserted into the sequence.
Table 13-20: Execute Actions and Dialogs in the Installation Sequence Name of Action or Dialog ISSetupFilesExtract Type of Event Custom action Description This custom action extracts any files that you have added in the Support Files view. For more information, see Using Support Files. The ISSetAllUsers custom action is inserted in the both the User Interface and Execute installation sequences only if one or more records are in the Upgrade table. This action can be used to identify and locate earlier versions of your product. The Signature table that this action requires is available in the Direct Editor. Knowledge Base article Q103147 provides detailed information on using this action. This action evaluates a set of conditions that must return True if the installation is to continue. If any condition fails, the installation displays an error message and the installation ends. You can edit launch conditions in the General Information view. When this action is executed, the installer compares each installed products upgrade code to that listed in the packages Upgrade table (supported in the Direct Editor). If a match is found, the installed packages product code is added to the ActionProperty column of the Upgrade table.

ISSetAllUsers

Custom action

AppSearch

Standard action

LaunchConditions

Standard action

FindRelatedProducts

Standard action

InstallShield 2010 User Guide

ISP-1600-UG00

637

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog CCPSearch Type of Event Standard action Description The CCPSearch action enables you to check the end users system for products qualifying for upgrade. The Signature table that this action requires is available in the Direct Editor. The RMCCPSearch action enables you to check an end users system for products qualifying for competitive upgrade. The Signature table that this action requires is available in the Direct Editor. Use the ValidateProductID action to set the ProductID property to the complete product identifier. Validation allows you to protect your software from illegal use by requiring end users to enter the product ID. This action is the first step in determining how much disk space is required by the current installation configuration. This action determines how much disk space will be required by the current installation configuration. This action checks to see if any files will be overwritten with newer versions and calculates how overwriting those files will affect disk space. This action installs a componentusually a .dll fileinto an isolated location so that it will be used by only your application. The CostFinalize action determines the total amount of disk space required by the current installation configuration. This action also verifies that all target directories are writable. The SetARPINSTALLLOCATION custom action sets the value of the ARPINSTALLLOCATION property to the fully qualified path for the applications primary folder. The SetODBCFolders action checks for existing ODBC drivers on the target system and sets the target directory of each new driver to the location of an existing driver. This action is used during application upgrade. The feature states of the original installation are read from the target machine and applied to the upgraded features. The InstallValidate action determines if there is enough disk space available for the current installation configuration. The RemoveExistingProducts action performs a silent uninstallation of any products whose code appear in OLDPRODUCTS. The InstallInitialize action signals the beginning of the actions that make changes to the end users system.

RMCCPSearch

Standard action

ValidateProductID

Standard action

CostInitialize

Standard action

FileCost

Standard action

IsolateComponents

Standard action

CostFinalize

Standard action

SetARPINSTALLLOCATION

Custom action

SetODBCFolders

Standard action

MigrateFeatureStatus

Standard action

InstallValidate

Standard action

RemoveExistingProducts

Standard action

InstallInitialize

Standard action

638

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog AllocateRegistrySpace Type of Event Standard action Description The installer makes sure that the system has at least as much free registry space available as specified in the AVAILABLEFREEREG property when it performs this action. The ProcessComponents action is responsible for unregistering and registering components. This action also registers or unregisters a components key path and any other clients that the component has. This action, called during uninstallation, unpublishes components that were published by your original installation, even if those components have been published by other applications. The MsiUnpublishAssemblies action handles uninstallation of the assembly with the operating system. The UnpublishFeatures action removes all references to features that were originally published during installation. These references include registry entries that contain selection-state and feature-component mapping information. This action stops the Windows services that are configured to be stopped. For more information, see Installing, Controlling, and Configuring Windows Services. This action removes the Windows services that are configured to be deleted. For more information, see Installing, Controlling, and Configuring Windows Services. This action unregisters COM+ applications. This action unregisters files registered by data in the SelfReg table. During uninstallation, this action unregisters every file in the TypeLib table that is marked for uninstallation. This table is populated when you create a new TypeLib through the COM Registration advanced setting. During uninstallation, this action queries the ODBCDataSource table, ODBCTranslator table, and ODBCDriver table to find which ODBC resources should be removed during uninstallation. The resources that are marked for removal are uninstalled. This action unregisters information about all the fonts that are set for uninstallation.

ProcessComponents

Standard action

UnpublishComponents

Standard action

MsiUnpublishAssemblies

Standard action

UnpublishFeatures

Standard action

StopServices

Standard action

DeleteServices

Standard action

UnregisterComPlus SelfUnregModules

Standard action Standard action

UnregisterTypeLibraries

Standard action

RemoveODBC

Standard action

UnregisterFonts

Standard action

InstallShield 2010 User Guide

ISP-1600-UG00

639

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog RemoveRegistryValues Type of Event Standard action Description The RemoveRegistryValues action removes values from the end users registry if all of the following conditions are met:


UnregisterClassInfo Standard action

The values have been authored into the Registry table. The values are marked for uninstallation. The component to which the registry entry belongs is set to run from source or is installed locally.

This action manages system registry information removal for COM classes that belong to features that are being uninstalled. This action unregisters all extension-related information from the end users system during uninstallation. This action unregisters all of the ProgIDs created in the File Types advanced setting. This action queries the MIME table of the current feature that is being uninstalled, and unregisters the MIME information for the servers found therein. This information is created through the File Types advanced setting. This action removes only the .ini information that has been associated with a component in the IniFile tableor using the INI File Changes view. After verifying the presence in the IniFile table, this action removes all .ini files that are listed in the RemoveIniFile table if the component with which those files are associated is marked for uninstallation and the component was installed locally or set to run from source. The RemoveIniValues action also removes all .ini files that were written with the WriteIniValues action if the components with which they are associated are marked to be uninstalled. This action removes all advertised shortcuts to features that are marked for uninstallation. It also removes all non-advertised shortcuts to components that are marked for uninstallation. When a component is removed, this action reverses any changes made to environment variables by the WriteEnvironmentStrings action during installation or reinstallation. You can specify environment variable changes using the Environment Variables view. This action removes files that were created by the DuplicateFiles action. For this action to succeed, the component associated with the duplicate file must be marked for uninstallation. This action removes files that were originally installed by the InstallFiles action, if those files were set to run from source or installed locally, and the component with which they are associated is marked for uninstallation.

UnregisterExtensionInfo

Standard action

UnregisterProgIdInfo

Standard action

UnregisterMIMEInfo

Standard action

RemoveIniValues

Standard action

RemoveShortcuts

Standard action

RemoveEnvironmentStrings

Standard action

RemoveDuplicateFiles

Standard action

RemoveFiles

Standard action

640

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog RemoveFolders Type of Event Standard action Description The Remove Folders action unregisters and removes any empty folders that are associated with components that are marked for uninstallation and run from source. This action creates empty folders for components that are set to be installed locally. These new folders are then registered with the associated component GUID (found in the components Component Code property). This action enables you to move or copy files that already exist on the target system. The MoveFiles table, used by this action, is available in the Direct Editor. The InstallFiles action copies all of the selected features files to the target machine if the component feature to which those files belong is marked for installation. Only files that are associated with components that are to be installed locally are copied to the target machine. This action queries the Patch table to determine which installed files have patches available. Those files undergo the bit-wise patching process. The DuplicateFiles action creates copies of certain files installed with the InstallFiles action. These files can be copied to the same directory as the original and given a different name, or they can be copied to a separate directory while maintaining the original name. The DuplicateFiles table, used by this action, is available in the Direct Editor. Writes the virtual address of imported .dll file functions in the files import address table, as specified in the BindImage table, which is available in the Direct Editor. This action creates the shortcuts that you specified in the Shortcuts explorer in the Shortcut view or the Setup Design view. This action registers all of the COM class info that you specified in the COM Registration advanced setting, or which was extracted by the Component Wizard or a components COM Extract at Build setting. The RegisterExtensionInfo action registers all the extensions that you specified in the File Types advanced setting. This action registers all of the ProgIDs that you defined in the Advanced Settings and that are linked to class servers or extension servers marked for installation.

CreateFolders

Standard action

MoveFiles

Standard action

InstallFiles

Standard action

PatchFiles

Standard action

DuplicateFiles

Standard action

BindImage

Standard action

CreateShortcuts

Standard action

RegisterClassInfo

Standard action

RegisterExtensionInfo

Standard action

RegisterProgIdInfo

Standard action

InstallShield 2010 User Guide

ISP-1600-UG00

641

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog RegisterMIMEInfo Type of Event Standard action Description This action registers all of the MIME types that you defined in the File Types advanced setting that are linked to class servers or extension servers marked for installation. This action writes registry data to the target system if the associated component is marked for installation and set to run from source or installed locally. This registry information is the same data that you created in the Registry view. This action writes information to .ini files if the component with which this action is associated is set to be installed locally or run from source. This action and its corresponding tables are exposed in the INI File Changes view. When a component is installed, this action changes the environment variables on the system specified in the Environment table or the Environment Variables view. The RegisterFonts action registers any fonts that you included in your installation. In most cases, they were included using the Component Wizard. This action installs all of the drivers, translators, and data sources for the ODBC resources that you specified through the ODBC Resources view. This action registers any type libraries that you may have created in your installation, either through the COM Registration advanced setting or the Component Wizard. This action registers self-registering modules listed in the SelfReg table. This action is performed with the default user privileges. This action registers COM+ applications. This action installs the Windows services that are configured to be installed. For more information, see Installing, Controlling, and Configuring Windows Services. This action configures extended customization options for Windows services. For more information, see Installing, Controlling, and Configuring Windows Services.

WriteRegistryValues

Standard action

WriteIniValues

Standard action

WriteEnvironmentStrings

Standard action

RegisterFonts

Standard action

InstallODBC

Standard action

RegisterTypeLibraries

Standard action

SelfRegModules

Standard action

RegisterComPlus InstallServices

Standard action Standard action

MsiConfigureServices

Standard action

Note: This action is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. StartServices Standard action This action starts all services that are configured to be started. For more information, see Installing, Controlling, and Configuring Windows Services.
ISP-1600-UG00 InstallShield 2010 User Guide

642

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-20: Execute Actions and Dialogs in the Installation Sequence (cont.) Name of Action or Dialog RegisterUser Type of Event Standard action Description This action registers user information to identify the user of the program. This action registers the product with the installer and saves the installer database on the target machine. This action publishes all components that are associated with advertised features. This action registers each features installation state. This state can be absent, advertised, or installed. If the feature is installed, the PublishFeatures action writes the featurecomponent relationship to the registry. This action publishes a product if it is being advertised. Insert the ScheduleReboot action into the action sequence to prompt the end user to reboot the system at the end of an installation. The ScheduleReboot action is typically placed at the end of the sequence. This action is the last transacted step. This action loops through all the product codes listed in the Upgrade table and removes those products. This custom action appears when you add a file in the Support Files view. For more information, see Using Support Files.

RegisterProduct

Standard action

PublishComponents

Standard action

PublishFeatures

Standard action

PublishProduct ScheduleReboot

Standard action Standard action

InstallFinalize RemoveExistingProducts

Standard action Standard action

ISSetupFilesCleanup

Custom action

Advertisement Sequence
The Advertisement sequence is the list of actions that occur when an end user launches your installation with the /j command-line option for MsiExec.exe. The built-in actions in this sequence are described in the table below.

User Interface
Validation rule ICE78 requires the Advertisement User Interface sequence to be empty.

Execute
The Execute sequence contains all the actions that do not rely upon the user interface in order to function properly. These actions include file transfer, publishing components and features, and registering COM servers.

InstallShield 2010 User Guide

ISP-1600-UG00

643

Chapter 13: Customizing Installation Behavior Defining Sequences

For complete technical details about each standard action, see the Standard Actions Reference in the Windows Installer Help Library.
Table 13-21: Execute Actions in the Advertisement Sequence Action Name CostInitialize Type of Event Standard action Description The first step in determining how much disk space is required by the current configuration of the installation. Determines the total amount of disk space required by the installation in its current configuration. Determines if there is enough disk space available for the current configuration. Marks the beginning of the actions that make changes to the end users system. Creates the shortcuts specified in the Shortcuts view or the Setup Design view. Registers all of the COM class information specified in the COM Registration advanced setting. Registers all of the extensions specified in the File Types advanced setting. Registers all of the ProgIDs that defined in the COM Registration advanced setting if its component is being advertised. Registers all of the MIME types that are defined in the File Types advanced setting if its component is being advertised. Registers any type libraries that were created in the installation, either through the COM Registration advanced setting or the Component Wizard. Publishes all components that are associated with features that are being advertised. Manages the advertisement of common language run-time assemblies and Win32 assemblies. The action queries the MsiAssembly table to determine which assemblies have features being advertised or installed to the global assembly cache and which assemblies have a parent component being advertised or installed to a location isolated for a particular application. Registers each features installation state. This state can be absent, advertised, or installed. If the feature is installed, this action writes the feature-component relationship to the registry. Publishes a product if it is being advertised.

CostFinalize

Standard action

InstallValidate

Standard action

InstallInitialize

Standard action

CreateShortcuts

Standard action

RegisterClassInfo

Standard action

RegisterExtensionInfo

Standard action

RegisterProgIdInfo

Standard action

RegisterMIMEInfo

Standard action

RegisterTypeLibraries

Standard action

PublishComponents

Standard action

MsiPublishAssemblies

Standard action

PublishFeatures

Standard action

PublishProduct

Standard action

644

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-21: Execute Actions in the Advertisement Sequence (cont.) Action Name InstallFinalize Type of Event Standard action Description The final step of the installation or uninstallation.

Administration Sequence
The Administration sequence is the list of actions that execute when a user launches your setup program with the /a command-line option. The built-in actions and dialogs for this sequence are defined in the tables below.

User Interface
The User Interface sequence contains all of the actions and dialogs needed to support a full user interface. This sequence is skipped if an installation is run in silent mode.

Project: The User Interface actions described below are those for a Basic MSI project. For an InstallScript MSI project, your InstallScript code performs the user interface of the installation.

For complete technical details about each standard action, see the Standard Actions Reference in the Windows Installer Help Library.
Table 13-22: User-Interface Actions in the Administration Sequence Action Name SetupCompleteError Type of Event Dialog Description This dialog is displayed at the end of an installation if it was terminated because of a fatal error. This dialog is displayed at the end of an installation that was ended by the end user. This dialog is displayed at the end of a successful installation. This dialog is displayed while the installation is preparing to begin. The default text for this dialog is Preparing to install... This action is the first step in determining how much disk space is required by the current configuration of the installation. This action determines how much disk space will be required by the current configuration of the installation. This action checks to see if any files will be overwritten with newer versions, and it calculates how overwriting those files will affect disk space. The CostFinalize action determines the total amount of disk space required by the installation in its current configuration. This action also verifies that all target directories are writable. This is the first dialog displayed during the Administration sequence.

SetupInterrupted

Dialog

SetupCompleteSuccess SetupInitialization

Dialog Dialog

CostInitialize

Standard action

FileCost

Standard action

CostFinalize

Standard action

AdminWelcome

Dialog

InstallShield 2010 User Guide

ISP-1600-UG00

645

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-22: User-Interface Actions in the Administration Sequence (cont.) Action Name SetupProgress ExecuteAction Type of Event Dialog Standard action Description This dialog displays the progress of the installation. This action runs the Administration Execute sequence.

Execute
The Execute sequence contains all the actions that do not rely upon the user interface in order to function properly. These actions include file transfer, publishing components and features, and registering COM servers.
Table 13-23: Execute Actions and Dialogs in the Administration Sequence Action Name CostInitialize Type of Event Standard action Description This action is the first step in determining how much disk space is required by the current installation configuration. This action determines how much disk space will be required by the current installation configuration. This action checks to see if any files will be overwritten with newer versions and calculates how overwriting those files will affect disk space. The CostFinalize action determines the total amount of disk space required by the installation in its current configuration. This action also verifies that all target directories are writable. The InstallValidate action determines if there is enough disk space available for the current setup configuration. The InstallInitialize action marks the beginning of the actions that make changes to the end users system. This action copies the installation database to the administrative installation point. The InstallFiles action copies all of the files to the target machine if the feature that those files belong to is slated for installation. Only files that are associated with components that are to be installed locally will be copied to the target machine. This action is the final step of the installation or uninstallation.

FileCost

Standard action

CostFinalize

Standard action

InstallValidate

Standard action

InstallInitialize

Standard action

InstallAdminPackage

Standard action

InstallFiles

Standard action

InstallFinalize

Standard action

User Interface Sequence


The User Interface sequence contains all of the actions and dialogs required for the default user interface. These actions and dialogs do not make changes to the target system. Generally, they gather information about the system environment and the end user for use later in the installation. By default, the Administration and Installation sequences each contain a User Interface sequence.

646

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Project: InstallScript custom actions are not supported in the User Interface sequence for InstallScript MSI projects.

Execute Sequence
The Execute sequence is executed after the User Interface sequence, unless your installation is run in silent mode. The Execute sequence contains all the standard and custom actions that change the target system. For example, file transfer is handled during the Execute sequence. Typically, this sequence is the part of the installation where changes are made to the target machine. Each sequence (Installation, Advertisement, and Administration) has different actions that occur in the Execute sequence. This discrepancy is due to the fact that each of those sequences achieves different goals. For example, the Installation sequence installs the product on the target machine. The Advertisement sequence installs the products advertised shortcuts, file-type information, and COMserver data on the target machine, but it does not transfer the products files until the end user selects the shortcut, opens a registered document, or invokes an advertised COM server. As can be gathered from the name of the sequence, the product is advertised.

Inserting Actions into Sequences


Sequences dictate when all of the actions that are associated with an installation will be executed. You can add, remove, or reorder actions in any sequence. For example, if you want to display a readme file as part of the installation, you can add to your installation a custom action that launches the readme file. This action must be inserted into a sequence. Inserting actions into a sequence is governed by when actions in that sequence launch. Many actions rely on other actions executing before they can function. For example, if you want to launch an executable file that will be installed as part of your installation, you cannot execute the action that relies upon that executable file until the point in the sequence when the files have been installed.

Note: InstallShield does not provide any validation on your sequences. If an action is placed in a sequence where it cannot function properly, an error will not occur until the installation is run.

Inserting an Action

Task

To insert an action into a sequence: 1. 2.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Sequences explorer, right-click the action or dialog that you want your action to follow and click Insert. The Insert Action dialog box opens, providing a list of all the actions and dialogs that can be added to the sequence. In the list at the top of the dialog box, select the type of action that you want to insert. In the box that shows a list of actions, select the action that you want to insert. Click OK.
ISP-1600-UG00 647

3. 4. 5.

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

InstallShield also includes drag-and-drop support that enables you to drag and drop custom actions from the Custom Actions explorer to a sequence in the Sequences explorer.

Task

To insert a custom action into a sequence using the drag-and-drop method: 1. 2.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Drag the custom action from the Custom Actions explorer to the appropriate location in a sequence under the Sequences explorer. When you drop it, drop it onto the item that should be directly before it in the sequence.

Note: A custom action cannot be called twice in the same sequence, since the custom action name is the key in the CustomAction table. Therefore, you cannot insert a custom action to a sequence that already contains that custom action.

Determining Where to Insert the Action


There are several categories of custom actions that you can include in your installation: calling a standard or Windows Installerready .dll function, launching an executable file, running a script (JScript, VBScript, or InstallScript), setting a property or directory, and launching a second .msi installation. All types can be called at different times depending on the configuration of the custom action. For more information, see the following:

Sequencing a Custom Action that Calls a Function in a .dll File Sequencing a Custom Action that Launches an .exe File Sequencing a Custom Action that Calls a Script Sequencing Custom Actions that Set Properties or Directory Properties Sequencing a Custom Action that Launches a Second .msi Package

Considerations for Custom Actions from Included Merge Modules


You can control the launch of custom actions in a merge module by modifying the ModuleInstallExecuteSequence table in the Direct Editor. When you add the merge module to your installation project, all custom actions and dialogs included in the merge module are available for you to insert in the installations sequences through the Custom Actions and Sequences view.

Copying a Custom Action from One Sequence to Another


InstallShield enables you to copy a custom action in one sequence to another sequence through a dragand-drop operation.

648

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Task

To copy a custom action from one sequence to another: 1. 2. 3.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Sequences explorer, find the action that you want to copy. Press and hold CTRL while dragging the custom action from one sequence to another sequence, and drop it onto the action or dialog that should be directly before it.

Note: A custom action cannot be called twice in the same sequence, since the custom action name is the key in the CustomAction table. Therefore, you cannot move or copy a custom action to a sequence that already contains that custom action. Dialogs and standard actions cannot be moved to a different type of sequence through a drag-and-drop operation.

Reordering a Sequence
The actions and dialogs in the Sequences explorer in the Custom Actions and Sequences view are organized by chronological order, according to when they are launched. Each action and item also has a number that identifies its location in the sequence in relation to other items sequence numbers. The items are launched in order from the lowest number to the highest number. When you add a dialog (to Basic MSI, MSI Database, and Transform projects) or a custom action to your project, you can specify when it should be launched by adding it to the appropriate place in a sequence.

Task

To change the order in which actions and dialogs in a sequence execute: 1. 2.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Do one of the following:

To sequence a new custom action, drag it from the Custom Actions explorer to the appropriate location in a sequence under the Sequences explorer. When you drop it, drop it onto the item that should be directly before it in the sequence. To move an action or a dialog to a different point in a sequence (or from one sequence to another), drag it from the old location and drop it onto the item that should be directly before it in the sequence.

Note: A custom action cannot be called twice in the same sequence, since the custom action name is the key in the CustomAction table. Therefore, you cannot move or copy a custom action to a sequence that already contains that custom action. Dialogs and standard actions cannot be moved to a different type of sequence through a drag-and-drop operation. If you change a custom action after adding it to a sequence, you do not need to reassociate it with that sequence. The action that you put in the sequence is a pointer to the real action, and it is dynamically updated whenever you make changes to the action in the Custom Actions and Sequences view.
InstallShield 2010 User Guide ISP-1600-UG00 649

Chapter 13: Customizing Installation Behavior Defining Sequences

Tip: You can also move actions and dialogs in the Sequences explorer using any of the following methods:

Right-click the action or dialog and click Move Up or Move Down. Click the action or dialog and then press CTRL+SHIFT+UP ARROW or CTRL+SHIFT+DOWN ARROW. Change the position of the action or dialog by editing its Sequence Number setting, which is displayed in the grid on the right when you click the action or dialog. To move a an action or dialog to an earlier point in a sequence, give it a lower sequence number. To move it to a later point in the sequence, give it a higher sequence number.

Removing Actions from Sequences


Task To remove an action from a sequence: 1. 2. 3.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Sequences explorer, expand the sequence that contains the action that you want to remove. Right-click the action and click Remove.

The action is removed from that sequence only, not from all sequences or from the project. You can permanently remove an action from an installation project through the Custom Actions explorer in the Custom Actions and Sequences view.

Sequencing Rollback Custom Actions


Any custom action that is in your installation project and that makes direct changes to the target system should have a rollback equivalent custom action. The rollback custom action can undo those changes in the event of rollback. For example, if you have a custom action that deletes files from the target system, and you do not include a rollback custom action to restore those deleted files, the computer could be left in an unstable state even after rollback has completed. Rollback custom actions behave in a similar way to deferred custom actions. That is, they do not launch when first encountered in a sequence. Instead, they are written to the rollback script, which launches only in the event of a rollback. When inserting a rollback custom action into a sequence, note the following:

A rollback can occur only during the Execute sequence and not at any point during the User Interface sequence. Therefore, the rollback action must be placed after InstallInitialize and before InstallFinalize in the Execute sequence. The rollback custom action must be sequenced before the action it rolls back. In all other instances, the Windows Installer service runs through sequences from top to bottomthe lower the sequence number, the sooner the action launches. In the rollback script, however, the service runs in the opposite direction. Therefore, to launch your rollback action when it is needed, sequence it before the action that it rolls back.

650

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Sequencing a Custom Action that Launches an .exe File


Launching an executable file as your custom action can be a little trickier than calling a .dll file function in terms of where that action can be inserted into the sequence. You should consider things such as when the .exe file will be launched during the installation and which sequences you want the custom action to occur in.

Executable Files Stored in the .msi Package


When you are launching a .exe file that is stored in the .msi package, you can place the custom action anywhere in the sequence.
Table 13-24: Settings for Actions that Launch an .exe File in the .msi Package Action Type Launch an executable Location Scheduling Sequence Anywhere in the sequence

Stored in .msi package Not applicable

Installed Executable Files


If your .exe file is going to be installed as part of the installation, you should follow one of two sets of rules, depending on which scheduling property (Deferred Execution or Immediate Execution) you chose. For Immediate Execution, you must insert your action after the InstallFinalize action in order for it to work properly. For Deferred Execution, you need to insert the action after the InstallFiles action and before the InstallFinalize action.
Table 13-25: Settings for Actions that Launch an Installed .exe File Action Type Launch an executable Launch an executable Location Installed Scheduling Immediate Execution Sequence After InstallFinalize

Installed

Deferred Execution

After InstallFiles and before InstallFinalize

Local Executable Files


If the .exe file that you would like to run is already present on the system, you will need to insert your action after the CostFinalize action is called. See the table below for a clearer view.
Table 13-26: Settings for Actions that Launch an .exe File that Is Already Installed Action Type Launch an executable Launch an executable Location Local Scheduling Not applicable Sequence After CostFinalize

Local

Not applicable

After CostFinalize

InstallShield 2010 User Guide

ISP-1600-UG00

651

Chapter 13: Customizing Installation Behavior Defining Sequences

Sequencing a Custom Action that Calls a Function in a .dll File


If you want to sequence a custom action that calls a function in a .dll file, there are three different ways to reference the .dll file, depending on where the .dll file is located during the installation:

The .dll file can be streamed into the .msi file, but it is not installed. The .dll file can be in the target systems path (applies to a standard .dll file but not a Windows Installer .dll file). The .dll file can be installed with the rest of the installation files.

Other considerations include scheduling. The two main scheduling choices are Immediate Execution and Deferred Execution. Immediate Execution means that Windows Installer will execute your custom action as it processes the .msi file. Deferred Execution tells the installer to queue the action and perform it in sequence in the script.

.dll Files Stored in the .msi Package


When you are calling a function from a .dll file that is stored in the .msi package, you can place the custom action anywhere in the sequence.
Table 13-27: Settings for Actions that Call a Function in a .dll File that is stored in the .msi Package Action Type .dll Function Location Scheduling Sequence Anywhere

Stored in .msi package Not applicable

.dll Files Found in the Systems Path


When you are calling a function from a .dll file that exists on the target system, there are also no restrictions on where you can place the custom action in the sequence.
Table 13-28: Settings for Actions that Call a Function in a .dll File that Is Found in the Systems Path Action Type .dll Function Location On target system Scheduling Not applicable Sequence Anywhere

Installed .dll Files


If you are calling a .dll function from a file that is going to be installed to the target machine during the installation and you have it scheduled to run during Immediate Execution, you can place the action only after the InstallFinalize action. If you want the action to occur during Deferred Execution, place the action after the InstallFiles action and before the InstallFinalize action. The following table illustrates this point:
Table 13-29: Settings for Actions that Call a Function in a .dll File that Is Already Installed Action Type .dll Function Location Installed Scheduling Immediate Execution Sequence After InstallFinalize

652

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Table 13-29: Settings for Actions that Call a Function in a .dll File that Is Already Installed Action Type .dll Function Location Installed Scheduling Deferred Execution Sequence Before InstallFinalize and After InstallFiles

Sequencing a Custom Action that Calls a Script


Using script inside your custom action enables you to perform virtually any task. For example, you can launch external applications or create registry entries.

VBScript and JScript Code


Installed with the Product If your script file is going to be installed as part of the installation, you should follow one of two sets of rules depending on which scheduling property (Deferred Execution or Immediate Execution) you chose. For Immediate Execution, you must insert your action after the InstallFinalize action in order for it to work properly. For Deferred Execution, you need to insert the action after the InstallFiles action and before the InstallFinalize action.
Table 13-30: Settings for Actions that Call a VBScript or JScript File that Is Installed with the Product Action Type Run VBScript or JScript Code Run VBScript or JScript Code Location Installed Scheduling Immediate Execution Sequence After InstallFinalize

Installed

Deferred Execution

After InstallFiles and before InstallFinalize

Stored in the Binary Table If the script file that you are calling is stored in the Binary table, you can place the action anywhere in the sequence.
Table 13-31: Settings for Actions that Call a VBScript or JScript File that Is Stored in the Binary Table Action Type Run VBScript/ JScript Code Location Temporary Scheduling Not applicable Sequence Anywhere in the sequence

InstallShield 2010 User Guide

ISP-1600-UG00

653

Chapter 13: Customizing Installation Behavior Defining Sequences

Already Present on the Target System If the script file that you want to call is already present on the system, you need to insert your action after the CostFinalize action is called.
Table 13-32: Action Type Run VBScript/ JScript Code Location Local Scheduling Not applicable Sequence After CostFinalize

Stored Directly in the Custom Action If you chose to place your script directly in the custom action, you can place the action anywhere in the sequence.

InstallScript Code
InstallScript custom actions differ from JScript or VBScript custom actions because the source files for InstallScript actions are always streamed into the .msi package. Therefore, the custom action can be inserted into a sequence anywhere after the action that has 2 as its sequence number. This limitation occurs because the script engine launches during sequence number 2. Therefore, if you call your script before the script engine launches, the system is not able to process it. If your custom action contains feature functions or setup type dialog functions, you must insert the custom action after the CostInitialize, FileCost, and CostFinalize actions.

Sequencing Custom Actions that Set Properties or Directory Properties


When you are sequencing a custom action that sets a property or directory, the primary guideline that you need to follow is to make sure that the custom action runs before that directory or property is needed. For example, if you want to launch an executable file that is present on the target machine, the installation will probably need to search for it first. Once the installation finds the executable file, its path can be added to the Directory table, and the executable file can be launched. However, if you call the custom action after you launch the executable file, the executable file will not be found. Some other sequencing and scheduling restrictions include:

Validation rule ICE12 requires any type-35 custom action (called Set a directory in the Custom Action Wizard) to be sequenced after the standard CostFinalize action in the sequences. Similarly, ICE12 requires any type-51 custom action (called Set a property in the Custom Action Wizard) that sets the value of a property found in the Directory table to be scheduled before the standard CostFinalize action. Any custom action that sets a property should be scheduled for immediate execution.

654

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Defining Sequences

Sequencing a Custom Action that Launches a Second .msi Package


Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations on the MSDN Web site.

When you are sequencing a nested-installation custom action (called Launch another .msi package in the Custom Action Wizard), you must place the action in the Execute sequence after the standard CostFinalize action. Additionally, ensure that the custom action launches before any of the files contained within the installation are needed by your main installation, if applicable. For example, if you later want to launch an executable file that is installed as part of the second .msi file, ensure that the package is installed before you try to launch the executable file.

ISSetAllUsers Custom Action


Why ISSetAllUsers Appears in Your Installation Packages Sequence
If you have entered one or more records in the Upgrade table for your installation (through the Upgrades view), InstallShield inserts a .dll custom action called ISSetAllUsers in both the User Interface and Execute portions of the installation sequence. When your product is installed as an upgrade, the ISSetAllUsers custom action checks the value of the ALLUSERS property in the installed version. The ALLUSERS property is indicated in the Customer Information dialog (for Basic MSI projects) and in either the SdCustomerInformation or SdCustomerInformationEx dialog (for InstallScript MSI projects) by the end user during the initial installation. The ISSetAllUsers custom action compares the value in the installed version to the value in the new version. If the values differ, then ISSetAllUsers sets the ALLUSERS property of the new version to match that of the installed version. Note that for upgrades, the ALLUSERS property is configurable only through a custom action. The new installations ALLUSERS property must match the installed versions property in order for the FindRelatedProducts action to succeed for the upgrade installation. In addition, if the previous version is installed for only one particular user and the upgrade is installed for all users, the resulting installation is corrupted and might not uninstall properly. ISSetAllUsers eliminates these problems by resetting the ALLUSERS property.

How ISSetAllUsers Works


The following example illustrates how the ISSetAllUsers custom action works:
1. 2. 3.

My Application 1.0 is installed with the ALLUSERS property set to 1 (the end user selected Install for All Users in the end-user dialog during installation). My Application 2.0 is authored as an upgrade to version 1.0 and has an entry in the Upgrade table to upgrade version 1.0. The end user installs version 2.0 on the target system as an upgrade.

InstallShield 2010 User Guide

ISP-1600-UG00

655

Chapter 13: Customizing Installation Behavior Using Support Files

4.

During the installation, ISSetAllUsers checks the value of the ALLUSERS property in the installed version and compares it to the new versions property by doing the following:
a. b. c.

ISSetAllUsers iterates through each entry in the Upgrade table of version 2.0. For every upgrade code in the Upgrade table, ISSetAllUsers searches for the related products on the target system. If the version and language constraints in the Upgrade table match one of the installed products (found in step 4b), ISSetAllUsers checks the ALLUSERS property of the installed version. If the value of ALLUSERS for the installed version differs from that of the new version, ISSetAllUsers sets the new installations ALLUSERS property to this value.

d.

Note: If no matching product is installed on the target system, ISSetAllUsers does nothing.

Using Support Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

Support files are files that are available on the target system only during your applications installation process. Support files are copied to a temporary directory on the target system when installation begins. The support files are deleted when the installation is complete. The support directory is a dynamic file location and might be different on every target system and even on the same system for different installation instances. In the Support Files view (in Basic MSI projects and InstallScript Object projects) or the Support Files/ Billboards view (in InstallScript projects and InstallScript MSI projects), you can add and remove files that you want to be available on the target system only during installation.

Adding Support Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

656

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Support Files

Task

To add support files to your installation project: 1.

In Basic MSI and InstallScript Object projects: In the View List under Behavior and Logic, click Support Files. In InstallScript and InstallScript MSI projects: In the View List under Behavior and Logic, click Support Files/Billboards.

2. 3. 4. 5.

In the Support Files explorer, click the item that should contain the support file that you are adding. Right-click anywhere in the Files pane and then click Insert Files. The Open dialog box opens. Browse to the file that you want to include. To select multiple files, hold down the CTRL key while clicking files. Click OK.

InstallShield adds the file to the Files pane.

Tip: You can also drag files from Windows Explorer and drop them into the Files pane.

Adding a License File


Project: This information applies to the following project types:

InstallScript InstallScript MSI

You can add a text file containing a license agreement in the Support Files/Billboards view.

Task

To add a license file: 1. 2. 3. 4. 5.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click the item that should contain the license file that you are adding. Right-click anywhere in the Files pane and then click Insert Files. The Open dialog box opens. Browse to the file that you want to include. To select multiple files, hold down the CTRL key while clicking files. Call the file in the szLicenseFile parameter in one of the SdLicense* functions in your script.

InstallShield 2010 User Guide

ISP-1600-UG00

657

Chapter 13: Customizing Installation Behavior Using Support Files

Sorting Support Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

You can sort the files in the Files pane of the Support Files view (in Basic MSI projects) or the Support Files/Billboards view (in InstallScript projects and InstallScript MSI projects) by clicking the heading of the column by which you want to sort the files. You can sort by any of the columns.

Adding Files and Folders to the Disk1 Folder


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

The Disk1 node enables you to indicate files and folders that you want to go on Disk1 of your installation media. These files and folders are not automatically installed to the target system when your installation is run. Rather, you can link to the installation media from your application or from the installation. For example, you might include a large redistributable file with your application. You may want end users to be able to access the redistributable, but you do not want to include in the application installation. If this is the case, this file can be placed in the Disk1 folder.

Task

To add a file or folder to the Disk1 folder: 1.

In Basic MSI projects: In the View List under Behavior and Logic, click Support Files. In InstallScript and InstallScript MSI projects: In the View List under Behavior and Logic, click Support Files/Billboards.

2. 3. 4. 5.

In the Support Files explorer, click Disk1. Right-click anywhere in the Files pane and then click Insert Files. The Open dialog box opens. Browse to the file that you want to include. To select multiple files, hold down the CTRL key while clicking files. Click OK.

InstallShield adds the file to the Files pane.

658

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Support Files

Removing Files or Folders from the Disk1 Folder


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

Task

To remove a file or folder from the Disk1 folder: 1.

In Basic MSI projects: In the View List under Behavior and Logic, click Support Files. In InstallScript and InstallScript MSI projects: In the View List under Behavior and Logic, click Support Files/Billboards.

2. 3.

In the Support Files explorer, click Disk1. In the Files pane, right-click the file or folder and then click Delete.

Adding Files and Folders to the Last Disk Folder


Project: This information applies to InstallScript projects.

The Last Disk node enables you to indicate files and folders that you want to go on the last disk of your installation media. These files or folders are not automatically installed to the target system when your installation is run. Rather, you can link to the installation media from your application or from the installation. For example, you might include a large redistributable file with your application. You may want end users to be able to access the redistributable, but you do not want to include in the application installation. If this is the case, this file can be placed in the last disk folder.

Task

To add a file or folder to the last disk image folder: 1. 2. 3. 4. 5.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click Last Disk. Right-click anywhere in the Files pane and then click Insert Files. The Open dialog box opens. Browse to the file that you want to include. To select multiple files, hold down the CTRL key while clicking files. Click OK.

InstallShield adds the file to the Files pane.

InstallShield 2010 User Guide

ISP-1600-UG00

659

Chapter 13: Customizing Installation Behavior Using Support Files

Removing Files or Folders from the Last Disk Folder


Project: This information applies to InstallScript projects.

Task

To remove a file or folder from the last disk image folder: 1. 2. 3.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click Last Disk. In the Files pane, right-click the file or folder and then click Delete.

Adding Files and Folders to the Other Disk Folder


Project: This information applies to InstallScript projects.

The Other node enables you to indicate files or folders that you want to go on a disk of your installation media other than the first or last disk. These files or folders are not automatically installed to the target system when your installation is run. Rather, you can link to the installation media from your application or from the installation.

Task

To add a file or folder to a disk image folder: 1. 2. 3. 4. 5.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click Other. Right-click anywhere in the Files pane and then click Insert Files. The Open dialog box opens. Browse to the file that you want to include. To select multiple files, hold down the CTRL key while clicking files. Click OK.

InstallShield adds the file to the Files pane.

Tip: To specify the disk, run the Release Wizard; in the General Options panel, click the Other Disk Files button.

Removing Files or Folders from the Other Disk Folder


Project: This information applies to InstallScript projects.

660

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 13: Customizing Installation Behavior Using Support Files

Task

To remove a file or folder from a disk image folder: 1. 2. 3.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click Other. In the Files pane, right-click the file or folder and then click Delete.

Removing Support Files


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

Task

To remove support files from your project: 1.

In Basic MSI and InstallScript Object projects: In the View List under Behavior and Logic, click Support Files. In InstallScript and InstallScript MSI projects: In the View List under Behavior and Logic, click Support Files/Billboards.

2. 3.

In the Support Files explorer, click the item that contains the support file that you want to delete. In the Files pane, right-click the file or folder and then click Delete.

InstallShield 2010 User Guide

ISP-1600-UG00

661

Chapter 13: Customizing Installation Behavior Using Support Files

662

ISP-1600-UG00

InstallShield 2010 User Guide

14
Defining the End-User Interface
This section of the documentation covers different features of InstallShield that enable you to define different aspects of the end-user interface. Some portions of the Defining the End-User Interface section discuss how to create and work with dialogs for the end-user interface of your installation. Others discuss topics such as strings, which let you localize your installation.

Working with Dialogs


This section of the documentation covers some of the basic and more advanced aspects of working with end-user dialogs for various project types in InstallShield.

Project: In Basic MSI installations, Windows Installer typically controls the run-time user interface. In InstallScript and InstallScript MSI installations, the InstallScript engine typically controls the run-time user interface. Therefore, some portions of this section of the documentation apply to Basic MSI installations, some apply to InstallScript and InstallScript MSI installations, and some apply to all three project types.

Working with Dialogs in Any Project Type


Dialogs provide the user interface for your installation. They request information from the end user and provide feedback about the progress of the installation process. The way in which you work with the dialogs in your project depends on the type of installation that you are creating. Adding dialogs to an InstallScript or InstallScript MSI project requires different steps than adding dialogs to a Basic MSI project.

Common Operations
Some of the dialog operations are common to Basic MSI, InstallScript, and InstallScript MSI projects.

Using the Dialog Wizard to Create a New Dialog Exporting a Dialog to an .isd File for Use in Other Projects
ISP-1600-UG00 663

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Importing Dialogs from an .isd File Exporting All Dialogs to an .rc File Importing Dialogs from Resource .dll Files Exporting Dialogs to Other Projects

Using the Dialog Wizard to Create a New Dialog


InstallShield provides a Dialog Wizard that enables you to add a new dialog to your installation and configure it by stepping through the wizard panels.

Adding the Ability to Create or Set an Existing User Account


Many server applications require the specification of a user account during installation. Therefore, having accessibility to a user account is often necessary because it enables a server application to access resources restricted to other users. InstallShield offers support for setting an existing Windows user account or creating a new one during installation by enabling you to add the appropriate run-time dialogs to your installation. This added functionality is supported in Basic MSI, InstallScript, and InstallScript MSI projects, with some differences, as described in the following table.
Table 14-1: Project-Specific Details for Adding User Account Support Project Type InstallScript Additional Information For InstallScript projects, the specified user name, password, and group information entered by the end user in the LogonInformation dialogs are stored in the following global variables:


Basic MSI

IFX_NETAPI_USER_ACCOUNT IFX_NETAPI_PASSWORD IFX_NETAPI_GROUP

For Basic MSI projects, the specified user name, password, and group information entered in the LogonInformation dialogs are stored in the following properties:


InstallScript MSI

IS_NET_API_LOGON_USERNAME IS_NET_API_LOGON_GROUP IS_NET_API_LOGON_PASSWORD

For InstallScript MSI projects, the specified user account, group, and password are stored in the following global variables and properties:


664

IFX_NETAPI_USER_ACCOUNT IFX_NETAPI_GROUP IFX_NETAPI_PASSWORD IS_NET_API_LOGON_USERNAME IS_NET_API_LOGON_GROUP IS_NET_API_LOGON_PASSWORD

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Task

To add the LogonInformation template to a Basic MSI project: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click All Dialogs, and click New Dialog. The New Dialog Wizard opens. Complete each panel of the wizard. In the Dialog Template panel, select Logon Information Panel and Associated Child Dialogs.

When you are done completing each panel of the New Dialog Wizard, build and run your installation project. When the dialog sequence in which the LoginInformationDialog template is executed, the appropriate dialogs will be displayed.

Task

To add support for the LogonInformation dialogs in either an InstallScript or InstallScript MSI project: 1.

Navigate to the location in your InstallScript code where you want to insert the LogonInformation dialog set. In most situations, you will add it within OnFirstUIBefore. For example:
Dlg_SdLogon: SdLogonUserInformation(szTitle, szMsg, szAccount, szPassword); if (nResult = BACK) goto Dlg_SdWelcome;

2.

In InstallScript MSI projects, add the following function so that the Windows Installer properties are set to the same value as the InstallScript global variables. You can add it after calling SdLogonUserInformation.
OnLogonUserSetMsiProperties();

3. 4. 5.

On the Build menu, click Settings. The Settings dialog box opens. Click the Compile/Link tab. In the Libraries (.obl) box, enter the name of your new library file (*.obl):
NetApiRT.obl

Note: You should add the new library file name before the isrt.obl file name.

Once you have added the InstallScript code, build and run your installation. When the script is executed, the appropriate dialogs are displayed.

Exporting a Dialog to an .isd File for Use in Other Projects


If you want to reuse an end-user dialog in other projects, you can export the dialog as an .isd file and then import it into other projects as needed. The .isd file contains the behavior and layout information for the dialog.

InstallShield 2010 User Guide

ISP-1600-UG00

665

Chapter 14: Defining the End-User Interface Working with Dialogs

Task

To export a dialog to an .isd file: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and then click Export to Dialog File. The Save As dialog box opens. Browse to the folder to which you want to save the .isd file. You can rename the file if required. Click OK.

You can now use the .isd file to import the dialog into another installation project.

Importing Dialogs from an .isd File


InstallShield enables you to import a dialog into your installation project. The file for the dialog (.isd file) can be stored in a repository, or it can be stored in some other location.

Task

To import a dialog into your project from an .isd file: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and then click Import Dialog. The Import Dialog dialog box opens. Do one of the following:


4.

In the Repository Items box, click the dialog that you want to add to your project. If the file for the dialog box (.isd file) that you want to import is not stored in the repository, click the Browse button to select it.

Click OK.

InstallShield adds a copy for each supported language to your project.

Note: When you import a dialog, make sure that any string identifiers, properties, and actions referenced by the dialog are present in the new installation project.

Resolving Conflicts
When you import a dialog, InstallShield checks to make sure that the name of the dialog and its controls are uniqueas required by Windows Installer. You cannot import a dialog with the same name as an existing dialog because InstallShield assumes that you are trying to import an identical dialog. If you try to import an .isd file that uses the names of controls or string identifiers that already exist in your installation project, InstallShield asks how you want to resolve those conflicts. You can either overwrite the existing values or skip the imported values in order to leave the existing ones.

666

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Displaying Dialogs During Installation


Adding a dialog to a project does not mean that the dialog will be displayed in the installation. For information on inserting the dialog into one or more of the projects sequences, see Displaying Dialogs During Basic MSI Installations.

Publishing a Dialog (.isd) File to a Repository


If you have an existing dialog (.isd) file that you would like to reuse in other projects or share with other users, you can publish it to a repository.

Task

To publish a dialog to a repository: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and then click Publish Wizard. The Publish Wizard opens. Complete the panels in the Publish Wizard.

After you have imported a dialog from a repository into a project, there is no link between the current dialog and the existing repository dialog. If you make a change to the dialog and then republish it to the repository, it does not affect the dialog in the project to which it was imported. However, you can reimport the dialog from the repository into your project.

Exporting All Dialogs to an .rc File


If you would like to edit your dialogs resources in a resource editor such as Visual Studio, you can export the dialogs to an .rc file.

Task

To export a dialog to a resource script (.rc) file: 1. 2.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click All Dialogs and click Export Dialogs to Resource Script.

InstallShield copies all of the dialogs resources for the default language to a file named <project name>.rc in the project location. Every attempt is made to preserve each dialogs layout as much as possible. However, since some information in the Dialog Editor has no counterpart in a resource editor, InstallShield exports the resources as they appear in the Dialog Editor with the following exceptions:
Table 14-2: Resources that Are Not Exported to an .rc File Exception String entries Description All strings entries are resolved to the value of the default language.

InstallShield 2010 User Guide

ISP-1600-UG00

667

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-2: Resources that Are Not Exported to an .rc File (cont.) Exception Paths Description The paths, including any path variables, to any resources, such as text files or bitmaps, are preserved to make it easier to import the dialog at a later point. A Windows Installer selection tree becomes a standard tree control in the .rc file. While the Dialog Editor maintains separate properties for font information (base text style and text style) and maximum character length, these properties are grouped together as they are in the Windows Installer tables. Unlike .isd files, which contain complete copies of the dialogs layout and behavior, .rc files store only the resources.

Selection trees Text style

Behavior

Editing the Dialogs in a Resource Editor


You can edit the dialogs geometry in a resource editoror Notepadas you would for any Windows dialog. Before importing the dialogs back into your project, you must compile the .rc file into a .res file and then build it into a .dll file.

Task

Assuming again that you use Visual Studio, follow the steps below to build MyProject.rc into MyProject.dll: 1.

Use the Resource Compiler (Rc.exe) to compile MyProject.rc into MyProject with the following command-line statement:
rc MyProject.rc

2.

Run the Incremental Linker (Link.exe) to build a .dll file with the following command:
link /DLL /NOENTRY /NODEFAULTLIB /MACHINE:iX86 /OUT:MyProject.dll MyProject.res

Importing Dialogs from Resource .dll Files

Task

To import all of the dialog resources from a .dll file: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click All Dialogs and click Import Dialogs from Resource Dlls. The Open dialog box opens. Browse to the .dll file that contains the dialog resources that you want to import. Click Open.

InstallShield adds each dialog to your project. Naming conflicts are resolved by adding a number to the imported dialog to make it unique.

668

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

If an imported control displays text that is already found as a string entry, InstallShield uses the existing string entry for the controls Text property.

Note: When you are importing a dialog, ensure that any properties referenced by the dialog are present in the new installation project.

Adding a dialog to a project does not mean that the dialog will be displayed during the installation run time. For information on inserting the dialog into one or more of the installations sequences, see Displaying Dialogs During Basic MSI Installations. Even though dialogs can be exported to an .rc file, you must build the resources into a .dll file before you can import them into InstallShield. For more information, see Exporting All Dialogs to an .rc File.

Exporting Dialogs to Other Projects


InstallShield enables you to insert a dialog from the current project into another existing project by exporting it.

Task

To export a dialog to an existing project: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and click Export to Project File. The Export Into dialog box opens. Browse to the location of an existing .ism file. It can be either an installation project or a merge module project, but the file cannot be open in another instance of InstallShield. Click Save.

A copy of this dialog is added to the specified .ism file, along with every control and all of the dialogs behavior. Any string entries, properties, and path variables used in the dialog are also copied to your new project. If the target .ism file already has a dialog of that name with different properties, the Resolve Conflict dialog box opens to offer you options for resolving the conflicting dialogs. You can also publish dialogs to a repository and reuse them in other installation projects. For more information, see Using a Repository to Share Project Elements.

Removing Dialogs from Projects


Basic MSI Projects

Task

To remove a dialog from a Basic MSI project: 1. 2.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and click Delete.
ISP-1600-UG00 669

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Note: Right-clicking a dialog in the Custom Actions and Sequences view and clicking Remove does not delete the dialog from your project. It only removes it from that sequence.

InstallScript and InstallScript MSI Projects

Task

To remove a dialog from an InstallScript or InstallScript MSI project: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and click Delete. In the View List under Behavior and Logic, click InstallScript. Delete the script that adds the dialog to your installations end-user interface.

Creating and Configuring Custom Dialogs


Consider the following tips when you create and configure custom dialogs in different project types.

InstallScript and InstallScript MSI Projects


When you add a new dialog in the Dialogs view, an entry for the dialog is added to the Dialog table. You can directly modify data in this table in the Direct Editor. In the Direct Editor, you can specify a value for the ISResourceId field for the new dialog. This ISResourceId value is used within the script to identify this dialog. Once you have added the dialog to your project, you need to call functions such as EzDefineDialog and WaitOnDialog to load this dialog in memory and display it at run time. The corresponding ISResourceId value in the Dialog table is used as the fourth argument of EzDefineDialog to reference the custom dialog. Also, in the second argument of EzDefineDialog, it is advantageous to specify ISUSER as opposed to a null string. The EzDefineDialog function should look like the following:
EzDefineDialog("MyCustomDialog", ISUSER, "", 12005)

In the above example, 12005 is the ISResourceId of this custom dialog, as specified in the Dialog table. Custom dialog functions can then be called to manipulate the custom dialog to your needs. These functions are documented in the InstallScript Language Reference.

Basic MSI Project


When you create a custom dialog in the Dialogs view of a Basic MSI project, a Windows Installertype dialog is created. InstallScript custom dialog functions cannot be used with this Windows Installertype dialog. To display this dialog in your installation, it must be placed in sequence between two dialogs by using their Next and Back controls.

670

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Undoing Changes in the Dialog Editor


The Dialog Editor remembers up to 50 actions for each dialog and allows you to restore each change starting from the most recent one. Additionally, you can undo changes even after saving the project. However, if you close a project and reopen it, the undo history is purged.

Undoing Changes

Task

To undo a change, do any of the following:

Press CTRL+Z. On the Edit menu, click Undo. Click the Undo button on the toolbar.

Redoing Undone Changes

Task

To place an undone change back into effect, do one of the following:

Press CTRL+Y. On the Edit menu, click Redo. Click the Redo button on the toolbar.

The Undo and Redo buttons and menu commands are enabled only while you are in the Dialog Editor or Script Editor. When you undo an action, you move back through the history of actions you performed on that dialog. When you redo, you move forward. For example, if you resized a button and then changed its Tab Index property, clicking Undo would restore the previous value of the Tab Index property. Clicking Undo a second time returns the button to its original size. Clicking Redo twice puts the changes back into effect on the buttons size and then its tab index.

Note: You cannot undo changes made to a string entry through the Dialog Editor.

Working with Dialogs in InstallScript and InstallScript MSI Projects


InstallShield enables you to call specific functions in your script to display end-user dialogs. The Dialogs view contains a list of standard dialogs as well as any custom dialogs that you have added to your project. This section of the documentation discusses how to create and perform basic functions with dialogs in InstallScript and InstallScript MSI projects.

InstallShield 2010 User Guide

ISP-1600-UG00

671

Chapter 14: Defining the End-User Interface Working with Dialogs

Displaying Dialogs During InstallScript and InstallScript MSI Installations

Project: This information applies to the following project types:

InstallScript InstallScript MSI

Most of the user interface of an InstallScript or InstallScript MSI installation is defined in event handlers such as OnFirstUIBefore and OnFirstUIAfter. The following sample InstallScript code in OnFirstUIBefore is for the SdWelcome and SdLicense2 dialogs:
Dlg_SdWelcome: szTitle = ""; szMsg = ""; nResult = SdWelcome( szTitle, szMsg ); if (nResult = BACK) goto Dlg_Start; Dlg_SdLicense2: szTitle = ""; szOpt1 = ""; szOpt2 = ""; szLicenseFile = SUPPORTDIR ^ "License.rtf"; nResult = SdLicense2Ex( szTitle, szOpt1, szOpt2, szLicenseFile, bLicenseAccepted, TRUE ); if (nResult = BACK) then goto Dlg_SdWelcome; else bLicenseAccepted = TRUE; endif;

Every dialog function returns a constant indicating which button the end user clicked to exit the dialog. To handle the end user clicking the Back button on a dialog, directly after the dialog is an if statement that compares the dialogs return value to the constant BACK, using a goto statement to jump to a label just before the previous dialog. In the aforementioned code example, if the end user clicks the Back button on the SdLicense2 dialog, the goto statement jumps to the Dlg_SdWelcome label, and the SdWelcome dialog is displayed to the end user. Therefore, if you insert a dialog function between two dialogs such as SdWelcome and SdLicense2, you need to adjust the if statements, labels, and goto statements as appropriate.

Task

To display a dialog to the end user as part of the installations user interface: 1. 2. 3.

In the View List under Behavior and Logic, click InstallScript. Add the dialog function to the appropriate script event handler. Modify the dialog functions parameters according to how you want the dialog to behave. To learn about the available parameters, refer to the dialog function documentation:


4.
672

Sd Dialog Functions Built-in Dialog Functions Custom Dialog Functions

Use the script to direct the flow of the dialogsfor example, by using if and goto statements.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Changing the Text on Dialogs in InstallScript and InstallScript MSI Projects

Project: This information applies to the following project types:

InstallScript InstallScript MSI

Most dialog functions accept a string argument called szTitle that defines the text appearing in the title area of the dialog. For example, the call to SdRegisterUser appears as follows:
SdRegisterUser( szTitle, szMsg, szName, szCompany );

By default, the parameter szTitle is defined as a null string (""), which indicates that the dialog should use the default title text. For SdRegisterUser, the default title appears as shown in the following screen shot.

Figure 14-1: Default Title Text for the SdRegisterUser Dialog

To modify the title, you can enter specific strings to display for the szTitle parameter. The title is divided into two sectionsthe bold text at the top of the title area, and the regular text under the main title. To specify the two sections in the value of szTitle, place a newline character \n between the two sections.
SdRegisterUser ("New Title\nThis is a new subtitle.", szMsg, szName, szCompany);

After recompiling the script and running the installation, the title is displayed as shown in the following sample screen shot.

Figure 14-2: Changed Title Text for the SdRegisterUser Dialog

To change other text displayed on a dialog, there are usually one or more parameters (such as szMsg) that contain the text to be displayed. As with dialog box titles, a null string in a message parameter indicates that the dialog should use the default message text provided by InstallShield. If your installation contains more than one UI language, you can use string identifiers instead of hardcoded strings in your InstallScript. For more information, see Using String Entries in InstallShield.

Creating New Custom Dialogs in InstallScript and InstallScript MSI Projects

Project: This information applies to the following project types:


InstallShield 2010 User Guide ISP-1600-UG00 673

Chapter 14: Defining the End-User Interface Working with Dialogs

InstallScript InstallScript MSI

To create a custom dialog, you need to perform the following general steps:
1.

Use the New Dialog Wizard to add a new custom dialog to your project. For more information, see Using the New Dialog Wizard to Add a New Custom Dialog to an InstallScript or InstallScript MSI Project. Add controls to the dialog. For more information, see Adding a Control to a Dialog in an InstallScript or InstallScript MSI Project. Create a script function that loads the dialog into memory, displays it on the screen, handles the end users interaction with the dialogs controls, and closes the dialog when the user is finished with it. For more information, see Using InstallScript to Implement Custom Dialogs.

2. 3.

Using the New Dialog Wizard to Add a New Custom Dialog to an InstallScript or InstallScript MSI Project

Project: This information applies to the following project types:

InstallScript InstallScript MSI

Task

To add a new custom dialog to your project: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click All Dialogs, and click New Dialog. The New Dialog Wizard opens. Follow the wizard panels to create the new dialog.

Once you have added a new custom dialog to your project, you can add dialog controls.

Editing the Layout of a Dialog in an InstallScript or InstallScript MSI Project

Project: This information applies to the following project types:

InstallScript InstallScript MSI

You can use the Dialog Editor to add, remove, and rearrange controls on a selected dialog. You can also use the Dialog Editor to modify the properties of the dialog or its controls. The InstallShield Dialog Editor functions much in the same way as other resource editors. When you use the Dialog Editor to change the layout or appearance of a dialog, you are changing only the current projects copy of the dialog; the changes do not affect any other projects.
674 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Task

To access the Dialog Editor, do one of the following:

In the Dialogs view, click a dialog and then click Edit dialog layout in the dialog preview pane on the right. In the Dialogs view, right-click a dialog and click Edit.

InstallShield displays the Dialog Editor in the center pane.

Note: When an end user runs your installation on a Windows platform that uses a desktop display theme, the theme is used to display your installations end-user dialogs.

Adding a Control to a Dialog in an InstallScript or InstallScript MSI Project

Project: This information applies to the following project types:

InstallScript InstallScript MSI

You can use the Controls toolbar in InstallShield to add controls to the dialog.

Task

To add a control to a dialog: 1. 2. 3. 4. 5.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and click Edit. InstallShield displays the dialog in the Dialog Editor. In the Controls toolbar, click the control that you want to add. Draw a rectangle on the dialog in the location where you want the control to be displayed. In the right pane, set the controls properties.

After adding the control in the Dialog Editor, you need to use InstallScript to process the end users interaction with the control. To learn more, see Using InstallScript to Process Dialog Controls.

Note: For projects created in Microsoft Visual Studio, you can use the Toolbox to add dialog controls.

Setting a Controls Properties

Project: This information applies to the following project types:

InstallShield 2010 User Guide

ISP-1600-UG00

675

Chapter 14: Defining the End-User Interface Working with Dialogs

InstallScript InstallScript MSI

The dialog itself and every control on it has a property sheet in the Dialog Editor. These properties determine such things as a controls size and position, its default text (as a string identifier), or whether the dialog is modal. To edit one of the property sheets, select the control on the dialog, or select a controls or dialogs name from the box above the property sheet. The properties vary depending on the type of control:

Dialog Check Box Push Button Edit Field Combo Box Text Area List Box Radio Button Bitmap Group Box Line Radio Button Group Selection Tree Progress Bar List View Icon Custom

Displaying Controls on Top of a Bitmap

Project: This information applies to the following project types:

InstallScript InstallScript MSI

When you are setting the properties of a bitmap and other dialog controls, you can indicate that the controls should be placed on top of the bitmap.

676

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Task

To display controls on top of a bitmap:

The value for the Tab Index property of the bitmap must be lower than the value for the Tab Index property of any controls that are to be placed on top of the bitmap. The easiest way to configure this is to set the bitmap controls Tab Index property to 0. All controlsincluding the bitmapmust have their Tab Stop properties set to True.

Using InstallScript to Implement Custom Dialogs

Project: This information applies to the following project types:

InstallScript InstallScript MSI

The next step in creating a custom dialog is to write an InstallScript function that processes the end users interaction with the dialog controls.

Task

To use InstallScript to implement a custom dialog in an InstallScript project: 1.

Begin by creating a new InstallScript source file to contain the custom dialog code. Name the file CustomDialog.rul.

Tip: To be able to use the dialog script in other projects, copy the .rul file to another location. In your other projects, open the InstallScript view, right-click the Files item in the InstallScript explorer, and click Insert Script Files. 2.

Inside CustomDialog.rul, place the prototype and implementation for your custom dialog function. Add the following code to CustomDialog.rul.
prototype NUMBER CustomDialog( ); function NUMBER CustomDialog( ) begin end;

3.

When you compile your script, indicate that the main script Setup.rul should include the code for your CustomDialog function by inserting the following line near the top of Setup.rul:
#include "CustomDialog.rul"

4.

In the CustomDialog.rul script, define the constants that store the numeric IDs of the controls that you added to the dialog. If you copied the Back, Next, and Cancel buttons from a standard dialog, you can add the following lines near the top of CustomDialog.rul:
// control identifiers #define BUTTON_NEXT 1 #define BUTTON_BACK 12 #define BUTTON_CANCEL 9

InstallShield 2010 User Guide

ISP-1600-UG00

677

Chapter 14: Defining the End-User Interface Working with Dialogs

In general, the numeric ID of a control on a dialog is the number listed in the controls Control Identifier property, displayed in the property list when you select the control in the Dialog Editor. You need to define additional constants for every other control (for example, check box, edit field, or list box) with which the end user can interact.
5.

Your CustomDialog function loads the custom dialog into memory using the EzDefineDialog function:
EzDefineDialog( "CustomDialog", ISUSER, "CustomDialog", 0); // // // // nickname for dialog DLL containing the dialogs resources name of dialog in Dialogs view numeric resource ID for dialog; not used here

To learn which arguments you use with EzDefineDialog, see EzDefineDialog.

Tip: The resource ID of a dialog is the dialogs name, as it appears in the Dialog Editor. If you need to specify a numeric resource ID, you can add a numeric ID to the ISResourceId column in the Dialog table for the custom dialog. You can access the Dialog table in the Direct Editor. 6.

Create a message loop in your script for the custom dialog. The message loop repeatedly calls the function WaitOnDialog, which returns the numeric control ID for the control with which user interacts with. A typical message loop appears as follows.
// repeatedly call WaitOnDialog until the user exits the dialog // box with the Next, Back, or Cancel button while (!bDone) // wait for the user to interact with a control, // then return its ID nCtrl = WaitOnDialog("CustomDialog"); // use a switch statement to handle the different controls switch (nCtrl) case CONTROL1: // do something when user clicks CONTROL1 case CONTROL2: // do something when user clicks CONTROL2 // case statements for other controls endswitch; endwhile;

For example, CustomDialog currently contains Next, Back, and Cancel buttons. Its message loop might appear as follows:
while (!bDone) nControl = WaitOnDialog("CustomDialog"); switch (nControl) case BUTTON_BACK: // user clicked Back
678 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

nReturn = BUTTON_BACK; bDone = TRUE; case BUTTON_NEXT: // user clicked Next nReturn = BUTTON_NEXT; bDone = TRUE; case BUTTON_CANCEL: // user clicked Cancel; ask user to verify cancellation Do(EXIT); endswitch; endwhile;

7.

When the end user exits the dialog by clicking Back or Next, you should remove the dialog from the screen and from memory using EndDialog and ReleaseDialog:
EndDialog("CustomDialog"); ReleaseDialog("CustomDialog");

To use the dialog in the main script, add a call to the CustomDialog function in, for example, the OnFirstUIBefore event handler of Setup.rul.
Dlg_SdWelcome: szTitle = ""; szMsg = ""; nResult = SdWelcome(szTitle, szMsg); Dlg_CustomDlg: nResult = CustomDialog( ); if (nResult = BUTTON_BACK) goto Dlg_SdWelcome; // etc.

If the end user clicks Back or Next, the script displays the previous or following dialog. If the user clicks Cancel, the standard confirmation dialog (handled by the OnCanceling event handler) is displayed.

Note: For information on implementing dialog control functionality, see Using InstallScript to Process Dialog Controls.

Special Messages
In addition to returning control identifiers, the WaitOnDialog function returns some special messages.

Immediately before the dialog is displayed on the screen, WaitOnDialog returns the message constant DLG_INIT. In the DLG_INIT case statement, you can set the default states of check boxes and radio buttons, populate and set the current selection in a list box or combo box control, or set the initial text of an edit field. If an error occurs, WaitOnDialog returns the constant DLG_ERR.

InstallShield 2010 User Guide

ISP-1600-UG00

679

Chapter 14: Defining the End-User Interface Working with Dialogs

Using InstallScript to Process Dialog Controls

Project: This information applies to the following project types:

InstallScript InstallScript MSI

In InstallScript and InstallScript MSI installation projects, you use InstallScript to process the controls that you add to your custom dialogs.

Using Check Box Controls


In addition to handling button clicks, a custom dialog generally needs to be able to retrieve the end users selections in dialog controls such as check boxes.

Note: InstallShield has a standard dialog called AskOptions. This dialog displays up to nine check boxes or radio buttons, and therefore it is not necessary to create a custom dialog to display only check boxes to the end user.

As with push buttons, for each check box control that you add to a dialog, you generally add a #define statement to your script that assigns a symbolic name to the numeric control ID. For example, if you add a check box control to a custom dialog, the controls numeric ID will appear in the Control Identifier property of the control. If the numeric ID is 1302, you would add the following line to your script.
#define MYCHECKBOX1 1302

For most types of controls, InstallScript defines CtrlGet and CtrlSet functions with which you can get or set the current state or data for a control. For example, you can get and set the current state of a check box control using CtrlGetState and CtrlSetState. In the DLG_INIT case of your dialogs message loop, you can call CtrlSetState to set the initial selection state of the check box. The following code causes the check box to appear initially selected.
case DLG_INIT: CtrlSetState("CustomDialog", MYCHECKBOX1, BUTTON_CHECKED);

Similarly, you can add the following code outside the dialogs message loop to detect the final selection state of the check box.
nState = CtrlGetState("CustomDialog", MYCHECKBOX1); if (nState = BUTTON_CHECKED) then // check box selected else // check box unselected endif;

Using Edit Fields


You can also add edit controls to a custom dialog, which allow the end user to enter a single line of text. InstallShield has standard dialogs called SdShowDlgEdit1, SdShowDlgEdit2, and SdShowDlgEdit3, which display one, two, or three edit fields in which the end user can enter text. You can read the text stored in an Edit control with CtrlGetText. For example, to read the text from an Edit control with resource ID 10000 into a string variable called svEdit, you can use the following code:

680

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

CtrlGetText("CustomDialog", 10000, svEdit);

Similarly, you can set the initial text stored in an Edit control (in the DLG_INIT block of the messageloops switch statement) with CtrlSetText.

Tip: You can use the Password attribute of an edit control to hide the characters that the end user types into the edit field. You can use the Number attribute to allow the end user to enter only numbers in the edit field.

Using List Box and Combo Box Controls


List box and combo box controls need to be associated with a variable of type LIST. Before displaying the list box control, you should populate a string-list variable, and associate it with the list box or combo box control using CtrlSetList in the dialogs DLG_INIT handler. (For a combo box control, you will usually set the Drop-Down List property to True, and set the Height property to the height of the drop-down-list portion of the control.) To set the initial selection in a list box or combo box control, you can call CtrlSetCurSel in the dialogs DLG_INIT handler; and to retrieve the users current selection call CtrlGetCurSel. For example, the following code populates a list variable with the drive letters of every available drive (using GetValidDrivesList), associates the list with a combo-box control, and then reads the end users selection from the combo box before exiting the dialog.
function NUMBER CustomDialog( ) NUMBER nReturn; NUMBER nControl; BOOL bDone; // variables for combo box list and current selection LIST listDrives; STRING svDrive; begin nReturn = EzDefineDialog("CustomDialog", ISUSER, "CustomDialog", 0); bDone = FALSE; // create the list containing the combo box items listDrives = ListCreate(STRINGLIST); // fill the list with all available drive letters GetValidDrivesList(listDrives, -1, -1); while (!bDone) nControl = WaitOnDialog("CustomDialog"); switch (nControl) case DLG_INIT: CtrlSetState("CustomDialog", MYCHECKBOX1, BUTTON_CHECKED); // associate the list with the combo box CtrlSetList("CustomDialog", MYCOMBOBOX1, listDrives); // get the first drive letter from the list... ListGetFirstString(listDrives, svDrive); // ...and make it the current selection CtrlSetCurSel("CustomDialog", MYCOMBOBOX1, svDrive); // ...cases for other controls... endswitch;

InstallShield 2010 User Guide

ISP-1600-UG00

681

Chapter 14: Defining the End-User Interface Working with Dialogs

endwhile; // get the end user's selection, and display it in a message box CtrlGetCurSel("CustomDialog", MYCOMBOBOX1, svDrive); MessageBox("You selected drive " + svDrive, INFORMATION); EndDialog("CustomDialog"); ReleaseDialog("CustomDialog"); return nReturn; end;

List box and combo box controls have a Sorted property, which you can set to Yes to sort the contents of the list controls by the items display names.

Editing Dialog Behavior in an InstallScript or InstallScript MSI Project

Project: This information applies to the following project types:

InstallScript InstallScript MSI

To change the behavior of a dialog, you can modify the dialog functions parameters according to how you want the dialog to behave. To learn about the available parameters, refer to the dialog function documentation:

Sd Dialog Functions Built-in Dialog Functions Custom Dialog Functions

Adding a Field That Contains a Product Name, Product Version, or Installed Version in Sd Dialog Static Text Fields

Project: This information applies to the following project types:

InstallScript InstallScript MSI

InstallShield enables you to place your product name, product version, or installed version globally in Sd dialog static text fields containing the placeholder %P, %VS, or %VI (sometimes appearing as an extra space). At run time, the values of the system variables IFX_PRODUCT_DISPLAY_NAME, IFX_PRODUCT_DISPLAY_VERSION, and IFX_INSTALLED_DISPLAY_VERSION are displayed in place of %P, %VS, and %VI in the static text fields. If you are adding a static text field containing a placeholder, give the static text field a unique (to that dialog) ID in the range of 701 through 799. IDs in the 701 through 799 range instruct InstallShield to scan the static text field for the existence of the placeholders. If a placeholder is found, InstallShield replaces it with the value of the corresponding system variable.

682

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Using an HTML Control on a Dialog

Project: This information applies to the following project types:

InstallScript InstallScript MSI

InstallShield includes support for HTML controls on dialogs in InstallScript and InstallScript MSI projects. HTML controls enable you to use HTML markup for dialog controls. You can include on dialogs links to Web pages, installed HTML files, and HTML support files. If an end user clicks the hyperlink on the run-time dialog, you can have the HTML page open in an Internet browser, or you can trigger other behavior that you have defined through your InstallScript code. The HTML control lets you use any valid HTML markup, including styles to control their appearance. The HTML control also lets you display the HTML content directly on a dialog if the content is an installed HTML file or HTML support file. To create an HTML control, you need to start with a static text control. Once you have placed the static text control on a dialog, you can convert it to be an HTML control.

Task

To convert any static text control on a dialog to be an HTML control, do one of the following:

In the Dialogs view, set the Text property of the control as follows:
[html] HTML Markup

Use InstallScript to set the text of a control to be [html], followed by the HTML markup.

At run time, the InstallScript engine converts the control to an HTML control.

Example
The following example demonstrates how to convert a static text control to an HTML control. The sample HTML code enables you to set the colors and fonts of the control so that they match those of the dialog.

Task

To convert a static text control to an HTML control by using the controls Text property: 1. 2. 3. 4. 5.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog that you want to contain the HTML control, and then click Edit. InstallShield displays the dialog in the Dialog Editor, using the projects default language. Click the static text control that you want to convert to an HTML control. InstallShield displays its properties in the right pane. In the Text property, click the ellipsis button (...). InstallShield displays a list of all of the current strings in the project. Click the Edit button.

InstallShield 2010 User Guide

ISP-1600-UG00

683

Chapter 14: Defining the End-User Interface Working with Dialogs

6.

Set the value of the string identifier as follows:


[html]<style type="text/css">html,body {padding:0; margin:0; background-color:ButtonFace} * {font-size: 8pt; font-family: "MS Sans Serif";} </style> <a href="http://www.MyWebSite.com">Visit my Web site</a>

At run time, the installation uses the default InstallScript dialog font (8 point MS Sans Serif) and sets the background color to the Windows dialog color, which is usually gray. If the content is on a dialog area that is white, you can omit the background-color:ButtonFace style part so that the background of the HTML control becomes white.

Tip: As an alternative to converting the static control through the Dialogs view, you could edit the dialogs script function in the InstallScript view. For example, add the following code to the DLG_INIT case in the dialog message loop:
CtrlSetText( szDlg, HTML_CTRL_ID, "[html]<style type=\"text/css\">html,body {padding:0; margin:0; background-color:ButtonFace} * {font-size: 8pt; font-family: "MS Sans Serif";} </style><a href=\"http://www.MyWebSite.com\">Visit my Web site</a>" );

For sample script, see CtrlGetUrlForLinkClicked Example.

Handling Click Events for Links in HTML Controls


If you use the CtrlSetText function to set HTML control content at run time and the control creation succeeds, CtrlSetText returns 0. If it fails, CtrlSetText returns ISERR_GEN_FAILURE. To handle click events for links in HTML controls, the WaitOnDialog function returns the control ID of the HTML control (which is also the control ID of the original static text control). A custom dialog script function can contain a case statement that handles the HTML control ID, and then calls the CtrlGetUrlForLinkClicked function to obtain the URL for the link that was clicked. With this link, the script can take any action (such as launching an Internet browser to navigate to the link). The following behavior occurs when an end user clicks a link for an HTML control that uses the anchor tag:

If the anchor tag does not include the target attribute, or if the target value does not result in a new window, the control ID is returned to the dialog script. This allows for the script to handle link clicks itself. If the anchor tag does include the target attribute and its value is _blank or some other equivalent value that results in a new window, no message is sent to the script, and the URL is automatically launched.

Special Considerations for HTML Controls


If you are adding HTML controls to dialogs, note the following details. Run-Time Requirements for HTML Controls The HTML control requires Internet Explorer 5.5 or later for full functionality. If an earlier version is present on a target system, the only way to set the content for the HTML control is to provide an HTML file to CtrlSetText. Note that Internet Explorer does not need to be the default browser on the target system.

684

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

HTML Control Support for HTML Files If you using an HTML file with an HTML control, you must specify the full path to the file through the CtrlSetText function. Otherwise, the InstallScript engine will not know where the file is located. Following is sample InstallScript:
CtrlSetText(szDlg, HTML_CTRL_ID, "[html]file://" + SUPPORTDIR^"aboutpage.htm");

Using an HTML Control for an Email Address If you want to add a hyperlink that points to an email address, you can use code such as the following:
CtrlSetText(szDlg, HTML_CTRL_ID, "[html]<a href=\"mailto:support@mycompany.com?Subject=Example%20Line\">Send email to Support</a>");

When an end user clicks such a link, a new email message is automatically opened in the target systems email application. Note that with the mailto link, no message is sent to the script. HTML Text Content Is Not Formatted Any content set in an HTML control is passed as is. No formatting of the content is performed. If you need to format any of the content, you can manipulate the content string in script and then pass the content string to CtrlSetText. Character Count Limits for the Text Property of Static Text Controls The Text property of static text controls has a maximum limit of 256 characters. Therefore, if you convert a static text control to an HTML control by adding [html] to the beginning of the text content for a control, the maximum number of characters that you can enter is 256; this includes the hyperlinked text as well as all characters for any HTML markup that you specify. If you need to enter more than 256 characters for the content, use the CtrlSetText function to create the control.

Reverting to the Default Dialog

Project: This information applies to the following project types:

InstallScript InstallScript MSI

If you have edited a dialog and you later decide that you want to undo all of your changes, you can revert back to the original default dialog.

Task

To revert to the default dialog: 1. 2.

In the View List under User Interface, click Dialogs. Right-click the edited dialog and click Revert.

InstallShield 2010 User Guide

ISP-1600-UG00

685

Chapter 14: Defining the End-User Interface Working with Dialogs

Resource Compiler and Resource Linker

Project: This information applies to the following project types:

InstallScript InstallScript MSI

To modify dialogs in InstallScript or InstallScript MSI projects, you must have a resource compiler and resource linker installed on your system. InstallShield includes both of these types of tools.

Task

To view the location of the compiler and linker: 1. 2.

On the Tools menu, click Options. The Options dialog box opens. Click the Resource tab.

The Resource tab lists the locations of the compiler and linker.

Task

To replace the resource compiler or resource linker with one that is already on your system: 1. 2. 3.

On the Tools menu, click Options. The Options dialog box opens. Click the Resources tab. Click the Browse button next to the Resource compiler location box or the Resource linker location box to navigate to the program file.

Dialog Sampler

Project: This information applies to the following project types:

InstallScript InstallScript MSI

The Dialog Sampler is an InstallShield wizard that displays samples of all built-in dialogs as well as dialogs called by script dialog (sd) functions in InstallScript and InstallScript MSI projects. You can launch two different varieties of the Dialog Sampler.

Task

To launch the Dialog Sampler:

On the Tools menu, point to InstallScript, and then click either Standard Dialog Sampler or Skinned Dialog Sampler. You can also launch these samplers using the shortcut in the InstallShield program folder on the Programs menu.
686 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Dialog Skins

Project: This information applies to the following project types:

InstallScript InstallScript MSI

Overview
Dialog skins enable you to display end-user dialogs with a different look and color scheme. Skinned dialogs are slightly larger than standard dialogs, and the controls are located differently. For skinned dialogs to display properly, the desktop area on the target machine must be at least 800 by 600 pixels (or if large fonts are used, 1024 by 768 pixels), and the system must display at least 16-bit color.

Limitations
There are limitations when using dialog skins in your project:

The location of the standard navigation buttons (Next, Cancel, Back, Finish) are the same for all skins. The .skin file controls their position. Moving them in the Dialog Editor has no effect on the run-time positioning. There are also some Browse buttons on a few dialogs (for example, SdAskDestPath) that cannot be repositioned. If you add custom dialogs to your project, the new dialogs should be the same size as the other enduser dialogs. If the custom dialogs are a different size, they may not be displayed correctly; for example, the navigation buttons might not be visible to the end user during run time, due to the positioning issue described above.

Note: If you want to specify a dialog skin for a custom dialog, you must set the skin before creating the custom dialog in the Dialog Editor in order for the skin to appear properly.

Specifying Dialog Skins

Project: This information applies to the following project types:

InstallScript InstallScript MSI

You can use a dialog skin to change the look of the end-user dialogs in your installation. You can specify one skin per installation project. All of the dialogs in your project are displayed using the selected skin.

Note: If you want to specify a dialog skin for a custom dialog, you must set the skin before creating the custom dialog in the Dialog Editor in order for the skin to appear properly.

InstallShield 2010 User Guide

ISP-1600-UG00

687

Chapter 14: Defining the End-User Interface Working with Dialogs

Selecting a Dialog Skin

Task

To select a dialog skin: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the Skins item to see the available dialog skin options. Click a skin to see a preview dialog displayed in the right pane. To select a displayed skin, click Select in the preview pane. A red check mark appears on the selected skins icon in the Dialogs explorer.

All of the dialog skins use .gif files for the fade graphic, with the exception of the Blue skin. The Blue skin uses a .bmp file, which results in a larger file size. The Blue skins appearance on a 16-bit color system is not as clean as the other colors when a .gif file is used. If you want to use a Blue skin that supports 16-bit color systems and file size is not an issue, select the Blue option. For a smaller file size, select the BlueTC (True Color) option, which uses a .gif file for the graphic.

Clearing Dialog Skin Selections

Task

To clear the dialog skin selection: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the Skins item to see the available dialog skin options, and select the <None> item. Click Select in the preview panel.

Working with Dialogs in Basic MSI Projects


The information in this section of the documentation explains how to create and perform other basic functions with dialogs in Basic MSI projects.

Task

The process of creating a new dialog and displaying it in your installation can be broken down into the following tasks: 1. 2. 3. 4.

Add the dialog to the project. Edit the dialogs layout. Define the controls behavior (under what conditions they should be displayed, the events that their interaction should trigger, and the events that they should subscribe to). Display the dialog with a NewDialog or SpawnDialog event in another dialogs control or by inserting the dialog into your projects sequences.

688

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Displaying Dialogs During Basic MSI Installations


You can display an end-user dialog in one of two ways, as described below:

Insert the dialog into a User Interface sequence. Launch the dialog through another dialogs behavior.

Inserting Dialogs into Sequences

Project: When you create a dialog in a merge module, you cannot insert it into a sequence until you associate that module with an installation project.

Task

To schedule a dialog in a sequence: 1. 2.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the Sequences explorer, expand one of the two high-level sequences in which dialogs are usually displayedInstallation, Advertisement, or Administrationto view its User Interface sequence. Expand the User Interface sequence to see how the existing actions, dialogs, and custom actions are ordered. Right-click the existing action or dialog that you want your dialog to follow in the sequence, and then click Insert. The Insert Action dialog box opens. In the list, select Dialogs. Select your new dialog from the list of dialogs. Click OK.

3. 4. 5. 6. 7.

When your installation runs with a full user interface (determined by the /q command-line parameter) and all conditions are met for this dialog, it will be displayed within the selected sequences. While InstallShield lets you insert a dialog into an Execute sequence, doing so violates ICE13.

Launching a Dialog Through Another Dialogs Behavior


Most dialogs are displayed as a result of the NewDialog (displays another dialog in the wizard) or SpawnDialog (shows a modal dialog) control event. By selecting this event in a dialogs behavior, usually for a Next button, you can specify the dialog that succeeds it. By adding a condition to the control event, you could present different dialogs depending on the result of a selection in the preceding dialog.

Task

For example, to display a WelcomeBitmap dialog after the InstallWelcome dialog: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, click the InstallWelcome dialog. Click the Edit dialog behavior link in the pane to the right.
ISP-1600-UG00 689

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

4. 5. 6. 7. 8.

In the Behavior Editor, select the Next button in the control list. Click the Events tab to view and edit the Next buttons control events. Click the Event field, and then in the list click NewDialog. Type WelcomeBitmap as the argument. Type 1 for the condition to indicate that the dialog should be created under any circumstance.

Note: If the InstallWelcome dialog had launched a different dialog from the Next button, you would repeat the above procedure for the WelcomeBitmaps Next button to show the next dialog.

To learn about viewing your new dialog in the Custom Actions and Sequences view, see Viewing EndUser Dialog Order in the Custom Actions and Sequences view (Basic MSI Projects).

Using Control Events in Basic MSI Dialogs


Control events allow you to provide custom functionality for each control on your dialogs. With control events, you can launch custom actions, spawn new dialogs, or display a progress bar. Many control events make use of published information. In some cases, your controls must subscribe to control-event information in order to make use of it. Below is a comprehensive list of the control events supported by the Windows Installer service. To make use of a control event, navigate to a dialogs Behavior view. See Editing Dialog Behavior in Basic MSI Projects for more information.
Table 14-3: Dialog Control Events Supported by Windows Installer Event [PropertyName] Argument Property value Condition Sets the value of the Windows Installer property called PropertyName to the value specified in the Argument field. To undefine a property, enter {} in the Argument field. ActionData None Publishes data associated with the current action. A text control can subscribe to this event to display information such as the names of files being copied during the installation. For more information, see Using Action Text. ActionText None Publishes a description about an action. A text control can subscribe to this event to display a description of the current action that is being performed during the installation. For more information, see Using Action Text.

690

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-3: Dialog Control Events Supported by Windows Installer (cont.) Event AddLocal Argument String specifying the name of a feature or ALL to specify all features. String specifying the name of a feature or ALL to specify all features. Name of the property that contains the path. You can either select this property from the list or enter the name manually. If the property is indirect, square brackets are required. Property name containing the desired path. Condition Sets the specified feature to be run locally. Sets the specified feature to be run from the source medium. Verifies that the specified path can be written to. If the path is not writable, the installer automatically blocks any other control events associated with the current control. Causes the installer to verify the specified path. If the path is not writable, the installer automatically blocks any other control events associated with the current control. Notifies the DirectoryList control that a new folder must be created. The installer then creates a new folder and allows the user to enter a new name for the folder. Selects and highlights the directory the user selected in the DirectoryList control. Causes the DirectoryList control to navigate to the parent directory of the present directory. Causes a custom action to launch when the selected control is activated.

AddSource

CheckExistingTargetPath

CheckTargetPath

DirectoryListNew

None

DirectoryListOpen

None

DirectoryListUp

None

DoAction

String name of the custom action you would like to call. The Argument property contains a list of all the custom actions in your project. Boolean: True enables rollback, False disables it.

EnableRollback

Used to turn rollback capabilities off and on.

InstallShield 2010 User Guide

ISP-1600-UG00

691

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-3: Dialog Control Events Supported by Windows Installer (cont.) Event EndDialog Argument For standard dialogs: Condition Closes a dialog sequence or dialog.

ExitThe dialog sequence closes and control is returned to the installer with the UserExit value. This option cannot be used with child windows. RetryThe dialog sequence closes and control is returned to the installer with the Suspend value. This option cannot be used with child windows. IgnoreThe dialog sequence closes and control is returned to the installer with the Finished value. This option cannot be used with child windows. ReturnThe dialog exits and control is returned to the parent window. If no parent exists, control is returned to the installer with the Success value.

For error dialogs:


IgnoreChange

ErrorOk ErrorCancel ErrorAbort ErrorRetry ErrorIgnore ErrorYes ErrorNo Published by the DirectoryList control when a folder is highlighted but not opened. Closes the current dialog and opens the dialog specified in the Argument property.

None

NewDialog

String name of the dialog you would like to launch. The Argument property contains a list of all dialogs associated with your installation. You can choose one of these dialogs, or type in the name of a yet-to-be-created dialog. String specifying the name of a feature or ALL to specify all features. String specifying the name of a feature or ALL to specify all features.

Reinstall

Forces the installer to reinstall the specified feature or features. The installer is notified of features marked for removal. The current dialog is still displayed.

Remove

692

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-3: Dialog Control Events Supported by Windows Installer (cont.) Event Reset Argument None Condition Resets all controls on the dialog to their original state. Displays a string while execution script is compiled. Causes the SelectionTree control to publish a string describing the currently selected item. A text control can be used to display this description. Causes the current dialog to close and opens the dialog specified in the Argument property. This information is published by the SelectionTree control.

ScriptInProgress

None

SelectionAction

None

SelectionBrowse

Name of dialog to be spawned. The Argument property contains a list of all dialogs associated with your installation. You can choose one of these dialogs, or type in the name of a yet-to-be-created dialog. None

SelectionDescription

Allows you to display a features description in a text control. This information is published by the SelectionTree control. Allows you to display the icon associated with the current selection in a SelectionTree control. The SelectionTree control publishes the handle to this icon, which can be used by an Icon control to display the icon. Used by SelectionTree to remove unneeded text or disable buttons. This control event, which is published by the SelectionTree control, can be used to display the path of the currently selected item. A text control can be used to display this path. This Boolean is published by SelectionTree indicating the existence of a SelectionPath for the currently selected item. Published by a SelectionTree control to pass the size of the currently selected item. If the currently selected item is a parent, then the number of children are also published. A text control can be used to display this information.

SelectionIcon

None

SelectionNoItems

None

SelectionPath

None

SelectionPathOn

None

SelectionSize

None

InstallShield 2010 User Guide

ISP-1600-UG00

693

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-3: Dialog Control Events Supported by Windows Installer (cont.) Event SetInstallLevel Argument Integer value of the desired INSTALLLEVEL. Condition Installer changes installation level to specified value. By setting the INSTALLLEVEL property, you can create setup types. For more information, see Configuring a Features Install Level Setting. Published by installer to provide installation progress. The most common application of this control event is to display a progress bar detailing the progress of the installation. Causes the installer to set and check the selected path. If the path is not writable, the installer stops further control events associated with the current control. Launches the dialog specified in the Argument property as a modal dialog, without closing the current dialog.

SetProgress

None

SetTargetPath

Property name containing the desired path.

SpawnDialog

String name of the dialog that you would like to spawn. The Argument property contains a list of all dialogs associated with your installation. You can choose one of these dialogs, or type in the name of a yet-to-be-created dialog. String name of the dialog you would like to display. The Argument property contains a list of all dialogs associated with your installation. You can choose one of these dialogs, or type in the name of a yet-to-be-created dialog. None

SpawnWaitDialog

Launches the dialog specified in the Argument property.

TimeRemaining

The amount of time remaining in the installation is published by the installer. A text control can be used to display this information. Sets the ProductID property to the full Product ID. If the Product ID validation fails, the installer displays an error message.

ValidateProductID

None

694

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Subscriptions
The Windows Installer service provides volumes of information to the installation during the run time. One of the most useful ways to gather information during installation is to use subscriptions. To subscribe to something is commonly defined as entering ones name for a publication or service. In Windows Installer terms, actions generally publish information, and dialog controls generally subscribe to information.

Progress Bars
The best example of this relationship centers around progress bars. The InstallFiles action publishes information on the percentage of files moved and the percentage remaining to be moved. When a progress bar subscribes to this information, it is able to accurately display the progress of the installations file transfer process. The Windows Installer service tracks progress through what are called ticks. When your progress bar subscribes to this information, it is passed the ticksSoFar and totalTicks values. The progress bar uses this information to display the total progress of the installation.

Other Uses
Subscriptions are not used only for progress bars. You might have a custom action that validates a serial number as part of your installation. This action could publish the failure or success of validation. On a dialog, you could have a Next button that subscribes to this information. If the action publishes the failure of the validation, the button remains disabled. If the action publishes success, the button is enabled.

Creating New Dialogs in Basic MSI Projects

Task

To create a new dialog in a Basic MSI project: 1. 2.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click All Dialogs and click New Dialog. The Dialog Wizard launches to help you create a new dialog.

The next step is to edit the dialogs layout in the Dialog Editor and the controls behavior in the Behavior Editor.

Tip: You can also add a dialog by importing one from another project.

Displaying a Dialog in the End-User Interface


Adding a dialog to a project does not mean that the dialog will be displayed in the installation. For information on inserting the dialog into one or more of the projects sequences, see Displaying Dialogs During Basic MSI Installations.

InstallShield 2010 User Guide

ISP-1600-UG00

695

Chapter 14: Defining the End-User Interface Working with Dialogs

Editing Dialog Layout in Basic MSI Projects


Using the Dialog Editor, you can modify a dialog, edit its controls, and set display properties for the dialog and its controls, all in a visual environment.

Note: When an end user runs your installation on a Windows platform that uses a desktop display theme, the theme is used to display your installations end-user dialogs.

The Dialogs view manages versions of the dialog for each of your projects supported languages. You must select a language-specific version in order to edit the layout. These versions remain identical except for changes you make to a controls size. For more information, see Modifying Dialogs for Each Language.

Opening the Dialog Editor

Task

To open a dialog in the Dialog Editor, do any of the following:

Select the language-specific version of the dialog under the dialogs name in the Dialogs view. Select the dialogs name in the Dialogs view. In the pane to the right under the Action Items heading, select a language from the list and click the Edit this dialog layout link. In the Custom Actions and Sequences view, right-click the dialog and click Edit layout. In the Custom Actions and Sequences view, click the name of the dialog whose behavior you want to modify. Then, click the Edit dialog layout link in the Action Items section of the right pane. If you have written your installation to run in more than one language, you must select the language you want to edit from the list.

The Dialog Editor opens in the right pane of the Dialogs view. If you need more space, you can move the property sheet so that it is no longer docked inside the editor.

Adding Controls to a Dialog in a Basic MSI Project


You can use the Controls toolbar in InstallShield to add controls to a dialog.

Task

To add a dialog control: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and then expand the dialog item that should have the new dialog control. Click a language under the dialog item that you expanded. The Dialog Editor in the center pane shows the dialog in the selected language. In the Controls toolbar, click the control that you want to add and drag it onto the dialog image to draw the control on the dialog.
ISP-1600-UG00 InstallShield 2010 User Guide

696

Chapter 14: Defining the End-User Interface Working with Dialogs

5.

Set the controls properties.

Tip: For projects created in Microsoft Visual Studio, you can use the Toolbox to add controls.

Setting the Controls Properties


The dialog itself and every control on it has a property sheet in the Dialog Editor. These properties determine such things as a controls size and position, its default text (as a string identifier), or whether the dialog is modal. To edit one of the property sheets, select the control on the dialog, or select a controls or dialogs name from the drop-down box above the property sheet. The properties vary depending on the type of control:

Bitmap Dialog Check Box Push Button Edit Field Combo Box Text Area List Box Radio Button Bitmap Group Box Billboard Line Radio Button Group Selection Tree Progress Bar List View Scrollable Text Icon Directory List Directory Combo Volume Cost List

InstallShield 2010 User Guide

ISP-1600-UG00

697

Chapter 14: Defining the End-User Interface Working with Dialogs

Volume Select Combo Masked Edit Path Edit

Displaying Controls on Top of a Bitmap

Task

To display controls on top of a bitmap:

The value for the Tab Index property of the bitmap must be lower than the value for the Tab Index property of any controls that are to be placed on top of the bitmap. The easiest way to configure this is to set the bitmap controls Tab Index property to 0. All controlsincluding the bitmapmust have their Tab Stop properties set to True.

Editing Dialog Behavior in Basic MSI Projects


Using the Behavior Editor, you can edit how controls will behave at run time.

Task

To launch the editor, do any of the following:

In the Dialogs view, click the name of the dialog whose behavior you want to modify. Then, click the Edit dialog behavior link in the Action Items section of the right pane. Double-click the dialog in the Dialogs view to expose its Behavior and language-specific items. Click the Behavior item. In the Custom Actions and Sequences view, right-click the dialog and click Edit behavior. In the Custom Actions and Sequences view, click the name of the dialog whose behavior you want to modify. Then, click the Edit dialog behavior link in the Action Items section of the right pane.

The first thing to do when you use the Behavior Editor is to select a control. All of the properties that you set in the editor apply to the selected control. A dialogs behavior includes the following three areas:

Events that an end user interacting with the control will trigger Windows Installer events that a control needs to subscribe to Conditions under which the control will be displayed

These aspects of a controls behavior correspond to the Events, Subscriptions, and Conditions tabs in the Behavior Editor.

698

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Triggering Control Events in Basic MSI Dialogs


An event is a predefined action that occurs when a user interacts with a control. Events are defined in the Behavior Editor of the Dialogs view. For more information on each of the events available, see Using Control Events in Basic MSI Dialogs. To view a controls events, select it in the list of control names and then click the Events tab.

Examples
The control event below dismisses the present dialog and shows the Welcome dialog only when the product is first installed:
Table 14-4: Sample Settings for a Control Event that Shows the Welcome Dialog Under Certain Circumstances Event NewDialog Argument InstallWelcome Condition Not Installed

The following event launches an InstallScript custom action every time that the control is clicked:
Table 14-5: Sample Settings for a Control Event that Launches an InstallScript Custom Action Each Time that the Control Is Clicked Event DoAction Argument MyScriptCustomAction Condition 1

Adding New Events to a Dialog Control

Task

To add a new event to a dialog control: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, click the Behavior item for the dialog that has the control. The controls associated with that dialog are listed in the center pane. Select the control that should have the new event. The events associated with that control are listed in the right pane. Click the last row of the Event column. InstallShield displays a list of all of the standard events. Either select an event or enter the name of a Windows Installer property in bracketsfor example, [MyProperty]. Click the Argument column. Many of the events have a corresponding argument list that is populated with likely values. For example, if your event was NewDialog, the Arguments field will contain a list of all of the dialogs in your project. Select the appropriate argument. If your event was a property name, specify the value you want to assign to the property. Empty curly braces {} give it a null value.

5.

InstallShield 2010 User Guide

ISP-1600-UG00

699

Chapter 14: Defining the End-User Interface Working with Dialogs

6.

Specify any condition that you want to check before the event is triggered. Set the condition to 1 if you want to have the installer trigger the event under any circumstance.

Reordering a Dialog Controls Events


The events launch in the order in which you see them in the Behavior Editor.

Task

To move an event: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, click the Behavior item for the dialog that has the control. The controls associated with that dialog are listed in the center pane. Select the control that has the event. The events associated with that control are listed in the right pane. To move an event earlier, right-click it and click Move Up. To move an event later, right-click it and click Move Down.

Removing an Event from a Dialog Control

Task

To remove an event from a control: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, click the Behavior item for the dialog that has the control. The controls associated with that dialog are listed in the center pane. Select the control that has the event. The events associated with that control are listed in the right pane. Right-click anywhere in the events row and then click Delete.

Launching Custom Actions from Dialogs


To launch a custom action from a dialog, use the dialogs DoAction event. Before you can set up a DoAction event, you need to create a custom action. When you have created a custom action, you can set up a DoAction event in a dialog to launch this action.

Task

To do this: 1. 2.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, click the dialog that you want to edit.
ISP-1600-UG00 InstallShield 2010 User Guide

700

Chapter 14: Defining the End-User Interface Working with Dialogs

3. 4. 5. 6. 7. 8.

Place a new push button on this dialog. Provide a name and display text for the push button. Select the Behavior view for this dialog. In this view, you can define what happens when your new button is pushed. In the list of controls, select your new button. The buttons events are listed in the right pane. In the Action field, select DoAction. In the Argument field, select the custom action. Add a condition, if necessary.

Build and test your installation to ensure that it works as you planned.

Viewing End-User Dialog Order in the Custom Actions and Sequences view (Basic MSI Projects)

Project: This information applies to Basic MSI projects. To view the order of your end-user dialogs in an InstallScript project or an InstallScript MSI project, use the InstallScript view to review your script.

In the Custom Actions and Sequences view, you can view primary and next dialogs in the order in which they appear to the end user during the run time of your installation. Primary dialogs are top-level dialogs that have been inserted into the installation sequence. You can change the order of a primary dialog within the Custom Actions and Sequences view. Next dialogs are dialogs that are triggered by the action of a previous dialogs Next button control events. Although you can view next dialogs in the Custom Actions and Sequences view, they are not a part of the installation sequence, and you cannot change their order in the Custom Actions and Sequences view. To change the order of a next dialog, you must edit the dialogs behavior in the Behavior editor.

Initial Sequences Explorer


When you first open the Custom Actions and Sequences view, the Sequences explorer lists all primary dialogs and actions in the order in which they will be executed during your installation. Many of the next dialogs have plus signs (+) next to them.

Expanded Sequences Explorer


In addition to viewing the order of primary dialogs that have been inserted into the installation sequence, you can also view next dialog order in the Sequences explorer. When you click the plus sign (+) next to a primary dialog, the list expands to display the order in which the primary dialogs next dialogsif anywill appear during the run time. If a particular dialog has more than one Next button control event, all possible next dialogs are displayed under the dialog.

InstallShield 2010 User Guide

ISP-1600-UG00

701

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-3: Viewing the Order of Dialogs in the Sequence

Next Dialog Information Panel


When you click a next dialog, the right pane displays information about the dialog. The right pane also has hyperlinks to the behavior and layout editors, as well as help information. More detailed information about the selected dialog is available in the Dialogs view.

Context Menu Commands


When you right-click a primary dialog, a context menu displays commands for you to edit the sequence, refresh the dialog sequence view, or edit the dialogs layout or behavior. When you right-click a next dialog, a context menu displays commands for you to edit the dialogs layout or behavior. Refresh After you have edited a next dialogs behavior or layout and returned to the Custom Actions and Sequences view, you can select Refresh from the context menu to refresh the dialog sequence view. This option is available only for primary dialogs. Edit Behavior

Task

To move to the Dialog Behavior Editor from within the Sequences explorer in the Custom Actions and Sequences view, do either of the following:

Right-click the next dialog that you want to edit and click Edit Behavior. Click the name of the dialog that you want to edit. Then, in the Action Items section of the right pane, click Edit dialog behavior.

For more information, see Editing Dialog Behavior in Basic MSI Projects. Edit Layout

Task

To move to the Dialog Layout Editor from within the Sequences explorer in the Custom Actions and Sequences view, do either of the following:

Right-click the next dialog that you want to edit and click Edit Layout. Click the name of the dialog that you want to edit. Then, in the Action Items section of the right pane, click Edit dialog layout.If you have written your installation in more than one language, you must select the appropriate language in the list.
ISP-1600-UG00 InstallShield 2010 User Guide

702

Chapter 14: Defining the End-User Interface Working with Dialogs

For more information, see Editing Dialog Layout in Basic MSI Projects.

CustomSetup Dialog Options

Project: This information applies to the following project types:

Basic MSI MSI Database Transform

The CustomSetup dialog has a sophisticated end-user interface that is tightly integrated with information about the target system, the features in your installation, and Windows Installer installation options. It provides the end user with the most control over the installation. Many of the options and information it offers are determined by the feature properties that you set in your setup design, as described below.

Advertisement Option
Feature advertisement enables files to be installed on demand after the installation has initially run. In the CustomSetup dialog, when end users click a feature, they can specify that they want it installed later by selecting the Will be installed when required option. However, that default option is present only if you select Allow Advertise or Favor Advertise for the features Advertised setting. To prevent Windows Installer from displaying the option to advertise the feature, select Disallow Advertise for this setting.

Hiding Features
When you set a features Display setting to Not Visible, the end user cannot see the feature or its subfeatures in the CustomSetup dialog and therefore cannot change any of its installation options.

Displaying All Subfeatures


The features Display setting also governs whether its subfeatures are expanded when the dialog first appears with the following options:
Table 14-6: Options for the Display Setting of a Feature Option Visible and Collapsed Description The feature is displayed in the CustomSetup dialog with its subfeatures collapsed by default. The feature is displayed in the CustomSetup dialog with its subfeatures expanded by default.

Visible and Expanded

InstallShield 2010 User Guide

ISP-1600-UG00

703

Chapter 14: Defining the End-User Interface Working with Dialogs

Setting Default Destination Folders for Features


An end user can view and edit the folder to which a feature will be installed by selecting the feature in the CustomSetup dialog and clicking the Details button. The features Destination setting is the default value that appears, and it is reassigned to a new value if the end user enters or browses to a new path in the resulting Feature Details dialog. For a complete discussion of the factors that affect where a feature is installed, see Setting a Features Destination.

Naming Features
Specify a different name to appear in the CustomSetup dialog by setting its Display Name.

Displaying Feature Descriptions


The description that is shown at the bottom of the CustomSetup dialog when you select a feature is taken from its Description setting.

Changing the Feature Order


You can change the order in which the features appear to the end user in the CustomSetup dialog. The order in which features are displayed is dictated by the order in the Setup Design view. For more information, see Reordering Features.

Requiring Features To Be Installed


If you set a features Required setting to Yes, the end user does not see the Will not be available option, meaning that the feature must be installed.

Dialog Themes

Project: Dialog themes are available in 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 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.

Note: InstallShield does not currently let you create your own dialog themes. However, InstallShield includes many themes. For more information, see Available Themes and Corresponding Dialog Sizes.

Run-Time Requirements for the Wide Dialog Themes

Project: Dialog themes are available in Basic MSI projects.


704 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

If you use one of the wide dialog themes, the screen resolution on target systems must be a minimum of 800600 pixels (or, if large fonts are used, 1024768 pixels). If the resolution is lower than that, a horizontal scrollbar is added at run time to the bottom of each of the dialogs that is displayed with the wide theme.

Previewing a Dialog Theme

Project: Dialog themes are available in Basic MSI projects.

When you select a different theme for your project, InstallShield applies that theme to all of the interior and exterior dialogs in the Dialogs view. You do not need to build and run your installation in order to view the dialogs.

Task

To preview a theme before selecting it for your project: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the Themes folder. Click one of the themes under the Themes folder.

In the right pane, InstallShield shows a screen shot of a sample exterior dialog with the selected theme.

Task

To preview how a dialog in your project looks with the selected theme: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and then expand the dialog item that you want to preview. Click a language under the dialog item that you expanded.

In the center pane, InstallShield displays a preview of the dialog with the selected theme applied.

Selecting or Changing a Dialog Theme

Project: Dialog themes are available in Basic MSI projects.

You can use a dialog theme to change the look of the end-user dialogs in your installation. You can select one theme per project.

Tip: If you switch from one of the wide-style themes to a standard-width theme, the positions of any controls that are placed along the far left or far right sides of the dialog may change.

InstallShield 2010 User Guide

ISP-1600-UG00

705

Chapter 14: Defining the End-User Interface Working with Dialogs

If you want to change the theme for your project and you also want to add a custom exterior dialog, change the theme first, and then add the custom exterior dialog. Otherwise, the dialog may not appear properly.

Task

To change the dialog theme used for a project: 1. 2. 3.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the Themes folder. Right-click the theme that you want to use, and then click Select.

InstallShield applies the selected theme to the dialogs in your project. In addition, InstallShield displays a red check mark on the selected themes icon in the Dialogs explorer.

Tip: You can also change the theme by clicking a button: In the Dialogs explorer, click the theme that you want to use. Then, in the right pane, click the Select button.

Background Information on How InstallShield Applies Themes


If you switch from one dialog theme to another, InstallShield applies the theme to any dialogs in your project that match a specific width and height. Therefore, if you change the width or height of any of the dialogs in your project, and then you change the theme, InstallShield does not apply the theme to any dialogs that have a custom width or height. For example, if you switch from a standard width theme to any other theme, InstallShield applies the theme to any dialogs that have a standard width and height: 374266. If you switch from a wide theme to any other theme, InstallShield applies the theme to any dialogs that are 584274.

Background Information on Which Dialogs Use the Exterior Dialog Style


By default, InstallShield uses the same style of dialog for all exterior dialogs: this style has an image on the left side of the dialogs. The InstallWelcome and SetupCompleteSuccess dialogs are examples of exterior dialogs. If you add a custom exterior dialog to your project after you have selected a theme, InstallShield uses the selected theme for the new custom exterior dialog. However, if you later change the theme for your project, the theme may not be displayed properly in your custom exterior dialog. To resolve this type of issue, see Applying a Theme to a Custom Exterior Dialog.

Applying a Theme to a Custom Exterior Dialog

Project: Dialog themes are available in Basic MSI projects.

If you want to change the theme for your project and you also want to add a custom exterior dialog, it is easier to change the theme first, and then add the custom exterior dialog. Otherwise, the dialog may not appear properly; parts of newly selected themes interior dialog images are added to your custom exterior dialog.

706

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

If you want to change the theme after you have added a custom exterior dialog to your project, you must add the name of your custom exterior dialog to the appropriate .theme file that is installed in the InstallShield Program Files folder. Then you can apply the theme to your project.

Task

To change the theme after you have added a custom exterior dialog to your project: 1. 2.

Close InstallShield. In the InstallShield Program Files folder, find the .theme file for the theme that you want your dialogs to use. The default location is:
C:\Program Files\InstallShield\2010\Support\Themes

3. 4.

Open the .theme file in a text editor such as Notepad. For example, if you want to use the Global theme, open the Global.theme file. In the <Include> and <Exclude> sections of the file, add the following line:
<Name>NameOfDialog</Name>

where NameOfDialog represents the name of your dialog.


5. 6. 7. 8.

Open your project in InstallShield. In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the Themes folder. Right-click the theme that you want to use, and then click Select.

Adding a Logo or Other Image to the Exterior Dialogs

Project: Dialog themes are available in Basic MSI projects.

Exterior dialogs are dialogs that are displayed first and last by an installationtypically, the Welcome and Completion dialogs. The exterior dialogs for some themes have places for you to put the logo of your company or product. For example, the exterior dialogs of the Monitor theme and the Circles theme have a blank area on the left side of the dialog; you can add a bitmap control to these dialogs to customize your end-user interface.

Task

To add an image to an exterior dialog: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and then expand the dialog item for a dialog that should have the image. Click a language under the dialog item that you expanded. The Dialog Editor in the center pane shows the dialog in the selected language. In the Controls toolbar, click the Bitmap button.

InstallShield 2010 User Guide

ISP-1600-UG00

707

Chapter 14: Defining the End-User Interface Working with Dialogs

5.

In the Dialog Editor, click where you want the bitmap control to start, and holding the left mouse button down, drag the mouse to the place where you want it to end. Then release the left mouse button. Configure the bitmap controls properties in the right pane. Click the File Name property, and then click the ellipsis button (...) to browse to the bitmap file that you want to use.

6.

You may want to repeat the procedure for each language and each exterior dialog in your project. The exterior dialogs that are available by default in all new Basic MSI projects are:

AdminWelcome InstallWelcome MaintenanceWelcome PatchWelcome SetupCompleteError SetupCompleteSuccess SetupInitialization SetupInterrupted SetupResume SplashBitmap

Available Themes and Corresponding Dialog Sizes

Project: Some of the themes are available in both the Premier and Professional editions of InstallShield, and some are available in only the Premier edition.

Some of the themes set the size of the dialogs to a standard width and height: 374266. The wide themes set the dialog size to 584274. The following table shows the size of each dialog, plus which editions of InstallShield contain the theme.
Table 14-7: Dialog Themes in InstallShield Name Circles Theme (Wide) Classic Theme Cooperation Theme (Wide) Filmstrip Theme (Wide) Global Theme InstallShield Edition Premier and Professional Premier and Professional Premier Dialog Width 584 374 584 Dialog Height 274 266 274

Premier Premier and Professional

584 374

274 266

708

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-7: Dialog Themes in InstallShield (cont.) Name InstallShield Blue Theme InstallShield Blue Theme (Wide) InstallShield Silver Theme Monitor Theme Pastel Wheat Theme Theater Theme (Wide) InstallShield Edition Premier and Professional Premier and Professional Dialog Width 374 584 Dialog Height 266 274

Premier

374

266

Premier Premier Premier

374 374 584

266 266 274

Circles Theme (Wide)


Following are sample exterior and interior dialogs with the Circle Theme (Wide).

Figure 14-4: Sample Exterior Dialog with the Circle Theme (Wide)

InstallShield 2010 User Guide

ISP-1600-UG00

709

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-5: Sample Interior Dialog with the Circle Theme (Wide)

To learn how to add your company or product logo to the exterior dialogs, see Adding a Logo or Other Image to the Exterior Dialogs.

Classic Theme
Following are sample exterior and interior dialogs with the Classic Theme.

Figure 14-6: Sample Exterior Dialog with the Classic Theme

710

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-7: Sample Interior Dialog with the Classic Theme

Cooperation Theme (Wide)

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the Cooperation Theme (Wide).

Figure 14-8: Sample Exterior Dialog with the Cooperation Theme (Wide)

InstallShield 2010 User Guide

ISP-1600-UG00

711

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-9: Sample Interior Dialog with the Cooperation Theme (Wide)

Filmstrip Theme (Wide)

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the Filmstrip Theme (Wide).

Figure 14-10: Sample Exterior Dialog with the Filmstrip Theme (Wide)

712

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-11: Sample Interior Dialog with the Filmstrip Theme (Wide)

Global Theme
Following are sample exterior and interior dialogs with the Global Theme.

Figure 14-12: Sample Exterior Dialog with the Global Theme

InstallShield 2010 User Guide

ISP-1600-UG00

713

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-13: Sample Interior Dialog with the Global Theme

InstallShield Blue Theme


Following are sample exterior and interior dialogs with the InstallShield Blue Theme.

Figure 14-14: Sample Exterior Dialog with the InstallShield Blue Theme

714

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-15: Sample Interior Dialog with the InstallShield Blue Theme

InstallShield Blue Theme (Wide)


Following are sample exterior and interior dialogs with the InstallShield Blue Theme (Wide).

Figure 14-16: Sample Exterior Dialog with the InstallShield Blue Theme (Wide)

InstallShield 2010 User Guide

ISP-1600-UG00

715

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-17: Sample Interior Dialog with the InstallShield Blue Theme (Wide)

InstallShield Silver Theme

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the InstallShield Silver Theme.

Figure 14-18: Sample Exterior Dialog with the InstallShield Silver Theme

716

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-19: Sample Interior Dialog with the InstallShield Silver Theme

Monitor Theme

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the Monitor Theme.

Figure 14-20: Sample Exterior Dialog with the Monitor Theme

InstallShield 2010 User Guide

ISP-1600-UG00

717

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-21: Sample Interior Dialog with the Monitor Theme

To learn how to add your company or product logo to the exterior dialogs, see Adding a Logo or Other Image to the Exterior Dialogs.

Pastel Wheat Theme

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the Pastel Wheat Theme.

718

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-22: Sample Exterior Dialog with the Pastel Wheat Theme

Figure 14-23: Sample Interior Dialog with the Pastel Wheat Theme

Theater Theme (Wide)

Edition: This theme is available in the Premier edition of InstallShield.

Following are sample exterior and interior dialogs with the Theater Theme (Wide).

InstallShield 2010 User Guide

ISP-1600-UG00

719

Chapter 14: Defining the End-User Interface Working with Dialogs

Figure 14-24: Sample Exterior Dialog with the Theater Theme (Wide)

Figure 14-25: Sample Interior Dialog with the Theater Theme (Wide)

To learn how to add your company or product logo to the exterior dialogs, see Adding a Logo or Other Image to the Exterior Dialogs.

720

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Dialog Support for Right-to-Left Languages

Edition: The Premier edition of InstallShield includes dialog support for languages such as Arabic and Hebrew, which are read from right to left.

Project: The following project types include dialog support for right-to-left languages:

Basic MSI Merge Module

InstallShield includes support for Arabic (Saudi Arabia) and Hebrew languages, which are written and read from right to left. All of the default end-user dialog strings are available in these languages. Since these languages are read from right to left, InstallShield also includes support for mirroring Arabic and Hebrew dialogs; that is, InstallShield uses a right-to-left layout for Arabic and Hebrew dialogs. Thus, for example, buttons that are on the right side of dialogs in English and other left-to-right languages are moved to the left side of right-to-left-language dialogs. This occurs in the Dialog Editor pane in the Dialogs view of InstallShield; it also occurs at run time. Reversed versions of the dialog images are displayed for the built-in dialog themes if appropriate. The reversed versions have _mirror in the image file name immediately before the .bmp or .jpg portion of the file name. For example, the name of an image for left-to-right languages might be banner.jpg; the name of the right-to-left equivalent for that image would be banner_mirror.jpg. These two files would be located in the same folder, and InstallShield would automatically use the banner_mirror.jpg file for the right-to-left-language versions of the dialogs. If an image should not be reversed, a *_mirror.jpg or *_mirror.bmp version of the image is not included, and the right-to-left versions of the dialogs do not show mirrored versions of the images.

Tip: If you use custom images for your run-time dialogs and your project includes support for right-to-left languages, you may need to create mirror-image versions for those right-to-left languages. You can preview the right-to-left layout of the dialogs in the Dialogs view to see how your custom images look. Add *_mirror.jpg or *_mirror.bmp versions of your images to the folder that contains the left-to-right versions of your custom images if appropriate.

Launching a File Open Dialog

Project: This information applies to Basic MSI projects.

InstallShield includes support for launching the Open dialog from one of the dialogs in your Basic MSI installation. End users click a browse button in one of your dialogs, and this launches the Open dialog. The Open dialog lets the end user browse for a file. When the end user selects the file and clicks the Open button, the Open dialog closes, and the installation writes the full path and file name in an edit field on the dialog. The installation also sets the value of the IS_BROWSE_FILEBROWSED property to the path and file name of the file that the end user selected. When you incorporate support for the Open dialog in your installation, you can define several properties to specify the following functionality:
InstallShield 2010 User Guide ISP-1600-UG00 721

Chapter 14: Defining the End-User Interface Working with Dialogs

You can specify the string that should be displayed in the Files of type drop-down list on the Open dialog. You can specify the file extensions of the files that should be displayed when the end user is browsing through folders to select a file. All files that have other file extensions are hidden and cannot be selected to open. You can specify the default file extension that the Open dialog should use. If the end user does not type an extension, the Open dialog appends this default extension to the file name.

Note the following requirements for this dialog:

The Open dialog does not allow end users to create a new file. That is, if a file does not exist, an end user cannot manually type a new file name in the Open dialog. If the dialog that launches the Open dialog has more than one edit field control, the edit field control that will contain the full path to the file must have the lowest value for the Tab Stop property.

Task

To add the Open dialog functionality to an end-user dialog: 1.

Add to your project a new MSI DLL custom action called FileBrowse:
a. b.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click the Custom Actions explorer, point to New MSI DLL, and then click Stored in Binary table. InstallShield adds a new custom action called NewCustomActionN, where N is a successive number. Change the name of the custom action to FileBrowse. In the pane on the right, configure the following settings for this custom action:

c. d.

DLL Filename: <ISProductFolder>\redist\language independent\i386\FileBrowse.dll Function Name: FileBrowse Return Processing: Synchronous (Ignores exit code) In-Script Execution: Immediate Execution Execution Scheduling: Always execute

For all other settings, leave the default values. The value of the MSI Type Number setting should be 65.
2.

Create or edit the dialog that should launch the Open dialog, and configure its behavior and layout:
a. b. c.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder. Either select an existing dialog or create a new dialog. Note that if you select an existing dialog and it has more than one edit field control, the edit field control that will contain the full path to the file must have the lowest value for the Tab Stop property.

d.
722

Under this dialog, click the language whose layout you want to configure.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

e.

Add the edit field control that will contain the full path and file name that the end user selects at run time. When InstallShield prompts you for the property name associated with the control, enter IS_BROWSE_FILEBROWSED. Next to the edit field control, add a pushbutton control. This is the button that will launch the Open dialog. Select the pushbutton control and then edit its properties in the grid on the right as needed. For example, to specify the text that you want to be displayed on the button, add a value for the Text property. In the Dialogs explorer, click the Behavior item under the dialog that you are configuring. In the center pane that lists the dialog controls, click the pushbutton control that you just created. In the bottom of the lower-right pane, click the Events tab to view the events for the pushbutton control if they are not already displayed. In the upper-right pane, add a new event with the following settings:

f. g.

h. i. j. k.


3.

Event: DoAction Argument: FileBrowse Condition: 1

Configure several properties to specify behavior of the Open dialog and the dialog that launches the Open dialog:
a. b.

In the View List under Behavior and Logic, click Property Manager. Find the IS_BROWSE_FILEBROWSED property. Its default value is 0. Do one of the following:

To leave the edit field control blank in your dialog when the end user first displays it, rightclick the row that has the IS_BROWSE_FILEBROWSED property and then click Delete Property. To display a default path and file name in the edit field control, change the value of the IS_BROWSE_FILEBROWSED property to the path and file name.

Note: If you do not manually change the value of this property or delete this property, the default value for the edit field control on the dialog that launches the Open dialog is set to 0. c.

Optionally, add a property called IS_BROWSE_FILEEXT, and set its value to a filter string that identifies the file extensions that should be displayed when the end user is browsing through folders to select a file. All files that have other file extensions are hidden and cannot be selected to open. A filter string can be a combination of valid file name characters and the asterisk (*) as a wildcard character. To specify multiple file extensions, separate each with a semicolon. Do not include spaces. For example, to let end users select .exe and .dll files, enter the following string as the value of the IS_BROWSE_FILEEXT property:

InstallShield 2010 User Guide

ISP-1600-UG00

723

Chapter 14: Defining the End-User Interface Working with Dialogs

*.exe;*.dll

In this example, the Open dialog lets end users select .exe and .dll files. It hides all other file types. If you do not set this property, the Open dialog lets end users select any file type.
d.

Optionally, add a property called IS_BROWSE_FILETYPE, and set its value to the string that you want to be displayed in the Files of type drop-down list on the Open dialog. Note that only one option can be displayed in this drop-down list. For example, if you want end users to be able to select .txt or .doc files, enter the following string as the value of the IS_BROWSE_FILETYPE property:
Text Files (*.txt); Word documents (*.doc)

If you do not set this property, the Files of type drop-down list in the Open dialog is blank.
e.

Optionally, add a property called IS_BROWSE_DEFAULTEXTENSION, and set its value to the default file extension that the Open dialog should use. If the end user does not type an extension, the Open dialog appends this default extension to the file name. For example, to use .exe as the default file extension, enter the following string as the value of the IS_BROWSE_DEFAULTEXTENSION property:
exe

At run time, when the end user clicks the new pushbutton control, the Open dialog opens. The end user can browse to and select a file. The installation sets the value of the IS_BROWSE_FILEBROWSED property to the path and file name of the file that the end user selected, and then it displays that path and file name in the edit field control on the dialog that launched the Open dialog.

Requiring End Users to Scroll Through the EULA in the LicenseAgreement Dialog

Project: This information applies to Basic MSI projects.

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 one of the following methods:

Using the scroll bar. Pressing PAGE DOWN when the scrollable EULA control has focus. Pressing CTRL+PAGE DOWN when the scrollable EULA control has focus. Pressing the DOWN ARROW key when the scrollable EULA control has focus. Right-clicking the scroll bar and then clicking Bottom.

The end user must also select the I accept the terms in the license agreement option before the Next button is enabled. The LicenseAgreement dialog requires end users to select the I accept option by default. If you also want to require end users to reach the end of the EULA text, perform the following task.

724

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Task

To require end users to reach the end of the EULA text in the scrollable EULA control: 1.

Add to your project a new MSI DLL custom action called WatchScroll for 32-bit target systems:
a. b.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click the Custom Actions explorer, point to New MSI DLL, and then click Stored in Binary table. InstallShield adds a new custom action called NewCustomActionN, where N is a successive number. Change the name of the custom action to WatchScroll. In the pane on the right, configure the following settings for this custom action:

c. d.

DLL Filename: <ISProductFolder>\redist\language


independent\i386\EulaScrollWatcher.dll

Function Name: WatchScroll Return Processing: Asynchronous (Waits for exit code) In-Script Execution: Immediate Execution Execution Scheduling: Always execute

For all other settings, leave the default values. The value of the MSI Type Number setting should be 129.
2.

Add to your project a new MSI DLL custom action called WatchScroll64 for 64-bit target systems:
a.

In the Custom Actions explorer, right-click the WatchScroll custom action and then click Clone. InstallShield adds a new custom action called WatchScrollN, where N is a successive number. Change the name of the custom action to WatchScroll64. In the pane on the right, specify the following path and file for the DLL Filename setting:
<ISProductFolder>\redist\language independent\x64\EulaScrollWatcher.dll

b. c.

For all other settings, leave the values that were cloned from the WatchScroll custom action.
3.

Edit the LicenseAgreement dialog so that it launches the appropriate custom action:
a. b. c. d. e.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and expand the LicenseAgreement item, and then click Behavior. In the center pane that lists the LicenseAgreement controls, click the ScrollableText control named Memo. This is the control that contains the text of the EULA. In the bottom of the lower-right pane, click the Events tab to view the events for the Memo control if they are not already displayed. In the upper-right pane, add a new event with the following settings for 32-bit target systems:

InstallShield 2010 User Guide

Event: DoAction

ISP-1600-UG00

725

Chapter 14: Defining the End-User Interface Working with Dialogs


f.

Argument: WatchScroll Condition: Not LicenseViewed AND Not ISLicenseWatching AND Not VersionNT64

In the upper-right pane, add a new event with the following settings for 64-bit target systems:


g. h. i.

Event: DoAction Argument: WatchScroll64 Condition: Not LicenseViewed AND Not ISLicenseWatching AND VersionNT64

In the center pane that lists the LicenseAgreement controls, click the PushButton control named Next. In the bottom of the lower-right pane, click the Conditions tab to view the conditions for the Next control. In the upper-right pane, change the Disable and Enable conditions as follows:

Disable: AgreeToLicense <> "Yes" OR Not LicenseViewed Enable: AgreeToLicense = "Yes" AND LicenseViewed

At run time, the installation monitors the EULA control in an asynchronous custom action. While the custom action is running, the ISLicenseWatching property is set. Once the custom action is finished, it removes the ISLicenseWatching property. This avoids the hourglass flicker otherwise seen when end users scroll through the EULA text. Once the end user reaches the bottom of the EULA text, the installation sets the LicenseViewed property and manually enables the Next button if necessary according to the Next buttons conditions. The Next button is found via its text as stored in the Control table; therefore, you can use the aforementioned procedure with any language transform as long as the control is named Next.

Tip: Note that the aforementioned steps include support for both 32-bit and 64-bit target systems. In most cases, including the 32-bit and 64-bit custom actions is the recommended approach. However, in some cases, you may choose to include only one action but not the other:

If your installation cannot be used on 64-bit systems (for example, your installation includes a launch condition of Not VersionNT64), you can exclude the 64-bit custom action. If your installation cannot be used on 32-bit systems (for example, your installation includes x64 for the Template Summary property), you can exclude the 32-bit custom action. In all other cases, the installation can be run on 32-bit systems and on 64-bit systems. In this scenario, the 32-bit custom action must be launched on the 32-bit system; in addition, the 64-bit custom action must be launched on the 64-bit system. If the wrong action is launched on a target system, the Next button will never be enabled, and the end user will not be able to complete the installation.

Adding a Print Button to a Dialog


In Basic MSI projects that are created in InstallShield X or later, the LicenseAgreement dialog includes a Print button. This button enables the end user to print the content of the dialogs ScrollableText control. This buttons event executes the custom action ISPrint, which is included in a new Basic MSI project. Following are directions for adding a Print button to another dialog, and to an existing project that was created with InstallShield DevStudio 9.0 or earlier.
726 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Adding a Print Button to Another Dialog


For the custom action ISPrint to work correctly with a dialog other than LicenseAgreement, you must set the value of the user-defined Windows Installer property IS_PRINT_DIALOG to the name of the dialog. (If IS_PRINT_DIALOG is not an existing property, ISPrint prints the content of the LicenseAgreement dialogs ScrollableText control.)

Task

To add a Print button to another dialog: 1. 2. 3.

Create a button control in the dialog and optionally set its Text property to &Print. For details, see Editing Dialog Layout in Basic MSI Projects. Add a DoAction event to the Print button, and in the events Argument field, select ISPrint. For details, see Triggering Control Events in Basic MSI Dialogs. Modify the value of IS_PRINT_DIALOG from the events of the Back and Next buttons of the dialog and its next and previous dialogs:
a.

Determine which dialog is displayed before the dialog to which you are adding a Print button. You can do this by either checking the argument of the NewDialog event for the dialogs Back button, or viewing next dialog order in the expanded Custom Actions and Sequences view. Add an [IS_PRINT_DIALOG] event to that previous dialogs Next button, and set its argument as the name of the dialog to which you are adding a Print button. If a Print button is included on any dialog that is displayed after the dialog to which you are adding a Print button, do the following: i. Determine which dialog is displayed after the dialog to which you are adding a Print button. You can do this by either checking the argument of the NewDialog event for the dialogs Next button, or viewing the next dialog order in the expanded Custom Actions and Sequences view. Add an [IS_PRINT_DIALOG] event to that next dialogs Back button, and set its argument to the name of the dialog to which you are adding a Print button.

b. c.

ii.

If the next dialog does not have a Print button, or if it is the LicenseAgreement dialog, add an [IS_PRINT_DIALOG] event to the Next button of the dialog to which you are adding a Print button, and set the events argument to LicenseAgreement.
d.

If a Print button is included on any dialog that is displayed before the dialog to which you are adding a Print button, and the previous dialog does not have a Print button or it is the LicenseAgreement dialog, add an [IS_PRINT_DIALOG] event to the Back button of the dialog to which you are adding a Print button, and set the events argument to LicenseAgreement.

Adding a Print Button to an Existing Project

Task

To add a Print button to an existing project that was created with InstallShield DevStudio 9.0 or earlier: 1.

Create the ISPrint custom action:


a.

Launch the Custom Action Wizard.


ISP-1600-UG00 727

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

b. c. d.

In the Basic Information panels Name box, enter ISPrint. In the Action Type panels Type box, select Call a function in a Windows Installer DLL. In the Action Parameters panel, click the Browse button and browse to the file SetAllUsers.dll in the InstallShield folders Redist\Language Independent\i386 subfolder. Click Open. The Path Variable Recommendation dialog box opens. Select the Use the following path variable-based folder representation for the source folder option, and then in the list, select <ISProductFolder>\redist\language independent\i386. Click OK. In the Action Parameters panels Target box, enter PrintScrollableText. Complete the wizard, accepting all remaining default settings.

e.

f. g. 2. 3. 4.

Create a button control in the dialog and optionally set its Text property to &Print. For details, see Editing Dialog Layout in Basic MSI Projects. Add a DoAction event to the Print button, and in the events Argument field, select ISPrint. For details, see Triggering Control Events in Basic MSI Dialogs. Create the Windows Installer property IS_PRINT_DIALOG and set its value to the name of the dialog. For details, see Creating Properties.

Note: If the ISPrint custom action is executed by a control event, the custom actions logging information cannot be recorded to the installer log in the usual manner (because of a Windows Installer limitation); the information is logged to the values of properties that have the form ISPrintLogmNoten.

Minimizing Reboots on Windows Vista Systems

Windows Logo Guideline: Restarting the system after an installation is inconvenient for end users. One of the Certified for Windows Vista program requirements is that all installations must contain an option that enables end users to automatically close applications and attempt to restart them after the installation is complete.

To support this requirement, all Basic MSI projects include the MsiRMFilesInUse dialog by default. An installation displays the MsiRMFilesInUse dialog on a Windows Vista system if one or more files that need to be updated are currently in use during the installation. The dialog contains two options to allow end users to specify how to proceed:

End users can choose to have the installation close the applications that are using those files and then attempt to restart the applications after the installation is complete. End users can avoid closing the applications. A reboot will be required at the end of the installation.

For the best end-user experience, your application should be instrumented to use the Restart Manager API; doing so allows the Restart Manager to effectively pause and resume your application exactly where the end user left it. For detailed information, see About Restart Manager and the other Restart Manager documentation on the MSDN Web site.

728

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Dialog Controls
Whether your dialog is part of a Basic MSI, InstallScript, or InstallScript MSI project, you can use many of the same controls to modify the layout of your predefined and custom dialogs.

Dialog Controls for All Projects


Bitmap Check Box Combo Box Dialog Edit Field Group Box Icon Line List Box List View Progress Bar Push Button Radio Button Radio Button Group Selection Tree Text Area

Dialog Controls Available Only for Use in Basic MSI Projects


Billboard Directory Combo Directory List Masked Edit Path Edit Scrollable Text Volume Cost List Volume Select Combo

InstallShield 2010 User Guide

ISP-1600-UG00

729

Chapter 14: Defining the End-User Interface Working with Dialogs

Dialog Controls Available for Use Only in InstallScript and InstallScript MSI Projects
The Custom control is available only for use in InstallScript and InstallScript MSI projects. InstallScript and InstallScript MSI installations include support for HTML controls. To learn more, see Using an HTML Control on a Dialog.

Billboard Properties

Project: Billboard controls are available for use only in Basic MSI installation projects. The Billboard properties described below do not refer to the properties of billboards that can be displayed in InstallScript and InstallScript MSI installations; to learn more about this type of billboard, see Displaying Billboards.

A billboard is used to display data that can be updated in response to control events. Billboards can contain other controls for displaying this information, but they must be static controlsincluding text, bitmaps, and iconsthat are not linked to a Windows Installer property. You can use a billboard, for example, to display the progress of a protracted custom action. Billboards are not fully supported in the Dialog Editor. You must go into the Direct Editor and modify the Billboard and BBControl tables to have the billboard interact with Windows Installer actions and display other controls. Each billboard control has the following properties to specify how it is displayed.
Table 14-8: Settings for a Billboard Control Property Name Description Enter a name for this billboard. The name must be unique among all of the controls in your project. This font style is used for the billboards label if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the ESC key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control.

Base Text Style

Cancel

Control Identifier

Default

730

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-8: Settings for a Billboard Control (cont.) Property Enabled Description True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the billboard in installer units, which are defined as 1/12 of the height of the system font. Distance from the left edge of the dialog to the start of the billboard in installer units. Set this property to True to give the billboards edges a recessed, threedimensional appearance. If this property is False, this control appears as a typical control field. Provide an integer, starting with 0 (zero) thatalong with the other controls on this dialog and excluding controls such as static textdetermines the order in which each control area will receive focus when the end user presses the TAB key. The tab stop indicates whether this control area will receive focus within the tab order. This property holds the text that will be used for the initial value of the billboards control (see the BBControl table). Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. When you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. If the billboards control contains a bitmap or icon, then this value must be a foreign key into the Binary table to the file that is initially displayed on the control. Text Style Select the font style, size, and color (if available) in which you want the billboards label to be displayed. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the billboard in installer units. True means that the billboard control is visible, and False means that it is hidden. You can also make the billboard visible by editing its condition in the Behavior editor. Width of the billboard in installer units.

Height

Left

Sunken

Tab Index

Tab Stop

Text

Tooltip

Top Visible

Width

InstallShield 2010 User Guide

ISP-1600-UG00

731

Chapter 14: Defining the End-User Interface Working with Dialogs

Bitmap Properties
Each bitmap control has the following properties to specify how it is displayed.
Table 14-9: Settings for a Bitmap Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this bitmap. The name must be unique among all of the controls in your project.

Cancel

Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the ESC key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Default

Enabled

True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). The icon or bitmap file must be stored as a binary resource inside the Windows Installer package. Enter the path to this file so that InstallShield can include it in your release. Once you click the File Name value to edit it, an ellipsis button (...) appears to allow you either to browse to the file or to select the string identifier that contains the path and file name. In fact, the value for File Name is always stored as a string entry so that you can easily make language-specific changes to the dialog. Height of the control area in nstaller units, which are defined as 1/12 of the height of the system font.

File Name

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left

Distance from the left edge of the dialog to the start of the control area in installer units.

732

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-9: Settings for a Bitmap Control (cont.) Property Other Window Styles Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Click the ellipsis button (...) to display the Other Window Styles dialog box.

Stretch to Fit

Selecting True causes the image to be resized to fill the area of the control. A value of False makes the bitmap centered if smaller than the control or cropped if larger. False leaves this control looking like a typical bitmap image. Set this property to True to give the control areas edges a recessed, threedimensional appearance.

Sunken

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this control area will receive focus within the tab order.

Tab Stop

Tooltip

This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the control area in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the bitmap control is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the control area in installer units.

Check Box Properties


Each check box control has the following properties available for specifying how it will be displayed.

InstallShield 2010 User Guide

ISP-1600-UG00

733

Chapter 14: Defining the End-User Interface Working with Dialogs

Project: (Windows Installer based projects only) When you first draw a check box onto a dialog, InstallShield prompts for the name of a single Windows Installer property. The name that you enter is used as the value for Property, below, which contains the value entered into the edit field by the end user. Table 14-10: Settings for a Check Box Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this check box. The name must be unique among all of the controls in your project.

Base Text Style

This font style is used for the check box label if you specify nothing for the Text Style property. This property has no effect on a check box with an image for a label. If it is read-only, then you must select Text for the Control Style property before specifying the style.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Specify whether this check box will be marked with a text label, an icon, or a bitmap.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Control Style

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Enabled

734

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-10: Settings for a Check Box Control (cont.) Property File Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Check boxes that display an icon or a bitmap file must have the file stored as a binary resource inside the Windows Installer package. Enter the path to this file so that InstallShield can include it in your release. Once you click the File Name value to edit it, an ellipsis button (...) appears to allow you either to browse to the file or to select the string identifier that contains the path and file name. In fact, the value for File Name is always stored as a string entry so that you can easily make language-specific changes to the dialog. This property has no effect on a check box with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before browsing to the file. Height Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Height of the check box in installer units, which are defined as 1/12 of the height of the system font.

Icon Size

Assuming that your icon file has more than one resource, specify the size of the image that you want to use for the push button. The Use first image option causes the first image in the file to be displayed and makes it stretch to fit the size of the control, regardless of what you specify for the Stretch to Fit property. This property has no effect on a check box with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before selecting a size.

Indirect Property

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Set this value to True if this controls Installer property (see Property) references another Installer property. When an indirect property is set to True, Windows Installer will resolve the referenced property at run time. For example, this check box might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Distance from the left edge of the dialog to the start of the check box in installer units.

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Property

Enter the name of a property that will be set when this check box is clicked. This property can be unique to this combo box; it need not be present in the Property Manager. To set a default value for this check box, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the Value property (below).

InstallShield 2010 User Guide

ISP-1600-UG00

735

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-10: Settings for a Check Box Control (cont.) Property Property Is Integer Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Select True from the list if the property for this control (above) has an integer value. The propertys value is assumed to be a string when Property Is Integer is False. Set this property to True to turn this check box into a push button control.

Push Button

Right-Aligned

The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Stretch to Fit

Selecting True causes an icon to be resized to fill the area of the buttons face. A value of False makes the icon centered if smaller than the button or cropped if larger. False is ignored if you do not set the Icon Size property. This property has no effect on a check box with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before changing the Stretch to Fit value.

Sunken

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Set this property to True to give this check box a recessed, threedimensional appearance. Otherwise, it will have a flat, box-like appearance.

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this check box will receive focus within the tab order.

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Text

This property holds the text that will be used for the controls label. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. This property has no effect on a check box with an image for a label. If it is read-only, then you must select Text for the Control Style property before editing the text.

736

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-10: Settings for a Check Box Control (cont.) Property Text Style Project Type Basic MSI Description Select the font style, size, and color, if available, that you want the check box label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property has no effect on a check box with an image for a label. If it is read-only, then you must select Text for the Control Style property before specifying the style. Tooltip Basic MSI This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the check box in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Value

When the check box is selected, the property above will be set to this value. True means that the check box is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Visible

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Width

Width of the check box and label in installer units.

Combo Box Properties


Each combo box control has the following properties available for specifying how it will be displayed.

Project: (Windows Installer based projects only) When you first draw a combo box onto a dialog, InstallShield prompts for the name of a single Windows Installer property that identifies all of the items that belong to this combo box. The name that you enter is used as the value for Property, below, which will contain the selected or entered value from the combo box. (Note that Windows Installer combo boxes allow the user to select only a single item. Be sure to set the Height property to a large number, which specifies the height of the drop-down list portion of the combo box control. Table 14-11: Settings for a Combo Box Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this combo box. The name must be unique among all of the controls in your project.

Base Text Style

This font style is used for the combo-box label if you specify nothing for the Text Style property.
737

InstallShield 2010 User Guide

ISP-1600-UG00

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-11: Settings for a Combo Box Control (cont.) Property Cancel Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Code Page Basic MSI Set this property to Database to have the combo box use fonts from the packages database, or Users System to use fonts from the systems default code page. This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. Select False to have this control be an editable combo box, or True to have it work like a drop-down list.

Context Help

Basic MSI

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Drop-Down List

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Height

Height of the combo box in installer units.

Indirect Property

Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer will resolve the referenced property at run time. For example, this combo box might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Once you click the Items value to edit it, an ellipsis button (...) appears to let you edit the combo-box items in the List Items dialog. To add a new item to the list, click the Add button. For each item, you must enter text, which is the item that will be displayed in the combo box, and a value, which is the value that will be assigned to the property if this item is selected.

Items

Basic MSI

738

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-11: Settings for a Combo Box Control (cont.) Property Left Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Distance from the left edge of the dialog to the start of the combo box in installer units, which are defined as 1/12 of the height of the system font. Set this property to True to have the arrow and vertical scrollbar displayed on the left side of the combo box. This property should be set only when the Right-to-Left property is true. Specify how many characters the end user can enter into the combo box. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Left Scrollbar

Max. Length

Other Window Styles

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Property

Enter the name of a property that will be set when the end user enters a value into or selects one from this combo box. This property can be unique to this combo box; it need not be present in the Property Manager. To set a default value for this combo box, make the property is a public property by giving it a name containing only uppercase letters (for example, COMBOPROPERTY), go to the Property Manager and add the public property, and then assign to it the value of the default selection (see Items, above).

Property Is Integer

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Select True if the property for this control (above) has an integer value. The propertys value is assumed to be a string when Property Is Integer is False. Make sure that all of the values in the Item property (above) are either integers or strings, depending on the value you select here. The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Sorted

Selecting True causes the items in the combo box to be sorted alphabetically. A value of False makes them retain the order that you set for each item in the List Items dialog. Set this property to True to give the combo box a recessed, threedimensional appearance, as combo boxes usually look. False gives it a flat appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab key.

Sunken

Tab Index

InstallShield 2010 User Guide

ISP-1600-UG00

739

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-11: Settings for a Combo Box Control (cont.) Property Tab Stop Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description The tab stop indicates whether this combo box will receive focus within the tab order.

Text

This property holds the text that will be used for the controls label. Although you cannot see the label, it will be available for screen readers. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the combo-box label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over this control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the combo box in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the combo box is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the combo box in installer units.

Custom Properties

Project: Custom controls are available only for dialogs in InstallScript MSI projects.

Each custom control has the following properties available for specifying how it is displayed.
Table 14-12: Settings for a Custom Control Property Name Description Enter a name for this custom control. The name must be unique among all of the controls in your project.

740

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-12: Settings for a Custom Control (cont.) Property Control Identifier Description This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the control in installer units, which are defined as 1/12 of the height of the system font. Distance from the left edge of the dialog to the start of the control in installer units. Click the ellipsis button (...) to display the Other Window Styles dialog box. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this control will receive focus within the tab order. Distance from the top of the dialog to the top of the control in installer units. Enter a name for the custom control type. True means that the custom control is visible, and False that it is hidden. Width of the push button in installer units.

Enabled

Height

Left

Other Window Styles Tab Index

Tab Stop Top Type Visible Width

Dialog Properties
Each dialog has the following properties to specify how it is displayed. Unlike its controls, you cannot change the name of a dialog in the Dialog Editor. To change the name, right-click on the dialog in the Dialogs view and click Rename.
Table 14-13: Settings for a Dialog Control Property Caption Project Type Basic MSI Description A name that will become the title for the dialog. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. Comment Basic MSI Enter comments for the dialog. Your comments are saved in the project file for your reference and are not used in the installation at any time.

InstallShield 2010 User Guide

ISP-1600-UG00

741

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-13: Settings for a Dialog Control (cont.) Property Custom Palette Project Type Basic MSI Description A custom palette is necessary only if the dialog will contain images using a color palette different from the default one created by Windows Installer for the dialog. Otherwise, leave this value as False. Set this value to True if this dialog serves as an error dialog, one of the dialogs required by Windows Installer. The height of the dialog, excluding the title bar. Give the value in installer units, which are defined as 1/12 of the height of the system font.

ErrorDialog

Basic MSI

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Keep Modeless

When this value is set to True and this dialog is spawned through a DoAction event, all other dialogs remain. If the Keep Modeless property is False, they will be destroyed. Give the percentage from the left edge of the screen where you want the dialog to be placed. A value of 50 centers the dialog horizontally. This value is ignored if this dialog is part of an installation wizard, and the previous dialog was in a different location or was moved by the end user. Select True to set the scroll bar, if present, at the left side of the dialog. The default value, False, keeps it at the right side.

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left Scrollbar

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object InstallScript MSI

Minimize

True means that the end user can minimize this dialog. False means that the option is not present on the title bar.

Modal

Select True if this dialog is part of the installation wizard and no other dialogs should be placed on top of it.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Right-Aligned

Set this property to True to align the caption to the right of the dialog.

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Specify a font to be used for the dialog by selecting from the drop-down menu.

Text Style

742

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-13: Settings for a Dialog Control (cont.) Property Top Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Give the percentage from the top of the screen where you want the dialog to be placed. A value of 50 centers the dialog vertically. This value is ignored if this dialog is part of an installation wizard, and the previous dialog was in a different location or was moved by the end user. Select True if this dialog has a control that alerts the end user that a drive is out of space or that checks the value of the OutOfDiskSpace property before performing some action. True means that the dialog is visible, and False means that it is hidden.

Track Disk Space

Basic MSI

Visible

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Width

The width of the dialog in installer units.

Directory Combo Properties

Project: Directory combo controls are available only for use in Basic MSI projects

A directory combo is used in conjunction with a directory list and a path edit control to create a browse dialog. The directory combo displays the list of drives mapped on the current system. When you first draw a directory combo onto a dialog, InstallShield prompts for the name of a single Windows Installer property. This property should be the same for the accompanying directory list and path edit. It will contain the path selected by the end user. Each directory combo control has the following properties to specify how it is displayed.
Table 14-14: Settings for a Directory Combo Control Property Name Description Enter a name for this directory combo. The name must be unique among all of the controls in your project. This font style is used for the directory combos text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation.

Base Text Style

Cancel

InstallShield 2010 User Guide

ISP-1600-UG00

743

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-14: Settings for a Directory Combo Control (cont.) Property Control Identifier Description This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the directory combo in installer units, which are defined as 1/12 of the height of the system font. Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this directory combo might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Distance from the left edge of the dialog to the start of the directory combo in installer units. Set this property to True to have the arrow and vertical scrollbar displayed on the left side of the directory combo. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box. Enter the name of a property that will be set when the end user selects a value from this directory combo. This control populates the first part of the path that is displayed in the directory list, so you must use the same property for the directory combo, the directory list, and path edit when using them together in a browse dialog. This property can be unique to the browse dialog; it need not be present in the Property Manager. To set a default value for this directory combo, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the value of the default selection. Right-Aligned The default value of False aligns the text to the left of the control. Set it to True to align the text to the right. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Select True to display CD-ROM volumes in the directory combo. Select True to display hard drives in the directory combo. Select True to display floppy drives in the directory combo.

Default

Enabled

Height

Indirect Property

Left Scrollbar

Other Window Styles Property

Right-to-Left

Show CD-ROM Show Fixed Show Floppy

744

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-14: Settings for a Directory Combo Control (cont.) Property Show RAMDisk Show Remote Show Removable Sunken Description Select True to display RAM volumes in the directory combo. Select True to display mapped network drives in the directory combo. Select True to display removable drives in the directory combo. Set this property to True to give the directory combo a recessed, three-dimensional appearance, as directory combos usually look. False gives it a flat appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this directory combo will receive focus within the tab order. Select the font style, size, and color, if available, that you want the directory combos label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over this control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the directory combo in installer units. True means that the directory combo is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the directory combo in installer units.

Tab Index

Tab Stop

Text Style

Tooltip

Top Visible

Width

Directory List Properties

Project: Directory list controls are available only for use in Basic MSI projects.

A directory list is used in conjunction with a directory combo and a path edit control to create a browse dialog. The directory list displays the folders below the drive selected in the directory combo control and populates the value of the path edit control. When you first draw a directory list onto a dialog, InstallShield prompts for the name of a single Windows Installer property. This property should be the same for the accompanying directory combo and path edit. It will contain the path selected by the end user.

InstallShield 2010 User Guide

ISP-1600-UG00

745

Chapter 14: Defining the End-User Interface Working with Dialogs

Each directory list control has the following properties to specify how it is displayed.
Table 14-15: Settings for a Directory List Control Property Name Description Enter a name for this directory list. The name must be unique among all of the controls in your project. This font style is used for the text in the directory list if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the directory list in installer units, which are defined as 1/12 of the height of the system font. Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this directory list might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Left Scrollbar Distance from the left edge of the dialog to the start of the directory list in installer units. Set this property to True to have the vertical scrollbar displayed on the left side of the directory list. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Base Text Style

Cancel

Control Identifier

Default

Enabled

Height

Indirect Property

Other Window Styles

746

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-15: Settings for a Directory List Control (cont.) Property Property Description Enter the name of a property that will be set when the end user selects a value from this directory list. This control populates the path that is displayed in the path edit and changes depending on the selection in the directory combo, so you must use the same property for all three controls when using them together in a browse dialog. This property can be unique to the browse dialog; it need not be present in the Property Manager. To set a default value for this directory list, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the value of the default selection. Right-Aligned The default value of False aligns the text to the left of the control. Set it to True to align the text to the right. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Set this property to True to give this directory lists border a recessed, three-dimensional appearance. Otherwise, it will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this edit field will receive focus within the tab order. Select the font style, size, and color, if available, that you want the directory lists text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the directory list in installer units. True means that the directory list is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the directory list and label in installer units.

Right-to-Left

Sunken

Tab Index

Tab Stop Text Style

Tooltip

Top Visible

Width

Edit Field Properties


Each edit field control has the following properties available for specifying how it will be displayed.

InstallShield 2010 User Guide

ISP-1600-UG00

747

Chapter 14: Defining the End-User Interface Working with Dialogs

Project: (Windows Installerbased projects only) When you first draw an edit field onto a dialog, InstallShield prompts you for the name of a single Windows Installer property. The name you enter is used as the value for Property, below, which will contain the value entered into the edit field by the end user. Table 14-16: Settings for an Edit Field Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this edit field. The name must be unique among all of the controls in your project.

Base Text Style

This font style is used for the edit fields text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Enabled

Height

Height of the check box in installer units.

748

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-16: Settings for an Edit Field Control (cont.) Property Indirect Property Project Type Basic MSI Description Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this edit field might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Distance from the left edge of the dialog to the start of the edit field in installer units, which are defined as 1/12 of the height of the system font.

Left Scrollbar

Set this property to True to have the vertical scrollbar displayed on the left side of the edit field. This property should be set only when both the Multi-Line and Right-to-Left properties are true.

Max. Length MultiLine

Specify how many characters the end user can enter into this edit field. Set this property to True to turn this control into a multiline edit field.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Password

Select True to have this edit box behave like a password control, only showing asterisks (*) when input is entered into it. Select false to have it behave like a normal edit box.

Property

Enter the name of a property that will be set with the value that the user enters into the edit field. This property can be unique to this edit field; it need not be present in the Property Manager. To set a default value for this edit field, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then give it the value of the default selection.

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

InstallShield 2010 User Guide

ISP-1600-UG00

749

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-16: Settings for an Edit Field Control (cont.) Property Sunken Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Set this property to True to give this edit field a recessed, threedimensional appearance. Otherwise, it will have a flat, box-like appearance.

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this edit field will receive focus within the tab order.

Tab Stop

Text

This property holds the text that will be used for the controls text. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the edit fields text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the edit field in installer units. True means that the edit field is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the check box and label in installer units.

Tooltip

Basic MSI

Top

Basic MSI

Visible

Basic MSI

Width

Basic MSI

Group Box Properties


A group box can be used to enclose various controls in one area. To move and align the group box along with any individual control it encloses, hold the CTRL key as you select the group box and each control that you want to select. A group box also provides a label that you can use to express the relationship between the controls contained within.

750

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Each group box control has the following properties available for specifying how it will be displayed.
Table 14-17: Settings for a Group Box Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this group box. The name must be unique among all of the controls in your project.

Base Text Style

This font style is used for the group box label if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height

Height of the group box in installer units, which are defined as 1/12 of the height of the system font.

Left

Distance from the left edge of the dialog to the start of the group box in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Right-Aligned

The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

InstallShield 2010 User Guide

ISP-1600-UG00

751

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-17: Settings for a Group Box Control (cont.) Property Right-to-Left Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Sunken

False leaves this control looking like a typical control field. Set this property to True to give the group box edges a recessed, threedimensional appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this control area will receive focus within the tab order.

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Text

This property holds the text that will be used for the group box label. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the group box label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the group box in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the group box control is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the group box in installer units.

Width

752

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Icon Properties
Each icon control has the following properties available for specifying how it will be displayed.
Table 14-18: Settings for an Icon Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this icon. The name must be unique among all of the controls in your project.

Cancel

Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). The icon file must be stored as a binary resource inside the Windows Installer package. Enter the path to this file so InstallShield can include it in your release. When you click the File Name value to edit it, an ellipsis button (...) appears to allow you either to browse to the file or to select the string identifier that contains the path and file name. The value for File Name is always stored as a string entry so that you can easily make languagespecific changes to the dialog.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

Basic MSI

File Name

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height of the control in installer units, which are defined as 1/12 of the height of the system font.

InstallShield 2010 User Guide

ISP-1600-UG00

753

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-18: Settings for an Icon Control (cont.) Property Icon Size Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Assuming that your icon file has more than one resource, specify the size of the image that you want to use for this control. The default value for a new icon is 32x32. The Use first image option causes the first image in the file to be displayed and makes it stretch to fit the size of the control, regardless of what you specify for the Stretch to Fit property. Left Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Distance from the left edge of the dialog to the start of the control in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Stretch to Fit

Selecting True causes an icon to be resized to fill the height and width that you select. A value of False makes the icon centered if smaller than the area or cropped if larger. False is ignored if you do not set the Icon Size property. Set this property to True to give the controls edges a recessed, threedimensional appearance.

Sunken

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this icon will receive focus within the tab order.

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Tooltip

This property holds the text that will be displayed when the mouse hovers over this control or read by a screen reader. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the control in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the icon is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior Editor.

Width

Width of the control in installer units.

754

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Line Properties
The Line control creates lines of adjustable length and thickness. Lines can be used to separate areas of the dialog or add graphical touches. Each Line control has the following properties available for specifying how it will be displayed.
Table 14-19: Settings for a Line Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this line. The name must be unique among all of the controls in your project.

Cancel

Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Vertical length of the line in installer units, which are defined as 1/12 of the height of the system font.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

Basic MSI

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left

Distance from the left edge of the dialog to the start of the line in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Sunken

False leaves this control looking like a flat line. Set this property to True to give the lines edges a recessed, three-dimensional appearance.

InstallShield 2010 User Guide

ISP-1600-UG00

755

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-19: Settings for a Line Control (cont.) Property Tab Index Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this control area will receive focus within the tab order.

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Tooltip

This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the line in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the line control is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Horizontal length of the line in installer units.

List Box Properties


Each list box control has the following properties available for specifying how it will be displayed.

Project: (Windows Installer based projects only:) When you draw a list box onto a dialog, InstallShield prompts you for the name of a single Windows Installer property that will identify all of the items that will be displayed in this list box. The name you enter is used as the value for Property, below, which will later contain the value selected from the list box. Table 14-20: Settings for a List Box Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this list box. The name must be unique among all of the controls in your project.

Base Text Style Basic MSI

This font style is used for the text in the list box if you specify nothing for the Text Style property.

756

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-20: Settings for a List Box Control (cont.) Property Cancel Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Code Page Basic MSI Set this property to Database to have the list box use fonts from the packages database, or Users System to use fonts from the systems default code page. This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Context Help

Basic MSI

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height

Height of the list box in installer units, which are defined as 1/12 of the height of the system font.

Indirect Property

Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this list box might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Once you click the Items value to edit it, an ellipsis button (...) appears to let you edit the List box items in the List Items dialog. To add a new item to the list, click the Add button. For each item you must enter text, which is the string that will be displayed in the list box, and a value, which is the value that will be assigned to the property if this item is selected. You can use the Move Up and Move Down buttons to specify the order in which the items will be displayed in the list box.

Items

Basic MSI

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Distance from the left edge of the dialog to the start of the list box in installer units.

InstallShield 2010 User Guide

ISP-1600-UG00

757

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-20: Settings for a List Box Control (cont.) Property Left Scrollbar Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Set this property to True to have the vertical scrollbar displayed on the left side of the list box. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Other Window Styles

Property

Enter the name of a property that will be set when the end user selects a value from this list box. This property can be unique to this list box; it need not be present in the Property Manager. To set a default value for this list box, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the text of the default selection (see Items, above).

Property Is Integer

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Select True if the property for this control (above) has an integer value. The propertys value is assumed to be a string when Property Is Integer is False. Ensure that all of the values in the Item property (above) are either integers or strings, depending on the value you select here. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Right-to-Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Sorted

Selecting True causes the items in the list box to be sorted alphabetically. A value of False makes them retain the order that you set for each item in the List Items dialog. Set this property to True to give this list box border a recessed, threedimensional appearance. Otherwise, it will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this edit field will receive focus within the tab order.

Sunken

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Text

This property holds the text for screen readers. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

758

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-20: Settings for a List Box Control (cont.) Property Text Style Project Type Basic MSI Description Select the font style, size, and color, if available, that you want the list box text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the list box in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the list box is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the list box in installer units.

List View Properties


Each list view control has the following properties available for specifying how it is displayed.

Project: (Windows Installer based projects only:) When you first draw a list view onto a dialog, InstallShield prompts you for the name of a single property that identifies all of the items that are displayed in this list view. The name you enter is used as the value for Property, below, which later contains the value selected from the list view. Table 14-21: Settings for a List View Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this list view. The name must be unique among all of the controls in your project.

Base Text Style

This font style is used for the list views items if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

759

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-21: Settings for a List View Control (cont.) Property Context Help Project Type Basic MSI Description This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Enabled

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height

Height of the list view area in installer units, which are defined as 1/12 of the height of the system font.

Indirect Property

Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer will resolve the referenced property at run time. For example, suppose this list view uses the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Once you click the Items value to edit it, a Browse button appears to let you edit the list views items in the List Items dialog. To add a new item to the list, click the Add button. For each item you must enter text, which is the item that will be displayed in the list view, and a value, which is the value that will be assigned to Property if this item is selected. You can use the Move Up and Move Down buttons to specify the order in which the items will be displayed in the list box.

Items

Basic MSI

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Distance from the left edge of the dialog to the start of the list view area in installer units.

Left Scrollbar

Set this property to True to have the vertical scrollbar displayed on the left side of the list view. This property should be set only when the Right-toLeft property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Other Window Styles

760

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-21: Settings for a List View Control (cont.) Property Property Project Type Basic MSI Description Enter the name of a property that will be set when the end user selects a value from this list view. This property can be unique to this list view; it need not be present in the Property Manager. To set a default value for this list view, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then give it the value of the default item (see Items, above). Property Is Integer Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Select True if the property for this control (above) has an integer value. The propertys value is assumed to be a string when Property Is Integer is False. Make sure that all of the values in the Item property (above) are either integers or strings, depending on the value you select here. The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Sorted

Selecting True causes the items in the list view to be sorted alphabetically. A value of False makes them retain the order that you set for each item in the List Items dialog. Set this property to True to give this list view area a recessed, threedimensional appearance. Otherwise, its edges will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this list view will receive focus within the tab order.

Sunken

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Text Style

Select the font style, size, and color, if available, that you want the list views text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the list view area in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

761

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-21: Settings for a List View Control (cont.) Property Visible Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description True means that the list view is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the list view area in installer units.

Masked Edit Properties

Project: Masked edit controls are available only for use in Basic MSI projects.

A masked edit field is used for entering information of a specified format. Each masked edit control has the following properties available for specifying how it will be displayed.
Table 14-22: Settings for a Masked Edit Control Property Name Description Enter a name for this masked edit control. The name must be unique among all of the controls in your project. This font style is used for the masked edits text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the check box in installer units, which are defined as 1/12 of the height of the system font.

Base Text Style

Cancel

Default

Enabled

Height

762

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-22: Settings for a Masked Edit Control (cont.) Property Indirect Property Description Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this masked edit might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Mask Distance from the left edge of the dialog to the start of the masked edit in installer units. Specifies the formatting of the mask. See MaskedEdit Control in the Windows Installer Help Library for more information. Specify how many characters the end user can enter into this masked edit. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Max. Length Other Window Styles Property

Enter the name of a property that will be set with the value that the user enters into the masked edit. This property can be unique to this combo box; it need not be present in the Property Manager. To set a default value for this masked edit, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then give it the value of the default selection.

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Set this property to True to give this masked edit a recessed, three-dimensional appearance. Otherwise, it will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this masked edit will receive focus within the tab order. Select the font style, size, and color, if available, that you want the masked edits text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the masked edit in installer units. True means that the masked edit is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the check box and label in installer units.

Sunken

Tab Index

Tab Stop Text Style

Tooltip

Top Visible

Width

InstallShield 2010 User Guide

ISP-1600-UG00

763

Chapter 14: Defining the End-User Interface Working with Dialogs

Path Edit Properties

Project: Path edit controls are available only for use in Basic MSI projects.

A path edit control is used in conjunction with a directory combo and a directory list control to create a browse dialog. The path edit displays the complete path assembled from selections made in the directory combo and directory list, along or instead of edits made by the end user. Each path edit control has the following properties available for specifying how it will be displayed.
Table 14-23: Settings for a Path Edit Control Property Name Description Enter a name for this path edit control. The name must be unique among all of the controls in your project. This font style is used for the path edits text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the check box in installer units, which are defined as 1/12 of the height of the system font. Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this path edit might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Distance from the left edge of the dialog to the start of the path edit in installer units. Click the ellipsis button (...) to display the Other Window Styles dialog box.

Base Text Style

Cancel

Default

Enabled

Height

Indirect Property

Other Window Styles

764

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-23: Settings for a Path Edit Control (cont.) Property Property Description Enter the name of a property that will be set when the end user enters a value into this path edit or selects one from the directory list. Since this control is populated from the directory list and directory combo, you must use the same property for the directory combo, the directory list, and path edit when using them together in a browse dialog. This property can be unique to the browse dialog; it need not be present in the Property Manager. To set a default value for this path edit, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the value of the default selection. Right-Aligned The default value of False aligns the text to the left of the control. Set it to True to align the text to the right. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Set this property to True to give this path edit a recessed, three-dimensional appearance. Otherwise, it will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this path edit will receive focus within the tab order. This property holds the text that will be used for the controls label. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. Text Style Select the font style, size, and color, if available, that you want the path edits label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the path edit in installer units. True means that the path edit is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the check box and label in installer units.

Right-to-Left

Sunken

Tab Index

Tab Stop

Text

Tooltip

Top Visible

Width

InstallShield 2010 User Guide

ISP-1600-UG00

765

Chapter 14: Defining the End-User Interface Working with Dialogs

Progress Bar Properties


A progress bar is a dynamic, graphical bar that fills up in response to control events. Each progress bar control has the following properties available for specifying how it will be displayed.
Table 14-24: Settings for a Progress Bar Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Enter a name for this progress bar. The name must be unique among all of the controls in your project.

Appearance

Select Continuous if you want the moving bar to appear as a uniform, blue bar. Otherwise it will proceed as a series of blue rectangles.

Base Text Style

This color is used for the line if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the progress bar in installer units, which are defined as 1/12 of the height of the system font.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Enabled

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left

Distance from the left edge of the dialog to the start of the control in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

766

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-24: Settings for a Progress Bar Control (cont.) Property Sunken Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Set this property to True to give the edges of this progress bar a recessed, three-dimensional appearance. Otherwise, they will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this progress bar will receive focus within the tab order.

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Text Style

Select the color that you want the progress bar to be displayed in. Leaving the value as <Default> displays the font, and hence line color, contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the control in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the progress bar is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the progress bar in installer units.

Push Button Properties


Each push button control has the following properties available for specifying how it will be displayed.
Table 14-25: Settings for a Push Button Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this push button. The name must be unique among all of the controls in your project.

InstallShield 2010 User Guide

ISP-1600-UG00

767

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-25: Settings for a Push Button Control (cont.) Property Base Text Style Project Type Basic MSI Description This font style is used for the push buttons label if you specify nothing for the Text Style property. This property has no effect on a push button with an image for a label. If it is read-only, then you must select Text for the Control Style property before specifying the style. Cancel Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help Basic MSI This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Specify whether this push button will be marked with a text label, an icon, or a bitmap.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Control Style

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Enabled

File Name

Push buttons that display an icon or a bitmap file must have the file stored as a binary resource inside the Windows Installer package. Enter the path to this file so that InstallShield can include it in your release. Once you click the File Name value to edit it, an ellipsis button (...) appears to allow you either to browse to the file or to select the string identifier that contains the path and file name. In fact, the value for File Name is always stored as a string entry so that you can easily make language-specific changes to the dialog. This property has no effect on a push button with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before browsing to the file.

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Height of the push button in installer units, which are defined as 1/12 of the height of the system font.

768

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-25: Settings for a Push Button Control (cont.) Property Icon Size Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Assuming that your icon file has more than one resource, specify the size of the image that you want to use for the push button. The Use first image option causes the first image in the file to be displayed and makes it stretch to fit the size of the control, regardless of what you specify for the Stretch to Fit property. This property has no effect on a push button with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before selecting a size. Left Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Distance from the left edge of the dialog to the start of the push button in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Stretch to Fit

Selecting True causes an icon to be resized to fill the area of the buttons face. A value of False makes the icon centered if smaller than the button or cropped if larger. False is ignored if you do not set the Icon Size property. This property has no effect on a push button with a text label. If it is readonly, then you must select either Bitmap or Icon for the Control Style property before changing the Stretch to Fit value.

Sunken

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

False leaves this control looking like a typical push button. Set this property to True to give the buttons edges a recessed, three-dimensional appearance, in addition to its raised button look. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this push button will receive focus within the tab order.

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

769

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-25: Settings for a Push Button Control (cont.) Property Text Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description This property holds the text that will be used for the controls label, if any. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. This property has no effect on a push button with an image for a label. If it is read-only, then you must select Text for the Control Style property before editing the text. Text Style Basic MSI Select the font style, size, and color, if available, that you want the push buttons label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property has no effect on a push button with an image for a label. If it is read-only, then you must select Text for the Control Style property before specifying the style. Tooltip Basic MSI This property holds the text that will be displayed when the mouse hovers over this control or read by a screen reader in the case of an icon or bitmap push button. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the push button in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the push button is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the push button in installer units.

Radio Button Group Properties


You can think of the group and its radio buttons as a single control. Note that when you delete a radio button group, all of its radio buttons are also deleted. Also, when you change the name of the radio button groups property, all of its radio buttons are deleted. Each radio button group control has the following properties available for specifying how it is displayed.

Project: (Windows Installer based projects only:) When you first specify a radio button group area in a dialog, InstallShield prompts you for the name of a single property that will identify all of the buttons that will be displayed in this radio button

770

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

group. The name you enter is used as the value for Property, below, which will later contain the selected value from the list of radio buttons contained in this radio button group. Table 14-26: Settings for a Radio Button Group Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this radio button group. The name must be unique among all of the controls in your project.

Base Text Style Basic MSI

This font style is used for the radio button groups label if you specify nothing for the Text Style property. This property has no effect on a radio button group with an image for a label.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. The control identifier for the first radio button in a group is the control identifier for the radio button group. The control for each subsequent radio button is the radio button group identifier incremented by one.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Enabled

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Has Border

Set this property to True to display the a border around the radio button group. Otherwise the radio button group and label will appear without a border. The appearance of the border can be further altered by modifying the Sunken property. Height of the radio button group area in installer units, which are defined as 1/12 of the height of the system font.

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

771

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-26: Settings for a Radio Button Group Control (cont.) Property Indirect Property Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this radio button group might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Distance from the left edge of the dialog to the start of the radio button group field in installer units.

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Property

Enter the name of a property that will be set when the end user selects one of the radio buttons. This property can be unique to this radio button group; it need not be present in the Property Manager. For information on using this property to set a default selection in the radio buttons, see the radio buttons Value property.

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Sunken

Set this property to True to give this radio button group area a border with a recessed, three-dimensional appearance. Otherwise, the buttons will appear on their own with borders determined by their individual settings. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The radio button group cannot receive focus unless one of its radio buttons is selected. To make one of the buttons selected by default, see above in Property. This property holds the text that will be used for the radio button groups label. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. This property has no effect on a radio button group with an image for a label.

Tab Index

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Text

772

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-26: Settings for a Radio Button Group Control (cont.) Property Text Style Project Type Basic MSI Description Select the font style, size, and color, if available, that you want the radio button groups label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property has no effect on a radio button group with an image for a label. Tooltip Basic MSI This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the radio button group area in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the radio button group field is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the radio button group area and label in installer units.

Width

Radio Button Properties


Radio buttons must be inserted into a radio button group and will function as part of that control. In fact, when you delete a radio button group in the Dialog Editor, all of the radio buttons associated with the group are also deleted. Also, when you change the name of the radio button groups property, all of its radio buttons are deleted. The value of a radio button, if selected, becomes the value of the property for the radio button group. See the Value property, below. Each radio button control has the following properties available for specifying how it is displayed.
Table 14-27: Settings for a Radio Button Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this radio button. The name must be unique among all of the controls in your project.

Base Text Style Basic MSI

This font style is used for the radio buttons label if you specify nothing for the Text Style property.

InstallShield 2010 User Guide

ISP-1600-UG00

773

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-27: Settings for a Radio Button Control (cont.) Property Cancel Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help Basic MSI This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. The control identifier for the first radio button in a group is the control identifier for the radio button group. The control for each subsequent radio button is the radio button group identifier incremented by one. Height Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Height of the rectangular radio button area in installer units, which are defined as 1/12 of the height of the system font.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left

Distance from the left edge of the dialog to the start of the rectangular radio button field in installer units.

Order

The order in which this radio button is displayed in the radio button group. This property must contain a unique, positive integer, but it does not have to be consecutive with the Order property of the other radio buttons in this group. Click the ellipsis button (...) to display the Other Window Styles dialog box. This property holds the text that will be used for the radio buttons label. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Other Window Styles Text

Basic MSI

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the radio buttons label to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language.

Tooltip

Basic MSI

774

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-27: Settings for a Radio Button Control (cont.) Property Top Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Distance from the top of the dialog to the top of the radio button in installer units.

Value

Enter the value that you want the radio button groups property to have when this radio button is selected. To make one of the buttons selected by default, enter the radio button groups Windows Installer property into the Property Manager View.

Note: Type the property in all capital letters if you want it to be public in scope.Then, specify the value of the button that you want to appear as the default. For example, if one of your radio buttons has a value of 104 and the radio button group uses the property GRP_PROPERTY1, enter the following information in the Property Manager to make this radio button the default selection. Width Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Name: GRP_PROPERTY1 Value: 104

Width of the rectangular radio button area (button and label) in installer units.

Scrollable Text Properties

Project: Scrollable text controls are available only for dialogs in Basic MSI projects.

Each scrollable text control has the following properties available for specifying how it will be displayed. Unlike the text values for most controls, Windows Installer does not resolve property names or other values within the Scrollable Text control. As a result, the text in the file will be displayed exactly as it is written.
Table 14-28: Settings for a Scrollable Text Control Property Name Description Enter a name for this scrollable text. The name must be unique among all of the controls in your project. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

InstallShield 2010 User Guide

ISP-1600-UG00

775

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-28: Settings for a Scrollable Text Control (cont.) Property Context Help Description This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). The rich text file must be stored as a binary resource inside the Windows Installer package. Enter the path to this file so that InstallShield can include it in your release. Once you click the File Name value to edit it, an ellipsis button (...) appears to allow you either to browse to the file or to select the string identifier that contains the path and file name. In fact, the value for File Name is always stored as a string entry so that you can easily make language-specific changes to the dialog. Height Height of the control area in installer units, which are defined as 1/12 of the height of the system font. Distance from the left edge of the dialog to the start of the control area in installer units. Set this property to True to have the vertical scrollbar displayed on the left side of the scrollable text. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box. The default value of False aligns the text to the left of the control. Set it to True to align the text to the right. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. False leaves this control looking like a flat scrollable text window. Set this property to True to give the scrollable text windows edges a recessed, three-dimensional appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this control area will receive focus within the tab order. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language.

Default

Enabled

File Name

Left

Left Scrollbar

Other Window Styles Right-Aligned

Right-to-Left

Sunken

Tab Index

Tab Stop

Tooltip

776

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-28: Settings for a Scrollable Text Control (cont.) Property Top Visible Description Distance from the top of the dialog to the top of the control area in installer units. True means that the scrollable text control is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the control area in installer units.

Width

Selection Tree Properties


A selection tree is a special control that allows users to change the selection state of your features, like in the CustomSetup dialog. Each selection tree control has the following properties available for specifying how it will be displayed.
Table 14-29: Settings for a Selection Tree Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this selection tree. The name must be unique among all of the controls in your project.

Base Text Style Basic MSI

This font style is used for the selection trees text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Context Help

Basic MSI

This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control.

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Default

Enabled

True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

InstallShield 2010 User Guide

ISP-1600-UG00

777

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-29: Settings for a Selection Tree Control (cont.) Property Height Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Height of the selection tree area in installer units, which are defined as 1/12 of the height of the system font.

Indirect Property

Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this selection tree might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Distance from the left edge of the dialog to the start of the selection tree area in installer units.

Left

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Left Scrollbar

Set this property to True to have the vertical scrollbar displayed on the left side of the selection tree. This property should be set only when the Right-toLeft property is true.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

Property

Enter the name of a property for the selection tree. The user can set the property in a browse dialog (a dialog that uses a path edit, directory combo, and directory list control). The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Sunken

False leaves this control looking like a typical, flat control field. Set this property to True to give the selection trees edges a recessed, threedimensional appearance.

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button.

778

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-29: Settings for a Selection Tree Control (cont.) Property Tab Stop Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description The tab stop indicates whether this control will receive focus within the tab order.

Text

This property holds the text for screen readers. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the selection trees text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the selection tree area in installer units.

Tooltip

Basic MSI

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Visible

True means that the selection tree control is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the selection tree area in installer units.

Text Area Properties


Each text area control has the following properties available for specifying how it will be displayed.
Table 14-30: Settings for a Text Area Control Property Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Description Enter a name for this text area. The name must be unique among all of the controls in your project.

InstallShield 2010 User Guide

ISP-1600-UG00

779

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-30: Settings for a Text Area Control (cont.) Property Base Text Style Project Type Basic MSI Description This font style is used for the text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Code Page Basic MSI Set this property to Database to have the text area use fonts from the packages database, or Users System to use fonts from the systems default code page. This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. This field contains a numeric identifier for the control that is unique within the dialog. This identifier is the same as a resource identifier in Visual C++. You should not change the control identifiers for any of the controls included with a dialog by default. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control.

Cancel

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Context Help

Basic MSI

Control Identifier

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI

Default

Enabled

True means that this control is available (the end user can interact with it). False means that it is not available (grayed out).

Format as Bytes

If this property is true, the installer attempts to display the text in bytes. The Text property must contain only a number, without the unit. Then, at run time, it is divided by 512 and displayed as the correct number of KB, MB, or GB, depending on the size. Height of the text area in installer units, which are defined as 1/12 of the height of the system font.

Height

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Left

Distance from the left edge of the dialog to the start of the text area in installer units.

Other Window Styles

Click the ellipsis button (...) to display the Other Window Styles dialog box.

780

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-30: Settings for a Text Area Control (cont.) Property No Prefix Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI Description Select True if the ampersand character should be displayed as &, or False to have it displayed underlining the following characterfor example, &Click here would be displayed as Click here.

No Text Wrap

If you select True and the text expands beyond the width of the text area, the end of the string is cut off and replaced with an ellipsis button (...). Otherwise, the text wraps and can extend beyond the height of the text area, if it is not long enough. Enter the name of a property that can supply the initial value for the text. This property can be unique to this text area; it need not be present in the Property Manager. The default value of False aligns the text to the left of the control. Set it to True to align the text to the right.

Property

Right-Aligned

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Right-to-Left

Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left.

Sunken

Set this property to True to give this text area a recessed, threedimensional appearance. Otherwise, it will have a flat, box-like appearance.

Tab Index

Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. Since static text does not typically receive focus, this value will be ignored by Windows Installer. The tab stop indicates whether this text area will receive focus within the tab order. Since static text does not typically receive focus, this value will be ignored by Windows Installer.

Tab Stop

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Text

This property holds the text that will be shown inside the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry.

Text Style

Basic MSI

Select the font style, size, and color, if available, that you want the text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property.

InstallShield 2010 User Guide

ISP-1600-UG00

781

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-30: Settings for a Text Area Control (cont.) Property Tooltip Project Type Basic MSI Description This property holds the text that will be displayed when the mouse hovers over the text area. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the text area in installer units.

Top

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Transparent

Set this property to True to allow the background to show through the text area. This property is especially useful if you display an image under the text area.

Visible

True means that the text area is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor.

Width

Width of the text area in installer units.

Volume Select Combo Properties

Project: Volume select combo controls are available only for use in Basic MSI projects.

A volume select combo control presents the end user with a selection of volumes, or drives. Each volume select combo control has the following properties available for specifying how it is displayed.
Table 14-31: Settings for a Volume Select Combo Control Property Name Description Enter a name for this volume select combo. The name must be unique among all of the controls in your project. This font style is used for the volume select combos text if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True.

Base Text Style

Cancel

782

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-31: Settings for a Volume Select Combo Control (cont.) Property Context Help Description This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. Select True if this is the only control on the dialog that you want to be the default control, which means that it will be activated when the end user presses the Enter key. The Next or OK button is usually the default control. True means that this control is available (the end user can interact with it). False means that it is not available (grayed out). Height of the volume select combo in installer units, which are defined as 1/12 of the height of the system font. Set this value to True if this controls Installer property (see Property, below) references another Installer property. When an indirect property is set to True, Windows Installer resolves the referenced property at run time. For example, this volume select combo might use the property _BROWSE, whose value is INSTALLDIR. As long as you set Indirect Property to True, the value of _BROWSE will be the current value of INSTALLDIR; otherwise, _BROWSE will contain the string INSTALLDIR. Left Distance from the left edge of the dialog to the start of the volume select combo in installer units. Set this property to True to have the arrow and vertical scrollbar displayed on the left side of the volume select combo. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box. Enter the name of a property that will be set when the end user selects a value from this volume select combo. This control populates the first part of the path that is displayed in the directory list, so you must use the same property for the volume select combo, the directory list, and path edit when using them together in a browse dialog. This property can be unique to the browse dialog; it need not be present in the Property Manager. To set a default value for this volume select combo, make the property public by typing it in all capital letters, go to the Property Manager and add the public property, and then assign to it the value of the default selection. Right-Aligned The default value of False aligns the text to the left of the control. Set it to True to align the text to the right. Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Select True to display CD-ROM volumes in the volume select combo. Select True to display hard drives in the volume select combo. Select True to display floppy drives in the volume select combo. Select True to display RAM volumes in the volume select combo.

Default

Enabled

Height

Indirect Property

Left Scrollbar

Other Window Styles Property

Right-to-Left

Show CD-ROM Show Fixed Show Floppy Show RAMDisk

InstallShield 2010 User Guide

ISP-1600-UG00

783

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-31: Settings for a Volume Select Combo Control (cont.) Property Show Remote Show Removable Sunken Description Select True to display mapped network drives in the volume select combo. Select True to display removable drives in the volume select combo. Set this property to True to give the volume select combo a recessed, three-dimensional appearance, as volume select combos usually look. False gives it a flat appearance. Provide an integer, starting with 0 (zero) that, along with the other controls on this dialog, excluding controls such as static text, determines the order in which each one will receive focus when the end user presses the Tab button. The tab stop indicates whether this volume select combo will receive focus within the tab order. Select the font style, size, and color, if available, that you want the volume select combos text to be displayed in. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over this control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the volume select combo in installer units. True means that the volume select combo is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Width of the volume select combo in installer units.

Tab Index

Tab Stop

Text Style

Tooltip

Top Visible

Width

Volume Cost List Properties

Project: Volume cost list controls are available only for use in Basic MSI projects.

A volume cost list displays the costor disk space requirementsof the installation, associated with each volume or drive. The list has five possible columns. The headings for each column come from the UIText table, which is exposed only in the Direct Editor, which in turn points to the value of string entries to provide localized strings. The keys in the UIText table for each column are listed below, along with their default English values:

VolumeCostVolumeVolume VolumeCostSizeDisk Size VolumeCostAvailableAvailable VolumeCostRequiredRequired

784

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Working with Dialogs

VolumeCostDifferenceDifferences

Each volume cost list control has the following properties available for specifying how it is displayed.
Table 14-32: Settings for a Volume Cost List Control Property Name Description Enter a name for this volume cost list. The name must be unique among all of the controls in your project. Specify the default width in installer units, which are defined as 1/12 of the height of the system font, of the column labeled Available. This column is hidden if the value is 0 (zero) or it is left blank. This font style is used for the contents of the volume cost list if you specify nothing for the Text Style property. Select True if this is the only control on the dialog that will dismiss it. Clicking the cancel control has the same effect as pressing the Esc key or clicking the Close button on the title bar. The Cancel or Finish button is usually the cancel control. This value is ignored if this dialog has its ErrorDialog property set to True. Context Help This property is reserved for future use. Windows Installer does not currently support launching context-sensitive help topics from the installation. Select True if this is the only control on the dialog that you want to be the default control, which means that it is activated when the end user presses the Enter key. The Next or OK button is usually the default control. Specify the default width in installer units of the column labeled Differences. This column is hidden if the value is 0 (zero) or it is left blank. Specify the default width in installer units of the column labeled Disk Size. This column is hidden if the value is 0 (zero) or it is left blank. True means that this control is enabled (the end user can interact with it), False that it is disabled (grayed out). Height of the volume cost list in installer units. Distance from the left edge of the dialog to the start of the volume cost list in installer units. Set this property to True to have the vertical scrollbar displayed on the left side of the volume cost list. This property should be set only when the Right-to-Left property is true. Click the ellipsis button (...) to display the Other Window Styles dialog box. Specify the default width in installer units of the column labeled Required. This column is hidden if the value is 0 (zero) or it is left blank. The default value of False aligns the text to the left of the control. Set the property to True to align the text to the right.

Available Col Width

Base Text Style

Cancel

Default

Differences Col Width

Disk Size Col Width

Enabled

Height Left

Left Scrollbar

Other Window Styles Required Col Width

Right-Aligned

InstallShield 2010 User Guide

ISP-1600-UG00

785

Chapter 14: Defining the End-User Interface Working with Dialogs

Table 14-32: Settings for a Volume Cost List Control (cont.) Property Right-to-Left Description Select False for English and other languages that are written from left to right. Select True for Hebrew and those languages read from right to left. Select True to display CD-ROM volumes in the volume select combo. Select True to display hard drives in the volume select combo. Select True to display floppy drives in the volume select combo. Select True to display RAM volumes in the volume select combo. Select True to display mapped network drives in the volume select combo. Select True to display removable drives in the volume select combo. Set this property to True to give this volume cost lists border a recessed, threedimensional appearance. Otherwise, it will have a flat, box-like appearance. Provide an integer, starting with 0 (zero) thatalong with the other controls on this dialog and excluding controls such as static textdetermines the order in which each control area will receive focus when the end user presses the Tab button. The tab stop indicates whether this edit field will receive focus within the tab order. This property holds the text that is used for the controls label. Although you cannot see the label, it will be available for screen readers. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Once you click the Text value to edit it, an ellipsis button (...) appears to allow you to select a string identifier and edit the default languages string entry. Text Style Select the font style, size, and color (if available) in which you want the volume cost lists contents to be displayed. Leaving the value as <Default> displays the font contained in the DefaultUIFont property. This property holds the text that will be displayed when the mouse hovers over the control. Since the text is language specific, this value is always associated with a string identifier. Editing the value in the property sheet changes the string identifiers value for the current language. Distance from the top of the dialog to the top of the volume cost list in installer units. True means that the volume cost list is visible, and False that it is hidden. You can also make it visible by editing its condition in the Behavior editor. Specify the default width in installer units of the column labeled Volume. This column is hidden if the value is 0 (zero) or it is left blank. Width of the volume cost list and label in installer units.

Show CD-ROM Show Fixed Show Floppy Show RAMDisk Show Remote Show Removable Sunken

Tab Index

Tab Stop Text

Tooltip

Top Visible

Volume Col Width

Width

786

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Copying and Pasting Controls


In the Dialog Editor, you can copy and paste controls within a dialog or from one dialog to another by using standard Windows keyboard shortcuts or context menus.

Task

To copy a push button from one dialog to another: 1. 2. 3.

Open the layout for the dialog that contains the button you want to copy. Select the push button and press CTRL+C. Open the second dialog in the Dialog Editor and press CTRL+V to paste the control in the dialog.

The push button is pasted with the same relative size and position as the original. Its other properties are also identical to the originals. The copy of the push button is given a unique name based on the type of control it is. However, you must edit the new controls behavior, since that information is not copied over (Basic MSI projects).

Note: Radio button groups are a special case. When you copy the group, all of its radio buttons are copied for you. You cannot copy a radio button by itself.

Cutting and Pasting Controls


In the Dialog Editor, you can move a control from one dialog to another by using standard Windows keyboard shortcuts or context menus.

Task

To cut a control from one dialog and paste in another: 1. 2. 3.

Right-click the control and click Cut, or press CTRL+X. A Delete Control dialog box opens to inform you that deleting the control also deletes any associated conditions and actions. Click Yes to continue cutting the control from the current dialog. Open the second dialog in the Dialog Editor and press CTRL+V to paste the control in the dialog.

When you are done pasting the control into the new location, specify the controls properties and behavior.

Localizing the End-User Interface


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI


ISP-1600-UG00 787

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

InstallScript Object Merge Module

InstallShield has many settings that let you specify text strings that should be displayed to end users. For example, when you enter a value for the Display Name and Description settings for a feature, you are configuring the feature name and description that may be displayed in the CustomSetup dialog at run time. Whenever you enter a value for such a setting that may need to be localized for one or more languages, InstallShield automatically creates a string entry for each language that your project supports. Each string entry consists of a language-independent identifier and a corresponding languagespecific value. At run time, the installation displays the appropriate translated string values. Using string entries instead of hard-coded text enables you to keep the code for your installation completely separate from any language-specific strings that you may want to be displayed during the installation. To help streamline the process of localizing a project, all of the text strings that may be displayed at run time during the installation process are available in one consolidated view: the String Editor view. You can use this view to edit the strings for everything from button text to feature descriptions. You can also use this view to export each languages string entries to a file, translate the values that are listed in the file, and then import the translated file into your project.

Working with String Entries in Projects that Support Multiple Languages


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

Edition: The Premier edition of InstallShield includes support for creating multilingual installations.

Note: To add additional languages to your project, use the Setup Language setting in the General Information view.

Your project contains a string entry for every localizable text string and for each language that your project supports. The String Editor view shows the collection of language-independent identifiers and corresponding language-specific values for your project. Note the following details about string entries in projects that include support for multiple languages:

The values for all of the localizable settings throughout InstallShieldsuch as the Display Name and Description settings for a featureuse the projects default language (which you can specify in the String Editor view). If you edit the value of one of these localizable settings, InstallShield simultaneously updates the string entrys value in the String Editor view for the default language.

788

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Likewise, if you use the String Editor view to modify a string value for your projects default language, InstallShield simultaneously updates the settings in the other InstallShield views that display the value of that string entry.

Each language that is supported by your project uses the same set of string identifiers. Therefore, if you add a string entry to a project, InstallShield uses the same string identifier for each language. If you rename a string identifier, InstallShield renames the string identifier for all languages. If you delete a string entry, InstallShield deletes it from each language.

If you add a new language to your project, InstallShield adds to that language the same string identifiers that are available in the other languages that are in your project. For default string entriesthat is, those that are available for the built-in dialogs and other user-interface elements InstallShield adds the already-translated string values. For custom string entries that you have created, InstallShield uses the string values from the default language for the new language. You can modify any string values as needed for the new language.

When you finish authoring your project, you can export the string entries for each language to text files, and send the text files out for translation. Once the string entries in the text file are translated, you can import them into your project.

Using String Entries in InstallShield


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

Instead of hard-coding strings throughout your project, you can use string entries in areas of InstallShield that accept localizable text. The manner in which you select a string entry differs depending on where you need to use it.

Settings in Various Views


When you are entering the value of a setting in one of the views in InstallShield and that value is a text string that can be presented to end users, InstallShield automatically uses a string identifier for that setting. InstallShield places the string identifier in curly brackets before the string value. Following is an example of the value for the Display Name setting of a feature: {ID_STRING24}My New Feature In this example, ID_STRING24 is the string identifier that is used for the Display Name setting. My New Feature is the string value for the projects default language.

InstallShield 2010 User Guide

ISP-1600-UG00

789

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Task

To work with a setting that accepts a localizable text string entry, do one of the following:

To enter a new text string that is not present anywhere else in the project, type the text string that you want to use. InstallShield automatically assigns a new string identifier to the value that you enter. If your project includes support for multiple languages, InstallShield adds the new string identifier to all of your projects languages, and uses the string value that you entered as the value for all languages.

To look at a list of existing string entries that are used in the project, click the ellipsis button (...) that is displayed on the right when you click the settings value. InstallShield opens the Select String dialog box, which lets you select an existing string entry or create a new string entry.

Caution: Do not confuse editing an existing string value with entering a new string identifier by entering text in an InstallShield setting. Once you have selected a string identifier for a setting, deleting the localizable text in the setting merely deletes the current string value; it does not replace the current string identifier with a new one.

Dialog Editor
Many of the controls in the Dialog Editor accept strings that are displayed to the end user. For example, the Text and Tooltip properties always require localizable text. Using a string entry in the Dialog Editor is similar to selecting string identifiers in other areas of InstallShield.

Task

To work with the Dialog Editor and a controls property that uses localizable text, do one of the following:

Click the controls property sheet and edit the string. Doing so changes the value of the string entry for the current language. When you enter a text value without first selecting a string, InstallShield creates a new string identifier for your project. If your project includes support for multiple languages, InstallShield adds the new string identifier to all of your projects languages, and uses the string value that you entered as the value for all languages.

When you click a localizable propertys value to edit it, an ellipsis button (...) appears inside the property sheet. Click the ellipsis button to view the string entries for the current language.

The major difference between the dialog control properties and the settings in other views in InstallShield is that the other views always display the string value for the default language. When you edit a dialogs layout, however, you must first select the language of the dialog. Then, all strings displayed in the dialog and in the property sheet are from the current language of the dialog that you are editing.

InstallScript Script Editor Pane


If you are working in the InstallScript script editor pane in the InstallScript view, you can select and edit string entries through the Select String dialog box.
790 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Task

To use a string identifier in your InstallScript: 1. 2. 3.

Place the cursor at the point in your script where you want the string identifier to be inserted. On the Edit menu, point to Insert and click String Entry. The Select String dialog box opens. Do one of the following:


4.

To use an existing string entry, click the row that contains the string entry that you want to use in your script. To create a new string entry, click the New button. The String Entry dialog box opens, enabling you to create a new string identifier and value.

Click OK.

InstallShield places the string identifier in your script preceded by the at (@) symbol. For more information, see String Constant Operator (@).

What Happens with String Entries at Build Time and Run Time
InstallShield stores string entries in the ISString table of your InstallShield project file (.ism). At build time, InstallShield uses the string values instead of the string identifiers when it is creating your release in most cases. That is, the string identifiers are not built into the release, and the string identifiers are not available at run time. The one exception of when InstallShield does use string identifiers in a build is if your project includes InstallScript code. In this scenario, the release that InstallShield builds includes a file that contains all of the string entries. This file makes it possible for you to use string identifiers in your InstallScript code instead of hard-coded text strings. At run time, the installation replaces string identifiers with string values as needed.

Adding a String Entry


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The String Editor view lets you create a new string entry that you can later reference in one of the settings in InstallShield, in one of your projects dialogs, and in your InstallScript code.

InstallShield 2010 User Guide

ISP-1600-UG00

791

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Task

To add a new string entry to your project: 1. 2.

In the View List under User Interface, click String Editor. Do one of the following:


3.

Click the New String Entry button. Press the INSERT key.

The String Entry dialog box opens. In the String Identifier box, specify the language-independent string identifier that you want to use for your string entry, or leave the new default string identifier that InstallShield enters in this box for you. In the Value box, specify the localizable text string that you want to use for the string entry. In the Comments box, you can optionally specify an internal note about the string entry. The comments are not displayed at run time. Click OK.

4. 5. 6.

InstallShield adds a new row in the String Editor view for the new string entry.

Tip: If your project includes support for multiple languages, InstallShield adds the string entry to all of your projects languages, and it uses the string value that you entered as the value for all languages. You can edit the string values for languages as needed.

Note: Since you must use a string identifier throughout InstallShield for settings that accept localizable text, InstallShield adds a new string entry to your project whenever you try typing a value into a setting without selecting an existing string identifier.

Editing a String Entry


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The String Editor view contains a spreadsheetlike table that lets you modify string entries in your project.

792

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Task

To edit a string entry in the String Editor view: 1. 2. 3.

In the View List under User Interface, click String Editor. Find the string entry that you want to modify. Do one of the following:

To overwrite all of the text in a table cell, click the table cell and then type your new identifier, value, or comments. To place the cursor at a particular place within a table cell, double-click that place. Then type your change.

Note that if you rename a string identifier, InstallShield renames the string identifier for all languages in your project. When you edit a string entry, InstallShield updates the Modified column with the date and time that you made the change. You can sort the string entries in the String Editor view by modified date. This is helpful if you want to identify which strings have been modified since the strings were last translated.

Tip: If you are editing a localizable setting from within one of the other views in InstallShield, you can click the ellipsis button (...) in that setting. Doing so opens the Select String dialog box, which lets you specify which string entry you want to use for the selected setting.

Project: In Basic MSI, InstallScript MSI, and Merge Module projects, some of the string values contain Windows Installer properties inside square bracketsfor example, Install [ProductName]. At run time, the property and brackets are replaced by the property value. String values may also contain font information in curly bracketsfor example, {&MSSansBold8}OK. The font information indicates style details that should be used to display the strings at run time.

Searching for Instances of String Identifiers


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

String identifiers are used throughout InstallShield projects. If you want to see where a particular string identifier is used in your project, you can perform a search in the String Editor view.

InstallShield 2010 User Guide

ISP-1600-UG00

793

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

Task

To find all the occurrences of a particular string identifier within your project: 1. 2.

In the View List under User Interface, click String Editor. Select the row that contains the string identifier for which you want to search. To select multiple consecutive rows, click the first row, and then press SHIFT while clicking the last row. To select multiple nonconsecutive rows, click the first row, and then press CTRL while clicking each additional row.

3.

Click the Search for Selected Strings in Project button.

InstallShield displays the search results on the Results tab in the Output window. The Results tab indicates how many times the string identifier is used. In addition, it indicates the location in the Direct Editor view where the string identifier is used. If the string identifier is not used in the project, the Results tab shows that zero occurrences were found.

Note: InstallShield does not search the projects InstallScript files (.rul) for instances of the string identifier.

Finding and Replacing String Entries


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The String Editor includes support for standard find-and-replace functionality. This functionality may be useful if you want to search for specific strings in your project and replace them with revised strings.

Finding Strings in the String Editor

Task

To find a string in the String Editor: 1. 2. 3. 4. 5.

In the View List under User Interface, click String Editor. Click the Find String button. The Find dialog box opens. In the Find what box, type the string that you want to find. Select any other options that you want. Click Find Next.

794

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Localizing the End-User Interface

InstallShield finds the first instance of the string that you specified.

Finding and Replacing Strings in the String Editor

Task

To find and replace a string in the String Editor: 1. 2. 3. 4. 5. 6.

In the View List under User Interface, click String Editor. Click the Find and Replace button. The Replace dialog box opens. In the Find what box, type the string that you want to replace. In the Replace with box, type the new string. Select any other options that you want. Click Find Next, Replace, or Replace All.

InstallShield replaces strings as needed.

Removing a String Entry


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

If you no longer need a particular string entry in your project, you can delete it. Note that if you delete a string entry, InstallShield deletes it from each language in your project.

Task

To remove a string entry from your project: 1. 2. 3.

In the View List under User Interface, click String Editor. Find the string entry that you want to delete. Click the Delete Selected Strings button or press DELETE.

Removing String Identifiers from Localizable Settings


Project: This information applies to the following project types:

Basic MSI
ISP-1600-UG00 795

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

InstallScript InstallScript MSI InstallScript Object Merge Module

When you are entering the value of a setting in one of the views in InstallShield and that value is a text string that can be presented to end users, InstallShield automatically uses a string identifier for that setting. InstallShield places the string identifier in curly brackets before the string value. If you try to delete the settings value, you are actually deleting the string value for the current language. In that case, the string identifier with an empty value is used for the setting. Therefore, if you want to remove a string identifier from a localizable setting, you must replace it with a different string identifier, or add a new string identifier. For information on replacing a string identifier, see Editing a String Entry. To learn how to create a new string identifier, see Adding a String Entry.

Displaying Billboards
Project: Billboards are available in the following project types:

Basic MSI InstallScript InstallScript MSI

You can add billboards to your projects to display information to end users during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is a file that you or your companys graphics department creates for complete control over the look and feel of the file transfer.

Project: Support for billboards differs, depending on which project type you are using. To learn more about billboards, see the appropriate section:

Displaying Billboards in Basic MSI Projects Displaying Billboards in InstallScript and InstallScript MSI Projects

Displaying Billboards in Basic MSI Projects


Project: This information applies to Basic MSI projects.

796

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

You can add billboards to your projects to display information to end users during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is a file that you or your companys graphics department creates for complete control over the look and feel of the file transfer.

Billboard File Types

Project: This information applies to Basic MSI projects.

InstallShield supports different types of files for billboards:

Adobe Flash application file (.swf) Images (.bmp, .gif, .jpg, and .jpeg)

If a target system does not have the Adobe Flash Player, which is used to display Flash application files, the installation can detect that and display image billboards in place of the Flash billboard. Therefore, if you include a Flash billboard in your project, it is recommended that you also include one or more image billboards in your project.

Note: You can add more than one image billboard to a project, but only one Adobe Flash application file billboard.

Types of Billboards

Project: This information applies to Basic MSI projects.

InstallShield offers support for three different billboard styles. For example, with one style, the installation displays a full-screen background, with billboards in the foreground, and a small progress box in the lower-right corner of the screen. With another style, the installation displays a standard-size dialog that shows the billboards. The bottom of this dialog shows the progress bar. Following are descriptions and sample screen shots of each type of billboard.

Fullscreen with Small Progress (Displayed in Lower Right)


For the Fullscreen with Small progress (displayed in lower right) type of billboard, when the installation displays the standard end-user dialogs, it also displays a full-screen background. During file transfer, the installation shows full-screen backgrounds, with billboards in the foreground, and a small progress box in the lower-right corner of the screen.

InstallShield 2010 User Guide

ISP-1600-UG00

797

Chapter 14: Defining the End-User Interface Displaying Billboards

Figure 14-26: Fullscreen Billboard with Small Progress (Displayed in Lower Right)

In the sample screen shot, the billboard is the blue-green rectangle image in the center. Some of the configurable billboard settings were set as follows:

OriginCentered TitleA B C Font48 pt. Arial Background ColorYellow

Windowed with Standard Progress


For the Windowed with Standard progress type of billboard, during file transfer, the installation displays a standard-size dialog that shows the billboards. The bottom of this dialog shows the progress bar. The installation does not display a background for this style.

798

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

Figure 14-27: Windowed with Standard Progress

In the sample screen shot, the billboard is the blue-green rectangle image. Its size is 544 pixels wide by 281 pixels high.

Windowed with Small (Displayed in Lower Right, No Billboards)


For the Windowed with Small (displayed in lower right, no billboards) type of billboard, the installation displays a small progress box in the lower-right corner of the screen during file transfer. It does not display any billboards or a background.

InstallShield 2010 User Guide

ISP-1600-UG00

799

Chapter 14: Defining the End-User Interface Displaying Billboards

Figure 14-28: Windowed with Small (Displayed in Lower Right, No Billboards)

As shown in the sample screen shot, the progress bar is shown, but no billboard is displayed. The black background is the end users desktop.

Specifying Which Type of Billboard to Use in an Installation

Project: This information applies to Basic MSI projects.

InstallShield offers support for different billboard styles.

Task

To specify which type of billboard you want to use in your installation: 1. 2. 3.

In the View List under User Interface, click Billboards. In the center pane, click the Billboards explorer. InstallShield displays the Billboard Type setting in the right pane. In the Billboard Type setting, select the appropriate style of billboard.

To see samples of each type of billboard, see Types of Billboards.

800

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

Adding an Adobe Flash Application File Billboard

Project: This information applies to Basic MSI projects.

InstallShield lets you display a Flash application file billboard during the file transfer process. Flash application files can consist of videos, movies, sounds, interactive interfaces, games, text, and more anything that is supported by the .swf type of file. It is recommended that files such as Flash video files (.flv) and MP3 audio files be embedded in the .swf file so that they are available locally on the target system during file transfer. Although .swf files can reference external files that you can post on a Web site, this external implementation would require that end users have an Internet connection.

Task

To add an Adobe Flash Application File billboard to your installation: 1. 2. 3. 4.

In the View List under User Interface, click Billboards. In the Billboards explorer, right-click Adobe Flash Application File (.swf) and then click New Billboard. InstallShield adds a new billboard item with the name NewBillboard1. Type a name for the billboard item. This name is used to help you identify the item while you are creating your installation; the name is not displayed during the installation. In the right pane, configure the settings for the billboard.

Note: If the version of Flash or other tool that you use to create your .swf file is newer than the version of the Flash Player that is installed on a target system, it is possible that some of the Flash features may not work as expected on that target system.

Adding Image Billboards

Project: This information applies to Basic MSI projects.

You can choose to display only one image billboard during the file transfer process, or you can include a series of image billboards, each one designed to be displayed for a specific amount of time. InstallShield includes support for .bmp, .gif, .jpg, and .jpeg image files.

Note: Animated .gif files are not supported. If you want to use animation in a billboard, consider using an Adobe Flash application file billboard.

InstallShield 2010 User Guide

ISP-1600-UG00

801

Chapter 14: Defining the End-User Interface Displaying Billboards

Task

To add an image billboard to your installation: 1. 2. 3. 4.

In the View List under User Interface, click Billboards. In the Billboards explorer, right-click Images and then click New Billboard. InstallShield adds a new billboard item with the name NewBillboard1. Type a name for the billboard item. This name is used to help you identify the item while you are creating your installation; the name is not displayed during the installation. In the right pane, configure the settings for the billboard.

Configuring Billboard Settings

Project: This information applies to Basic MSI projects.

When you add an Adobe Flash application file billboard or an image billboard to your project, you need to configure its settings.

Task

To configure a billboards settings: 1. 2. 3.

In the View List under User Interface, click Billboards. In the Billboards explorer in the center pane, click the billboard that you want to configure. InstallShield displays the billboard settings in the right pane. Configure the settings as required.

For information about each of the billboard settings, see Settings for Adobe Flash Application File Billboards and Image Billboards.

Previewing Billboards Without Building and Launching a Release

Project: This information applies to Basic MSI projects.

InstallShield lets you preview a billboard to see how it would be displayed at run time, without requiring you to build and run a release. Previewing a billboard lets you see how your billboard will look with the background color, position, and related settings that are currently configured for your billboard.

802

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

Task

To preview a billboard: 1. 2.

In the View List under User Interface, click Billboards. In the Billboards explorer in the center pane, right-click the billboard that you want to preview, and then click Preview Billboard.

InstallShield displays a preview of the billboard as it would be displayed at run time. To stop previewing a billboard, click the Cancel button in the preview window.

Tip: Previewing a billboard is especially helpful if you want to see how your Flash or image billboard will look with different selected billboard types. You can preview a billboard, change the billboard type, and then preview a billboard again.

Setting the Billboard Order

Project: This information applies to Basic MSI projects.

Image billboards are displayed in the order in which they are listed in the Billboards view, from top to bottom.

Task

To change the order in which image billboards are displayed at run time: 1. 2.

In the View List under User Interface, click Billboards. In the Billboards explorer, right-click one of the billboard items that you want to move, and then click either Move Up or Move Down.

Repeat the last step until all of the billboards are correctly sorted.

Run-Time Behavior of an Installation that Includes Billboards

Project: This information applies to Basic MSI projects.

Important: If your installation includes billboards, your installation must include a Setup.exe setup launcher. The setup launcher is required because it displays the billboards at run time. The Setup.exe tab for a release in the Releases view is where you specify information such as whether you want to use a setup launcher. To learn more, see Setup.exe Tab for a Release.

If your installation includes a Flash billboard and one or more image billboards, only one billboard type is displayed at run time during the file transfer process: the Flash billboard or the image billboards.

InstallShield 2010 User Guide

ISP-1600-UG00

803

Chapter 14: Defining the End-User Interface Displaying Billboards

If the Flash Player is present on the target system, the installation displays the Flash billboard. If the Flash Player is not present, the installation displays the image billboards.

The run-time behavior is slightly different, depending on whether the installation is displaying a Flash billboard or image billboards:

If the installation is displaying a Flash billboardWhen the file transfer is complete, the installation

continues showing the Flash billboard until its duration has elapsed. Once the duration has elapsed, the installation stops displaying the billboard and shows the appropriate Setup Complete dialog. If the file transfer takes more time than you have allocated for the duration of the Flash billboard, the installation continues displaying the Flash billboard until file transfer ends.

If the installation is displaying image billboardsWhen the file transfer is complete, the installation stops displaying the image billboards, even if other billboards are scheduled or the current billboards duration has not elapsed. The installation then shows the appropriate Setup Complete dialog.

If the file transfer takes more time than you have allocated for the billboards, the installation continues displaying the billboards until file transfer ends.

Note: If the version of Flash or other tool that you use to create your .swf file is newer than the version of the Flash Player that is installed on a target system, it is possible that some of the Flash features may not work as expected on that target system.

Removing a Billboard

Project: This information applies to Basic MSI projects.

Task

To remove a billboard from your installation: 1. 2.

In the View List under User Interface, click Billboards. In the Billboards explorer, right-click the billboard that you would like to remove, and then click Delete.

Displaying Billboards in InstallScript and InstallScript MSI Projects


Project: This information applies to the following project types:

InstallScript InstallScript MSI

804

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

You can add billboards to your projects to display information to end users during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is an image file (.bmp, .gif, .jpg, or .jpeg) that you or your companys graphics department creates for complete control over the look and feel of the file transfer.

Note: Billboards are displayed in InstallScript and InstallScript MSI installations only if a background window is enabled. By default, a background window is not displayed.

Naming Billboard Files

Project: This information applies to the following project types:

InstallScript InstallScript MSI

The first step in adding billboards to your project is to create the image files (.bmp, .gif, .jpg, or .jpeg) that serve as your installations billboards. When your image files are properly named, you can add your billboards to your project. Billboard files must follow a designated naming convention. Each file name must begin with bbrd, followed by the number of the billboard (from 1 through 99); each must end with a supported file extension (.bmp, .gif, .jpg, or .jpeg). The billboards are displayed according to the sequential order of their file names. For example, a billboard file named bbrd2.bmp is displayed before bbrd4.gif.
bbrd3.jpg,

Note that it is not necessary for the file name numbers to be contiguous; that is, you can add bbrd1.jpg, and bbrd5.jpg to your project, and each image is displayed at run time in order.

Tip: The length of time that a billboard is displayed depends upon the number of billboards in your installation project. The percentage of the display time is approximately 1 divided by the number of billboards. For example, if you have four billboards in your installation, each billboard is displayed for 25% of the file-transfer time.

Adding Billboards

Project: This information applies to the following project types:

InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

805

Chapter 14: Defining the End-User Interface Displaying Billboards

Task

To add a billboard to your installation project: 1. 2. 3. 4.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click the Billboards item that should contain the billboard: either Language Independent or a language-specific item. The Files pane is displayed on the right. Right-click anywhere in the Files pane and click Insert Files, or place your cursor in the Files pane and press the Insert key. The Open dialog opens. Select a billboard file, and click OK.

InstallShield adds the file to your project.

Tip: The length of time that a billboard is displayed depends upon the number of billboards in your installation project. The percentage of the display time is approximately 1 divided by the number of billboards. For example, if you have four billboards in your installation, each billboard is displayed for 25% of the file-transfer time.

Setting the Billboard Order

Project: This information applies to the following project types:

InstallScript InstallScript MSI

Billboards are displayed according to the numeric order of their file names. A billboard file named bbrd2.bmp is displayed to the end user before a file named bbrd3.bmp, and after a file named bbrd1.bmp.

Task

To change the order in which billboards are displayed: 1. 2. 3.

Remove the billboard files whose order should change. (For more information, see Removing Billboards.) Using Windows Explorer, rename the billboard files so that they are in the appropriate numeric order. Add the renamed files, as explained in Adding Billboards.

bbrd3.jpg,

Note that it is not necessary for the file name numbers to be contiguous; that is, you can add bbrd1.jpg, and bbrd5.jpg to your project, and each image is displayed at run time in order.

Removing Billboards

Project: This information applies to the following project types:


806 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Displaying Billboards

InstallScript InstallScript MSI

Task

To remove a billboard from your installation project: 1. 2.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer, click the Billboards item that contains the billboard that you want to remove: either Language Independent or a language-specific item. The Files pane is displayed on the right. Right-click the billboard file and click Delete.

3.

Displaying Billboards with Special Effects

Project: This information applies to the following project types:

InstallScript InstallScript MSI

The SetDisplayEffect function enables you to display your billboards with different special effects when they first appear on the main installation window. Choose one of this functions options before you display a bitmap with PlaceBitmap or display billboards during file transfer.

Moving Billboards to a Different Screen Location

Project: This information applies to the following project types:

InstallScript InstallScript MSI

By default, the installation displays billboards in the center of the main installation window. To specify a different location, call the PlaceWindow function with the BILLBOARD option. For example, to place your billboards 10 pixels from the upper-left corner of the screen, make the following call:
PlaceWindow (BILLBOARD, 10, 10, UPPER_LEFT);

Since billboards are displayed only during file transfer, ensure that you call PlaceWindow before you begin file transfer.

InstallShield 2010 User Guide

ISP-1600-UG00

807

Chapter 14: Defining the End-User Interface Displaying a Background Window in InstallScript and InstallScript MSI Installations

Displaying a Background Window in InstallScript and InstallScript MSI Installations


Project: This information applies to the following project types:

InstallScript InstallScript MSI

Adobe Flash application files (.swf), AVI files, and billboards are displayed only in installations that display a background window. A background window is by default not displayed, and it does not meet current standards for user interfaces.

Tip: For more information about displaying billboards, see Displaying Billboards in InstallScript and InstallScript MSI Projects. To play an Adobe Flash application file (.swf) or an AVI file, use the PlayMMedia function. For more information, see PlayMMedia.

The method for displaying a background window depends on which project type you are using.

InstallScript Projects
To display a background window in an InstallScript project, modify the scripts OnShowUI event handler by removing the double slashes from the beginnings of the following lines of code:
//if ( LoadStringFromStringTable( "TITLE_MAIN", szTitle ) < ISERR_SUCCESS ) then // Load the title string. // szTitle = IFX_SETUP_TITLE; //endif; //SetTitle( szTitle, 24, WHITE ); //Enable( FULLWINDOWMODE ); //Enable( BACKGROUND ); //SetColor( BACKGROUND, RGB( 0, 128, 128 ) );

InstallScript MSI Projects


To display a background window in an InstallScript MSI project, modify the appropriate scripts UI event handler (such as OnFirstUIBefore or OnMaintUIBefore) by removing the double slashes from the beginnings of the following lines of code:
// // // // // SetTitle( @PRODUCT_NAME, 24, WHITE ); SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION ); Enable( FULLWINDOWMODE ); Enable( BACKGROUND ); SetColor(BACKGROUND,RGB (0, 128, 128));

808

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 14: Defining the End-User Interface Populating List Boxes at Run Time

Populating List Boxes at Run Time


Basic MSI Projects
Populating a list box at run time requires you to create temporary records for the .msi database using SQL queries. For an example, see Knowledge Base article Q103295. For additional information, see InstallShield Developer Tip: Accessing the MSI Database at Run Time.

InstallScript MSI Projects


The CtrlSetList function associates a string list variable with a ListBox control on a dialog. For example:
function FillListBox( ) LIST listDays; begin listDays = ListCreate(STRINGLIST); ListAddString(listDays, "Monday", AFTER); ListAddString(listDays, "Wednesday", AFTER); ListAddString(listDays, "Friday", AFTER); CtrlSetList("DialogName", nListBoxId, listDays); end;

Displaying File Browse Dialogs


For an example of calling the GetOpenFileName API to display a file browse dialog, see Knowledge Base article Q104325.

Displaying Network Browse Dialogs in InstallScript Installations


You can use the SelectDirEx function to display a dialog with which the user can browse the Network Neighborhood.
prototype NetBrowse( ); function NetBrowse( ) STRING svSelectedDir[MAX_PATH + 1]; NUMBER nReturn; begin svSelectedDir = PROGRAMFILES; nReturn = SelectDirEx("", "Select a directory:", "", "", BIF_EDITBOX | BIF_RETURNONLYFSDIRS, svSelectedDir); if (nReturn = OK) then MessageBox("Selected directory was: " + svSelectedDir, INFORMATION); elseif (nReturn = CANCEL) then MessageBox("User clicked Cancel", INFORMATION); else MessageBox("Error displaying dialog", WARNING); endif; end;

InstallShield 2010 User Guide

ISP-1600-UG00

809

Chapter 14: Defining the End-User Interface Displaying Network Browse Dialogs in InstallScript Installations

810

ISP-1600-UG00

InstallShield 2010 User Guide

15
Preparing Installations for Update Notifications

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

FLEXnet Connect provides a mechanism that enables you to automatically notify your Web-connected end users when patches, updates, and product information for your application are ready for release. FLEXnet Connect helps you reduce the number of end users running old releases of your products and prevent them from installing the wrong updates from your Web site.

FLEXnet Connect Implementation


There are two cycles of tasks that you perform when using FLEXnet Connect to automatically inform end users about updates: initial deployment and update deployment. Once you have performed the initial deployment steps for your application, each time you want to distribute an update of that application to your customers, you perform the update deployment cycle of steps. To learn about the update deployment steps, see Notifying End Users about Upgrades Using FLEXnet Connect. Initial Deployment
1.

Use InstallShield to create the installation project for your application. FLEXnet Connect should be enabled in this project. When you enable FLEXnet Connect, InstallShield includes the Software Manager in your installation. This desktop tool ships with your application and provides a tool for end users to view available updates. Register your application with the FLEXnet Connect Publisher site, a Web-based management portal. Install your application and test it.

2. 3.

FLEXnet Connect includes a variety of options that can be purchased together for a complete solution, or separately for a customized solution. To learn more, visit the Acresso Web site. To access the FLEXnet Connect documentation, see the FLEXnet Connect Help Library.
InstallShield 2010 User Guide ISP-1600-UG00 811

Chapter 15: Preparing Installations for Update Notifications Enabling Automatic Update Notifications for a Project

Enabling Automatic Update Notifications for a Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

Caution: Enabling automatic update notifications in your project adds about 600 KB of files to your installation. These files must be distributed with your application in order for FLEXnet Connect to work. If you cannot afford to include these files in your installation because of bandwidth limitations or other reasons, you can select No to disable automatic update notifications. However, FLEXnet Connect cannot be used to deploy an update unless automatic notification is enabled in the original installation when you distribute it to your end users. Therefore, if you select No, you will not be able to later take advantage of the automatic update notification features.

Task

To enable automatic update notification for your project: 1. 2. 3.

In the View List under Installation Information, click Update Notifications. For the Enable FLEXnet Connect setting, select one of the Yes options. To register your product with FLEXnet Connect, select the Is Product/Version Registered setting and follow the directions in the help pane.

Disabling Automatic Update Notifications for a Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

Caution: Enabling automatic update notifications in your project adds about 600 KB of files to your installation. These files must be distributed with your application in order for FLEXnet Connect to work. If you cannot afford to include these files in your installation because of bandwidth limitations or other reasons, you can select No to disable automatic update notifications. However, FLEXnet Connect cannot be used to deploy an update unless automatic notification is enabled in

812

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 15: Preparing Installations for Update Notifications Files that Need to Be Installed for Automatic Update Notification

the original installation when you distribute it to your end users. Therefore, if you select No, you will not be able to later take advantage of the automatic update notification features.

Task

To disable automatic update notification for your project: 1. 2.

In the View List under Installation Information, click Update Notifications. For the Enable FLEXnet Connect setting, select No.

InstallShield removes the FLEXnet Connect files from your project.

Removing the Shortcut


If you added to your installation a shortcut that calls FLEXnet Connect, you need to manually remove it.

Task

To remove the shortcut: 1. 2.

In the View List under System Configuration, click Shortcuts. Right-click the shortcut and select Delete, or select the shortcut and press the Delete key.

Removing the Check-for-Updates Check Box from the Last Dialog


The following instructions describe how to remove the Yes, check for program updates (Recommended) after the setup completes check box from the SetupComplete dialog.

Task

To remove the check-for-updates check box from the SetupComplete dialog: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Right-click the ISENABLEDWUSFINISHDIALOG property and select Delete Property.

Files that Need to Be Installed for Automatic Update Notification


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

To install with your application the ability to implement automatic notification of updates to your application, enable FLEXnet Connect for your project. This is disabled by default for all new installation projects that you create.

InstallShield 2010 User Guide

ISP-1600-UG00

813

Chapter 15: Preparing Installations for Update Notifications Creating a Shortcut to Check for Updates

When you enable FLEXnet Connect in a Basic MSI or InstallScript MSI project, the FLEXnet Connect merge module is added to your installation. When you enable FLEXnet Connect in an InstallScript project, this merge module is added to your installation at build time. The FLEXnet Connect merge module includes several files that are installed on the target machine during installation of your application. These files must be distributed with your application in order for FLEXnet Connect to work. Among the items that are installed:

Software Manager (ISUSPM.exe) is an application that your end users can use to check for updates and product information. When an update is available for your application, the update is listed in the Software Manager, along with hyperlinks to download the update and view release notes. Update Agent (Agent.exe) is the component that handles all of the communication between the

Software Manager and the notification server. Optionally, you can embed calls directly from your application to the Agent to create an update experience that is more integrated with your application. To access the FLEXnet Connect documentation, see the FLEXnet Connect Help Library.

Creating a Shortcut to Check for Updates


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

You can create a shortcut to launch FLEXnet Connect.

Task

To create a shortcut to check for updates: 1. 2. 3.

In the View List under System Configuration, click Shortcuts. In the Shortcuts explorer, right-click one of the destination directories and select New Shortcut to Preexisting file. Use the following properties for the shortcut:

Table 15-1: Shortcut Properties Property Display Name Target Icon File Arguments Key Name Value Check for Updates [CommonFilesFolder]InstallShield\UpdateService\agent.exe <ISProductFolder>\redist\Language Independent\OS Independent\UpdateService.ico /au[ProductCode] /AppMenu Check for Updates

814

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 15: Preparing Installations for Update Notifications Adding a Check-for-Updates Check Box to the SetupComplete Dialog

Adding a Check-for-Updates Check Box to the SetupComplete Dialog


Project: This information applies to Basic MSI projects. For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

You can add a check-for-updates check box to the last dialog of your installation. If the end user selects this Yes, check for program updates (Recommended) after the setup completes check box and then clicks the Finish button to end the installation, FLEXnet Connect is launched.

Task

To add a check-for-updates check box to the SetupComplete dialog: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Set the ISENABLEDWUSFINISHDIALOG property to 1.

Registering Your Application with FLEXnet Connect


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

FLEXnet Connect uses the product code and product version to uniquely identify products. Before you can properly test FLEXnet Connect and automatic update notifications, you need to register the product code and product version of your application with FLEXnet Connect. If you run FLEXnet Connect before registering, your end users receive a product not registered message.

Task

To register the product code and product version: 1. 2. 3.

In the View List under Installation Information, click Update Notifications. Set the Enable FLEXnet Connect property to Yes if you have not already done so. Click the Is Product/Version Registered property. The help window displays instructions for setting this property. Follow the instructions there to complete the registration process.

To learn more about FLEXnet Connect, see the FLEXnet Connect Help Library.

InstallShield 2010 User Guide

ISP-1600-UG00

815

Chapter 15: Preparing Installations for Update Notifications Registering Your Application with FLEXnet Connect

816

ISP-1600-UG00

InstallShield 2010 User Guide

16
Configuring Servers
When you are creating an installation, you may find it necessary to provide server-side support for some technology that will be installed on a target system. InstallShield makes it easy to configure server-side installations or manage COM+ server applications and application proxies. InstallShield provides support for Internet Information Services, SQL, and component services.

Configuring SQL Support


InstallShield provides SQL support for Microsoft SQL Server, MySQL, and Oracle. The SQL Scripts view provides a central location for managing and organizing all SQL scripts by server connections and settings within the user interface. SQL support within InstallShield enables you to do the following:

Connect to SQL servers. Import catalog schema and/or data. Associate SQL scripts with features. Set required SQL server/script properties (server name, database name, authentication method, etc.). Set SQL script for execution during installation or uninstallation. Edit SQL scripts. Require and/or target specific versions of SQL Server, MySQL, or Oracle. Define SQL script text replacement. Open scripts in Microsoft SQL Query Analyzer.

Note: The import database functionality applies to the Microsoft SQL Server Database. Oracle users should refer to the Oracle Web page on Oracle Database Utilities for information on utilities that may work in conjunction with InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

817

Chapter 16: Configuring Servers Configuring SQL Support

Microsoft SQL Query Analyzer is part of the Microsoft SQL Server installation. This tool can be run only on SQL Server databases.

Specifying Whether New SQL Connections Should Share the Same Windows Installer Properties
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield lets you specify whether new SQL database connections that you add to your project should share the same Windows Installer properties by default. For example, if you want connections to share the same default Windows Installer properties, you could add one connection to your project in the SQL Scripts view, and specify a catalog name of MyConnection. If you add a second connection to your project, InstallShield uses the same catalog name of MyConnection for that second connection. If you change the catalog name of either connection, InstallShield automatically updates the catalog name of the other connection, since both are based on the same Windows Installer property.

Task

To specify whether SQL connections should share the same Windows Installer properties: 1. 2. 3.

On the Tools menu, click Options. The Options dialog box opens. Click the SQL Scripts tab. Select or clear the Generate unique Windows Installer properties for new connections check box:

To share Windows Installer properties between any new connections that you add, clear this check box. To use different Windows Installer properties for any new connections that you add, select this check box.

If you select the check box and then add a second connection to your project, InstallShield creates a new set of Windows Installer properties for the second connection. If you clear the check box and then add a second connection, InstallShield uses the default Windows Installer properties for the second connection. The default Windows Installer properties are the ones that were added for the first connection that you added to your project.

Tip: If you want to override a Windows Installer property for an existing connection, add a new property in the Property Manager. Then, in the SQL Scripts view, select the connection. On the Advanced tab, select the name of the new property in the appropriate list.

818

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

Project: For Basic MSI projects, the built-in SQLLogin dialog is designed to work with the default Windows Installer properties for the first SQL connection that was added to the project. If you select the Generate unique Windows Installer property for new connections option, you need to duplicate the dialog for each connection to work with the new Windows Installer properties.

Using the SQL Run-Time Functions in InstallScript and InstallScript MSI Projects
Project: This information applies to the following project types:

InstallScript InstallScript MSI

The InstallScript language includes many built-in SQL run-time (SQLRT) functions that begin with a prefix of SQLRT. Some of the functions are available only in InstallScript projects, some are available only in InstallScript MSI projects, and some are available in both project types. The SQLRT functions require that you configure SQL information through the SQL Scripts view; the configuration information is written to the SQLRT.ini file so that the SQL run-time functions work properly. For InstallScript projects, the SQLRT functions are in the SQLRT.obl file, and they call the SQLRT.dll file. For InstallScript MSI projects, the SQLRT functions are in the SQLCONV.obl file, and they call the ISSQLSRV.dll file. These support files are added automatically to your project when you use the SQL Scripts view. The SQLRTInitialize2 function initializes the SQL server run time. In InstallScript projects, the SQLRTInitialize2 function is called automatically during the OnSQLServerInitialize event handler. In InstallScript MSI projects, the SQLRTInitialize2 function is called automatically during the OnSQLLogin event handler. If you need to call one of the SQLRT functions before the OnSQLServerInitialize or OnSQLLogin events, you must first call the SQLRTInitialize2 function.

Note: In earlier versions of InstallShield, the SQLRTInitialize function was used to initialize the SQL server run time in InstallScript projects. This function has been superseded by the SQLRTInitialize2 function.

Adding a New SQL Connection


In the SQL Scripts view, scripts are organized by connection, since no script can run on a server until a connection has been established. Therefore, before you can add any SQL scripts to your project, you must first create a SQL connection.

Task

To create a new SQL connection: 1. 2.

In the View List under Server Configuration, click SQL Scripts. Right-click the SQL Scripts explorer and click New SQL Connection.
ISP-1600-UG00 819

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

InstallShield adds a new connection in the explorer. Use the tabs in the right pane to configure the settings that are associated with this connection.

Note: The SQLLogin and SQLBrowse dialogs let end users use alias names for connecting and browsing to SQL Server databases.

Tip: By default, InstallShield installations use the TCP/IP network library when connecting to a SQL Server database. You can override this default behavior as needed if you want to use a different protocol. To override this behavior, click the ISSQLDBMetaData table in the Direct Editor view, and find the AdoCxnNet1Library column for your SQL Server connection. The default value for the AdoCxnNet1Library column of the SQL Server row is:
Network Library=DBMSSOCN DBMSSOCN refers to the name of the module for the TCP/IP network library, without the file extension. Replace this name as required. For example, to use the Named Pipes network library, specify DBNMPNTW. To use SPX/IPX, specify DBMSSPXN. To use Banyan Vines, specify DBMSVINN. To use Multi-Protocol (Windows RPC), specify DBMSRPCN.

Adding a New SQL Script


Task To add a new SQL script once you have created a new SQL connection: 1. 2.

In the View List under Server Configuration, click SQL Scripts. Right-click the new connection and click New Script.

When you add a new script to your project, InstallShield adds a new component for the script. You must associate the script with a feature. If one does not exist, the Create a New Feature dialog box opens when you add the SQL script, prompting you to create a new feature. You can change the script-feature association later by using the Select Features the SQL Script Belongs to area on the General tab in the SQL Scripts view for the SQL script.

Tip: You can also add scripts to your project by importing or inserting them. For more information, see Inserting and Importing SQL Scripts.

Note: Once you add a new script, you can open it in Microsoft SQL Query Analyzer to test, edit, and syntax-check the script when you right-click the script file in the explorer. However, you must have this tool (isqlw.exe) installed on your system for it to be available. This tool is installed by Microsoft SQL Server or the Microsoft SQL Server client tools.

Inserting and Importing SQL Scripts


InstallShield enables you to reuse SQL script files (.sql) in multiple projects. You can insert or import script files into a project through the SQL Scripts view:

820

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

Inserting a script file creates a link to the script file in its current location. Importing a script file copies the script file to the folder containing the script files for your project. The script files that you import can be stored somewhere on your system, or they can be stored in a repository.

Inserting SQL Script Files

Task

To insert a SQL script file: 1. 2. 3. 4. 5.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, add a SQL connection if you have not already done so. Right-click the SQL connection and then click Insert Script Files. The Open dialog box opens. Select the SQL script file (.sql) that you want to insert. Click Open.

Importing SQL Script Files

Task

To import a SQL script file: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, add a SQL connection if you have not already done so. Right-click the SQL connection and then click Import Script Files. The Import SQL Script Files Dialog Box opens. Do one of the following:


5.

In the Repository Items box, click the SQL script file (.sql) that you want to add to your project. If the script file that you want to import is not stored in the repository, click the browse button to select it.

Click OK.

When you insert or import a new script to your project, InstallShield adds a new component for the script. You must associate the script with a feature. If one does not exist, the Create a New Feature dialog box opens when you add the SQL script, prompting you to create a new feature. You can change the script-feature association later by using the Select Features the SQL Script Belongs to area on the General tab in the SQL Scripts view for the SQL script.

InstallShield 2010 User Guide

ISP-1600-UG00

821

Chapter 16: Configuring Servers Configuring SQL Support

Importing a SQL Server Database and Generating a SQL Script File


Task To import an existing Microsoft SQL Server database and then generate a script file from it: 1. 2. 3.

In the View List under Server Configuration, click SQL Scripts. Right-click the SQL Scripts explorer and then click Database Import Wizard. The Database Import Wizard opens. Complete the panels in the Database Import Wizard.

The Database Import Wizard will guide you through the process of importing your database settings and generating a SQL script file based on those settings and other options that you determine.

Note: The import database functionality applies to the Microsoft SQL Server Database. The script generated by the Database Import Wizard is not compatible with the MySQL database server.

Editing a SQL Script File


Once you have created, inserted, or imported a script file, you can edit it using the InstallShield interface.

Project: In an InstallScript project, if you are working on a script that had overridden OnFirstUIBefore before upgrading to InstallShield and is not calling OnSQLServerInitialize, then you should add that code to your script file.

Task

To edit a script file in the InstallShield interface: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the script file that you want to edit. Click the Script tab, which displays the contents of your script file. Edit the file as needed.

If you want to re-create your script each time that you build your project, you can select the Regenerate SQL Script at Build check box on the Database Import tab for the script in the SQL Scripts view. A backup of any existing script file is always saved first.

Note: You can open your script file in Microsoft SQL Query Analyzer to test, edit, and syntax-check the script when you right-click the script file in the explorer. However, you must have this tool (isqlw.exe) installed on your system for it to be available. This tool is installed by Microsoft SQL Server or the Microsoft SQL Server client tools.

822

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

Specifying a Version Number for a SQL Script File


You can assign a schema version number to a SQL script file after you have a created or imported a script file in the SQL Scripts view. Specifying schema version information helps you to trigger the launching of the SQL script only when it is appropriate.

Task

To specify the schema version for your SQL script file: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the SQL script that you want to configure. Click the General tab. In the Schema Version (xxxx.xxxxx.xxxx) box, type the schema version number for your SQL script

The installation checks the current schema version that is on the target database. The schema version is stored in the ISSchema column of the custom table named InstallShield. When you specify a schema version for a SQL script, the installation runs the script only if the script schema version number is greater than the current schema version number. Once the script is executed, the installation updates the current schema version on the target database to reflect the new schema version number. If you do not specify a schema version number for a SQL script, the script is always launched. For example, your installation may create a new connection to a database called TestDB and then create a script that is called TestScript and that has a schema version number of 1234.54321.1234. The installation creates the custom InstallShield table in the TestDB database and stores the schema version in the ISSchema column of that table. If another installation is run on that system, and this installation also has a SQL script called TestScript, the SQL script is executed only if the schema version number of this other script is greater than the version number that is stored in the ISSchema column in the InstallShield table of the target database. If the script is executed, the installation updates the ISSchema column with the new schema version number.

Tip: When you specify a number for the Schema Version setting and InstallShield adds the custom InstallShield table for storing the schema version number on the target database, the data is not automatically removed upon uninstallation. Therefore, if you want the installation to be able to roll back the changes, you need to create a custom script upon uninstallation to drop the InstallShield table.

Specifying the Order for Running Multiple SQL Scripts That Are Associated with a Connection
If you add more than one SQL script to a SQL connection in your project, you can specify the order in which the installation runs those SQL scripts on the target machine. The procedure for specifying the order differs for Windows Installerbased and InstallScript-based projects.

InstallShield 2010 User Guide

ISP-1600-UG00

823

Chapter 16: Configuring Servers Configuring SQL Support

Specifying the SQL Script Order in Basic MSI and InstallScript MSI Projects
The order in which a connections SQL scripts are listed in the SQL Scripts view is the order in which Basic MSI and InstallScript MSI installations run the SQL scripts. For example, if you create a connection in the SQL Scripts view and add two SQL scripts to that connection, the script that is listed first under the SQL connection is the one that the installation runs first.

Task

To change the order in which a connections SQL scripts are run: 1. 2.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, right-click the SQL script that you want to move and click Move Up or Move Down.

The next time that you build and run the installation, the order is updated.

Specifying the SQL Script Order in InstallScript Projects


By default for InstallScript installations, batch mode for SQL scripts is disabled; therefore, the order in which a connections SQL scripts are run corresponds with the order in which the installation processes the associated components. If you want to be able to override this default behavior and specify a particular order for running the SQL scripts, you can do so by enabling the batch mode in the SQL Scripts view.

Task

To enable or disable batch mode: 1. 2.

In the View List under Server Configuration, click SQL Scripts. Right-click the SQL Scripts explorer and click Batch Mode.

Batch mode is enabled if the Batch Mode command has a check mark; it is disabled if the command does not have a check mark. The SQLRTGetBatchList function returns the list of components that are associated with SQL scripts that need to be run when batch mode is enabled. For more information, see SQLRTGetBatchList.

Overriding the Default SQL Run-Time Behavior


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

824

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

You can define the following Windows Installer properties to override default run-time behavior:
Table 16-1: Windows Installer Properties for SQL Property IS_SQLSERVER_CONNECTIONS_TO_VALIDATE Description Overrides the connection(s) that will be tested when clicking the Next button on the SQLLogin dialog. Specify multiple connections by separating each with a semicolon. By default, all the connections in the ISSQLConnection table will be validated. Specifies 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. Specifies not to use the stored SQL Server login information written in the registry. Since the SQLLogin dialog is not displayed in maintenance and uninstall modes, InstallShield stores the login information specified during installation. If you do not want this behavior, set the IS_SQLSERVER_DO_NOT_USE_REG property. Specifies to show only the local SQL Server in the SQL Server browse combo box and list box controls.

IS_SQLSERVER_CXNS_ABSENT_FROM_INSTALL

IS_SQLSERVER_DO_NOT_USE_REG

IS_SQLSERVER_LOCAL_ONLY

Note: To show only the local SQL Server and either remote SQL Servers or SQL Server aliases, you can set the IS_SQLSERVER_LOCAL_ONLY property, as well as either the IS_SQLSERVER_REMOTE_ONLY property or the IS_SQLSERVER_ALIAS_ONLY property. IS_SQLSERVER_REMOTE_ONLY Specifies to show only the remote SQL Servers in the SQL Server browse combo box and list box controls.

Note: To show only the remote SQL Servers and either the local SQL Server or SQL Server aliases, you can set the IS_SQLSERVER_REMOTE_ONLY property, as well as either the IS_SQLSERVER_LOCAL_ONLY property or the IS_SQLSERVER_ALIAS_ONLY property.

InstallShield 2010 User Guide

ISP-1600-UG00

825

Chapter 16: Configuring Servers Configuring SQL Support

Table 16-1: Windows Installer Properties for SQL (cont.) Property IS_SQLSERVER_ALIAS_ONLY Description Specify to show only the SQL Server aliases in the SQL Server browse combo box and list box controls.

Note: To show only the SQL Server aliases and either the local SQL Server or remote SQL Servers, you can set the IS_SQLSERVER_ALIAS_ONLY property, as well either the IS_SQLSERVER_LOCAL_ONLY property or the IS_SQLSERVER_REMOTE_ONLY property.

Project: For Windows Installerbased projects, all connections are linked to the standard SQL Login dialog. To display multiple SQL Login dialogs, you can copy the SQL dialogs from the Dialogs view and modify their behavior and events similar to the SQL default dialogs. Remember to create new properties, and set them in the connections Advanced tab of the SQL Scripts view. You will use those new properties when you modify the copies of the SQL dialogs that you made.

Handling SQL Run-Time Errors


Task To set SQL script error-handling properties in the interface: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the SQL script file for which you want to add error handling. Click the Runtime tab. In the Script Error Handling area, select one of the options listed, or click the Custom button to override the scripts default error handling. The following options are listed:

On Error, Goto Next Script On Error, Goto Next Statement On Error, Abort Installation

Setting Up a Database Server Type Condition for SQL Scripts


InstallShield enables you to create a single connection that targets both Microsoft SQL Server and MySQL and that has multiple SQL scripts specific to each database server technology. However, a connection is created based on whichever database type is detected first. Therefore, scripts are run only for the detected database type, and the scripts that are specific to the non-detected database server type fail. For example, if the run time detects a Microsoft SQL Server, then the scripts associated with Microsoft SQL Server run, and the scripts that are specific to MySQL fail.

826

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

As a workaround to this behavior, it is recommended that you set a condition in your SQL script so that a SQL scripting error occurs when the installation is running a non-detected database server type script. Then you can set up custom error handling for the scripting error and skip to the next script for the connection. The following instructions discuss how you can set this database server type condition for scripts.

Task

To set up a database server type condition for a script that targets Microsoft SQL Server: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the script file for which you are creating the condition. Click the Script tab. Add the following statement at the beginning of the script:
SELECT @@ROWCOUNT

5. 6. 7. 8. 9.

Click the Runtime tab. In the Script Error Handling area, click the Custom button. The Custom Error Handling dialog box opens. Click the Click here to add a new item row. In the Error Number column, type 1193. This is the error number that MySQL returns when it does not have the specified system variable that you added at the beginning of the script. In the Behavior column, click On Error, Goto Next Script.

10. In the Project Wide column, click No. 11. Click OK.

Task

To set up a database server type condition for a script that targets MySQL: 1. 2. 3. 4.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the script file for which you are creating the condition. Click the Script tab. Add the following statement at the beginning of the script:
SELECT @@table_cache

5. 6. 7. 8.

Click the Runtime tab. In the Script Error Handling area, click the Custom button. The Custom Error Handling dialog box opens. Click the Click here to add a new item row. In the Error Number column, type 137. This is the error number that Microsoft SQL Server returns when it does not have the specified system variable that you added at the beginning of the script.
ISP-1600-UG00 827

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

9.

In the Behavior column, click On Error, Goto Next Script.

10. In the Project Wide column, click No. 11. Click OK.

Conditionally Launching a SQL Script in a Windows InstallerBased Installation


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

You may want your installation to launch a SQL script only if certain conditions are met on the target system. For example, your SQL script may require that the end user have administrator rights. If an end user does not have administrator rights, the SQL script is not launched.

Task

To create a SQL script condition: 1. 2. 3. 4. 5. 6.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the script file for which you are creating the condition. Click the Runtime tab. In the Script Condition area, select the Specify a Conditional Statement check box. Click the ellipsis button (...). The Condition Builder dialog box opens. Create one or more conditions.

The SQL scripts are tied to component states. The condition that is set in the SQL Scripts view is the condition for the SQL scripts component. If the component conditions are met on the target system, the installation installs the SQL script. If the installation installs a SQL script that you did not expect to be installed on a target system, generating a log file for your installation may help you determine why the SQL script was installed.

Tip: For information on conditions and on condition syntax, see Building Conditional Statements and Conditional Statement Syntax.

Conditionally Launching a SQL Script in an InstallScript Installation


Project: This information applies to InstallScript projects.
828 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

You may want your installation to launch a SQL script only if certain conditions are met on the target system. InstallShield generates a set of default global event handlers, each of which is a function scripted in the InstallScript language. The following SQL-related events are automatically called by the InstallShield framework:

OnSQLServerInitialize OnSQLComponentInstalled

OnSQLServerInitialize is called by OnFirstUIBefore, and OnSQLComponentInstalled is called during file transfer, for each component installed.

Note: If you are working on a script that had overridden OnFirstUIBefore before upgrading to InstallShield and is not calling OnSQLServerInitialize, then you should add that code to your script file.

In your script, you can modify OnSQLServerInitialize and OnSQLComponentInstalled to perform checks for different things. For example, you can check for a user with administrator rights in the sample code below.
function OnSQLComponentInstalled(szComponent) string sMessage; string sData; number nResult; begin if( Is( USER_ADMINISTRATOR, sData ) ) then nResult = SQLRTComponentInstall( szComponent ); if( nResult = SQL_ERROR_ABORT ) then sMessage = SdLoadString( IDS_IFX_SQL_ERROR_RUN_FAILED ); MessageBox( sMessage, MB_OK ); abort; endif; else //User does not have administrator rights, so we do not run scripts endif; end;

Note: You can configure the behavior for script failure in the InstallShield interface when you click a SQL script in the SQL Scripts explorer, and then go to the Runtime tab. The Script Error Handling section lets you select one of the following options:

On Error, Go to Next Script On Error, Go to Next Statement On Error, Abort Installation

InstallShield 2010 User Guide

ISP-1600-UG00

829

Chapter 16: Configuring Servers Configuring SQL Support

Requiring that SQL Scripts Be Run Only Against a Full SQL Server
Installations that include SQL script support allow end users to run the SQL scripts on Microsoft SQL Server Desktop Engine (MSDE) and on SQL Server Express Edition, by default. If you want end users to be able to run SQL scripts on only a full SQL Server, you can use the SQL Scripts view to configure that for any database connection in your installation.

Task

To prevent your SQL script files from running on target systems that have MSDE or SQL Server Express Edition: 1. 2. 3.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, click the SQL connection that you want to configure. On the Requirements tab, clear the Allow Installation to Microsoft SQL Server Desktop Engine/SQL Server Express check box.

Requiring a SQL Server-Side Installation for a Windows Installer-Based Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

One way to configure your installation so that it runs only on SQL Server machines is to perform a system search for registry information, store the result in a property, and then use the property in a condition that you set. The following step-by-step instructions show how to do this.

Task

To configure a Windows Installerbased installation to run only on SQL Server machines: 1. 2. 3. 4.

In the View List under Behavior and Logic, click System Search. Right-click the grid and click Add. The System Search Wizard opens. In the What do you want to find panel, click Registry entry and click Next. In the How do you want to look for it panel, do the following:
a. b.

In the Registry Root list, click HKEY_LOCAL_MACHINE. In the Registry Key box, type the following text:
Software\Microsoft\Microsoft SQL Server

c.

In the Registry Value box, type the following text:


InstalledInstances

830

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

d. 5.

Click Next.

In the What do you want to do with the value panel, do the following:
a.

In the Store the value in this property box, type the following:
SQLSERVERFOUND

b. c. 6.

In the Additional Options area, select the Store the value in the property and use the property in an Install Condition option. Click Finish. The Condition Builder opens.

Verify the condition, and type a message that you want end users to see if the registry entry is not found on the system. For example, you can type the following message:
Microsoft SQL Server was not found on this machine. This installation was designed to run only on the server machine.

7.

Click OK.

InstallShield adds an entry to the System Search grid.

Requiring a Server-Side Installation for an InstallScript Project


One way to enforce a server-side installation in an InstallScript project is to set up your installation project so that it searches for a specific registry key and value and only installs the installation project if the value is found. See the sample code below for an example of how you can do this in your InstallScript project.
function OnBegin() string sKey, sValue, sData; string sMsg; number nType, nSize, nResult; begin RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE ); sKey = "Software\\Microsoft\\Microsoft SQL Server"; sValue = "InstalledInstances"; nResult = RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize ); if( nResult < 0 ) then //SQL Server registry key is missing sMsg = "Microsoft SQL Server was not found on this machine.\n" + "This installation was designed to run only on the server machine."; MessageBox( sMsg, SEVERE ); abort; endif; end;

InstallShield 2010 User Guide

ISP-1600-UG00

831

Chapter 16: Configuring Servers Configuring SQL Support

Publishing SQL Script Files to a Repository


If you have an existing SQL script file that you would like to reuse in other projects or share with other users, you can publish it to a repository.

Task

To publish a SQL script file to a repository: 1. 2. 3.

In the View List under Server Configuration, click SQL Scripts. In the SQL Scripts explorer, right-click the script file that you would like to publish, and then click Publish Wizard. The Publish Wizard opens. Complete the panels in the Publish Wizard.

After you have imported a script file from a repository into a project, there is no link between the current script file and the existing repository script file. If you make a change to the script file and then republish it to the repository, it does not affect the script file in the project to which it was imported. However, you can reimport the script file from the repository into your project.

Installing the MySQL ODBC Driver from a Windows InstallerBased Installation


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you want to install and launch the MySQL ODBC driver before your Windows Installerbased installation is run, you can include the InstallShield prerequisite for MySQL Connector 3.51 in your project.

Task

To install and launch the MySQL ODBC driver before your installation is run: 1. 2.

In the View List under Application Data, click Redistributables. In the list of redistributables, select the MySQL Connector ODBC 3.51 check box.

Tip: The MySQL Connector ODBC 3.51 prerequisite is available only if you have downloaded the installer and added the InstallShield prerequisite to your system. For detailed instructions, see Including the MySQL Connector ODBC Prerequisite.

832

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

Installing the MySQL ODBC Driver from an InstallScript Installation


Project: This information applies to InstallScript projects.

InstallShield provides two ways to install and launch the MySQL ODBC driver before your InstallScript installation is run:

You can add the InstallShield prerequisite for the MySQL ODBC driver to your project. You can add the MySQL ODBC driver installation to your project as a support file, and then add InstallScript code to launch the installation.

The following sections explain these methods.

Adding the InstallShield Prerequisite for the MySQL ODBC Driver

Task

To use an InstallShield prerequisite to install the MySQL ODBC driver before your installation is run: 1. 2.

In the View List under Application Data, click Prerequisites. In the list of redistributables, select the MySQL Connector ODBC 3.51 check box.

Tip: The MySQL Connector ODBC 3.51 prerequisite is available only if you have downloaded the installer and added the InstallShield prerequisite to your system. For detailed instructions, see Including the MySQL Connector ODBC Prerequisite.

Adding the MySQL ODBC Driver Installation and Calling It from InstallScript

Important: In order to add support for the MySQL ODBC Driver to an InstallScript project, as explained in the following procedure, you must already have the Microsoft Data Access Components (MDAC) 2.8 prerequisite files on your system. To add these files, open a Basic MSI or InstallScript MSI project. In the Redistributables view, right-click the Microsoft Data Access Components (MDAC) 2.8 prerequisite and click Download Selected Item. InstallShield downloads the MDAC files and places them in the following location (which is required for step 4g below):
InstallShield Program Files Folder\SetupPrerequisites\Microsoft Data Access Components (MDAC) 2.8.5

Task

To call the MySQL ODBC driver installation from script before your InstallScript installation is run: 1. 2.

Visit http://dev.mysql.com/downloads/connector/odbc/3.51.html and download the MSI installer for the MySQL Connector/ODBC 3.51 driver for Windows. Save the file in the following location:
InstallShield Program Files Folder\Objects\MySQL\Redist

InstallShield 2010 User Guide

ISP-1600-UG00

833

Chapter 16: Configuring Servers Configuring SQL Support

3. 4.

Open your InstallScript project. Add the required support files and folder to your project:
a. b. c. d.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer under the Advanced Files item, click Disk1. Right-click in the Files pane and click Insert Files. The Open dialog box opens. Browse for the MySQL ODBC driver that you saved in step 2. The files path should be as follows:
InstallShield Program Files Folder\Objects\MySQL\Redist\MyODBC-standard-3.51.9-win.msi

e. f. g.

Click Open. Right-click in the Files pane and click Insert Folder. The Browse for Folder dialog box opens. Browse for the following directory:
InstallShield Program Files Folder\SetupPrerequisites\Microsoft Data Access Components (MDAC) 2.8.5

h. 5. 6. 7.

Click OK.

In the View List under Behavior and Logic, click InstallScript. In the InstallScript explorer under the Files item, select your script file (.rul). In the script editor pane, add the following sample InstallScript code:
function OnBegin() STRING svResult; NUMBER nvResult; BOOL bIsWindows95, bInstallMDAC; begin //check OS and file Versions bIsWindows95 = FALSE; bInstallMDAC = TRUE; GetSystemInfo (OS, nvResult, svResult); if(nvResult = IS_WINDOWS9X) then GetSystemInfo (WINMINOR, nvResult, svResult); if (nvResult < 10) then bIsWindows95 = TRUE; endif; endif; if(VerGetFileVersion(COMMONFILES ^ "System\\msadc\\msdfmap.dll", svResult) = 0) then if(VerCompare (svResult, "2.80.1022.0", VERSION) != 1) then bInstallMDAC = FALSE; endif; endif; if(VerGetFileVersion(WINSYSDIR ^ "shdocvw.dll", svResult) = 0) then if(VerCompare (svResult, "4", VERSION) = 1) then bInstallMDAC = FALSE; endif; else bInstallMDAC = FALSE; endif; //Install MDAC 2.8 if it is not already installed

834

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

if(!bIsWindows95 && bInstallMDAC) then LaunchAppAndWait(SRCDIR ^ "Microsoft Data Access Components (MDAC) 2.8\\setup.exe", "/ qn",LAAW_OPTION_WAIT); endif; //Install myODBC driver if it is not already installed if(FindFile(WINSYSDIR, "myodbc3.dll", svResult) < 0) then LaunchAppAndWait(WINSYSDIR ^ "msiexec.exe","/qn /i \"" + SRCDIR ^ "MyODBC-standard3.51.9-win.msi\"",LAAW_OPTION_WAIT); endif; end;

Deleting a SQL Server Database During Uninstallation


Note: You cannot delete a database to which you are currently connected.

If you need to remove a SQL database during uninstallation, you can do so through your SQL script. The following procedure demonstrates how to configure your project and SQL script to delete a Microsoft SQL Server database.

Task

To remove a Microsoft SQL Server database during uninstallation: 1. 2. 3.

In the View List under Server Configuration, click SQL Scripts. Add a SQL connection. On the General tab, in the Catalog Name box, type Master. Master is the name of the system database that exists on all Microsoft SQL Server systems; since you cannot delete a database to which you are currently connected, you can connect to the Master database and then delete a different database to which you are not connected.

4. 5. 6.

Enter the authentication information for the server. Add a new SQL script file. Add the following to the SQL script file:
DROP DATABASE DatabaseName GO DatabaseName is

the name of the database that you want to delete.

Tip: As an alternative to the aforementioned procedure, you can perform the same operation completely in SQL script. To do so, enter the following code in your SQL script:
USE Master DROP DATABASE DatabaseName GO DatabaseName is the name of the database that you want to delete.

InstallShield 2010 User Guide

ISP-1600-UG00

835

Chapter 16: Configuring Servers Configuring SQL Support

Connecting to an Instance of Oracle and Running SQL Scripts


Note: If you want your installation to download the Oracle 10g Instant Client whenever it needs to be installed on a target system, check with Oracle to ensure that it is allowed. If it is allowed, you must host the download on your own Web site and add its download path to the InstallShield prerequisite. Acresso Software does not make this installation available for download.

Connecting to an instance of Oracle requires the following elements on the end-user machine that is running the installation:

Microsoft ODBC for Oracle Oracle Instant Client software

The latest Microsoft Data Access Components (MDAC) include support for the Microsoft ODBC for Oracle drivers. However, the Microsoft ODBC for Oracle driver requires Oracle 10g Instant Client software to communicate with Oracle database servers. Therefore, you may want to include the Oracle 10g Instant Client prerequisite (for Basic MSI and InstallScript MSI installations) or launch the Oracle 10g Instant Client .msi package (for InstallScript installations) to help configure the Oracle Instant Client on the target machine upon installation.

Downloading the Oracle Instant Client and Creating an .msi Package for It
Before you can add Oracle 10g Instant Client support to your Basic MSI, InstallScript MSI, or InstallScript installation, you must download the Oracle Instant Client from Oracles Web site. Oracle does not provide an installer for the files, so you also need to create an .msi package; you can do so easily by using the Oracle Instant Client installation project that is available in the InstallShield Program Files folder.

Task

To download the Oracle Instant Client and create an .msi package: 1.

Visit http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html and download the 10.2.0.x version of the Oracle Instant Client (the Basic package for 32-bit Windows platforms). The download file is called instantclient-basic-win32-10.2.0.VersionNumber-Date.zip. Unzip the files to the root of your C drive. Unzipping the files adds all of the files to the following location:
C:\instantclient_10_2

2.

3.

Open the Oracle Instant Client installation project in InstallShield. The path for the project is as follows:
InstallShield Program Files Folder\Support\Oracle Instant Client\instantclient-win3210_2.ism

Acresso created this project for the 10.2.0.2 version of the Oracle Instant Client; however, you can use this same project for more-recent versions of the Oracle 10g Instant Client, such as 10.2.05, for example.
4.

The name that is displayed at run time during the Oracle 10g Instant Client installation is Oracle10g Instant Client 10.2.0.2; this name is also used for the .msi file. If you want to change
ISP-1600-UG00 InstallShield 2010 User Guide

836

Chapter 16: Configuring Servers Configuring SQL Support

this name to something else to reflect a different version number, such as 10.2.0.5 or 10.2.0.x, you can do so:
a. b. 5.

In the View List under Installation Information, click General Information. In the Product Name setting, edit the existing text as needed.

If you are using a version that was released after 10.2.0.2 and it requires additional dependencies, add the files or merge modules to the project. For example, Oracle 10g Instant Client 10.2.0.2 requires mfc71.dll, mfc71u.dll, and msvcr71.dll. Therefore, the project includes MFC7.1 and the Microsoft C Runtime Library 7.1 merge modules. On the toolbar, click the Build button.

6.

InstallShield builds an Oracle 10g Instant Client .msi file and adds it to the following directory so that you can include the Oracle 10g Instant Client in your InstallShield projects:
InstallShield Program Files Folder\SetupPrerequisites\oracle

Tip: If you are using a version that was released after 10.2.0.2, open the Oracle 10g Instant Client 10.2.0.2 prerequisite in the InstallShield Prerequisite Editor. Rename the prerequisite to reflect the appropriate version number. In addition, update the conditions to reflect the appropriate version number.

For instructions on how to add the Oracle 10g Instant Client to Basic MSI or InstallScript MSI installations, see Installing the Oracle 10g Instant Client from a Windows Installer-Based Installation. For instructions on how to add the Oracle 10g Instant Client to InstallScript installations, see Installing the Oracle 10g Instant Client from an InstallScript Installation.

Installing the Oracle 10g Instant Client from a Windows Installer-Based Installation

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you want to install the Oracle 10g Instant Client when your installation is run, you can include the Oracle 10g Instant Client prerequisite in your project. Note that before you can include the InstallShield prerequisite, you must download the Oracle Instant Client and create an .msi package; for more information, see Connecting to an Instance of Oracle and Running SQL Scripts.

Task

To include the Oracle 10g Instant Client prerequisite in your project: 1. 2.

In the View List under Application Data, click Redistributables. In the list of redistributables, select the Oracle10g Instant Client 10.2.0.2 check box (or the check box for whatever version that you are using).
ISP-1600-UG00 837

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Configuring SQL Support

The InstallShield prerequisite is launched only if the following conditions are met:

Oci.dll is Oci.dll is

not found in ORACLE_HOME\bin folder. not found in all Windows search directories (PATH environment variable).

Note: If you want your installation to download the Oracle 10g Instant Client whenever it needs to be installed on a target system, check with Oracle to ensure that it is allowed. If it is allowed, you must host the download on your own Web site and add its download path to the InstallShield prerequisite. Acresso Software does not make this installation available for download.

Installing the Oracle 10g Instant Client from an InstallScript Installation

Project: This information applies to InstallScript projects.

InstallShield provides two ways to install the Oracle 10g Instant Client before your InstallScript installation is run:

You can add the InstallShield prerequisite for the Oracle 10g Instant Client to your project. You can add the Oracle 10g Instant Client installation to your project as a support file, and then add InstallScript code to launch the installation.

The following sections explain these methods.

Important: Note that before you can include the Oracle 10g Instant Client for either of the following procedures, you must download the Oracle Instant Client and create the .msi package; for more information, see Connecting to an Instance of Oracle and Running SQL Scripts.

Adding the InstallShield Prerequisite for the Oracle 10g Instant Client

Task

To use an InstallShield prerequisite to install the Oracle 10g Instant Client before your installation is run: 1. 2.

In the View List under Application Data, click Prerequisites. In the list of redistributables, select the Oracle 10g Instant Client check box.

Adding the Oracle 10g Instant Client Installation and Calling It from InstallScript

Task

To call the Oracle 10g Instant Client installation from script before your InstallScript installation is run: 1.

Add the required support files and folder to your InstallScript project:
a. b.

In the View List under Behavior and Logic, click Support Files/Billboards. In the Support Files explorer under the Advanced Files item, click Disk1.
ISP-1600-UG00 InstallShield 2010 User Guide

838

Chapter 16: Configuring Servers Configuring SQL Support

c. d.

Right-click in the Files pane and click Insert Files. The Open dialog box opens. Browse for the Oracle10g Instant Client .msi file. The file is in the following location:
InstallShield Program Files Folder\SetupPrerequisites\Oracle

e. f. g.

Click Open. Right-click in the Files pane and click Insert Folder. The Browse for Folder dialog box opens. Browse for the following directory:
InstallShield Program Files Folder\SetupPrerequisites\Microsoft Data Access Components (MDAC) 2.8.5

h. 2. 3. 4.

Click OK.

In the View List under Behavior and Logic, click InstallScript. In the InstallScript explorer under the Files item, select your script file (.rul). In the script editor pane, add the following sample InstallScript code. Note that the script example uses Oracle10g Instant Client 10.2.0.2.msi as the name of the file that you added in step 2d. If your .msi file has a different name, change the script accordingly.
function OnBegin() STRING svResult; NUMBER nvResult; BOOL bIsWindows95, bInstallMDAC; begin

//check OS and file Versions bIsWindows95 = FALSE; bInstallMDAC = TRUE; GetSystemInfo (OS, nvResult, svResult); if(nvResult = IS_WINDOWS9X) then GetSystemInfo (WINMINOR, nvResult, svResult); if (nvResult < 10) then bIsWindows95 = TRUE; endif; endif; if(VerGetFileVersion(COMMONFILES ^ "System\\msadc\\msdfmap.dll", svResult) = 0) then if(VerCompare (svResult, "2.80.1022.0", VERSION) != 1) then bInstallMDAC = FALSE; endif; endif; if(VerGetFileVersion(WINSYSDIR ^ "shdocvw.dll", svResult) = 0) then if(VerCompare (svResult, "4", VERSION) = 1) then bInstallMDAC = FALSE; endif; else bInstallMDAC = FALSE; endif; //Install MDAC 2.8 if it is not already installed if(!bIsWindows95 && bInstallMDAC) then LaunchAppAndWait(SRCDIR ^ "Microsoft Data Access Components (MDAC) 2.8\\setup.exe", "/ qn",LAAW_OPTION_WAIT); endif; //Install Oracle Instant Client

InstallShield 2010 User Guide

ISP-1600-UG00

839

Chapter 16: Configuring Servers Configuring SQL Support

LaunchAppAndWait(WINSYSDIR ^ "msiexec.exe","/qn /i \"" + SRCDIR ^ " Oracle10g Instant Client 10.2.0.2.msi \"",LAAW_OPTION_WAIT); end;

Creating a Sample Installation that Creates a SQL Server Database by Running Customized SQL Script
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The following procedure demonstrates how to create an installation that creates a SQL Server database through customized SQL script.

Task

To create an installation that creates a SQL Server database on the target machine by running customized SQL script: 1. 2. 3.

Create a new Basic MSI or InstallScript MSI project. In the View List under Behavior and Logic, click Property Manager. Create a new property that has the following name: IS_SQLSERVER_DATABASE2

4. 5.

In the View List under Server Configuration, click SQL Scripts. Add and configure a new SQL connection:
a. b. c. d. e. f. g. h.

Right-click the SQL Scripts explorer and click New SQL Connection. InstallShield adds a new connection with the name NewConnection1 as the default name. In the SQL Scripts explorer, click the NewConnection1 item, and then click the General tab. In the Default Target Server Name (optional) box, type TESTSQLSERVER. Clear the Create Catalog If Absent check box. In the Connect using area, select the Server authentication using the Login ID and password below option. In the Login ID box, type sa. Leave the Password box blank. Click the Requirements tab. Ensure that the Microsoft SQL Server check box is selected and the MySQL and Oracle check boxes are cleared.

6.

Add and configure a new SQL script for NewConnection1:


a.

In the SQL Scripts explorer, right-click NewConnection1 and click New Script.
ISP-1600-UG00 InstallShield 2010 User Guide

840

Chapter 16: Configuring Servers Configuring SQL Support

b. c. d.

Change the name of the script to NewScript1. In the SQL Scripts explorer, click NewScript1, and then click the Script tab. In the script editor pane, add the following script:
CREATE DATABASE [TestDB] ON (NAME = N' TestDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\testdb.mdf' , SIZE = 3, FILEGROWTH = 10%) LOG ON (NAME = N' TestDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\testdb.ldf' , SIZE = 1, FILEGROWTH = 10%) COLLATE SQL_Latin1_General_CP1_CI_AS

e. f.

Click the Runtime tab. In the Script Execution area, select the Run Script During Login check box and ensure that the Run Script During Install and Run Script During Uninstall check boxes are cleared.

7.

Add and configure a second new SQL connection:


a. b. c. d. e. f. g. h. i. j. k.

Right-click the SQL Scripts explorer and click New SQL Connection. InstallShield adds a new connection with the name NewConnection2 as the default name. In the SQL Scripts explorer, click the NewConnection2 item, and then click the Advanced tab. In the Target Catalog Property Name list, select IS_SQLSERVER_DATABASE2. Click the General tab. In the Catalog Name box, type TestDB. Clear the Create Catalog If Absent check box. In the Default Target Server Name (optional) box, type TESTSQLSERVER. In the Connect using area, select the Server authentication using the Login ID and password below option. In the Login ID box, type sa. Leave the Password box blank. Click the Requirements tab. Ensure that the Microsoft SQL Server check box is selected and the MySQL and Oracle check boxes are cleared.

8.

Add and configure a new SQL script for NewConnection2:


a. b. c. d.

In the SQL Scripts explorer, right-click NewConnection2 and click New Script. Change the name of the script to NewScript2. In the SQL Scripts explorer, click NewScript2, and then click the Script tab. In the script editor pane, add the following script:
CREATE TABLE TestTable (TestColumn1 CHAR NOT NULL PRIMARY KEY)

e.

Click the Runtime tab.

InstallShield 2010 User Guide

ISP-1600-UG00

841

Chapter 16: Configuring Servers Configuring SQL Support

f.

In the Script Execution area, select the Run Script During Install check box and ensure that the Run Script During Login and Run Script During Uninstall check boxes are cleared.

When you run the installation, it creates the TestDB database and adds a table called TestTable to that database.

Creating a Sample Installation that Creates an Oracle Schema by Running Customized SQL Script
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The following procedure demonstrates how to create an installation that creates an Oracle schema through customized SQL script.

Task

To create an installation that creates an Oracle schema on the target machine by running customized SQL script: 1. 2. 3.

Create a new Basic MSI or InstallScript MSI project. In the View List under Behavior and Logic, click Property Manager. Create three new properties that have the following names: IS_SQLSERVER_DATABASE2 IS_SQLSERVER_USERNAME2 IS_SQLSERVER_PASSWORD2

4. 5.

In the View List under Server Configuration, click SQL Scripts. Add and configure a new SQL connection:
a. b. c.

Right-click the SQL Scripts explorer and click New SQL Connection. InstallShield adds a new connection with the name NewConnection1 as the default name. In the SQL Scripts explorer, click the NewConnection1 item, and then click the General tab. In the Default Target Server Name (optional) box, type the following: Clear the Create Catalog If Absent check box. In the Connect using area, select the Server authentication using the Login ID and password below option. In the Login ID box, type scott.
ISP-1600-UG00 InstallShield 2010 User Guide

//sch01jsmith.installshield.com:1521/orcl

d. e. f.

842

Chapter 16: Configuring Servers Configuring SQL Support

g. h. i. 6.

In the Password box, type scott. Click the Requirements tab. Ensure that the Oracle check box is selected and the Microsoft SQL Server and MySQL check boxes are cleared.

Add and configure a new SQL script for NewConnection1:


a. b. c. d.

In the SQL Scripts explorer, right-click NewConnection1 and click New Script. Change the name of the script to NewScript1. In the SQL Scripts explorer, click NewScript1, and then click the Script tab. In the script editor pane, add the following script:
CREATE TABLESPACE TEST_TS LOGGING DATAFILE 'test01.dbf' SIZE 1M AUTOEXTEND ON NEXT 2M MAXSIZE UNLIMITED Go CREATE USER TEST_USER IDENTIFIED BY MYPSWD DEFAULT TABLESPACE TEST_TS QUOTA UNLIMITED on TEST_TS Go GRANT CONNECT TO TEST_USER Go GRANT DBA TO TEST_USER Go ALTER USER TEST_USER DEFAULT ROLE ALL Go

e. f.

Click the Runtime tab. In the Script Execution area, select the Run Script During Login check box and ensure that the Run Script During Install and Run Script During Uninstall check boxes are cleared.

7.

Add and configure a second new SQL connection:


a. b. c. d. e. f. g. h. i.

Right-click the SQL Scripts explorer and click New SQL Connection. InstallShield adds a new connection with the name NewConnection2 as the default name. In the SQL Scripts explorer, click the NewConnection2 item, and then click the Advanced tab. In the Target Catalog Property Name list, select IS_SQLSERVER_DATABASE2. In the Server Authentication Login ID Property Name list, select IS_SQLSERVER_USERNAME2. In the Server Authentication Password Property Name list, select IS_SQLSERVER_PASSWORD2. Click the General tab. In the Catalog Name box, type TEST_USER. Clear the Create Catalog If Absent check box. In the Default Target Server Name (optional) box, type the following:

//sch01jsmith.installshield.com:1521/orcl

InstallShield 2010 User Guide

ISP-1600-UG00

843

Chapter 16: Configuring Servers Managing COM+ Applications and Components

j. k. l.

In the Connect using area, select the Server authentication using the Login ID and password below option. In the Login ID box, type TEST_USER. In the Password box, type MYPSWD.

m. Click the Requirements tab. n. 8.

Ensure that the Oracle check box is selected and the Microsoft SQL Server and MySQL check boxes are cleared.

Add and configure a new SQL script for NewConnection2:


a. b. c. d.

In the SQL Scripts explorer, right-click NewConnection2 and click New Script. Change the name of the script to NewScript2. In the SQL Scripts explorer, click NewScript2, and then click the Script tab. In the script editor pane, add the following script:
CREATE TABLE TestTable (TestColumn1 CHAR NOT NULL PRIMARY KEY)

e. f.

Click the Runtime tab. In the Script Execution area, select the Run Script During Install check box and ensure that the Run Script During Login and Run Script During Uninstall check boxes are cleared.

When you run the installation, it creates the TEST_USER user and a TestTable table on the TEST_USER schema.

Managing COM+ Applications and Components


The Component Services view enables you to manage COM+ applications and components for your installation package. You can manage both COM+ server applications and application proxies. A COM+ application proxy consists of a subset of the attributes of the server application, and it enables remote access from a client machine to the machine where the application resides. Note the following information regarding component services in InstallShield:

Only non-system COM+ applications can be added to your project. Therefore, InstallShield displays only non-system COM+ applications under the COM+ Applications explorer in the Component Services view. COM+ server applications can be installed on only Windows 2000 operating systems and later. COM+ server applications can be installed on only Windows 2000 operating systems and later. COM+ application proxies can be installed on any operating system that supports distributed component object model (DCOM); this includes machines that are running Windows NT or Windows 9x if DCOM is also installed. However, if DCOM is not installed, the application proxy will not work. InstallShield does not have the ability to check if DCOM is installed on a client machine. An application proxy is available for COM+ server applications only, not for library applications.

844

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing COM+ Applications and Components

The look and feel of the Component Services view is similar to that of the Component Services administrative tool in the Control Panel.

Managing COM+ Server Applications


Task To configure the installation settings for a COM+ server application: 1. 2. 3.

In the View List under Server Configuration, click Component Services. In the Component Services explorer, select the COM+ application that you would like to configure if you have not already done so. On the Installation property sheet, select the Server check box.

Note: You must select the Proxy check box, the Server check box, or both check boxes. Once you clear one of these check boxes, the other check box remains selected but it is no longer available; this prevents you from clearing both check boxes. 4. 5.

Select the Refresh the COM+ settings from the client machine at build check box if appropriate. If your installation does not include the COM+ application proxy support, clear the Proxy check box

When you add a COM+ server application to your installation, a corresponding component is created and added to all of the features that are associated with the proxy component. This component has the COM+ applications server .dll files.

Note: If the selected COM+ application includes both server and proxy installations, you can add installation conditions so that the appropriate COM+ application is installed on the target machine. For more information, see Including a COM+ Application that Targets Servers and Client Machines.

Managing COM+ Application Proxies


The COM+ application proxy support configures the system settings that enable remote access from a client machine to the machine where the server application resides. You may also need to add the client application to your installation.

Task

To configure the installation settings for a COM+ application proxy: 1. 2.

In the View List under Server Configuration, click Component Services. In the Component Services explorer, select the COM+ application that you would like to configure if you have not already done so.

InstallShield 2010 User Guide

ISP-1600-UG00

845

Chapter 16: Configuring Servers Managing COM+ Applications and Components

3. 4.

On the Installation property sheet, select the Proxy check box. Clear the Server check box if your installation does not include the COM+ server application.

Note: You must select the Proxy check box, the Server check box, or both check boxes. Once you clear one of these check boxes, the other check box remains selected but it is no longer available; this prevents you from clearing both check boxes. 5.

In the Remote Server Name box, specify the name of the remote server computer where the application resides. You can type the exact name or use the default [REMOTESERVERNAME] property, which is automatically created when you select the Proxy check box for a COM+ application in your installation.

Note: The default value for the [REMOTESERVERNAME] property is the name of the machine used to add the COM+ application to the installation project in InstallShield. To change the value of the [REMOTESERVERNAME] property, use the Property Manager view. If you would like the end user to be able to specify the remote server, add a Remote Server edit field control to an end-user dialog in the Dialogs view. Set the Property value of this control to REMOTESERVERNAME. 6.

Select the Enable distributed COM on the client machine check box if appropriate. Clear this check box if you know that distributed component object model (DCOM) is already enabled on all client machines and you will not have administrative privileges on them. If you select this check box, Y is written at installation time to the EnableDCOM entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole registry key to enable DCOM.

Note: End users can enable or disable DCOM on their machines using the Component Services administrative tool in the Control Panel. However, the application proxy will not work on a client machine if DCOM is disabled on that machine. For this reason, you may want to select the Enable distributed COM on the client machine check box. If an end user uninstalls the application proxy support, the EnableDCOM registry entry is not changed, even if the installation process involved changing this registry entry to Y on the target machine.

When you add a COM+ application proxy to your installation, a corresponding component is created and added to all of the features that are associated with the server component. This component has the COM+ applications server .dll files. These server files are installed on the client machine for the type libraries.

Note: If the selected COM+ application includes both server and proxy installations, you can add installation conditions so that the appropriate COM+ application is installed on the target machine. For more information, see Including a COM+ Application that Targets Servers and Client Machines.

846

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Including a COM+ Application that Targets Servers and Client Machines


If you want your installation to be used to install the server application on the server as well as the application proxy support on client machines, you can create installation conditions so that the appropriate component is installed on the target machine. The following example procedure illustrates how you can do this.

Task

To include a COM+ application in an installation that targets both servers and client machines: 1. 2.

In the Property Manager view, create a new property called COMPLUSTYPE. In the Dialogs view, add a radio button group control to a new or existing end-user dialog, and set the Property value of this control to COMPLUSTYPE. This radio button group will enable end users to specify which installation they would like to run: server or proxy. Add a radio button for the Server option to the radio button group, and set the Value property of this control to Server. Add a radio button for the Proxy option to the radio button group, and set the Value property of this control to Proxy. In the Component Services view, select the COM+ application that you would like to configure. On the Installation property sheet, set the parameters for server installations and application proxies. In the Condition box under the Server check box, type the following:
COMPLUSTYPE="Server"

3. 4. 5. 6. 7.

8.

In the Condition box under the Proxy check box, type the following:
COMPLUSTYPE="Proxy"

Managing Internet Information Services


Internet Information Services (IIS) is a Web server developed by Microsoft. It provides a secure platform for building and deploying Web-based applications, managing Web sites, and publishing information to the Internet or an intranet. The Internet Information Services view in InstallShield enables you to create and manage new IIS Web sites, applications, virtual directories, application pools, and Web service extensions.

Version-Specific Information for IIS Support in InstallShield


Following is information about specific versions of IIS:

IIS is included with Windows 2000 Server and later and Windows XP and later operating systems. IIS 6 is available only on Windows Server 2003 platforms. IIS 7 is available on Windows Vista and Windows Server 2008. IIS is not installed automatically by default.
ISP-1600-UG00 847

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Some of the Web site and virtual directory settings in the Internet Information Services view apply to specific versions of IIS. Version-specific information is noted for these settings in the inline help panes in InstallShield. If you configure a version-specific property but a target system does not have the corresponding version of IIS, IIS ignores the version-specific property. For example, IIS 7 and IIS 6 do not support the Application Protection property for applications or virtual directories. In the Internet Information Services view, this property is configured through a setting in the Application Settings area for an application or a virtual directory. When you select this setting in the Internet Information Services view, the help pane that is displayed in the lower-right corner indicates that the setting does not apply to IIS 6 or later. If you configure this setting and an end user installs your product on a target system that has IIS 6 or later, the Application Protection setting is ignored.

Web service extensions, application pools, and all of the associated properties are available only on machines with IIS 6 or later. On systems with IIS 7, Web service extensions require that the IIS Metabase and IIS 6 Configuration Compatibility feature be installed. If it is not installed, the installations log file may show error -2147467259 to inform you that this feature may be required. For information on how to determine whether a Windows Vista or Windows Server 2008 system has the IIS Metabase and IIS 6 Configuration Compatibility feature installed, see Determining If a Target System Has IIS 6 or Earlier or the IIS 6 Metabase Compatibility Feature.

Windows Vista and Windows Server 2008 systems store settings for individual Web sites, applications, and virtual directories in configuration files that are located at the physical path that you specify in your installation projectin the Content Source Path (Local or UNC) setting in the Internet Information Services view. Therefore, each Web site, application, or virtual directory should have a unique physical path. Otherwise, you may notice unexpected behavior, especially in testing environments, if you have two different applications or virtual directories with the same physical path. For example, if you have two virtual directories that have the same physical path, and directory browsing is enabled in one but not the other, the directory browsing setting for the second virtual directory that is created overrides the setting for the first virtual directory.

On systems that have Windows Server 2003, if IIS 6 is not installed, other IIS directories and sites are still created. IIS 6-specific settings are skipped. IIS 5.1 for Windows XP Professional can service only one Web site at a time. This is a limitation of IIS 5.1. InstallShield supports version 5 and later of IIS.

Determining Which Version of IIS Is Installed

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

848

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

When you add a Web site in the Internet Information Services view, an entry is added to the System Search view to search for the version of IIS that is installed on the target system. The IIS_VERSION property is set by entries in the RegLocator and AppSearch tables (available in the Direct Editor), which determine the version of IIS that is installed. The IIS_VERSION property contains the IIS version number. If you need to determine the IIS version that is installed, check the value of this property.

Run-Time Requirements for IIS Support


IIS support in InstallShield installations works only if IIS is installed on the target machine and the end user has administrative privileges. During the installation of a package that includes IIS settings, an InstallShield installation checks for the existence of IIS on the target machine. If IIS is not installed, the installation displays a dialog informing the end user that they do not have IIS installed. The dialog gives the end user the option to abort, retry, or ignore:

If the end user chooses to abort, the installation stops. If the end user installs IIS and then chooses to retry, the installation checks for IIS again, and continues with the installation. If the end user does not install IIS but still chooses to retry, the installation checks for IIS again and then displays the dialog again. If the end user chooses to ignore, the installation continues, but IIS Web sites, applications, virtual directories, and other IIS elements are not configured.

Note: InstallShield does not support the creation of Web sites on target machines other than the one on which the installation is running.

Project: If you are creating an application pool in an InstallScript project that you want to be associated with a virtual directory or Web site, you must create the application pool and the virtual directory or Web site within the same component. If you do this, the application pool is created before the virtual directory or Web site is created. This is a requirement of IIS 6 and is not a limitation for Basic MSI or InstallScript MSI projects.

Specifying Whether a Web Server Should Allow the CMD Command to Be Used for SSI #exec Directives
Server-side include (SSI) directives instruct a Web server to insert content into a Web page. The #exec type of directive enables the Web server to include the output of a shell command in a Web page. 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.

InstallShield 2010 User Guide

ISP-1600-UG00

849

Chapter 16: Configuring Servers Managing Internet Information Services

InstallShield lets you specify how your installation should configure the SSIEnableCmdDirective registry value on target systems. If you do not want your installation to change the SSIEnableCmdDirective registry value, you can also specify that. Because of security concerns, the default SSIEnableCmdDirective registry value is FALSE (0); the FALSE (0) value prevents end users from running unauthorized server-side executable files.

Task

To specify whether a Web server should allow the CMD command to be used for SSI #exec directives: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the center pane, click the Web Sites explorer. InstallShield displays the Web server settings in the right pane. For the SSIEnableCmdDirective registry value setting, select the appropriate option:

IgnoreDo not change the SSIEnableCmdDirective registry value on the target system. This is the default option. FALSE (0)Set the SSIEnableCmdDirective registry value on the target system to 0. This prevents the #exec CMD directive of server-side includes to be used to execute shell commands. Note that if you select this value and an IIS Web server has applications that rely on #exec CMD directives, those applications may stop working properly after your installation projects Web site and virtual directory are installed. TRUE (1)Set the SSIEnableCmdDirective registry value on the target system to 1. This allows the #exec CMD directive of server-side includes to be used to execute shell commands.

If you select the FALSE or TRUE options, InstallShield stores the valueeither 0 for FALSE or 1 for TRUEin the INSTALLSHIELD_SSI_PROP property. If one or more Web sites, virtual directories, application pools, or Web service extensions in your installation are installed on a target system and you selected the FALSE or TRUE options for the SSIEnableCmdDirective registry value setting, the SSIEnableCmdDirective registry value is updated on the target system.

Note: If your product is uninstalled from a target system, the SSIEnableCmdDirective registry value is not changed, even if its value was changed during installation.

Creating a Web Site and Adding an Application or a Virtual Directory


The Internet Information Services view in InstallShield is where you add an IIS Web site to your project. It is also where you can add applications and virtual directories to a Web site. Note that you can add a Web site without any applications or virtual directories if you associate the Web site with a component.

850

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Task

To create a Web site on the target system at run time: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. Right-click the Web Sites explorer and click Add Web Site. InstallShield adds a new Web site. Select the Web site to configure its settings.

Tip: InstallShield lets you specify the TCP port and site numbers for a Web site in your project. These settings help determine whether a new Web site is created or an existing one is updated at run time. To learn more, see Configuring the TCP Port and Site Numbers.

Task

To create an application on the target system at run time: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, right-click the Web site that should contain the application and click New Application. InstallShield adds a new application. Select the application to configure its settings.

Task

To create a virtual directory on the target system at run time: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, right-click the Web site that should contain the virtual directory and click New Virtual Directory. InstallShield adds a new virtual directory. Select the virtual directory to configure its settings.

Note: To learn how Web sites, applications, and virtual directories are associated with components and features, see Feature and Component Associations for IIS Support.

Scanning an IIS Web Site and Importing Its Settings into an InstallShield Project

Edition: The ability to import IIS data into an InstallShield project is available only in the Premier edition of InstallShield.

InstallShield includes support for scanning an existing IIS Web site, recording IIS data about the Web site, and importing those settings into the Internet Information Services view of an InstallShield project. Once you have imported the data into a project, you can make changes to the IIS settings as needed, and build an installation that creates or maintains an IIS Web site.

InstallShield 2010 User Guide

ISP-1600-UG00

851

Chapter 16: Configuring Servers Managing Internet Information Services

The IIS scanner (IISscan.exe) is a command-line tool that scans an IIS Web site and records the values of the settings that you can configure in the Internet Information Services view in InstallShield. IISscan.exe creates an XML file that contains all of the values. You can use this XML file to import the values into the Internet Information Services view.
IISscan.exe

is installed in the following location:

InstallShield Program Files Folder\System\iisscan.exe

Task

To scan an existing Web site and record all of the IIS data that can be configured in the Internet Information Services view: 1. 2.

Place the IISscan.exe tool on the server that has the IIS Web site that you want to scan. At the command prompt, enter the command-line statement that launches the IIS scanner to scan a specific Web site. Following is a sample statement:
iisscan.exe -website "Site Name" -outfile "C:\PathToFile\FileName.xml"

For more information about IISscan.exe, see IISscan.exe. The IIS scanner creates an XML file that contains the IIS data for the specified Web site.

Task

To import the data from the XML file into an InstallShield project: 1. 2. 3. 4.

Obtain the XML file that the IIS scanner created, and place it in a location that can be accessed from the machine that has InstallShield. In the View List under Server Configuration, click Internet Information Services. Right-click the Web Sites explorer and click Import Web Site. The Open dialog box opens. Select the XML file that the IIS scanner created, and then click Open.

InstallShield imports the Web site and its settings into the Internet Information Services view. All of the Web sites settings, virtual directories, and applications are configured in this view during the import.

Tip: InstallShield lets you configure filters if you want to prevent certain IIS datasuch as Web sites, applications, virtual directories, application pool, or any of their settingsfrom ever being imported into the Internet Information Services view. To learn more, see Filtering IIS Data When Importing a Web Site and Its Settings into an InstallShield Project.

Filtering IIS Data When Importing a Web Site and Its Settings into an InstallShield Project

Edition: The ability to import IIS data into an InstallShield project is available only in the Premier edition of InstallShield.

852

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

When you use an XML file that is generated by the IIS scanner to import an IIS Web site and its settings into the Information Services view, you may find that certain IIS settings are imported, even though you do not need them to be configured in your installation. To avoid having these settings configured every time that you use an XML file to import IIS settings, you can edit Filters.xml. This file enables you to specify any IIS settings that you want the import to ignore.
Filters.xml

is in the following location:

InstallShield Program Files Folder\Support

The file must remain in this location after you edit it; otherwise, the IIS import will not work properly.

Tip: You can also use the Filters.xml file to control which registry items should be excluded during COM extraction. For more information, see Filtering Registry Changes for COM Extraction. The Filters.xml file also lets you control which files should be included or excluded during dependency scanning. For more information, see Filtering Files in Dependency Scanners.

Excluding IIS Data


The <Exclude> element in the Filters.xml file is where you add subelements for each of the IIS items (Web sites, applications, virtual directories, and application pools) that you do not want to be imported. You can also add subelements for each of the IIS settings that you do not want to be imported. Any items and settings that are listed here will not be added to the Internet Information Services view of your project.

Examples for Specifying IIS Data in the <Exclude> Element


To prevent an application pool named TestAppPool from being imported into the Internet Information Services view, add the following line within the <Exclude> element.
<IisScanItem name="TestAppPool" type="4"/>

The type is required. The following table shows the available IIS item types:
Table 16-2: Recognized Attributes for the type Attribute of the <IisScanItem> Subelement Attribute Value 1 2 3 4 Description Web site Application Virtual directory Application pool

To prevent an IIS setting with a specific value from being imported into the Internet Information Services view, add the following line within the <Exclude> element.
<IisScanProperty name="PropertyName" value="PropertyValue"/>

If this line is within the <Exclude> element, InstallShield blocks a setting named PropertyName with a value that equals or contains PropertyValue.

InstallShield 2010 User Guide

ISP-1600-UG00

853

Chapter 16: Configuring Servers Managing Internet Information Services

Note: The property names and values are not Windows Installer properties and values. They are abbreviations for the names and values of settings that InstallShield lets you configure in the Internet Information Services view.

Important: Ensure that your XML code is well formed; if its not well formed, all of the filters fail. In most cases, you can identify improperly formed XML code by opening the Filters.xml file in Internet Explorer. You should be able to expand and contract the <Filters>, <Include>, and <Exclude> elements; if you cannot, check the code for errors. If you add subelements to the <Exclude> or <Include> elements, be sure that you do not place them within the commented-out section, since InstallShield ignores that area of the Filters.xml file.

The following sample XML code shows the format of the Filters.xml file:
<Filters> <Include> <!--Instructions on how to add files to this element. --> <File name="mfc42.dll" We="needthis"/> </Include> <Exclude> <!--Instructions on how to add files to this element. --> <Registry key="HKEY_CLASSES_ROOT\Interface\{00020404-0000-0000-C000-000000000046}"/> <File name="12520437.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> <File name="12520850.cpx" path="[SystemFolder]" W2kSp4="WPF" WxpSp2="WPF" W2k3Sp1="WPF" WinMe="WPF"/> <IisScanProperty name="AppMappings" value="*;;*;0" /> <IisScanProperty name="CustomErrors" value="C:\WINDOWS\help\iisHelp\common" /> </Exclude> </Filters>

Creating a Nested Virtual Directory


You can create a virtual subdirectory under an existing virtual directory. You can also create a virtual subdirectory under a virtual directory that is being installed as part of your installation. The parent virtual directory must be installed before the virtual subdirectory.

Project: For InstallScript projects, if a parent virtual directory should be installed before its child virtual subdirectory, the component that contains the parent virtual directory must be installed before the component that contains the child virtual subdirectory.

Task

To create a virtual directory under an existing virtual directory: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site that should contain the nested virtual directory. Right-click the new Web site and click New Virtual Directory. InstallShield adds a new virtual directory.
ISP-1600-UG00 InstallShield 2010 User Guide

854

Chapter 16: Configuring Servers Managing Internet Information Services

4. 5.

Click the General tab. In the Name setting, indicate the name of the existing directory, as well as the name of the nested virtual subdirectory that you want to create. Separate both names with a slash. For example, to create a virtual directory called MySubDirectory under the existing virtual directory called VirtualDirectory, enter the following:
VirtualDirectory/MySubDirectory

Note: If the parent directory does not already exist on the target system, the target system displays an error when the end user opens the directory in the IIS Manager.

Configuring the TCP Port and Site Numbers


InstallShield lets you specify the TCP port and site numbers for a Web site in your project. These settings help determine whether a new Web site is created or an existing one is updated at run time. They also affect whether the Web site settings that are configured in the Internet Information Services view are applied to a Web site on the target system.

Task

To specify the TCP port and site numbers for a Web site: 1. 2. 3. 4.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site that you want to configure. Click the Web Site tab. In the TCP Port Number and Site Number boxes, enter the appropriate numbers.

InstallShield 2010 User Guide

ISP-1600-UG00

855

Chapter 16: Configuring Servers Managing Internet Information Services

Run-Time Behavior
At run time, the installation creates the Web site, applications, and virtual directories according to the following rules:
Table 16-3: Run-Time Results for Various Sample TCP Port Number and Site Number Setting Values TCP Port Number Setting in InstallShield 0 Site Number Setting in InstallShield Any non-zero number

Result at Run Time Since the TCP Port Number setting is 0 but the Site Number setting is not 0, the installation installs the Web sites applications and virtual directories to the first site number on the system. The specified site number is ignored. For example, if the first site number on the target system is 1, the installation installs the Web site's applications and virtual directories under site number 1, even if a different non-zero number such as 3 is specified for the Site Number setting. The installation does not apply any of the Web site settings that are configured in the Internet Information Services view to the Web site on the target system.

80 (a non-zero number)

0 (the default value)

If the specified TCP port exists on the target system, the installation installs the applications and virtual directories to the Web site that is running on the TCP portin this example, port 80. The installation does not apply any of the Web site settings that are configured in the Internet Information Services view to the Web site on the target system. If the TCP port does not exist on the target system, a new Web site is created with the Web site settings that are configured in the project. In addition, the installation installs the Web sites applications and virtual directories.

856

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Table 16-3: Run-Time Results for Various Sample TCP Port Number and Site Number Setting Values (cont.) TCP Port Number Setting in InstallShield 81 (a non-zero number) Site Number Setting in InstallShield 3 (a non-zero number)

Result at Run Time If the specified TCP port and site number exist on the target system, the installation installs the applications and virtual directories under the Web site whose site number matches the specified onein this example, site number 3. The installation does not apply any of the Web site settings that are configured in the Internet Information Services view to the Web site on the target system. If the TCP port exists on the target system but the site number does not, the installation installs the new Web site, plus its applications and virtual directories, to the existing port with the new site number. In addition, the installation configures the Web sites properties that are set in the Internet Information Services view. If the TCP port does not exist on the target system but the site number does, the installation installs the new Web site, plus its applications and virtual directories, to this TCP port. In addition, the installation configures the Web sites properties that are set in the Internet Information Services view.

Installing an IIS Web Site and Its Applications and Virtual Directories to the Next Available New Site Number
The following procedures demonstrate how to install an IIS Web site and its applications and virtual directories to the next available new site number. Note that the first procedure is for Basic MSI and InstallScript MSI projects. The second procedure is for InstallScript projects.

Task

To install to the next available new site number during a Basic MSI or InstallScript MSI installation: 1.

Create a new Windows Installer property and set its value to INSTALLSHIELD_IIS_NEXT_NEW_SITE_NUMBER:
a. b. c.

In the View List under Behavior and Logic, click Property Manager. Click the New Property button. InstallShield adds a new row at the bottom of the view. In the Name column, type a new property. The property must be in uppercase letters and enclosed within brackets; for example:
[MYPROPERTY]

d.

In the Value column, enter the following value:


INSTALLSHIELD_IIS_NEXT_NEW_SITE_NUMBER

2.

Specify the property for the Web sites site number:


a. b.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site that you want to configure.
ISP-1600-UG00 857

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

c.

For the Site Number setting, enter the property that you created in step 1c. It must be in uppercase letters and enclosed within brackets.

At run time, the installation installs the Web site and its applications and virtual directories to the next available new site number.

Task

To install to the next available new site number during an InstallScript installation: 1.

Create a new string entry and set its value to INSTALLSHIELD_IIS_NEXT_NEW_SITE_NUMBER:


a. b. c.

In the View List under User Interface, click String Editor. Click the New String Entry button. The String Entry dialog box opens. In the String Identifier box, enter a new variable name; the variable name must be in uppercase letters; for example:
MYPROPERTY

d.

In the Value box, enter the following value:


INSTALLSHIELD_IIS_NEXT_NEW_SITE_NUMBER

2.

Specify the variable for the Web sites site number:


a. b. c.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site that you want to configure. For the Site Number setting, enter the variable that you created in step 1c. It must be in uppercase letters.

At run time, the installation installs the Web site and its applications and virtual directories to the next available new site number.

Specifying the IIS Host Header Name for a Web Site


InstallShield lets you specify the host header name to identify an IIS Web site that is installed during your installation. Host headers (also known as domain names) enable you to assign more than one Web site to an IP address on a Web server.

Task

To specify a host header name for a Web site: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site whose host header name you want to specify. For the Host Header Name setting, type the host header name that you want to use. For example:
www.mycompany.com

858

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Specifying the SSL Certificate for a Web Site


A server certificate enables users to authenticate your Web server, check the validity of the Web content, and establish a secure connection. InstallShield lets you include a server certificate for a Web site in your installation so that it can be installed at run time.

Task

To specify a SSL certificate that should be installed for a Web site: 1. 2. 3. 4. 5.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site whose SSL certificate you want to specify. For the SSL Certificate setting, click the ellipsis button (...). The Open dialog box opens. Select the security certificate file (.cer or .pfx) that you want to be installed, and then click Open. If the certificate requires a password, specify it for the SSL Certificate Password setting.

InstallShield stores the .cer file in the Binary table. At run time, when the installation installs the Web site and its virtual directories, it also installs the SSL certificate.

Adding Files to an IIS Virtual Directory


Task To add a file to an IIS virtual directory: 1. 2. 3. 4. 5. 6. 7. 8.

Add an IIS Web site to your project if you have not already done so. InstallShield automatically adds the predefined path [IISROOTFOLDER] to the Files and Folders view. In the View List under Application Data, click Files and Folders. In the Feature list, select the feature with which you want the file associated. In the Destination computers folders pane, add the file to the [IISROOTFOLDER] folder, or a subfolder of the [IISROOTFOLDER] folder. In the View List under Server Configuration, click Internet Information Services. Create a new virtual directory. In the Web Sites explorer, click the virtual directory that you created. In the Content Source Path (Local or UNC) setting, click the ellipsis button (...). The Browse for Directory dialog box opens. In a Basic MSI or InstallScript MSI project, this dialog box enables you to select a Windows Installer property (such as [IISROOTFOLDER]) or create a new one. In an InstallScript project, this dialog box enables you to select an InstallScript variable (such as <IISROOTFOLDER>) or create a new one. By default, the files are stored in IISROOTFOLDER. Enter the same target directory as the one that contains the new file that you added in the Files and Folders view.

9.

10. Click OK.

InstallShield 2010 User Guide

ISP-1600-UG00

859

Chapter 16: Configuring Servers Managing Internet Information Services

At installation, files are copied to the target directory folder. In addition, the virtual directory is configured for that folder on the target system if IIS is present.

Removing Applications and Virtual Directories from the Internet Information Services View
Task To remove an application or a virtual directory from your installation: 1. 2.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, right-click the application or virtual directory and click Delete.

Adding Application Pools


An application pool is a group of configuration settings that specify how one or more Web applications are routed to one or more worker processes. InstallShield lets you create application pools and associate Web sites, applications, and virtual directories with those application pools.

Project: If you are creating an application pool in an InstallScript project and you want the application pool to be associated with a virtual directory, application, or Web site, you must create the application pool and the virtual directory, application, or Web site within the same component. If you do this, the application pool is created before the virtual directory, application, or Web site is created. This is a requirement of IIS 6 and later, and it is not a limitation for Basic MSI or InstallScript MSI projects.

Note: Application pools are available only on machines with IIS 6.0 or later installed.

Task

To add a new application pool in the Internet Information Services view: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. Right-click the Application Pools explorer and click Add Application Pool. InstallShield adds a new application pool item. Rename the new application pool item, and configure its settings.

860

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Removing Application Pools from the Internet Information Services View


Task To remove an application pool from your installation: 1. 2.

In the View List under Server Configuration, click Internet Information Services. In the Application Pools explorer, right-click the application pool and click Delete.

Adding Web Service Extensions


A Web service extension is an IIS feature that extends the basic IIS functionality beyond serving static content. Examples of Web service extensions are active server pages (.asp), ASP.NET, and server-side includes (SSI). InstallShield lets you add Web service extensions to your installation.

Note: Web service extensions are available only on machines with IIS 6.0 or later installed. On systems with IIS 7, Web service extensions require that the IIS Metabase and IIS 6 Configuration Compatibility feature be installed. For more information, see Version-Specific Information for IIS Support in InstallShield.

Task

To add a web service extension to your installation: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. Right-click the Web Service Extensions explorer and click Add Web Service Extension. InstallShield adds a new Web service extension. Rename the new Web service extension item, and configure its settings.

Removing Web Service Extensions from the Internet Information Services View
Task To remove a Web service extension from your installation: 1. 2.

In the View List under Server Configuration, click Internet Information Services. In the Web Service Extension explorer, right-click the Web service extension and click Delete.

InstallShield 2010 User Guide

ISP-1600-UG00

861

Chapter 16: Configuring Servers Managing Internet Information Services

Feature and Component Associations for IIS Support


There is a one-to-many relationship between components and IIS data (that is, Web sites, applications, virtual directories, application pools, or Web service extensions). Therefore, you can associate more than one IIS element with a single component. If a component is being installed, any Web sites, applications, virtual directories, application pools, and Web service extensions that are associated with the component are created at run time.

Project: If a Web site is associated with a component in an InstallScript project, any applications or virtual directories that are added to that Web site must be associated with the same component. Therefore, if you try to change the component for a Web site that contains one or more applications or virtual directories, InstallShield displays a message box to inform you that it will also make the same component change for all of that Web sites applications and virtual directories; InstallShield also displays this message box if you try to change the component for any applications or virtual directories in a Web site. In either case, the message box enables you to proceed or cancel the component change. Note that for Basic MSI and InstallScript MSI projects, keeping a Web site in the same component as all of the Web sites applications and virtual directories is not required, but it is recommended. If you are creating an application pool in an InstallScript project that you want to be associated with an application, virtual directory, or Web site, consider creating the application pool and the other IIS data within the same component. If you do this, the application pool is created before the virtual directory, application, or Web site is created, which is a requirement of IIS 6. This is not required for Basic MSI or InstallScript MSI projects.

At any time, you can use the Internet Information Services view to change which component contains the Web site, application, virtual directory, application pool, or Web service extension.

Task

To associate a Web site, application, virtual directory, application pool, or Web service extension with a different component in your project: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the explorer, click the Web site, application, virtual directory, application pool, or Web service extension that you want to associate with a component. In the Component setting, select the name of the existing component that should contain the selected IIS data. You can click the ellipsis button (...) to select an existing component or create a new one for the IIS data.

Tip: If you delete a component in your project, any Web sites, applications, virtual directories, application pools, and Web service extensions that are associated with the component are simultaneously removed from your project.

Uninstalling Web Sites, Applications, and Virtual Directories


Web sites that are created by an installation are never removed unless both of the following conditions are true:

The Web site no longer contains applications or virtual directories.

862

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

The value for the Delete on Uninstall setting for the Web site in the Internet Information Services view is Yes.

Note: If a Web site is associated with a component, the Delete on Uninstall setting for the Web site corresponds with the Permanent setting for that component in a Basic MSI or InstallScript MSI, or with the Uninstall setting for that component in an InstallScript project. That is, if you select or clear the Delete on Uninstall setting for a Web site, InstallShield automatically updates the value of the components Permanent setting or Uninstall setting, as appropriate.

If a component is uninstalled, all of its Web sites, applications, and virtual directories are uninstalled. A component is not uninstalled if it is configured to be permanent. For more information, see Specifying Whether a Components Files and Other Associated Data Are Uninstalled During Uninstallation.

Uninstalling Web Service Extensions and Application Pools


Note: Web service extensions, application pools, and associated properties are available only on machines with IIS 6.0 or later installed. On systems with IIS 7, Web service extensions require that the IIS Metabase and IIS 6 Configuration Compatibility feature be installed. For more information, see Version-Specific Information for IIS Support in InstallShield.

Any Web service extensions and application pools installed in the IIS Manager that have identical names as the Web service extensions and application pools in an installation will always be uninstalled when the features with which they are associated are uninstalled unless their components are marked as permanent. Even if the Web service extension or application pool was originally created by something other than the installation, it will be removed from the target system upon uninstallation if the names (of the Web service extensions and application pools) match those in the installation. One exception is that the default application pool, named DefaultAppPool, will never be removed by the uninstallation.

Task

To configure a Web service extension to be uninstalled during uninstallation: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Web Service Extensions explorer, select the Web service extension. For the Mark Component as Permanent setting, select No.

Task

To configure an application pool to be uninstalled during uninstallation: 1. 2. 3.

In the View List under Server Configuration, click Internet Information Services. In the Application Pool explorer, select the application pool. For the Mark Component as Permanent setting, select No.

If Yes is selected for the Mark Component as Permanent setting, the Web service extension or application pool is left on the target system after uninstallation.
InstallShield 2010 User Guide ISP-1600-UG00 863

Chapter 16: Configuring Servers Managing Internet Information Services

Tip: Changing the value of the Mark Component as Permanent setting affects the value of the Permanent setting (in Basic MSI and InstallScript MSI projects) or the Uninstall setting (in InstallScript projects) for the component that contains the Web service extension or the application pool. Therefore, if you select Yes for the Mark Component as Permanent and the component contains other data, such as files, shortcuts, and registry entries, the IIS data, as well as the other data in the component, are not uninstalled during uninstallation.

Setting the ASP.NET Version for a Web Site, Application, or Virtual Directory
InstallShield lets you set the ASP.NET version for a Web site, application, or virtual directory in your installation. If you specify the ASP.NET version, after the Web site, application, or virtual directory is created, the installation runs the ASP.NET IIS Registration tool (Aspnet_regiis.exe) to map the Web site, application, or virtual directory to the version that you specify. If you specify the ASP.NET version for a Web site, IIS uses that value for the Web site that is created at run time, as well as for any of its applications and virtual directories.

Important: Microsoft does not recommend using the Aspnet_regiis.exe tool on Windows Vista and Windows Server 2008 systems because it has limited capabilities. As a result, you may need to manually define application mappings in the Internet Information Services view. To learn more, see Defining Application Mappings for a Web Site, Application or Virtual Directory. ASP.NET 3.0 does not include the Aspnet_regiis.exe tool. Therefore, you cannot set the ASP.NET version to version 3 of ASP.NET.

Task

To specify the ASP.NET version for a Web site, application, or virtual directory in your project: 1. 2.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site, application, or virtual directory whose ASP.NET version you want to specify. The settings for the Web site, application, or virtual directory are displayed on the right. For the ASP.NET Version setting, enter the complete version number of the .NET Framework that is required by your application, or select it from the list. For example, to specify version 2 of ASP.NET, type 2.0.50727. To specify version 1.1 of ASP.NET, type 1.1.4322.

3.

Tip: If the installation may be run on a 64-bit version of Windows with the .NET Framework, you can use the ASP.NET Platform setting for a Web site, application, or virtual directory to specify which ASP.NET platform (32 bit or 64 bit) should be used to map the Web site, application, or virtual directory to the ASP.NET version. Note that it is not possible to register 32-bit ASP.NET on a 64-bit system unless the Enable32BitAppOnWin64 property is set to true on the system.

864

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Considerations for Supporting IIS 6 on 64-Bit Platforms


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If your IIS installation may be run on a 64-bit version of Windows with the .NET Framework, you can use the ASP.NET Platform setting in the Internet Information Services view for a Web site, application, or virtual directory. This setting lets you specify which ASP.NET platform should be used to map the Web site, application, or virtual directory to the ASP.NET version. By default, this setting is not configured in InstallShield; if you do not change the value of this setting, the installation assumes that 32-bit support is needed. Depending on the value that you configure for the ASP.NET Platform and ASP.NET Version settings, the following behavior occurs by default at run time:

If the target system has a 32-bit version of Windows, the 32-bit version of the specified ASP.NET version is used. If the target system has a 64-bit version of Windows, and 64 bit was specified for the ASP.NET platform, the Enable32bitAppOnWin64 property on the target system needs to be set to False. Otherwise, using the 64-bit version of ASP.NET on a system that is configured to support the 32-bit version would cause ASP.NET to become corrupted. Thus, the installation is aborted to prevent damage to ASP.NET services. If the target system has a 64-bit version of Windows, and 32 bit was specified for the ASP.NET platform, the Enable32bitAppOnWin64 property on the target system needs to be set to True. Otherwise, using the 32-bit version of ASP.NET on a system that is configured to support the 64-bit version would cause ASP.NET to become corrupted. Thus, the installation is aborted to prevent damage to ASP.NET services.

You can set the Enable32bitAppOnWin64 property on a target system that has IIS 7 by configuring the Enable 32-Bit Applications setting for an application pool in the Internet Information Services view. At run time, the installation sets the Enable32bitAppOnWin64 property as appropriate for the application pool that is being installed. On systems with IIS 6, the Enable32bitAppOnWin64 property is a global property that affects all Web sites and applications on an IIS server. Since changing the value of that property at installation run time might cause other already installed Web sites and applications on that server to fail, installations that are created with InstallShield do not modify the Enable32bitAppOnWin64 property at run time if the target system has IIS 6. At run time, you can have your installation check the Enable32bitAppOnWin64 property on systems that have IIS 6. Depending on the requirements for your product and the results of that check, you may want the installation to skip a particular component that contains a 32-bit IIS 6 application, or a 64-bit IIS application, for example, and proceed with the rest of the file transfer. InstallShield includes a sample Windows Installer DLL file that detects how the Enable32bitAppOnWin64 property is set. Release and debug versions of the DLL file, as well as the Visual Studio 2008 C++ project that was used to create the file, are installed to the following location:
InstallShield Program Files Folder\Samples\WindowsInstaller\Detect IIS6 Compatibility

InstallShield 2010 User Guide

ISP-1600-UG00

865

Chapter 16: Configuring Servers Managing Internet Information Services

To use the Windows Installer DLL file in your project, you first need to create a custom action that calls the DetectIIS6AppPool32BitSupport function in the DetectIIS6Compat.dll file.

Task

To add a custom action that checks for support for 32-bit applications on systems that have IIS 6: 1. 2. 3. 4.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the center pane, right-click the Custom Actions explorer, point to New MSI DLL, and click Stored in Binary table. InstallShield adds a new custom action. Change the name of the action to something like DetectIIS6AppPool32BitSupport. Configure the custom actions settings in the right pane:

In the DLL Filename setting, specify the path to the DetectIIS6Compat.dll file. The typical path is:
<ISProductFolder>\Samples\WindowsInstaller\Detect IIS6 Compatibility\DetectIIS6Compat.dll

In the Function Name setting, enter the following name:


DetectIIS6AppPool32BitSupport

In the In-Script Execution setting, select Immediate Execution. Schedule the custom action as needed by selecting the appropriate option in one or more sequence settings. In the condition setting, enter the following condition:
VersionNT<600

This condition ensures that the custom action is not run on Windows Server 2008 or later or on Windows Vista or later, since these operating systems would have IIS 7 or later. At run time, the custom action sets the Windows Installer property ISIIS6APPPOOLSUPPORTS32BIT under certain conditions:
Table 16-4: Windows Installer Property for Checking for 32-Bit Application Support on IIS 6 Systems Target System Environment 32-bit Windows, IIS 6 (The value of Enable32bitAppOnWin64 is not relevant.) 64-bit Windows, IIS 6, Enable32bitAppOnWin64=true 64-bit Windows, IIS 6, Enable32bitAppOnWin64=false ISIIS6APPPOOLSUPPORTS32BIT is set to 1. Result ISIIS6APPPOOLSUPPORTS32BIT is set to 1.

ISIIS6APPPOOLSUPPORTS32BIT is not set.

You can use the ISIIS6APPPOOLSUPPORTS32BIT property in conditional statements. For example, if your product cannot be used on an IIS 6 server without 64-bit application support, enter the following conditional statement in the Install Condition setting of the General Information view:
866 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Not ISIIS6APPPOOLSUPPORTS32BIT

As an alternative, you can create an error custom action. At run time, an error would be displayed if the condition for that custom action is true. Thus, if your product cannot be used on an IIS 6 server without 64-bit application support, use the following condition for an error custom action:
ISIIS6APPPOOLSUPPORTS32BIT=1

If you have a component that should be installed only on IIS 6 servers that have 32-bit application support enabled, enter the following conditional statement in the Condition setting of the Components view:
ISIIS6APPPOOLSUPPORTS32BIT=1

Defining Application Mappings for a Web Site, Application or Virtual Directory


InstallShield lets you define mappings between file name extensions and the applications that process those files.

Task

To add, edit, or remove an application mapping: 1. 2. 3. 4.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site, application, or virtual directory that you want to configure. In the Application Mappings setting, click the ellipsis button (...). The Application Mappings dialog box opens. Do one of the following:
a. b. c.

To add a new mapping, click the Add button. The Application Extension Mapping dialog box opens. For more information, see Application Extension Mapping Dialog Box. To change an existing mapping, select the one that you want to edit, and then click the Edit button. To delete an existing mapping, select it and then click the Delete button.

Specifying Timeout Parameters for a Web Site, Application, or Virtual Directory


InstallShield lets you specify timeout parameters for a Web site, application, or virtual directory.

InstallShield 2010 User Guide

ISP-1600-UG00

867

Chapter 16: Configuring Servers Managing Internet Information Services

Task

To specify timeout parameters: 1. 2. 3. 4.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site, application, or virtual directory that you want to configure. In the Application settings area, click the Configuration button. The Application Mappings dialog box opens. In the Session Timeout (minutes) and the ASP Script Timeout (seconds) settings, specify the appropriate timeout values.

Determining If a Target System Has IIS 6 or Earlier or the IIS 6 Metabase Compatibility Feature
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

At run time, you can have your installation detect if the IIS Metabase and IIS 6 Configuration Compatibility feature is installed on a target system, or if IIS 6 or earlier is installed. Depending on the requirements for your product and the results of that detection, you may want the installation to exit and display an error message. For example, Web service extensions can be installed on systems that have IIS 6. On systems that have IIS 7, Web service extensions can be installed only if the IIS Metabase and IIS 6 Configuration Compatibility feature is installed. Thus, you might want to configure your installation to verify that IIS 6 is present or the IIS 6 compatibility feature is installed; if either of those conditions are false, the installation would exit and display an error message. InstallShield includes a sample Windows Installer DLL file that detects if either of the following are true:

The target system has IIS 7 and the IIS Metabase and IIS 6 Configuration Compatibility feature is installed. The target system has IIS 6 or earlier.

Release and debug versions of the DLL file, as well as the Visual Studio 2008 C++ project that was used to create the file, are installed to the following location:
InstallShield Program Files Folder\Samples\WindowsInstaller\Detect IIS6 Compatibility

To use the Windows Installer DLL file in your project, you first need to create a custom action that calls the DetectIIS6Interfaces function in the DetectIIS6Compat.dll file.

868

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Task

To add a custom action that checks for the IIS Metabase and IIS 6 Configuration Compatibility feature and for IIS 6 and earlier: 1. 2. 3. 4.

In the View List under Behavior and Logic, click Custom Actions and Sequences. In the center pane, right-click the Custom Actions explorer, point to New MSI DLL, and click Stored in Binary table. InstallShield adds a new custom action. Change the name of the action to something like DetectIIS6Interfaces. Configure the custom actions settings in the right pane:

In the DLL Filename setting, specify the path to the DetectIIS6Compat.dll file. The typical path is:
<ISProductFolder>\Samples\WindowsInstaller\Detect IIS6 Compatibility\DetectIIS6Compat.dll

In the Function Name setting, enter the following name:


DetectIIS6Interfaces

In the In-Script Execution setting, select Immediate Execution. Schedule the custom action as needed by selecting the appropriate option in one or more sequence settings.

If the IIS Metabase and IIS 6 Configuration Compatibility feature is installed or the target system has IIS 6 or earlier, the Windows Installer property ISIISMETABASECOMPATPRESENT is set to a value of 1. If the target system has IIS 7 or later and the compatibility feature is not installed, the property is not set. You can use the ISIISMETABASECOMPATPRESENT property in conditional statements. For example, if your product cannot be used on a system without the IIS Metabase and IIS 6 Configuration Compatibility feature or IIS 6 or earlier, enter the following conditional statement in the Install Condition setting of the General Information view:
ISIISMETABASECOMPATPRESENT

As an alternative, you can create an error custom action. At run time, an error would be displayed if the condition for that custom action is true. Thus, if your product cannot be used on a system without the IIS Metabase and IIS 6 Configuration Compatibility feature or IIS 6 or earlier, use the following condition for an error custom action:
Not ISIISMETABASECOMPATPRESENT

If you have a component that should be installed only on systems that have the IIS Metabase and IIS 6 Configuration Compatibility feature or IIS 6 or earlier, enter the following conditional statement in the Condition setting of the Components view:
ISIISMETABASECOMPATPRESENT=1

InstallShield 2010 User Guide

ISP-1600-UG00

869

Chapter 16: Configuring Servers Managing Internet Information Services

Configuring Advanced IIS Settings


Note: The advanced IIS settings apply to IIS 6 and earlier. IIS 7 ignores these settings.

When you select a Web site, application, or a virtual directory in the Web Sites explorer in the Internet Information Services view, the right pane exposes the most common IIS settings. You can use the Advanced area at the bottom of the right pane to configure other IIS settings that are not exposed in the other areas.

Task

To configure a setting that is not exposed in the Internet Information Services view: 1. 2. 3. 4. 5.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the Web site, application, or virtual directory whose advanced settings you want to configure. In the Other IIS Properties setting, click the ellipsis button (...). The Other IIS Properties dialog box opens. In the property list, select the property whose value you want to change, and then click the Change Value button. The Edit IIS Metabase Value dialog box opens. In the Value box, specify the new value.

If you change the default value for any advanced property, InstallShield adds the property, the value that you specify, and the additional required information to the ISIISProperty table.

Tip: For help on specific settings, see Metabase Property Reference on the MSDN Web site.

Configuring Custom Error Messages for a Web Site, Application, or Virtual Directory
When an end user tries to connect to a Web site and a hypertext transfer protocol (HTTP) error occurs, the end users browser displays a default message describing the error. You can have your installation configure IIS so that it uses custom error messages instead of the default error messages by mapping the HTTP error codes to a file or a URL.

Task

To configure custom error messages for a Web site, application, or virtual directory: 1. 2. 3.

Create a file that contains your custom error message and add it to your installation. In the View List under Server Configuration, click Internet Information Services. Select the Web site, application, or virtual directory for which you want to customize HTTP error messages. The settings for the Web site, application, or virtual directory are displayed on the right.

870

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

4. 5. 6.

In the Custom Errors setting, click the ellipsis button (...). The Custom Errors dialog box opens. Select the HTTP error code that you want to change and then click the Edit Properties button. The Error Mapping Properties dialog box opens. To map the error code to a file:
a. b.

In the Message Type list, select File. In the File box, type the path and file name that points to the custom error message in your installation, or click the browse button to locate the file.

To map the error code to a URL:


a. b.

In the Message Type list, select URL. In the URL box, type the URL that points to your custom error message.

Using Windows Installer Properties to Dynamically Modify IIS Settings


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For Basic MSI and InstallScript MSI projects, you can configure an IIS setting dynamically at run time through the use of Windows Installer properties. This enables you to let end users specify the name of the virtual directory, the TCP port, the site number, or other IIS settings for the Web sites, applications, virtual directories, application pools, and Web service extensions that they are installing on the target machine. Windows Installer uses MsiFormatRecord to resolve the property at run time. The installation writes the property and its value to the following registry key so that the value is available during uninstallation and repair: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield Uninstall Information\{ProductCode} Therefore, if your Web site is installed to an end userspecified site number, the Web site, its applications, and its virtual directories can be successfully uninstalled from that site number.

Tip: 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.

If you use a property for any of the passwords in the Internet Information Services view, the passwords are encrypted when they are stored in the registry.

InstallShield 2010 User Guide

ISP-1600-UG00

871

Chapter 16: Configuring Servers Managing Internet Information Services

Example
The following procedure demonstrates how to let end users specify during installation the user name used for anonymous access to the Web site. Note that you can substitute a hard-coded value with a property for any of the IIS settings in the Internet Information Services view that allow you to enter characters. The property that you specify in this view must be enclosed within square brackets, and the property name must be all uppercase; for example, [MYPROPERTY]. Step 5 of the procedure is slightly different, depending on the project type, since Windows Installer controls the user interface of Basic MSI installations, and the InstallScript engine controls the user interface of InstallScript MSI installations.

Task

To let end users specify the user name: 1. 2. 3. 4.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, click the Web site whose user name end users should be able to specify for anonymous access. For the Enable anonymous access setting, select Yes. In the Anonymous User Name setting, type the following:
[MYPROPERTY]

5.

Use the property in a dialog. This part of the procedure depends on which project type you are using.

For Basic MSI projects:


a. b.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs folder, and click the language under the dialog that should contain the User Name control. As an alternative, you can add a new dialog. Add an Edit Field control to the dialog, and set its Property property to the following:
MYPROPERTY

c.

For InstallScript MSI projects:


a. b.

In the View List under Behavior and Logic, click InstallScript. Find the dialog code in the OnFirstUIBefore event for the dialog that should contain the User Name control, and add a call to the Windows Installer API function MsiSetProperty. For example, if you want the user name to be the name that the end user specifies on the Customer Information dialog, you would add an MsiSetProperty call as shown in the following lines of code:
Dlg_SdCustomerInformation: nResult = SdCustomerInformation(szTitle, svName, svCompany, nUser); MsiSetProperty(ISMSI_HANDLE, "MYPROPERTY", svName); if (nResult = BACK) goto Dlg_SdWelcome;

6.

Build your release.

872

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

Using InstallScript Text Substitution to Dynamically Modify IIS Settings


Project: This information applies to InstallScript projects.

For InstallScript projects, you can configure an IIS setting dynamically at run time through the use of text substitution string variables. This enables you to let end users specify the name of the virtual directory, the TCP port, the site number, or other IIS settings for the Web sites, applications, virtual directories, application pools, and Web service extensions that they are installing on the target machine. The InstallScript run-time code uses the TextSubSubstitute function to replace the string variable with the appropriate value.

Example
The following procedure demonstrates how to let end users specify during installation the user name used for anonymous access to the Web site. Note that you can substitute a hard-coded value with a text substitution string variable for any of the IIS settings in the Internet Information Services view that allow you to enter characters. The string variable that you specify in this view must be enclosed within angle brackets; for example, <MYPROPERTY>. The string variable that you specify is case-sensitive.

Task

To let end users specify the user name: 1. 2. 3. 4.

In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, click the Web site whose user name end users should be able to specify for anonymous access. For the Enable anonymous access setting, select Yes. In the Anonymous User Name setting, type the following:
<MYPROPERTY>

5. 6.

In the View List under Behavior and Logic, click InstallScript. Find the dialog code in the OnFirstUIBefore event for the dialog that should contain the User Name control, and add a call to the InstallScript function TextSubSetValue. For example, if you want the user name to be the name that the end user specifies on the Customer Information dialog, you would add a TextSubSetValue call as shown in the following lines of code:
Dlg_SdRegisterUser: szMsg = ""; szTitle = ""; //{{IS_SCRIPT_TAG(Dlg_SdRegisterUser) nResult = SdRegisterUser( szTitle, szMsg, szName, szCompany ); TextSubSetValue("<MYPROPERTY>", szName, TRUE); //}}IS_SCRIPT_TAG(Dlg_SdRegisterUser) if (nResult = BACK) goto Dlg_SdLicense2;

7.

Build your release.

InstallShield 2010 User Guide

ISP-1600-UG00

873

Chapter 16: Configuring Servers Managing Internet Information Services

Deploying Web Services on a Target Machine


Deploying a Web service onto a target system requires copying the Web servicespecific files to a particular location and assigning a virtual directory name for that folder so that the Web service can be accessed via HTTP.

Tip: To learn how to add a virtual directory to your project, see Creating a Web Site and Adding an Application or a Virtual Directory.

Task

To deploy a Web service on a target machine: 1. 2. 3. 4. 5.

In the View List under Application Data, click Files and Folders. Select the folder (target directory) for installing files on the target system. Add your files to this folder. In the View List under Server Configuration, click Internet Information Services. In the Web Sites explorer, select the virtual directory that is associated with the Web service. In the Content Source Path (Local or UNC) setting, click the ellipsis button (...). The Browse for Directory dialog box opens. Enter the same target directory as the one that contains the new files that you added in the Files and Folders view.

At installation, files are copied to the target directory folder. In addition, the virtual directory is configured for that folder on the target system if IIS is present.

Adding IISROOTFOLDER Support


IISROOTFOLDER is an InstallShield directory variable that is used to determine the root directory of the Web server on a target system. If you are using IIS functionality in your installation project and you have added a Web site, then IISROOTFOLDER is automatically added.

Note: All of the files added to the IISROOTFOLDER directory in the Files and Folders view are installed to the Web servers root directory on the target machine. If IIS is not installed, the files are copied to the root folder.

IIS_WEBSITE_NAME Property
The IIS_WEBSITE_NAME property is obsolete. If this property exists from earlier project versions, the upgrader will handle it automatically. The upgrader will create a Web site and set the site number field to [IIS_WEBSITE_NAME]. For new Web sites, you can use any property or hard-coded number.

874

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 16: Configuring Servers Managing Internet Information Services

IIS_PORT_NUMBER Property
The IIS_PORT_NUMBER property is obsolete. If this property exists from earlier project versions, the upgrader will handle it automatically. The upgrader will create a Web site and set the port number field to [IIS_PORT_NUMBER]. When you create new Web sites, you can use any property or hardcoded number.

InstallShield 2010 User Guide

ISP-1600-UG00

875

Chapter 16: Configuring Servers Managing Internet Information Services

876

ISP-1600-UG00

InstallShield 2010 User Guide

17
Adding Mobile Device Support to Installations

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield supports the latest mobile devices, enabling you to add any number of mobile device installations to a desktop installation.

Windows Mobile Device Support


InstallShield lets you create an installation package for Windows Mobilepowered devices such as smartphones and PDAs. The package installs the necessary Windows Mobile .cab files to the end users desktop computer first, and then launches the Application Manager or uses either Microsoft Windows Mobile Device Center (for Windows Vista) or Microsoft ActiveSync (for Windows XP) to copy the correct files onto the Windows Mobilepowered device. It can also optionally register an icon file on the desktop computer with Mobile Device Center or ActiveSync, so that the icon is displayed within the Application Manager window.

Palm OS Device Support


You can use InstallShield to create an installation package for Palm OS devices. The application files can be deployed via HotSync to the Palm OS device. You can target either the devices memory or a storage card.

Existing .cab File Support


If you have .cab files that have already been built from a Basic MSI or InstallScript MSI project, you can add them to your installation. The .cab files can be created by using the Smart Device Setup Wizard, or they can be some other Windows Mobilecompatible .cab files that you have on your machine.

InstallShield 2010 User Guide

ISP-1600-UG00

877

Chapter 17: Adding Mobile Device Support to Installations Adding an Installation for a Windows MobilePowered Device to Your Project

About Mobile Device Support


ActiveSync 3.x or later or Windows Mobile Device Center must be installed on the desktop computer in order to run a desktop-to-device installation. Active Sync 4.x or Windows Mobile Device Center is required for Windows Mobile 5.x and later devices. To create a dedicated installation for a smart device application, use the Smart Device project type.

Adding an Installation for a Windows Mobile Powered Device to Your Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

You can add to your project an installation for Windows Mobilepowered devices such as smartphones and PDAs.

Note: ActiveSync 3.x or later or Windows Mobile Device Center must be installed on the desktop computer in order to run a desktop-to-device installation. Active Sync 4.x or Windows Mobile Device Center is required for Windows Mobile 5.x and later devices.

Task

To add an installation for a Windows Mobilepowered device: 1.

Create the desktop installation that will be used to install the components of your application to the end users desktop machine. This also sets up your application to be installed on the Windows Mobilepowered device the next time that it is synched with the desktop computer.

Note: You are not required to add anything to the desktop. You can use the desktop installation solely to deploy the application to Windows Mobile Device Center or ActiveSync. 2.

Add the Windows Mobile installation to your project:


a. b. c.

In the View List under Application Data, click Mobile Devices. Right-click the Mobile Device Installations explorer and click New Windows Mobile. The Windows Mobile Wizard opens. Follow the wizard panels to customize the installation.

When you add an installation for a Windows Mobilepowered device to your project, a corresponding component is created and added to all of the features that you selected to associate with the Windows Mobile application.

878

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 17: Adding Mobile Device Support to Installations Adding an Installation for a Palm OS Device to Your Project

When you build a release for the installation, InstallShield creates an installation that installs your application to the end users desktop machine and to the Windows Mobile device.

Launching the Windows Mobile Wizard as Part of an InstallShield Project Within Microsoft Visual Studio
If your mobile device installation requires a desktop component, you can create the desktop component by adding an InstallShield project from the Add New Project dialog box in Visual Studio. Then add an Windows Mobilepowered device installation as described above. You can associate the project output groups with the Windows Mobile installation.

Adding an Installation for a Palm OS Device to Your Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add an installation for a Palm OS device: 1. 2. 3.

Prepare your application by compiling your code in a development tool that supports Palm OS. Create the desktop installation that includes the Palm OS files that are to be installed on Palm OS devices. Add a Palm OS installation to your project:
a. b. c.

In the View List under Application Data, click Mobile Devices. Right-click the Mobile Device Installations explorer and click New Palm OS. The Palm OS Wizard opens. Follow the wizard panels to customize the installation.

When you add an installation for a Palm OS device to your project, a corresponding component is created and added to all of the features that you selected to associate with the Palm OS application. When you build a release for the installation, InstallShield creates an installation that installs your application files to the Palm OS device via a storage card, or they can be downloaded directly to the device over a network or the Internet.

InstallShield 2010 User Guide

ISP-1600-UG00

879

Chapter 17: Adding Mobile Device Support to Installations Targeting a Specific User or Slot ID for a Palm OS Installation

Targeting a Specific User or Slot ID for a Palm OS Installation


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you are creating an installation for a Palm OS device, you may want to target a specific user or slot ID, or you may want an end user to be able to specify a particular user or slot ID. Two properties that are available to you when you create your installation can help you with these scenarios:

ISPALMUSERUse the ISPALMUSER property to specify a single Palm user for your installation. This property is relevant only if a file has a destination of Handheld. By default, this property is null. ISPALMSLOTIDUse the ISPALMSLOTID property to specify a specific slot ID for your installation. This property is relevant only if a file has a destination of Storage Card. By default, this property is null.

InstallShield uses the Palm APIs PltInstallFile and PlmSlotInstallFile for Palm OS installations.
PltInstallFile requires a user name to which to install a file. This API is used if you select Handheld as

the destination of the file. If a value is specified for the ISPALMUSER property, the file installs for the user specified in ISPALMUSER. If the ISPALMUSER is not set to any value, then the file installs to all users.
PlmSlotInstallFile requires a slot ID for the installation of a file. This API is used if you select Storage Card as the destination of the file. If a value is specified for the ISPALMSLOTID property, the file is installed to the slot ID specified in ISPALMSLOTID. If the ISPALMSLOTID property is not set to any value, the file installs to the first slot ID that is found.

It is not possible for InstallShield to know the names of users or slot IDs, so you can create the ISPALMUSER and ISPALMSLOTID properties in the Property Manager view. It is likely that you may not know the names of users on end users machines, so to enable an end user to specify a specific user or slot ID, you can create a dialog that prompts the end user for the user name or storage cards slot ID. The dialog would need to prompt for only user name if the destination of all files was set to Handheld. If you create a new dialog, it is recommended that you associate the ISPALMUSER and ISPALMSLOTID properties with the controls where the end user will enter the data.

Adding Existing .cab Files to Your Project


Project: If you have .cab files that have already been built for one of the following types of projects, you can add them to your installation to create a Windows Mobile package:

Basic MSI

880

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 17: Adding Mobile Device Support to Installations Special Considerations for Adding Multiple .cab Files

InstallScript MSI

If you would like to add more than one .cab file to a single Windows Mobile installation, see Special Considerations for Adding Multiple .cab Files.

Note: ActiveSync 3.x or later or Windows Mobile Device Center must be installed on the desktop computer in order to run a desktop-to-device installation. Active Sync 4.x or Windows Mobile Device Center is required for Windows Mobile 5.x and later devices.

Task

To add existing .cab files for a Windows Mobilepowered device to your project: 1.

Prepare your .cab files if you have not already done so. The .cab files can be created by using the Smart Device Setup Wizard, or they can be some other Windows Mobilecompatible .cab files that you have on your machine. Create the desktop installation that will be used to install the components of your application to the end users desktop machine. This also sets up your application to be installed on the Windows Mobilepowered device the next time that it is synched with the desktop computer.

2.

Note: You are not required to add anything to the desktop. You can use the desktop installation solely to deploy the product through ActiveSync or Windows Mobile Device Center. 3.

Add the .cab files to your project:


a. b. c.

In the View List under Application Data, click Mobile Devices. Right-click the Mobile Device Installations explorer and click New Windows Mobile. The Windows Mobile Wizard opens. Follow the wizard panels to customize the installation.

When you add an installation for a Windows Mobilepowered device to your project, a corresponding component is created and added to all of the features that you selected to associate with the Windows Mobile application. When you build a release for the installation, InstallShield creates an installation that installs your application to the end users desktop machine and to the Windows Mobilepowered device.

Special Considerations for Adding Multiple .cab Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

881

Chapter 17: Adding Mobile Device Support to Installations Getting the Location of the Application Manager (CeAppMgr.exe) on the Target System

A Windows Mobile installation is a set of .cab files. If your Windows Mobile installation supports more than one platform-processor combination, the set of .cab files consists of a separate .cab file for each platform-processor combination. If your installation supports all platform-processor combinations, the set of .cab files consists of only one .cab file that can be used for any platform-processor combination.

Note: If a Windows Mobile installation consists of multiple .cab files, you should add all of the installations .cab files to the same node of the Mobile Device Installations explorer in the Mobile Devices view. You should not separate the .cab files into different nodes. If you want to add to your project multiple .cab files from different Windows Mobile installations (that is, from different sets of .cab files), you should create a separate node in the Mobile Device Installations explorer for each set of .cab files. You should not mix .cab files from different installations in the same node.

Getting the Location of the Application Manager (CeAppMgr.exe) on the Target System
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Application Manager is a utility that is included with Windows Mobile Device Center (for Windows Vista systems) and ActiveSync (for Windows XP). You can use the CEAPPMGRLOC property to refer to the Application Manager. This property indicates the path of CeAppMgr.exe.

Task

To use the CEAPPMGRLOC property to obtain the Application Manager location on the target desktop machine:

In a C++ custom action, use the Windows Installer API MsiGetProperty. In a VBScript custom action, use Session.Property("CEAPPMGRLOC").

Deploying Files to the Microsoft ActiveSync Directory


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

882

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 17: Adding Mobile Device Support to Installations Suppressing the Display Warning for Legacy Mobile Device Applications

The CESERVICEDIR directory variable points to the location where ActiveSync is installed on the target system.

Task

To deploy files to the ActiveSync directory: 1. 2.

In the View List under Application Data, click Mobile Devices. In the Mobile Device Installations explorer, click the Windows Mobile installation that you would like to modify. InstallShield displays the Project Summary window on the right for that installation. In the Project Summary window, click the Desktop Settings hyperlink. The Desktop Settings panel of the Windows Mobile Wizard opens. In the Target desktop folder box, select the [CESERVICEDIR] option. Click OK.

3. 4. 5.

You can also create subdirectories under this directory and then deploy files to the subdirectories.

Suppressing the Display Warning for Legacy Mobile Device Applications


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

Some legacy mobile device platforms include support for portrait mode but not landscape mode. Therefore, in some circumstances, the installation for a mobile device displays the following warning:
The program you have installed may not display correctly because it was designed for a previous version of Windows Mobile software.

Task

To prevent this warning from ever displaying, do one of the following:

On the Device Files panel of the Windows Mobile Wizard, select the Suppress Display Warning check box. For more information, see Device Files Panel. On the Processor/Platform tab of the Device Files dialog box, do not select the Platform/ Processor independent option. Selecting this option triggers the warning on legacy platforms. For more information, see Processor/Platform Tab. On the Processor/Platform tab of the Device Files dialog box, select the Specific platform/ processor option and in the Platforms list, select only the latest platforms. For more information, see Processor/Platform Tab.

InstallShield 2010 User Guide

ISP-1600-UG00

883

Chapter 17: Adding Mobile Device Support to Installations Modifying an Installation for a Mobile Device

Note that the warning may not be displayed for a target platform if the <BuildMaxScreenSupport> element is included for that platform in the InstallShield Settings.xml file. For more information, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings.

Modifying an Installation for a Mobile Device


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Windows Mobile Wizard guides you through the process of creating installation packages for Windows Mobile devices, and the Palm OS Wizard guides you through the process of creating installation packages for Palm OS devices. If you want to modify an mobile device installation in your project, you can run through the entire wizard again, making changes as needed. You also have the option of accessing only a selected panel of the wizard, bypassing the other panels of the wizard. Both methods begin with the Mobile Devices view.

Task

To modify an installation for a mobile device: 1. 2.

In the View List under Application Data, click Mobile Devices. In the Mobile Device Installations explorer, click the installation of the mobile device that you would like to modify. InstallShield displays the Project Summary window on the right for that installation. If you would like to run through the entire wizard, click the wizard hyperlink near the top of the Project Summary window. If you would like to access an individual panel of the wizard, click the appropriate hyperlink to modify that portion of the installation. The corresponding panel of the appropriate wizard opens.

3.

4.

Make any necessary changes.

Renaming an Installation for a Mobile Device


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

884

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 17: Adding Mobile Device Support to Installations Removing an Installation for a Mobile Device from Your Project

Task

To rename an installation for a mobile device: 1. 2.

In the View List under Application Data, click Mobile Devices. Do one of the following:


3.

In the Mobile Device Installations explorer, right-click the mobile device installation whose name you would like to modify, and then click Rename. Select the mobile device installation whose name you would like to modify, and then press F2.

Type the new name for the mobile device installation.

When you rename an installation for a mobile device in the Mobile Devices view, the component for that installation is also renamed.

Removing an Installation for a Mobile Device from Your Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove an installation for a mobile device from your project: 1. 2.

In the View List under Application Data, click Mobile Devices. In the Mobile Device Installations explorer, right-click the installation of the mobile device that you would like to remove and click Delete.

The installation is removed from the Mobile Devices view, and its associated component is removed from your project.

Building an Installation for a Mobile Device


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Your mobile device installation is built when you build the desktop installation that your mobile device installation is part of.

InstallShield 2010 User Guide

ISP-1600-UG00

885

Chapter 17: Adding Mobile Device Support to Installations Building an Installation for a Mobile Device

If your project includes a Windows Mobile device installation, the resulting Setup.exeand other files if the release was built uncompressedcontains all of the logic required to configure Microsoft Windows Mobile Device Center or Microsoft ActiveSync on the desktop machine to install the application and, if necessary, the .NET Compact Framework on the device. If your project includes a Palm OS device, the resulting Setup.exeand other files if the release was built uncompressedcontains an installation that installs your application files to the Palm OS device via a storage card, or they can be downloaded directly to the device over a network or the Internet.

886

ISP-1600-UG00

InstallShield 2010 User Guide

18
Preparing Installations for Maintenance and Uninstallation
InstallShield lets your users rerun your installation to change program features or reinstall or remove your application. When users select your application in Add or Remove Programs in the Control Panel, the installation displays dialog boxes that let users do any of the following:

Install individual features that were not previously installed, and uninstall individual features. Reinstall your application with the settings selected during the first installation. Uninstall your application.

To modify, repair, or uninstall an application, the operating system must have some indication that the application is present. To allow this, an installation registers an application with the operating system so that it can be easily maintained or uninstalled. You enter the necessary information in the General Information view. In all InstallShield installations, maintenance (that is, modification and repair) is handled automatically by default. In a Windows Installerbased installation, uninstallation is handled automaticallywith the sole exception of custom actions, which must either undo their own effect during uninstallation or have their effect undone by another custom action that runs only during uninstallation. In an InstallScript or InstallScript MSI installation, many script functions actions are logged for automatic uninstallation; your uninstallation script must handle those script function actions that are not logged.

Preparing an InstallScript Installation for Uninstallation


Setting up uninstallation functionality is simple, considering the complexity of the operations that result. CreateInstallationInfo (or InstallationInfo) and MaintenanceStart (or DeinstallStart) must be called. In an event-based script, CreateInstallationInfo and MaintenanceStart are called in the default OnMoveData event handler code.

InstallShield 2010 User Guide

ISP-1600-UG00

887

Chapter 18: Preparing Installations for Maintenance and Uninstallation Preparing an InstallScript Installation for Uninstallation

There are other functions that play important roles in setting up uninstallation functionality. For example, all keys created using the RegDBCreateKeyEx function are recorded for uninstallation, unless logging is disabled. Also, if you call the Disable function to disable logging, remember to call Enable to enable the logging again for subsequent actions that must be recorded for uninstallation.
MaintenanceStart (or DeinstallStart) creates the necessary registry key and its necessary values. To create additional registry values under this key, call RegDBSetItem, or for custom values use code like the following:
RegDBSetDefaultRoot( HKEY_USER_SELECTABLE ); RegDBSetKeyValueEx( "Software\\Microsoft\\Windows\\Current Version\\Uninstall\\" + INSTANCE_GUID, "My Custom Value", nType, szValue, nSize);

Note: Uninstallation is available only if the initial installation calls FeatureTransferData or FeatureMoveData. (In an event-based script, the FeatureTransferData function is called automatically.) If your installation installs files by some other means (for example, XCopyFile) and you want to make uninstallation available to your end users, deselect all components and call FeatureTransferData or FeatureMoveData; while this call is executed, you can call SdShowMsg to display a message.

Including Script Code to Be Executed During Uninstallation

Note: If you call DeinstallStart to enable uninstallation, the installation script is not executed during uninstallation. To execute script code during uninstallation, call MaintenanceStart instead. (In an event-based installation, MaintenanceStart is called in the default OnMoveData event handler code.)

Event-Based Scripts If your script is event-based, the following event handler functions are called during uninstallation:

OnBegin OnMaintUIBefore OnMoving

<Feature name>Uninstalling (for each installed feature) <Feature name>Uninstalled (for each installed feature)
OnMoved OnMaintUIAfter OnEnd

The code in these event handler functions (whose default code you can override) is executed during the uninstallation. For instructions on executing certain event handler code only during uninstallation, or only during installation, see Executing Script Code Only During Uninstallation or Only During Installation.

888

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 18: Preparing Installations for Maintenance and Uninstallation Executing Script Code Only During Uninstallation or Only During Installation

Procedural Scripts If your script is procedural (that is, uses a program block) and calls MaintenanceStart rather than DeinstallStart to enable uninstallation, the script is executed during uninstallation. For instructions on executing certain script code only during uninstallation, or only during installation, see Executing Script Code Only During Uninstallation or Only During Installation.

Executing Script Code Only During Uninstallation or Only During Installation


The installation script is executed during uninstallation and maintenance installations if MaintenanceStart rather than DeinstallStart is called to enable uninstallation. (In an event-based script, MaintenanceStart is called in the default OnMoveData event handler code.) To execute code only during uninstallation or maintenance installations, enclose it in the following if-then statement:
if MAINTENANCE then /* this code is executed only during uninstallation or maintenance installations */ endif;

To execute code only during a first installation, enclose it in the following if-then statement:
if !MAINTENANCE then /* this code is executed only during a first installation */ endif;

If code is not enclosed in either if-then statement, it is executed during uninstallation, maintenance installations, and first installationswith the following exceptions in event-based scripts:

The code in the following event handlers is executed only during uninstallation and maintenance installations:
OnMaintUIBefore OnMaintUIAfter

The code in the following event handlers is executed only during the first installation:
OnCCPSearch OnAppSearch OnFirstUIBefore OnFirstUIAfter

InstallScript Functions that Are Logged for Uninstallation


In an InstallScript or InstallScript MSI project, all files, folders, registry keys, .ini file entries, program folders and program items created or replaced while logging is enabled are logged for uninstallation. Many InstallScript functions called during event handlers are logged for uninstallation.

InstallShield 2010 User Guide

ISP-1600-UG00

889

Chapter 18: Preparing Installations for Maintenance and Uninstallation InstallScript Functions that Are Logged for Uninstallation

Enabling and Disabling Logging


Logging is enabled by default, but if you have disabled it for any reason, simply call Enable(LOGGING) to reverse it. If you want to perform some action in your installation that you do not want to be uninstalled, you can call Disable(LOGGING) beforehand.

Logged Functions
InstallShield records installation events created by the following functions for uninstallation in the uninstallation log file: Functions that Transfer Files

CopyFile FeatureMoveData FeatureTransferData VerSearchAndUpdateFile VerUpdateFile XCopyFile

Functions that Work with Folders AskDestPath AskPath CreateDir SdAskDestPath SelectDir

Functions that Create Program Folders and Icons AddFolderIcon CreateProgramFolder

Functions that Create Registry Keys or Write to the Registry CreateInstallationInfo RegDBSetAppInfo RegDBSetItem

The following registry entries are logged for uninstallation: Registry entries created automatically by InstallShield. Registry entries and associated keys, and all subkeys located below such keys, that were automatically created by InstallShield. (The uninstallation does not automatically remove the company name key under HKEY_LOCAL_MACHINE\Software, since that might inadvertently remove subkeys for other applications.)

890

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 18: Preparing Installations for Maintenance and Uninstallation Maintenance/Uninstallation Feature

Functions that Modify Initialization (.ini) Files

AddProfString ReplaceProfString WriteProfString

Maintenance/Uninstallation Feature
The maintenance/uninstallation feature installs the files needed for maintenance setups and uninstallation, including engine files; the files target location is specified by the value of the system variable DISK1TARGET. This feature is automatically placed in your .cab files by the release builder and is not displayed in the InstallShield interface. At run time the maintenance/uninstallation feature is automatically selected for all setup types. Calling
FeatureUpdate deselects this feature. The maintenance/uninstallation feature can also be selected or deselected by calling FeatureSelectItem and passing the system variable DISK1COMPONENT as the functions

second argument. For example, the following code deselects the feature:
FeatureSelectItem( MEDIA, DISK1COMPONENT, FALSE );

Removing Files that Were Created by Your Product


By default, files created by your product after the installation is complete are assumed to be user data, and are not removed when the user uninstalls your application.

Basic MSI Project


Records you create in the RemoveFile table (using Direct Editor) can specify additional files to remove. For example, if your application creates a file called Product.ini inside INSTALLDIR and you want the file removed when the component containing your main executable is removed, add a record with the following contents to the RemoveFile table:
Table 18-1: Additions to Add to the RemoveFile Table FileKey Component_ FileName DirProperty InstallMode remove_file ProgramFiles Product.ini INSTALLDIR 2

InstallScript and InstallScript MSI Projects


In your script, you can call the DeleteFile and DeleteDir functions in uninstallation event handler functions to remove any files or directories you want removed.
InstallShield 2010 User Guide ISP-1600-UG00 891

Chapter 18: Preparing Installations for Maintenance and Uninstallation Removing Registry Data Created by Your Product

Removing Registry Data Created by Your Product


By default, your products uninstallation removes only data that was created by your installation program.

Basic MSI Project


The Registry explorer understands a special uninstallation flag that controls the registry data to be removed during uninstallation. In particular, using the - flag (Uninstall entire key) on a registry key causes the key and all its values and subkeys to be removed during uninstallation.

Note: The RemoveRegistry tableexposed in the Direct Editorspecifies data to be removed only when your product is installed. For details, see the Windows Installer Help Library.

InstallScript MSI Project


In your script, you can call the RegDBDeleteValue and RegDBDeleteKey functions in your uninstallation event-handler functions to remove specified registry values and keys.

892

ISP-1600-UG00

InstallShield 2010 User Guide

19
Configuring Multiple Packages for Installation Using Transaction Processing

Project: The following project types support multiple-package installations that use transaction processing:

Basic MSI InstallScript MSI

Windows Installer 4.5 includes support for installing multiple packages using transaction processing. The packages are chained together and processed as a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all of the packages to restore the system to its earlier state. This section of the documentation explains how to specify .msi packages that you want InstallShield to include in your installation as chained packages. This section also explains how to configure settings such as the properties that should be passed to the chained packages.

Note: Windows Installer 4.5 includes support for installing multiple packages using transaction processing. Earlier versions do not launch any chained .msi packages. If you want your installation to install Windows Installer 4.5, see Adding Windows Installer Redistributables to Projects to learn how.

Overview of Multiple-Package Installations that Use Transaction Processing


Project: The following project types support multiple-package installations that use transaction processing:

Basic MSI InstallScript MSI


ISP-1600-UG00 893

InstallShield 2010 User Guide

Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Adding a New Chained .msi Package to Your Project

When you add one or more .msi packages to your installation as chained packages and an end user runs your installation on a system that has Windows Installer 4.5, the Windows Installer can install all of the packages in a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all packages to restore the system to its earlier state. When the Windows Installer uses transaction processing, it batches together the various script states from the .msi packages. For example, Windows Installer executes the InstallInitialize action during the Execute sequence; at this point in the sequence Windows Installer executes all of the immediate actions for all of the packages and puts all of the deferred actions in the installation script. Next, Windows Installer executes the deferred actionsbut not the commit or rollback actionsin the installation script for all of the packages. In addition, Windows Installer copies the rollback actions to the rollback script. If the products for each of the packages are successfully installed up until this point, the Windows Installer runs all of the commit actions for each of the packages; otherwise, the Windows Installer executes the rollback script to return the target system to its original state. For more information about this functionality, see Multiple-Package Installations in the Windows Installer Help Library.

Note: Windows Installer 4.5 includes support for installing multiple packages using transaction processing. Earlier versions do not launch any chained .msi packages. If you want your installation to install Windows Installer 4.5, see Adding Windows Installer Redistributables to Projects to learn how.

Adding a New Chained .msi Package to Your Project


Project: The following project types support multiple-package installations that use transaction processing:

Basic MSI InstallScript MSI

InstallShield enables you to add already built Windows Installer packages (.msi files) to your project as chained .msi packages. Windows Installer 4.5 includes support for installing the multiple packages using transaction processing. The packages are chained together and processed as a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all packages to restore the system to its earlier state. The Chained .msi Packages area of the Releases view is where you add to your project one or more .msi packages that you want to be chained to your main installation.

Note: Windows Installer 4.5 includes support for installing multiple packages using transaction processing. Earlier versions do not launch any chained .msi packages.

894

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Adding a New Chained .msi Package to Your Project

If you want your installation to install Windows Installer 4.5, see Adding Windows Installer Redistributables to Projects to learn how.

Task

To add an .msi package as a chained package: 1. 2. 3.

In the View List under Media, click Releases. Right-click the Chained .msi Packages explorer and then click New Chained Package. InstallShield adds a new item with a default name. Enter a new name, or right-click it later and click Rename to give it a new name. The name is not displayed at run time; it is an internal name that is used to differentiate between different chained .msi packages in the main installation.

4. 5. 6.

Select the new chained package item. InstallShield displays its settings in the right pane. For the Installation (run-time path) setting, click the Browse button. The Browse for File dialog box opens. Select the Windows Installer package (.msi file) that you would like to add, and then click Open. The package that you select must be an .msi package that can be installed through MsiInstallProduct. Note that it cannot be an InstallScript MSI package.

InstallShield prompts you to specify whether you want to stream the .msi packageand its uncompressed files, if the .msi package is not compressedinto your products main .msi package:

If you specify that you want InstallShield to stream the files, InstallShield adds the name of the .msi package to the Installation (run-time path) setting. InstallShield also automatically adds either the file name (if it is a compressed .msi package) or the entry *.* (if it is an uncompressed .msi package) to the Streamed files box. For the *.* wild-card entry, InstallShield streams in the .msi package as well as all of the files in the same folder as the .msi package. If you specify that you do not want InstallShield to stream the files, InstallShield adds the following path to the Installation (run-time path) setting:
[SourceDir]FileName.msi

You can change this path if appropriate. For example, you may want to use a path such as the following one, and also clear the Delete streamed files after installation check box:
[LocalAppDataFolder]{ProductCodeGUID}\FileName.msi

In this example, the .msi package is cached on the local system, and it is available for maintenance.

Tip: You may not want to stream in the .msi package, since Windows Installer has limitations for the file size of .msi packages. 7.

Configure the chained .msi package settings as needed. To learn more, see Chained .msi Package Settings.

InstallShield 2010 User Guide

ISP-1600-UG00

895

Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Assigning Release Flags to a Chained .msi Package

If your main installation includes several chained .msi packages, InstallShield uses the Order column in the ISChainPackage table of the main installation to determine the order in which the chained packages should be launched at run time. All uninstallations are processed in reverse order, from highest to lowest order number; all installations are processed in forward order, from lowest to highest order number.

Note: If you have specified .msi packages in the Chained .msi Packages area in the Releases view, InstallShield does not build the chained packaged when you build releases for your main installation.

Assigning Release Flags to a Chained .msi Package


Project: The following project types support multiple-package installations that use transaction processing:

Basic MSI InstallScript MSI

You can assign one or more release flags to a chained .msi package that you want to exclude from certain builds. For example, if you have a chained .msi package that should be included only in a special edition of your product that contains a special add-on that requires the chained .msi package, you can flag that chained package and include it only when it is needed.

Task

To add a release flag to a chained .msi package that you have added to your installation project: 1. 2. 3.

In the View List under Media, click Releases. In the Chained .msi Packages explorer, select the package that should contain the release flag. For the Release flags setting, type a string. The string can be any combination of letters or numbers. To have more than one flag on a chained package, use a comma to separate the flags.

To learn more about filtering chained .msi packages based on release flags, see Release Flags.

Removing a Chained .msi Package from Your Project


Project: The following project types support multiple-package installations that use transaction processing:

Basic MSI InstallScript MSI

896

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Removing a Chained .msi Package from Your Project

Task

To remove a chained .msi package from your project: 1. 2.

In the View List under Media, click Releases. In the Chained .msi Packages explorer, right-click the chained .msi package that you want to remove from your project, and then click Remove.

InstallShield removes the chained .msi package from your project. Note that InstallShield does not delete the .msi package, or any of its files, from your file system.

InstallShield 2010 User Guide

ISP-1600-UG00

897

Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Removing a Chained .msi Package from Your Project

898

ISP-1600-UG00

InstallShield 2010 User Guide

20
Building, Testing, and Deploying Installations
Once you have configured the features, components, files, shortcuts, registry entries, end-user dialogs, and other elements of your installation project, you are ready to create and build a release for your installation. InstallShield lets you create multiple releases for a project and configure each release for a different media type and according to different sets of requirements. Building releases packages the content of your installation, creating a disk image that you can copy to your distribution media and distribute or deploy as needed. Testing is an essential part of creating a reliable installation. InstallShield enables you to selectively test run just the end-user interface portion of a release. You can also run your installation by simply clicking a button in InstallShield; when you run an installation by using this method, your installation executes exactly as it would on an end users machine. All files are transferred, shortcuts and registry entries are made, and the user interface is displayed. Before you release your product, you may want to validate your installation project. Validating a Windows Installer project involves applying a set of internal consistency evaluator (ICE) rules to your installation project. These ICEs are designed by Microsoft to help you determine whether your resulting installation package contains a valid database that performs its actions correctly. With the debugging tools in InstallShield, you can debug your InstallScript script or Windows Installer release to identify the sources of problems. When you debug a script, you execute your script, statement by statement, and trace the flow of control by watching the execution point as it moves through the script. You can also monitor the value of any variable in your script at any point during script execution. When you debug a Windows Installer release, InstallShield runs through each action and dialog box until it reaches your breakpoint, when it halts execution. At this point, you can view and set properties.

Creating and Building Releases


Once you have designed your project in InstallShield, you are ready to create a release that you can configure and build to distribute to end users. The release is built according to the options you set for it in the Release Wizard or in settings that are displayed in the Releases view.

InstallShield 2010 User Guide

ISP-1600-UG00

899

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Working with Product Configurations


Project: The following project types support product configurations:

Basic MSI InstallScript MSI Merge Module

Every release that you build is a member of a product configuration. A product configuration provides a means for grouping together releases that share similar properties, such as the product name, product code, and package code. Product configurations also enable you to keep a history of your builds without having to set up a folder structure outside InstallShield. For example, when your product is in development, you might have many releases of the same version. You do not necessarily want to overwrite each release every time that you rebuild the product. With product configurations, you can maintain your previous build history and incorporate new releases at the same time. In the past, you may have had to maintain this type of historical record of your builds outside InstallShield. You had to create a directory structure on a drive, label each folder manually, and then copy the release into its directory. With product configurations, all of this is done for you in InstallShield.

Task

To create a product configuration: 1. 2.

In the View List under Media, click Releases. Right-click the Releases explorer and then click New Product Configuration.

InstallShield adds a new product configuration to the Releases explorer. InstallShield lists the product configuration settings on the General tab. For descriptions about each of the product configuration settings, see General Tab for a Product Configuration.

Tip: You can also create product configurations through the Release Wizard. You can specify existing product configurations from the command line (using the -a parameter), but you cannot define the settings of a release through the command line.

Working with Releases


Project: For installation projects: Before building your installation project, ensure that you have completed designing and setting the properties for every element in your project, including the features, components, files, shortcuts, registry entries, and end-user interface.

900

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

For merge module projects: Before building your package, ensure that you have completed designing and setting the properties for every element in your merge module, including components, files, shortcuts, and registry entries.

Once you have designed your project in InstallShield, you are ready to create a release that you can configure and build to distribute to end users. You can create multiple releases for a project and configure each release for a different media type and according to different sets of requirements. InstallShield offers several methods for creating and building a release:

Use the Release Wizard. Use the Releases view. Build from the command line using ISCmdBld.exe. Build a release through the automation interface.

Tip: Make sure that Windows Explorer is not pointing to the Disk1 folder or a subfolder when you build your release. If Windows Explorer is pointing to the Disk1 folder, the build process fails and generates an error.

Using the Release Wizard to Create and Build a Release


The Release Wizard provides an easy way for you to build a product release and specify the settings for that release.

Task

To launch the Release Wizard and build your installation package, do one of the following:

Click the Release Wizard button on the toolbar. On the Build menu, click Release Wizard. In the Releases view, right-click a release and click Release Wizard.

Follow the instructions in the panels of the Release Wizard. For a list of errors returned by the wizard, see Build Errors and Warnings.

Using the Releases View to Create and Build a Release


The Releases view lets you specify the settings for a release and build it. The procedure for creating and building a release depends on what project type you are using.

Creating and Building a Release in Basic MSI, InstallScript MSI, and Merge Module Projects

Task

To create and build a release: 1. 2.

In the View List under Media, click Releases. Right-click the product configuration that should contain the new release, and then click New Release. For information on how to create a new product configuration, see Working with Product
ISP-1600-UG00 901

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Configurations. InstallShield adds a new release under the product configuration. Its settings are displayed on the tabs.
3. 4.

Configure the releases settings as appropriate. Right-click the release and then click Build.

Creating and Building a Release in an InstallScript or InstallScript Object Project

Task

To create and build a release: 1. 2. 3. 4.

In the View List under Media, click Releases. Right-click the Releases explorer, point to New Release, and click the type of media that you want to create. InstallShield adds a new release to the explorer. Its settings are displayed on the tabs. Configure the releases settings as appropriate. Right-click the release and then click Build.

Setting the Release Location


The disk image folders for your installation are built in the release location. All additional files and folders that are necessary for storing uncompressed application files are placed in subfolders of the disk image folders. The release location is a subfolder of your projects location. To see your release after you have built it, click Disk Images under the product name and the release name in the Releases view. If you have not changed the release location, InstallShield places the built installation package into the following folder:
InstallShield Project Folder\project name\product configuration\release name\DiskImages\Disk1

You can set the release location either in the Advanced Settings panel of the Release Wizard or in the Release Location property in the Releases view.

Building a Release from the Command Line


You can build a release from the command line using ISCmdBld.exe for Windows Installerbased projects and for InstallScript projects. If your project includes InstallScript, ISCmdBld.exe also compiles it before building the release. Using ISCmdBld.exe to build an installation can be useful if you are trying to build from a batch file. Also, building a release from the command line using ISCmdBld.exe will handle the conversion of .ipr and .ipo files (object project files created using InstallShield Professional) to an .ism file, in addition to building the release.

Tip: An .ism file in either binary or XML format is accepted by the command-line build. You can build a release from the command line using ISCmdBld.exe with the Standalone Build. For more information, see Standalone Build.

902

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Using ISCmdBld.exe to Build a Release from the Command Line


ISCmdBld.exe is ISCmdBld.exe from

located by default in the InstallShield folders System subfolder. Do not move its installed location.

For the syntax and available command-line parameters for ISCmdBld.exe, see ISCmdBld.exe.

Passing Command-Line Build Parameters in an .ini File


If you want to pass numerous parameters during a command-line build, or if you consistently pass the same parameters, it might be convenient to use an .ini file. The following statement illustrates running ISCmdBld.exe to build a release with parameters as specified in the MySetup.ini file.
ISCmdBld.exe -i "C:\InstallShield 2010 Projects\MySetup.ini"

You need to include the same information in the .ini file as you would if you were passing the parameters at the command line. There are four sections for this file:

[Project]In this section, include entries for the path to the project file (.ism), as well as the name of the product configuration. If you are building a patch, include an entry for the name of the patch configuration that you are building. [Release]In this section, include entries for release configuration information such as the compression type (compressed or uncompressed), build flags, Setup.exe settings, and the release name. [Mode]In this section, include any of the available optional entries, such as the Silent=yes entry if

you want to build your release while suppressing any build errors or warning messages. This section also lets you indicate whether a log file should be created.

[BuildLocation]In this section, you can optionally specify the release output location.

Not all sections are required. As with passing parameters directly from the command line, parameters for requirements such as silent build and build location are optional. In the example .ini file below, these parameters are in the [Mode] and [BuildLocation] sections. You can omit these entries from your .ini file if you want to accept the defaults. By default, no log file is created, the installation is not run in silent mode, and your release is created in the project location specified on the File Locations tab of the Options dialog box.

Sample .ini File


The following tables contain sample entries from each of the four sections in a sample .ini file. The first column of each table shows a sample entry. The other columns provide the corresponding commandline parameter and description.

InstallShield 2010 User Guide

ISP-1600-UG00

903

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Entries in the [Project] Section


Table 20-1: Sample Entries in the [Project] Section of the .ini File Corresponding Command-Line Parameter -p

Entry Name="C:\InstallShield 2010 Projects\Othello.ism" BuildLabel=Label1

Description Path to the .ism file.

-a

Name of the product configuration for the release that you are building. If it does not exist, it is created. Name of the patch configuration in the Patch Design view that you want to build. Ensures that Setup.rul is not compiled as part of the build process.

PatchConfigName=Version 1.2

-patch_config

CompileScript=no

-n

Note: CompileOnly should not be used with CompileScript.

Entries in the [Release] Section


Table 20-2: Sample Entries in the [Release] Section of the .ini File Corresponding Command-Line Parameter -f

Entry BuildFlags=flags

Description Release flags to be included in the installation, separated by commas. Compressed vs. uncompressed. Release name. Creates a Setup.exe file.

Configuration=COMP Name=Othello Beta SetupEXE=yes

-c -r -e

904

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Entries in the [Mode] Section


Table 20-3: Sample Entries in the [Mode] Section of the .ini File Corresponding Command-Line Parameter -m

Entry CubFile="C:\Program Files\InstallShield\2010\Support\V alidation\MyValidation.cub"

Description Validate the installation or merge module package after it is built using the specified .cub file. Include the full path and name to the .cub file. To use multiple .cub files, separate each path with a semicolon (;). Enclose long file names in quotation marks. For example, the following entry indicates that validation should be performed with the InstallShield Certified for Windows Vista Validation Suite (ISVista.cub) and the Full MSI Validation Suite (darice.cub):
CubFile="C:\Program Files\InstallShield\2010\Support\Validatio n\isvista.cub;C:\Program Files\InstallShield\2010\Support\Validatio n\darice.cub"

Silent=yes StopOnFirstError=yes CompileOnly=no

-s -x -q3

Runs in silent mode. Aborts the build when the first error is encountered. Compiles only Setup.rul and streams Setup.inx into the Binary table of the .msi file, if one was previously built.

Note: The entries CompileOnly, BuildTablesRefreshFiles, and BuildTablesOnly are mutually exclusive. Only one can be set to yes.
CompileOnly should not be used with CompileScript.

BuildTablesRefreshFiles=no

-q2

Builds the Windows Installer tables and refreshes files.

Note: The entries CompileOnly, BuildTablesRefreshFiles, and BuildTablesOnly are mutually exclusive. Only one can be set to yes.

InstallShield 2010 User Guide

ISP-1600-UG00

905

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Table 20-3: Sample Entries in the [Mode] Section of the .ini File (cont.) Corresponding Command-Line Parameter -q1

Entry BuildTablesOnly=yes

Description Builds only the Windows Installer tables for your release.

Note: The entries CompileOnly, BuildTablesRefreshFiles, and BuildTablesOnly are mutually exclusive. Only one can be set to yes. UpgradeOnly=no Verbose=yes WarningAsError=yes MSIVersion=2.0 -u -v -w -g Allows you to upgradebut not buildyour release. Generates an engine log file. Treats any build warnings as build errors. Version of Windows Installer required on target system.

Note: This entry applies to the Standalone Build only. DotNetVersion= -j Minimum version of Microsoft .NET Framework required on the target system. This parameter is optional and defaults to the latest version of the .NET Framework supported by InstallShield.

Note: This entry applies to the Standalone Build only. DotNetPath="C:\..." -t Path to the Microsoft .NET Framework on the build machine.

Note: This entry applies to the Standalone Build only. SkipValidators=yes -h Allows you to turn off the upgrade validators that normally run at the end of the build.

Note: This entry applies to the Standalone Build only. MergeModulePath="C:\..." -o Merge module server path.

Note: This entry applies to the Standalone Build only.

906

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Entries in the [BuildLocation] Section


Table 20-4: Sample Entries in the [BuildLocation] Section of the .ini File Corresponding Command-Line Parameter -b

Entry Path="C:\InstallShield 2010 Projects\Othello"

Description Release output location.

For more information about the .ini file entries, see Building a Release from the Command Line.

Using ISBuild.exe to Build from the Command Line

Project: This information applies to InstallScript projects.


ISBuild.exe, a command-line tool that is available for legacy InstallScript projects, is a shell that calls into ISCmdBld.exe. ISCmdBld.exe handles the conversion of .ipr and .ipo (object projects created using InstallShield Professional) files to an .ism file and builds the release.

For a list of command-line parameters for ISBuild.exe, see ISBuild.exe.

Building a Self-Extracting Executable File from the Command Line

Project: This information applies to InstallScript projects.

You can build a self-extracting executable file from the command line using ReleasePackager.exe. This can be useful if you are building from a batch file.
ReleasePackager.exe is ReleasePackager.exe from

located by default in the InstallShield folders System subfolder. Do not move its installed location.

For syntax and available arguments and options for ReleasePackager.exe, see ReleasePackager.exe.

Rebuilding Releases
You can rebuild a release at any time using the default entries that you already provided in the properties in the Releases view or in the Release Wizard. The release that currently has focus is rebuilt.

Task

To rebuild a release, do one of the following:

Click the Build button. On the Build menu, click Build. In the Releases view, right-click a release name and then click Build.
ISP-1600-UG00 907

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

You can run the Release Wizard again to rebuild a release. Because the wizard stores the release settings in your InstallShield project file, the wizard displays all of the options that you set when you last built the release, even if you deleted the release. To see your new installation package, click Disk Image(s) for the appropriate release in the Releases view. InstallShield places the built installation package into the following folder if you have not changed the default release location:
C:\InstallShield 2010 Projects\project name\product configuration\release name\DiskImages\Disk1

Note: Make sure that Windows Explorer is not pointing to the Disk1 folder or a subfolder when you build your release. If it is pointing to the Disk1 folder, the build process can continue indefinitely. If Windows Explorer is accessing a subfolder, the build generates an error.

Performing Quick Builds


When you are testing your installation, you might not want to continually build all of your installation files if no files have been changed. InstallShield provides you with two quick build options: Build Tables Only and Build Tables & Refresh Files.

Build Tables Only


As the name of this option implies, only the Windows Installer tables are built. If you have not built this installation already, a new .msi file is created, but no files are added to your installation. If you have built your installation already, the .msi file is updated when all the tables are built, but no files are transferred. You can use this option to test the installations user interface.

Task

To build only your installations Windows Installer tables, do one of the following:

On the Build menu, click Build Tables Only. In the Releases view, right-click the release that you would like to build and click Build Tables Only.

Build Tables & Refresh Files


If you would like a near-complete build without having to transfer all of the installations files to a new location, you can perform a build that rebuilds your .msi file and updates the Files table, thereby including any new or changed files in your installation. Changed files are updated only if the size or time stamp differs from the copy already included in the build. References to deleted files are removed from the installation, but the file remains in the build location. This type of build works only when the media is an uncompressed network image.

Task

To build your Windows Installer tables and refresh the installations files, do one of the following:

On the Build menu, click Build Tables & Refresh Files.

908

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

In the Releases view, right-click the release that you would like to build and click Build Tables & Refresh Files.

Performing Batch Builds


You might need to build multiple releases with different configurations simultaneously. This functionality is known as a batch build.

Task

To perform a batch build through InstallShield: 1. 2.

In the View List under Media, click Releases. In a Basic MSI, InstallScript MSI, or Merge Module project: Right-click a product configuration and click Batch Build. In an InstallScipt or InstallScript Object project: Right-click the Releases explorer and click Batch Build.

The Batch Build dialog box opens to prompt you to select the product configurations and releases that you would like to build.

Resolving Build Errors and Warnings


When you build a release, the Output window opens across the bottom of the InstallShield user interface. The Tasks tab of this window lists any build errors and warnings that occur during the build process.

Task

To learn how to resolve a build error or warning that you encounter, do one of the following:

On the Tasks tab of the Output window, click an error code to launch your Internet browser and see Knowledge Base articles and HelpNet topics for the selected build error or warning. See Build Errors and Warnings, which provides tips on how to resolve build errors and warnings.

Changing Project Settings from the Command Line


The InstallShield automation interface enables you to query and modify many project settings from an unattended build process, using, for example, a VBScript script or Visual Basic application. The framework of any script that uses the automation interface to access a project appears as follows (you can copy this script into a text file called Framework.vbs and then double-click the file icon):
Set oProject = CreateObject("IswiAuto16.ISWiProject") oProject.OpenProject "C:\MySetups\MyProject.ism" ' perform queries and changes here oProject.SaveProject ' necessary only if modifying the project oProject.CloseProject

InstallShield 2010 User Guide

ISP-1600-UG00

909

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Canceling Builds

Task

To cancel a build after it has started:

Click the Stop Build button on the toolbar.

Standalone Build

Edition: The Standalone Build is available to users of InstallShield Premier Edition.

InstallShield provides a Standalone Build module that enables you to install only the part of InstallShield that compiles the installations, plus any redistributables that you want to include. For instructions on installing the Standalone Build and any redistributables on a build machine, see Installing the Standalone Build on a Build Machine. The Standalone Build can coexist with other versions of InstallShield, InstallShield DevStudio, or InstallShield Developer. Standalone Build files from different service packs of InstallShield, InstallShield DevStudio, or InstallShield Developer can coexist on the same machine (in different folders).

Upgrading Projects
The Standalone Build automatically upgrades projects created with InstallShield Developer 7.0 or later. However, it does not upgrade projects created with InstallShield for Windows Installer.

Using the Command-Line Build


You can run the Standalone Build from the command line. For more information, see Standalone Command-Line Build.

Using the Standalone Automation Interface


The Standalone Build includes a standalone version of the automation interfacethe Standalone Automation Interface.

Installing the Standalone Build on a Build Machine

Edition: The Standalone Build is available to users of InstallShield Premier Edition. In addition, support for multilanguage installations is available with InstallShield Premier Edition only.

Installing the Standalone Build


The installation for the Standalone Build consists of a single, compressed executable file. It includes all of the files that are required for building multilanguage installations.

910

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Task

To install the Standalone Build on a build machine: 1.

Locate the executable file for the Standalone Build installation:


2.

If you have the InstallShield CD, the file is on the CD and you can find it using the CD Browser. If you downloaded InstallShield, the file is available through FLEXnet Connect. For more information, see Obtaining Updates for InstallShield.

Double-click the executable file and run the installation.

During the installation, the Custom Setup dialog shows two Standalone Build features that are disabled by default. Enable these features if you want to be able to use them.

Automation InterfaceThis feature installs and registers the files that you need to use the automation interface with the Standalone Build. InstallScript Objects SupportThis feature installs and registers the InstallScript Object support files

that enable you to build InstallScript projects that contain InstallScript Objects.

Files that Are Registered During the Standalone Build Installation


When you install the Standalone Build, the installation installs and registers each of the following merge modules if they are not present:

ATL 3.0 (ATL.msm) Microsoft C Runtime Library (MSVCRT.msm) Microsoft C Runtime Library 7.1 (VC_User_CRT71_RTL_X86_---.msm) MSXML3 (msxml3_wim32.msm) MSXML4 (msxml4sxs32.msm or msxml4sys32.msm) Visual C++ 8.0 ATL (x86) WinSXS MSM (Microsoft_VC80_ATL_x86.msm) Visual C++ 8.0 ATL.Policy (x86) WinSXS MSM (policy_8_0_Microsoft_VC80_ATL_x86.msm) Visual C++ 8.0 CRT (x86) WinSXS MSM (Microsoft_VC80_CRT_x86.msm) Visual C++ 8.0 CRT.Policy (x86) WinSXS MSM (policy_8_0_Microsoft_VC80_CRT_x86.msm)

The Standalone Build installation also installs and registers the Microsoft Scripting Runtime Library (scrrun.dll) if it is not present. It is installed to the [SystemFolder]. If you copy the Standalone Build files from one machine to another instead of running the installation on that second machine, you must manually install these merge modules and the scrrun.dll file if they are not already present. You can obtain the installation packages for the merge modules from the Microsoft Web site (http://www.microsoft.com). Files that Are Registered During the Installation of the Optional Automation Support Feature The Automation Interface feature in the Standalone Build installation installs and registers the files that you need in order to use the automation interface with the Standalone Build. Following is the list of files that need to be registered:
InstallShield 2010 User Guide ISP-1600-UG00 911

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Program Files Folder\Common Files\InstallShield\Shared\IsmAuto.tlb Program Files Folder\Common Files\InstallShield\Shared\Ismmupdater.tlb Program Files Folder\Common Files\InstallShield\Shared\ISWIBuild.tlb Standalone Build Program Files Folder\System\IsAppServices.tlb Standalone Build Program Files Folder\System\IsUpgrade.tlb Standalone Build Program Files Folder\System\ISWiAutomation16.dll

If you copy the Standalone Build files from one machine to another instead of running the installation on that second machine, and if you want to be able to use the automation interface with the Standalone Build, you must manually register these files. Files that Are Registered During the Installation of the Optional InstallScript Objects Support Feature The InstallScript Objects Support feature installs and registers the InstallScript Object support files that enable you to build InstallScript projects that contain InstallScript Objects. Following is the list of files that need to be registered:

Standalone Build Program Files Folder\System\DObj16.dll Standalone Build Program Files Folder\System\ISBE.dll Standalone Build Program Files Folder\System\ISMK16.dll Standalone Build Program Files Folder\System\StockWiz.dll

If you copy the Standalone Build files from one machine to another instead of running the installation on that second machine, and if you want to be able to build InstallScript projects that contain InstallScript Objects, you must manually register these files.

Manually Registering Files for the Standalone Build


To manually register one of the aforementioned DLL files for the Standalone Build, use Regsvr32.exe, which is installed in the System32 folder. To manually register one of the .tlb files, use the following file:
Standalone Build Program Files Folder\System\RegTypLib.exe

Adding Redistributables to the Build Machine for the Standalone Build

Edition: The Standalone Build is available to users of InstallShield Premier Edition.

Most of the redistributablesincluding merge modules, objects, and InstallShield prerequisitesare not installed automatically with the Standalone Build because they would require significantly more hard disk space. This allows you to install on the build machine only the redistributables that are required by your InstallShield projects. The only one that is included is the .NET Framework 2.0 redistributable.

912

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Tip: The Standalone Build uses the same basic directory structure that InstallShield uses for its program files. Therefore, if you need to copy a redistributable or some other file from a machine that has InstallShield to a machine that has the Standalone Build, use the same relative path. For example, if a file is in the InstallShield Program Files Folder\Modules\i386 directory on the machine that has InstallShield, copy that file to the Standalone Build Program Files Folder\Modules\i386 directory on the machine that has the Standalone Build.

Task

To add a .NET redistributable to your build machine: 1.

Locate the required redistributables on the machine that has the full version of InstallShield. The file is typically located in InstallShield Program Files Folder\Redist or a subfolder of the Redist folder. If an InstallShield redistributable is not available on your machine, you must download it first. For more information, see Redistributable Downloader Wizard. Copy the redistributable from the machine that has InstallShield to the Standalone Build Program Files Folder on the build machine.

2.

Task

To add a redistributable for Basic MSI or InstallScript MSI projects to your build machine: 1.

Locate the required redistributables on the machine that has the full version of InstallShield. If an InstallShield redistributable is not available on your machine, you must download it first. For more information, see Downloading Redistributables to Your Computer.

The two default locations for InstallShield merge modules are:


InstallShield Program Files Folder\Modules\i386 Common Files\Merge Modules


2.

The default location for the InstallShield objects is:


InstallShield Program Files Folder\Objects

All InstallShield prerequisites are stored in the following location:


InstallShield Program Files Folder\SetupPrerequisites

If you built your own merge modules in InstallShield, you would find them in any of the locations that are listed on the Merge Modules tab of the Options dialog box.

Copy the redistributable from the machine that has InstallShield to appropriate location on the build machine.

Add merge modules to the following folder:


Standalone Build Program Files Folder\Modules\i386

Add objects to the following folder:


Standalone Build Program Files Folder\Objects

Add InstallShield prerequisites to the following folder:


Standalone Build Program Files Folder\SetupPrerequisites

InstallShield 2010 User Guide

ISP-1600-UG00

913

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Task

To add an InstallShield prerequisite for InstallScript projects to your build machine: 1.

Locate the required InstallShield prerequisite on the machine that has the full version of InstallShield. If an InstallShield redistributable is not available on your machine, you must download it first. For more information, see Downloading Redistributables to Your Computer. All InstallShield prerequisites are stored in the following location:
InstallShield Program Files Folder\SetupPrerequisites

2.

Copy the InstallShield prerequisite from the machine that has InstallShield to appropriate location on the build machine:
Standalone Build Program Files Folder\SetupPrerequisites

Task

To add to your build machine one of the other InstallShield redistributables for InstallScript projects: 1. 2.

Download the installation for the redistributable. The installations are available through FLEXnet Connect. For more information, see Obtaining Updates for InstallShield. Run the redistributable installation on the build machine. When the InstallShield Wizard displays the Choose Destination Location dialog, browse to the following location:
Standalone Build Program Files Folder\ObjectsPro

If the ObjectsPro folder has not been created yet, you will need to add that folder. The InstallScript object installations install and register the required object files.

Task

To add to your build machine one of your own InstallScript redistributables or a third-party redistributable: 1. 2.

Locate the redistributable. Place it in the following location on the build machine:
Standalone Build Program Files Folder\ObjectsPro

If the ObjectsPro folder has not been created yet, you will need to add that folder.

Standalone Command-Line Build

Edition: The Standalone Build is available to users of InstallShield Premier Edition.

The Standalone Build lets you use ISCmdBld.exe to build releases from the command line. For instructions, see Building a Release from the Command Line. For a list of command-line parameters that ISCmdBld.exe supports, see ISCmdBld.exe.

914

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Standalone Automation Interface

Edition: The Standalone Build is available to users of InstallShield Premier Edition.

The Standalone Build includes a standalone version of the automation interfacethe InstallShield Standalone Automation Interface. This interface uses the same ISWiAutomation16.dll file that is installed with InstallShield, but it is installed to a different location.

Note: If you install the Standalone Build on the same machine as InstallShield, the first ISWiAutomation16.dll file that is installed is the one that is registered. To learn more, see Installing the Standalone Build and InstallShield on the Same Machine.

Future versions of the Standalone Build will have new ProgIDs and new GUIDs. This enables you to install multiple versions of the Standalone Automation Interface side by side on the same build machine.

Registering ISWiAutomation16.dll
The Standalone Automation Interface is contained in the file ISWiAutomation16.dll. If you installed the Standalone Build by running the installation for the Standalone Build, this file is already registered. If you copied the files for the Standalone Build instead of running the installation, you need to register this file manually using Regsvr32.exe, which is installed in the System32 folder. The ISWiAutomation16.dll file is installed in the System subfolder of the Standalone Build Program Files folder.

Installing the Standalone Build and InstallShield on the Same Machine

Edition: The Standalone Build is available to users of InstallShield Premier Edition.

In most cases, the Standalone Build is not installed on the same machine where InstallShield is installed. If you do install both on the same machine, you need to be aware that the Standalone Automation Interface uses the same ISWiAutomation16.dll file that InstallShield uses, but it is installed to a different location. In addition, both the Standalone Automation Interface and InstallShield use the same ProgID: IswiAuto16.ISWiProject. This enables you to use the same automation script with both the Standalone Automation Interface and InstallShield, without requiring you to change your code to reflect the appropriate ProgID. When you first install either InstallShield or the Standalone Build, the installation registers If you next install the other tool, that second installation detects that ISWiAutomation16.dll is already registered, so it does not re-register it. As long as one instance of ISWiAutomation16.dll is registered, you can use both the Standalone Build and InstallShield with the automation interface.
ISWiAutomation16.dll.

If you uninstall the first instance that you originally installed, the installation unregisters Therefore, you must manually register ISWiAutomation16.dll so that you can use the automation interface with the product that still remains. For example, if you install InstallShield, install the Standalone Build, and then uninstall InstallShield, you must next manually register the ISWiAutomation16.dll file for the Standalone Build; otherwise, you cannot use the Standalone Automation Interface.
ISWiAutomation16.dll.

InstallShield 2010 User Guide

ISP-1600-UG00

915

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

To manually register ISWiAutomation16.dll, use Regsvr32.exe, which is installed in the System32 folder. The ISWiAutomation16.dll file is installed in the System subfolder of the InstallShield and Standalone Build Program Files folders.

Microsoft Build Engine (MSBuild)


InstallShield supports the Microsoft Build engine (MSBuild) included with the .NET Framework. MSBuild support enables you to build Visual Studio solutions with InstallShield projects in build lab environments where Visual Studio is not installed.

Overview
MSBuild is an extensible build framework designed to remove the build dependence on Visual Studio. The .NET Framework functions in a role similar to the InstallShield Standalone Build, providing the capability to build projects or solutions from the command line or any other host of MSBuild. For more information on MSBuild, see the MSDN Library.

MSBuild Tasks
The flexibility and extensibility of MSBuild is controlled through atomic groupings of internal build steps referred to as tasks. One example of a task that ships with MSBuild is Csc, which can compile code from a Visual C# project. InstallShield installs an MSBuild task called InstallShield, which builds an InstallShield project, and a targets file that provides default build steps for the project. This customized task, along with the targets file, enables MSBuild to perform all required actions to build the InstallShield project as part of a Visual Studio solution. This table describes the parameters of the InstallShield task.
Table 20-5: MSBuild InstallShield Task Parameter InstallShieldPath Type String Description This parameter specifies the path to folder containing the InstallShield application. This parameter specifies the location of the project file (.ism). This parameter specifies the product configuration for the release. This parameter specifies the release name.

Project ProductConfiguration ReleaseConfiguration

String String String

Note: You must specify the ReleaseConfiguration or the PatchConfiguration. If you do not specify one of these, or if you specify both of these, a build error occurs.

916

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Table 20-5: MSBuild InstallShield Task Parameter PatchConfiguration Type String Description This parameter specifies the name of the patch configuration in the Patch Design view that is being built.

Note: You must specify the ReleaseConfiguration or the PatchConfiguration. If you do not specify one of these, or if you specify both of these, a build error occurs. OutDir String This parameter specifies the fully qualified path to the folder where you want the output folders and files to be placed. This parameter specifies one or more folders that contain the merge module files (.msm) referenced by your project. The default is the folder that contains the Standalone Build, which by default does not contain any merge modules. This parameter enables you to specify any release flags that you want to include in your release. Separate multiple flags with commas. This parameter enables you to override the path variables for the project. Using this parameter, you can specify the path to the path variable and also define a value for the name of the path variable using the PathVariable subelement. For more information on MSBuild ITaskItem[ ] properties, see the MSDN Library. PreprocessorDefines ITaskItem[ ] This parameter enables you to add or override the preprocessor defines for the project. Using this parameter, you can specify the definition of the preprocessor define and also define a value for the name of the preprocessor define using the Token subelement. For more information on MSBuild ITaskItem[ ] properties, see the MSDN Library. OutputGroups ITaskItem[ ] This parameter specifies the project output groups from the Visual Studio solution. Using this parameter, you can specify the path to the source location of the project output group and also define these additional values using these subelements as listed:

MergeModulePath

String[ ]

ReleaseFlags

String[ ]

PathVariables

ITaskItem[ ]

NameName of the project OutputGroupName of the project output group TargetPathTarget path of the project output group (different from its source location)

For more information on MSBuild ITaskItem[ ] properties, see the MSDN Library.

InstallShield 2010 User Guide

ISP-1600-UG00

917

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Table 20-5: MSBuild InstallShield Task Parameter Build Type String Description This parameter specifies what type of build to perform. You can choose from these types of builds:


BuildCompressed Boolean

Complete Compile Tables TablesAndFiles UpgradeOnly

This parameter is specific to Windows Installer projects. It specifies whether your release is compressed into one file or remains uncompressed in multiple files. This parameter specifies whether you want to create a Setup.exe file along with your installation. This parameter specifies the product version. This is especially helpful if you want to increment the build version (the third field) of the product version. For information on valid product version numbers, see Specifying the Product Version.

BuildSetupExe

Boolean

ProductVersion

String

PropertyOverrides

ITaskItem[ ]

This parameter enables you to override the value of a Windows Installer property or create the property if it does not exist. To use this parameter, include a property list of items whose value is the new property value, and whose metadata Property is the name of the property. This parameter is exposed as the InstallShieldPropertyOverrides ItemGroup passthrough to the PropertyOverrides property on the InstallShield task.

RunMsiValidator

ITaskItem[ ]

This parameter enables you to specify one or more .cub files to use for validating the installation package or merge module after it is built. To learn more about validation, see Validating Projects.

RunUpgradeValidation StopOnFirstError

Boolean Boolean

This parameter specifies whether or not to run upgrade validation. This parameter specifies whether or not to stop the build after an initial error. This parameter specifies the minimum version of Windows Installer that the installation can accept on the target machine. This parameter specifies the minimum version of the .NET Framework that the installation can accept on the target machine. This parameter specifies the location of the output folder.

MsiVersion

String

DotNetFrameworkVersion

String

Disk1Folder

Output String

918

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

MSBuild Scripts
MSBuild natively understands one file format: its XML build script, which is used as the project file format for Visual C# and Visual Basic .NET projects (.csproj and .vbproj). MSBuild also has internal hooks to handle solution files and the Visual C++ project file format (.sln and .vcproj). The InstallShield integration with Visual Studio uses an MSBuild-compatible XML format project file (.isproj), which enables MSBuild to seamlessly build Visual Studio solutions that include InstallShield projects. To build solutions in a standalone environment, install the InstallShield Standalone Build on the build machine.

Customizing the .isproj File


To incorporate changes for your InstallShield project into your .isproj file, add a PropertyGroup element or an ItemGroup element near the top of your .isproj file, or update an existing PropertyGroup or ItemGroup element. Then add InstallShield-related parameters as needed. The following sample code from an .isproj file demonstrates how to set the product version and product name. It also shows how to set a custom public property called MY_PROPERTY to the value My Value.
<PropertyGroup> <InstallShieldProductVersion>1.2.3</InstallShieldProductVersion> </PropertyGroup> <ItemGroup> <InstallShieldPropertyOverrides Include="My Value"> <Property>MY_PROPERTY</Property> </InstallShieldPropertyOverrides> <InstallShieldPropertyOverrides Include="My New Product"> <Property>ProductName</Property> </InstallShieldPropertyOverrides> </ItemGroup>

Using MSBuild to Build a Release from the Command Line


MSBuild provides an easy way to build a release from the command line on a machine on which Visual Studio is not installed. The only components you must have installed on the machine are the .NET Framework and the InstallShield Standalone Build. Place a copy of your Visual Studio solution on the machine, and run MSBuild.

Task

To use MSBuild from the command line: 1. 2.

Open the Command Prompt window. Change the directory to the one that contains MSBuild.exe:
C:\Windows\Microsoft.NET\Framework\Version Folder\

3.

Type the command-line statement to build the release build of the Visual Studio integration project. For example:
MSBuild.exe C:\Folder Containing My Visual Studio Solution\My Solution.sln / property:Configuration=Release

InstallShield 2010 User Guide

ISP-1600-UG00

919

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Configuring Release Settings


When you create a release, it has default settings. You can edit all of the release settings in the Releases view. When you use the Release Wizard, you can also edit the settings of a release.

Task

To edit the settings of a release: 1. 2. 3.

In the View List under Media, click Releases. In the Releases explorer, select the release whose settings you would like to configure. The settings are displayed on tabs in the right pane. Select a setting on one of the tabs to modify its value. Information about the setting is displayed in the help pane or when you press F1 from within the Releases view.

Creating a Single Executable File for Distribution

Project: This information applies to InstallScript projects.

To package a build as a single executable file, use the Create a single file executable option in the General Options panel of the Release Wizard, or the Singe Exe File Name setting in the Releases view, as described in the following procedures.

Note: The single executable file that you create accepts any command-line parameter that Setup.exe accepts.

Task

To package a build as a single executable file by using the Release Wizard: 1. 2. 3. 4.

Launch the Release Wizard. Navigate to the General Options panel. Select the Create a single file executable check box. By default, the file name <project name>.exe is entered in the File Name box. If you want the self-extracting executable file to have a different name, type a new file name in the box or select a path variable whose value defines the file name. In the Icon box, you can specify the fully qualified name of the file from which the executable files icon is taken at build time; if no file is specified, a default icon is used. To specify a file, type an explicit path, select and append to a path variable, or click the Browse button to open the Change Icon dialog box, in which you can click the Browse button to select a file. By default, the icon with index 0 is used; to specify a different icon, either select an icon in the Change Icon dialog box or append the icons index or resource ID (preceded by a minus sign) to the file name. For example, C:\Temp\MyLibrary.dll,2 indicates the icon with an index of 2, and C:\Temp\MyLibrary.dll,-100 indicates the icon with a resource ID of 100.

5.

920

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Note that you can specify a non-default icon only when building on a Windows NT, Windows 2000, or Windows XP machine.
6.

If you want the executable file to extract the installation files to the target machine and not run the installation, enter -extract_all:<path> in the Setup Command Line box, where <path> is the desired target folder; for example:
-extract_all:"C:/ProductName Setup Files"

7.

Complete the Release Wizard; in the Summary panel, select the Build the Release check box and then click the Finish button.

Task

To package a build as a single executable file by using the properties in the Releases view: 1. 2. 3. 4. 5.

In the View List under Media, click Releases. In the Releases explorer, select the release that you want to package as a single executable file. Select the Setup.exe tab. For the Singe Exe File Name setting, type a file name or a path variable (enclosed in angle bracketsfor example, <MY EXE FILE NAME>) whose value defines the file name. For the Singe Exe Icon File setting, specify the fully qualified name of the file from which the executable files icon is taken at build time; if no file is specified, a default icon is used. To specify a file, type an explicit path or path variable, or click the ellipsis (...) button to open the Change Icon dialog box, in which you can click the Browse button to select a file. By default, the icon with index 0 is used; to specify a different icon, either select an icon in the Change Icon dialog box or append the icons index or resource ID (preceded by a minus sign) to the file name. For example, C:\Temp\MyLibrary.dll,2 indicates the icon with an index of 2, and C:\Temp\MyLibrary.dll,-100 indicates the icon with a resource ID of 100. Note that you can specify a non-default icon only when building on a Windows NT, Windows 2000, or Windows XP machine.

6.

If you want the executable file to extract the installation files to the target machine and not run the installation, enter the following for the Setup Command Line setting:
-extract_all:<path>

where <path> is the desired target folder; for example:


-extract_all:"C:/ProductName Setup Files"

7.

Build the release.

To learn how to digitally signing your executable file, see Digital Signing and Security. For information about requiring end users to enter a password in order to launch the self-extracting executable file, see Password-Protecting Installations.

Specifying the Setup Launcher Type (Unicode or ANSI) for a Release

Project: This information applies to Basic MSI projects.


InstallShield 2010 User Guide ISP-1600-UG00 921

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

InstallShield creates ANSI setup launchers for InstallScript MSI and InstallScript projects; it does not support the creation of Unicode setup launchers for these project types.

If your release includes a setup launcher, InstallShield lets you specify the type of setup launcher that you want to build:

UnicodeA Unicode setup launcher can correctly display double-byte characters in the setup

launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the double-byte-character language. Windows 9x does not support Unicode setup launchers.

ANSIAn ANSI setup launcher displays double-byte characters in the setup launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page.

Task

To specify the setup launcher type for a release: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the release that you would like to configure. Click the Setup.exe tab. For the Setup Launcher Type setting, select the appropriate option.

Tip: To learn about scenarios that require a Setup.exe setup launcher, see Creating a Setup Launcher.

Specifying the Required Execution Level for Your Setup Launcher on Windows Vista Platforms

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield lets you specify the minimum execution level required by your installations Setup.exe file for running the installation (the setup launcher, any InstallShield prerequisites, and the .msi file) on Windows Vista platforms. You can configure this for each individual release in your project.

Task

To specify the required execution level for a release: 1. 2.

In the View List under Media, click Releases. In the Releases explorer, click the release that you would like to configure.

922

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

3. 4.

Click the Setup.exe tab. For the Required Execution Level setting, select the appropriate option.

The available options are:

AdministratorSetup.exe requires administrative privileges to run. Administrators must provide consent, and non-administrators must provide credentials. Highest availableSetup.exe prefers administrative privileges. Administrators must provide consent to run it; non-administrators run it without administrative privileges. This is the default option for InstallScript and InstallScript MSI projects. InvokerSetup.exe does not require administrative privileges, and all users can run it without administrative privileges. Setup.exe does not display any UAC messages prompting for credentials or for consent. This is the default option for Basic MSI projects.

For InstallScript and InstallScript MSI projects, and for Basic MSI projects if the Setup Launcher setting is set to Yes, InstallShield embeds a Windows Vista application manifest in the Setup.exe launcher as a resource. This manifest specifies the selected execution level. Operating systems earlier than Windows Vista ignore the required execution level. The execution level is defined in the manifest as follows:
<requiredExecutionLevel level="asInvoker" uiAccess="false"/>

Other valid values for the level attribute are highestAvailable and requireAdministrator. If the Setup Launcher setting is set to No for a Basic MSI project, InstallShield does not embed the Windows Vista application manifest in the Setup.exe launcher. The benefit of elevating the required execution level in Basic MSI projects is that privileges can be elevated only once if necessary to run Setup.exe, and that these privileges can be carried over to all of the installations InstallShield prerequisites and the Execute sequence of the .msi package without requiring multiple prompts for approval. Thus, if two of your InstallShield prerequisites require administrative privileges, for example, you can change this setting to Administrator, and then end users are prompted only once during the installation, before Windows Installer runs the Setup.exe file. Note, however, that if you elevate the privileges and also launch the application at the end of the installation, the elevated privileges are carried over to the application. In most cases, running an application with elevated privileges on Windows Vista platforms is discouraged.

Important: InstallShield runs with elevated privileges. If you launch your installation from within InstallShield, those elevated privileges are carried over to your installation; thus, your installation automatically has elevated privileges. That may not reflect the behavior that end users will see if they are using Windows Vista. Therefore, if you are using Windows Vista on your development system, consider opening the release folder and launching the installation directly (instead of from within InstallShield). To quickly access your release folder so that you can launch your release directly, click the Open Release Folder on the Standard toolbar, or on the Tools menu, click Open Release Folder.

Note that an end users installation experience is more secure when installations are run with only the permissions that they need. Unless an application is designed to be run only by system administrators, it should be run with the least privilege.

InstallShield 2010 User Guide

ISP-1600-UG00

923

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Specifying Whether a Product Should Be Advertised If Its InstallShield Prerequisites Are Run with Elevated Privileges

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Depending on how it is configured, an installation that includes InstallShield prerequisites may display a User Account Control (UAC) prompt for elevated privileges on Windows Vista systems at several different points during the installation:
1. 2. 3. 4.

When the end user launches the Setup.exe file When the Setup.exe file launches a setup prerequisite that requires elevated privileges When the Setup.exe file launches a feature prerequisite that requires elevated privileges When the Windows Installer begins the Execute sequence of the .msi package

If you select Administrator for your installations Required Execution Level setting in the Releases view, Windows Vista typically displays only one UAC prompt; it is displayed when the end user launches the Setup.exe file. However, if you select Invoker for this setting, Windows Vista may display more than one UAC prompt during the installation. For example, Windows Vista may display a UAC prompt for a setup prerequisite that requires elevated privileges and another UAC prompt for the Execute sequence of the .msi package. If this scenario applies to your installation, you may want to specify that your installation should advertise and then run your .msi package to help end users avoid the UAC prompt for the .msi package. If this scenario does not apply to you, it is recommended that you avoid advertising the .msi package because it would not avoid a UAC prompt.

Tip: The Require Administrative Privileges setting in the General Information view is where you specify whether the .msi package requires administrative privileges. The Behavior tab in the InstallShield Prerequisite Editor is where you specify whether a prerequisite requires administrative privileges. For more information about other InstallShield settings that may affect whether Windows Vista displays UAC prompts, see Minimizing the Number of User Account Control Prompts During Installation.

Task

To specify whether your .msi package should be advertised: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the release that you would like to configure. Click the Setup.exe tab. For the Advertise If Prerequisites Are Elevated setting, select the appropriate option.

The available options are:

Advertise: SilentIndicates that if setup prerequisites in the installation are successfully installed with elevated privileges, the .msi package should be advertised and run silently (without a user

924

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

interface). Then the Execute sequence of the main installation does not require an additional UAC prompt for consent or credentials.

Advertise: Full UIIndicates that if setup prerequisites in the installation are successfully installed with elevated privileges, the .msi package should be advertised and run with a full user interface. Then the Execute sequence of the main installation does not require an additional UAC prompt. NoIndicates that the .msi package should not be advertised. When end users run the installation, one or more UAC prompts may be displayed to install the setup prerequisites. If the Execute sequence of the .msi package also requires elevation, an additional UAC prompt may be displayed before the Windows Installer begins the Execute sequence.

Important: The package must support advertisement in order for either of the advertise options to work. Advertisement is not instantaneous, and it adds extra delays to the installation. In addition, unexpected behavior may occur if the end user clicks Cancel after advertisement but before the main part of the installation has finished. For example, advertised shortcuts for your product may appear on the desktop before the main installation begins, and a confused user canceling the main installation may leave your package advertised but not fully installed. Therefore, in some cases, it may be better to leave this setting as No to allow the extra UAC prompt and avoid product advertisement.

A common goal is for an installation to display only one UAC prompt. The advertise options for the Advertise If Prerequisites Are Elevated setting facilitate this but do not guarantee it in all situations. For example, any time that an installation causes a restart, the installation process returns to limited privileges after the restart. The subsequent privilege elevation may display an additional UAC prompt, whether the elevation is required for a setup prerequisite, for a feature prerequisite, or for the .msi package. When the restart comes between the last prerequisite and the .msi package, the .msi package is not advertised. Following are some examples of different outcomes that may occur when you select one of the advertise options for this setting:

The prerequisites require elevation and install successfully on the target machine. The product is advertised and installed. The product installation does not display a UAC prompt. One of the prerequisites in the installation may require a restart. After the restart for the prerequisite occurs, either no additional prerequisites are installed or none of the other prerequisites that are installed require elevation. Since the last prerequisite that is installed in this scenario is not a simple success of an elevated prerequisite, advertisement of the .msi package does not occur. None of the prerequisites in the installation need to be installed because they are already present on the target machine; therefore, advertisement of the .msi package does not occur. None of the prerequisites in the installation require elevation; therefore, advertisement of the .msi package does not occur. Elevated prerequisites are successfully installed. However, for this situation, the package is a minor upgrade for a product that is already installed. That is, the product code in the package matches the product code of the product that is already present on the target machine. Advertisement of the .msi package does not occur. UAC prompts may or may not be displayed; it depends on whether a suitable digital certificate is included in the earlier installation and in the patch.

InstallShield 2010 User Guide

ISP-1600-UG00

925

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Leaving Files Uncompressed in a Disk Image

Project: This information applies to InstallScript projects.

Task

To place some or all features files uncompressed in the disk image, use the Media Layout panel in the Release Wizard. 1. 2.

Launch the Release Wizard and navigate to the Media Layout panel. Do either of the following:

To place all features files uncompressed in the disk image: Select the CDROM Folder(s) option. All features files are placed in the disk image in the folders specified by the features CD-ROM Folder properties. If no folder is specified for a feature, that features files are placed in the root of the disk image. To place some features files uncompressed in the disk image:
a. b.

Select the Custom option, and then click Next. The Custom Media Layout panel opens. In the Features in cabinets box, select or clear the check boxes next to the features. If a features files are stored in cabinet files, clear the check box. If a features files should be placed in the disk image in the folder specified by the features CD-ROM Folder property, select the check box. If no folder is specified, that features files are placed in the root of the disk image.

Tip: If you want most of your features stored in cabinet files, click Clear All and then select the features to be placed uncompressed in the disk image. Conversely, if you want most of your features placed uncompressed in the disk image, click Select All and then clear the check boxes for the features to be stored in cabinet files. 3.

Complete the Release Wizard.

Note: Regardless of whether you selected Yes or No for the Compressed setting of a features component, by selecting the uncompressed (CD-ROM folder) option for the feature, its files will be uncompressed on the distribution media.

Password-Protecting Installations
For added security, you can password-protect your installation package. When you password-protect your installation, any end user who wants to install your package must enter a case-sensitive password to open your installation. You can activate password protection in the Password & Copyright panel of the Release Wizard.

926

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Preparing a Trialware Release of Your Product


If you have added a trialware file to your project in the Trialware view, you can build a trialware version of your product. InstallShield will wrap a trialware shell around the executable file (.exe, .dll, .ocx, or .scr file) specified in the Trialware view. The executable file can be unwrapped and used only according to the license settings that you configure, such as the trial limit (a specified number of days or a specified number of uses).

Task

To prepare a trialware release of your product: 1. 2. 3. 4. 5.

In the View List under Media, click Releases. In the Releases explorer, click the release that you want to build. Click the Build tab. For the Disable Trialware Build setting, select No. This is the default setting. Build the release.

At build time, a folder called TestTools is created and placed in the same folder as the DiskImages folder for the selected release.

Caution: Do not release the files in the TestTools folder with your product or make them available to your customers. Doing so would enable end users to continually restart a trial each time that it expires. Note that the TestTools files are specific to a particular product and license and cannot be used to delete licenses for other products.

For each file being wrapped, the TestTools folder contains the following files:

SCResetLicense<WrappedBaseFileName>.exe IsSvcInstSCResetLicense<WrappedBaseFileName>.dll

For example, if a file called Calc.exe is wrapped, the files in the TestTools folder are SCResetLicenseCalc.exe and IsSvcInstSCResetLicenseCalc.dll. You can use the TestTools files to remove the license for your product from a machine, resetting the trialware state. This enables you to restart the trial for your protected product and retest it. For more information, see Testing a Trialware Release of Your Product.

Excluding Trialware Protection from a Release


If you have added a trialware file to your project in the Trialware view, you might need to build a release of your product that does not have the trialware protection. You can use this release if you want to test the installation of your product but you do not want to test the trialware run time. You also may want to build a release without trialware protection if you distribute the Try and Die type of trialware to prospective customers. You can give them the unprotected release when they have finished evaluating your product and they purchase it from you.

InstallShield 2010 User Guide

ISP-1600-UG00

927

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Task

To prepare a release of your product that does not have the trialware protection: 1. 2. 3. 4. 5.

In the View List under Media, click Releases. In the Releases explorer, click the release that you want to build. Click the Build tab. For the Disable Trialware Build setting, select Yes. Build the release.

If you have not added a trialware file to your project in the Trialware view, the Disable Trialware Build property has no effect on the release build.

Specifying the Location for InstallShield Prerequisites at the Release Level

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI

An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. The Redistributables view is where you add InstallShield prerequisites to your project.

Task

To specify where all of the InstallShield prerequisites should be located for a release, do one of the following:

Use the InstallShield Prerequisite panel of the Release Wizard. In the Releases view, select the release. Then on the Setup.exe tab, for the InstallShield Prerequisites Location setting, select the appropriate option.

Task

To specify different locations for each InstallShield prerequisite: 1.

In the Redistributables view (in Basic MSI and InstallScript MSI projects) or the Prerequisites view (in InstallScript projects), specify the appropriate location for each InstallShield prerequisite. For more information, see Specifying a Location for a Specific InstallShield Prerequisite. In the View List under Media, click Releases. Select the release that you want to build. Click the Setup.exe tab. For the InstallShield Prerequisites Location setting, select Follow Individual Selections.

2. 3. 4. 5.

928

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Tip: As an alternative, you can select the Follow Individual Selections option in the InstallShield Prerequisite panel of the Release Wizard.

Note that if an InstallShield prerequisite is added to a project as a dependency of another prerequisite, the location for the prerequisite dependency follows the location setting of the prerequisite that requires it. If you build a release that includes InstallShield prerequisites and both of the following are true, one or more build errors may be generated:

You specify for the InstallShield prerequisites location that the prerequisites should be extracted from Setup.exe or copied from the source media (instead of being downloaded from the Web to the end users computer). The prerequisite files are not on your computer.

To eliminate the build errors, remove the InstallShield prerequisite from your project, download the InstallShield prerequisite from the Internet to your computer, or change the InstallShield prerequisites location for the release to the download option; then rebuild the release.

Digital Signing and Security


You can digitally sign your installation and your application to assure end users that neither your installation nor the code within your application has been tampered with or altered since publication. When you digitally sign your application, end users are presented with a digital certificate when they run your installation.

Note: When you are building a release on a Windows 2000 machine, SP4 must be installed in order for you to digitally sign the application.

The Signing tab is where you specify the digital signature informationincluding the digital signature files granted to you by a certification authoritythat InstallShield should use to sign your files. The Signing tab is also where you specify which files in your installation should be digitally signed by InstallShield at build time. InstallShield enables you to sign any and all of the following files in a release, depending on what type of project you are using:

Windows Installer package (.msi file) for Basic MSI and InstallScript MSI projects Merge module package (.msm file) for Merge Module projects
Setup.exe file

for Basic MSI, InstallScript, and InstallScript MSI projects

Media header file for InstallScript projects Any files in your release, including your application files

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

To learn more about the various settings on the Signing tab, see Signing Tab for a Release.
InstallShield 2010 User Guide ISP-1600-UG00 929

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Certification Authorities
A certification authority is an organization such as VeriSign that issues and manages digital certificates (also known as digital IDs). The certification authority validates the requesters identity according to prescribed criteria and issues a digital certificate. Obtaining a digital certificate requires providing the certificate authority with specific information about your company and your product. For a list of certification authorities, see Microsoft Root Certificate Program Members on the MSDN Web site.

Digital Certificate Files


When you sign your installation and your application, you must use one or more digital certificate files. These files are used to generate the digital signature. Two options are available: Option 1.spc and .pvk Files When a certification authority issues you a digital certificate, they provide two files:

Private key file (.pvk) Software publishing credentials file (.spc)

The .pvk file is typically associated with a password. InstallShield uses Signcode.exe to digitally sign your files with your .pvk and .spc files according to the settings that you configure on the Signing tab in the Releases view. The Signcode.exe file is a Microsoft tool that is installed with InstallShield in the following directory:
InstallShield Program Files Folder\System

To learn more about Signcode.exe, including its command-line parameters, see the Microsoft Web site. Option 2.pfx File As an alternative to using the .pvk and .spc files to digitally sign your installation and your application, you can use a personal information exchange file (.pfx). The following tools enable you to create a .pfx file from a .pvk file and .spc file:

PVK2PFX.exeThis

is part of the Windows Platform SDK, and it is also included with Microsoft Visual Studio 2005. can download this PVK Digital Certificate Files Importer tool from the downloads area on the Microsoft Web site (http://www.microsoft.com/downloads/ details.aspx?FamilyID=F9992C94-B129-46BC-B240-414BDFF679A7&displaylang=EN).

pvkimprt.exeYou

The .pfx file is typically associated with a password. InstallShield uses SignTool.exe to digitally sign your files with your .pfx file according to the settings that you configure on the Signing tab in the Releases view. The SignTool.exe file is a Microsoft tool that is installed with InstallShield in the following directory:
InstallShield Program Files Folder\System

Tip: Using a .pfx file is often the preferred method for digitally signing files, since it is more likely to work in many different environments (such as locked build machines). Since the SignTool.exe utility accepts the password as a command-line parameter, it can be automatically provided even in scenarios where Signcode.exe cannot accept the password.

930

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Therefore, if you specify the digital signature password in InstallShield, you will never see a password prompt if you are using a .pfx file.

Important: InstallShield does not support using .pfx files to sign media header files (.hdr files), which are used for the One-Click Install type of installation for InstallScript projects. For this type of installation, consider one of the following alternatives:

Use .spc and .pvk files instead of a .pfx file for your digital signature. Build a compressed installation, which would enable you to sign with a .pfx file.

To learn more about SignTool.exe, including its command-line parameters, see the Microsoft Web site. Contact a certification authority for more details about digital certificate files.

Digital Certificates
A digital certificate identifies you, your company, or both to end users and assures them the data they are about to receive has not been altered during its transfer over the Web. Certification authorities issue and manage digital certificates. When end users download your application, a digital certificate is displayed. The digital certificate is a panel that informs end users when your application was signed and asks if they want to download and run your application. End users click OK to accept your application package. Below is an example of a digital certificate. The appearance of digital certificates may vary among browsers and browser versions.

Figure 20-1: Sample Digital Certificate

InstallShield 2010 User Guide

ISP-1600-UG00

931

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Digitally Signing a Release and Its Files at Build Time


InstallShield lets you configure digital signing settings for a release. At build time, InstallShield uses the settings that you have configured to sign your installation package, your Setup.exe file, and any other files in your release that meet the criteria that you have defined.

Task

To configure digital signing for your release and its files: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the release that you want to sign. Click the Signing tab. Configure the following settings as appropriate:


5.

Certificate URL Digital certificate file (SPC or PFX) Private file key (PVK)Note that if you specify a .pfx file, you do not also need to specify a .pvk file. Certificate password

Select the appropriate check boxes to indicate which files in your release you want InstallShield to sign. If you select the Sign files in package check box, you must configure which files or file patterns (such as all *.exe files) should be signed. You can also specify which files and file patterns should not be signed. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

Tip: For detailed information about any of the settings on the Signing tab, see Signing Tab for a Release.

At build time, InstallShield signs the files as specified on the Signing tab. If the release is for an installation that includes merge modules, note that the files are signed before the merge module is merged.

Manually Signing Files in a Project


You may want to manually sign the files in a project without configuring InstallShield to do so automatically at build time. You want to do this with uncompressed .msi files, .msm files, and Setup.exe. To manually sign files, you can use the SignTool.exe or Signcode.exe files that are included with InstallShield. For more information about these tools, see Digital Signing and Security. Once you have manually signed a file, you can add the file and any corresponding certificate files to your project through the Files and Folders view.

932

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Digitally Signing a Release After It Has Been Built From the Command Line

Project: This information applies to the following project types:

InstallScript InstallScript Object

As an alternative to having InstallShield sign your application at build time, you can use the iSign application (iSign.exe) to digitally sign a release of an InstallScript project from the command line after you have built the release from the command line. The iSign application is located in the following directory:
InstallShield Program Files Folder\System

This application uses Microsoft Authenticode technology to create digital signatures for your installation. In order to use this program, you need a digital ID from VeriSign. When you use the iSign application, you can specify options that are not available in the release build, such as the cryptographic service provider. The iSign syntax is as follows:
iSign [options] Filename Filename

is the fully qualified file name of your built releases Data1.hdr file.

Following is a list of the options that you can use with iSign. Note that, unlike other command-line applications, the switch and the argument for the switch should be separated by a space; for example:
iSign.exe -spc "C:\Temp\MyFile.spc" -v "C:\Temp\MyFile.pvk" -p "Test" -cp "Microsoft Base Cryptographic Provider v1.0"

Table 20-6: Options for iSign.exe Option -spc -v -p Description Fully qualified file name of the software publishing credentials (.spc) file. Fully qualified file name of the private key (.pvk) file. Password for private key file.

InstallShield 2010 User Guide

ISP-1600-UG00

933

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Table 20-6: Options for iSign.exe (cont.) Option -cp Description Cryptographic service provider name, for example, "Microsoft Enhanced Cryptographic Provider v1.0". If the -cp option is not used, iSign tries each of the following service providers to find one that works with the specified private key file: "Microsoft Base Cryptographic Provider v1.0" "Microsoft Enhanced Cryptographic Provider v1.0" "Microsoft Strong Cryptographic Provider"

For a list of cryptographic service providers, see Cryptographic Provider Names in the Platform SDK documentation or at the MSDN Web site. "Microsoft Base Cryptographic Provider v1.0" (MS_DEF_PROV) is appropriate for older certificates; if you are using a recent certificate and iSign fails, try using the other two. Note that the "v1.0" portion is required, even though some SDK documentation does not list it.

If iSign.exe is unable to determine the file to sign, the .spc file, or the .pvk file from the specified command line, the application displays the options (help) screen.

Release Flags
Project: The following project types include support for release flags:

Basic MSI InstallScript MSI

When you build your release, you can include and exclude features, InstallShield prerequisites, and chained .msi packages depending on the type of release. For example, if you are creating a trial version of your product and do not want to include all the features in the build, you can flag features and then specify those flagged features under the product configuration or the release.

Task

To filter features, InstallShield prerequisites, and chained .msi packages based on release flags: 1.

Assign release flags to the features, InstallShield prerequisites, and chained .msi packages. For detailed information on how, see Assigning Release Flags to Features, Assigning Release Flags to InstallShield Prerequisites, or Assigning Release Flags to a Chained .msi Package.

2.

Specify which flags to include in the release if appropriate.

The scenario of a trial version versus a full version is a good example of why you might use release flags. The table below gives an example of four different features that may be available in a product, depending on which version the end user receives.

934

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

In this example, the full version comes with the applications executable file, help files, a spellchecker, and an add-on pack that is included as a chained .msi package. The trial version does not include the add-on pack, but it does include an upgrade pack. Rather than having to create two separate installation projects for what is essentially one product, you can flag those features that are specific to certain versions. For example, the add-on feature is flagged as Full and the upgrade feature as Trial.
Table 20-7: Sample Release Flags Feature, InstallShield Prerequisite, or Chained .msi Package Windows Installer 4.5 Redistributable (InstallShield prerequisite) Program_Executable (feature) Help_Files (feature) Spellchecker (feature) Add_Ons (chained .msi package) Upgrade_Pack (feature)

Version All Versions

Release Flag Not applicable

All Versions All Versions Full Version Full Version Trial Version

Not applicable Not applicable Full Full Trial

If you build your release through the Release Wizard, you are given the option of including any flagged features, flagged InstallShield prerequisites, and flagged chained .msi packages into your release. By default, the release contains all features, InstallShield prerequisites, and chained .msi packages. If you specify the release flag Full in the Filtering Settings panel of the Release Wizard, only the Spellchecker feature and the Add_Ons chained .msi packagealong with all features and InstallShield prerequisites without release flagsare built into your release. The upgrade pack is not included in the installation.

Tip: By default, all features, InstallShield prerequisites, and chained .msi packages are included in a release. When you specify a release flag in either the Releases view or the Release Wizard, only the unflagged features, the unflagged InstallShield prerequisites, the unflagged chained .msi packages, the features that contain the specified flag, the InstallShield prerequisites that contain the specified flag, and the chained .msi packages that contain the specified flag are included in your installation. InstallShield does not include in the release any features, InstallShield prerequisites, or chained .msi packages that have a release flag that you did not include in the Releases view or Release Wizard.

Product Configuration Flags vs. Release Flags

Project: The following project types include support for product configuration flags and release flags:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

935

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

You can specify which flags to include in your installation both on the release, known as release flags, and on the product configuration, known as product configuration flags. Although release flags are exposed both as a setting of the release and in the Release Wizards Filtering Settings panel, you can edit the product configuration flags only on the General tab of the product configuration in the Releases view. Product configuration flags complement release flags. That is, any feature flags that you specify for the product are combined with the flags on the individual release that you are building, and all of the features, InstallShield prerequisites, and chained .msi packages with the specified flags are built into the release. Be careful when specifying flags in the Release Wizard, because you cannot see which flags are included at the product configuration level. To demonstrate how product configuration and release flags interact, consider a project with the following features, InstallShield prerequisites, and chained .msi packages.
Table 20-8: Sample Features, InstallShield Prerequisites, and Chained .msi Packages Feature, InstallShield Prerequisite, or Chained .msi Package Windows Installer 4.5 Redistributable (InstallShield prerequisite) Program_Executable (feature) Help_Files (feature) Spellchecker (feature) Add_Ons (chained .msi package) Upgrade_Pack (feature)

Version All Versions

Release Flag Not applicable

All Versions All Versions Full Version Full Version Trial Version

Not applicable Not applicable Full Full Trial

The following table explains which features, InstallShield prerequisites, and chained .msi packages are included in your installation based on the combination of product configuration flags and release flags:
Table 20-9: Combining Product Configuration Flags and Release Flags Features, InstallShield Prerequisites, and Chained .msi Packages in Installation Windows Installer 4.5 Redistributable, Program_Executable, Help_Files, Spellchecker, Add_Ons, Upgrade_Pack Windows Installer 4.5 Redistributable, Program_Executable, Help_Files, Spellchecker, Add_Ons Windows Installer 4.5 Redistributable, Program_Executable, Help_Files, Upgrade_Pack Windows Installer 4.5 Redistributable, Program_Executable, Help_Files, Spellchecker, Add_Ons, Upgrade_Pack

Product Configuration Flags <None>

Release Flags <None>

<None>

Full

Trial

<None>

Full

Trial

936

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Filtering Based on Release Flags

Project: The following project types include support for product configuration flags and release flags:

Basic MSI InstallScript MSI

Once you have assigned release flags to your features and InstallShield prerequisites, you can create a release that includes the ones that are based on those flags. By default, all features, InstallShield prerequisites, and chained .msi packages are included in a release. Once you specify a flag in either the Releases view or the Release Wizard, only the unflagged features, the unflagged InstallShield prerequisites, the unflagged chained .msi packages, the features that contain the specified flag, the InstallShield prerequisites that contain the specified flag, and the chained .msi packages that contain the specified flag are included in your installation. To include only unflagged features, unflagged InstallShield prerequisites, and unflagged chained .msi packages, specify a flag that does not exist. For example, you might use NoFlags. This way, only unflagged features, unflagged InstallShield prerequisites, and unflagged chained .msi packages are built into a release. It is possible to include a subfeature but not its parent feature. In such a case, the subfeature is built into the release as a top-level feature, and its parent is excluded from the release. You can filter features, InstallShield prerequisites, and chained .msi packages in the Release Wizard or in the Releases view. Both methods are described below.

Filtering in the Release Wizard


The easiest way to create a release is to use the Release Wizard. The Filtering Settings panel of this wizard enables you to specify which flags you want to include in your release.

Filtering in the Releases View


You can also use the Releases view to specify flags to include. You can include flags both at the product configuration level and on the release itself. For more information, see Product Configuration Flags vs. Release Flags.

Task

To specify product configuration flags: 1. 2. 3.

In the View List under Media, click Releases. In the Releases explorer, click the product configuration that you want to modify. Its settings are displayed on the General tab in the right pane. For the Product Configuration Flags setting, enter the flags that you would like to include. To include more than one flag, separate each with a comma.

InstallShield 2010 User Guide

ISP-1600-UG00

937

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Task

To specify release flags: 1. 2. 3.

In the View List under Media, click Releases. In the Releases explorer, click the release that you want to modify. Its settings are displayed on tabs in the right pane. For the Release Flags setting, enter the flags that you would like to include in this release. To include more than one flag, separate each with a comma.

Using One Project to Create Installations for Multiple Product Configurations


Project: This information applies to InstallScript projects.

You may want to release your product with more than one configurationfor example, an evaluation release and a full release. Within a single project, you can build releases containing different subsets of the projects features; with a single installation script using preprocessor directives, you can build releases with different run-time behaviors.

Task

To determine a releases included features at build time: 1. 2. 3. 4.

Launch the Release Wizard and navigate to the Features panel. Select the Specify the features to be included below option. In the Features explorer, select the check boxes of the features that you want to include in the product configuration, and clear the check boxes of the features that you do not want to include. Complete the other panels in the Release Wizard.

Task

To determine a releases run-time behavior using preprocessor directives: 1.

In your script, use preprocessor directives to execute different code for different product configurations; for example:
#ifdef EVAL_RELEASE /* Evaluation-specific code */ #elif FULL_RELEASE /* Full release-specific code */ #endif

2.

In the Compiler Preprocessor Defines box (on the General Options panel of the Release Wizard) or the Compiler Preprocessor Defines setting (on the Build tab in the Releases view), specify the preprocessor constant that corresponds to the code that you want the release to execute.

938

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

3.

Build the release.

Typical Web Installation vs. One-Click Install


When downloading an application from the Internet, many end users experience a long and confusing series of instructions explaining how to download and run the application properly. The typical download can take as many as 10 steps. It can be a frustrating and time-consuming process that is not always successful. End users who fail to download the application properly must rely on product support to assist them, or they give up completely and never gain access to the application. This results in time lost for both the consumer and the development team. With a One-Click Install setup, however, the end user can download an application with minimum effort and can begin using the application immediately. Compare the installation processes for both typical and One-Click Install setups below.

Typical Internet Installation Process


A typical Internet installation might happen like this:
1. 2. 3. 4. 5. 6. 7. 8. 9.

The end user navigates to the Web page and clicks the link to download the application. A dialog opens. The dialog prompts the end user to agree to a software licensing agreement. The end user is given the opportunity to save the installations executable file to disk. The end user must remember this location to access the installations executable file later. The file transfer begins. The end user must search for the installation executable file and then launch it. The installation executable file unpacks and executes. If any other resources are necessary for the proper execution of the application, the end user must download them at this time. The installation executes and begins to walk the end user through the installation process. The end user makes several choices, such as the disk location of the application executable file.

10. The application file transfer begins. 11. The end user locates the application executable file on disk and launches the application.

One-Click Install Installation Process


With a One-Click Install setup, installations are easier and faster for the end user. A One-Click Install setup can happen like this:
1. 2. 3.

The end user navigates to the Web page and clicks the download button. A dialog opens. The dialog shows the progress of the file transfer. Once the installation has been downloaded, the installation runs. The end user begins using the application.

One-Click Install setups keep the end user on your Web page, instead of searching for an executable file to run. One-Click Install setups make it possible for the end user to concentrate on using the application, not struggling to download it.
InstallShield 2010 User Guide ISP-1600-UG00 939

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

One-Click Install Installations in InstallScript Projects

Project: This information applies to InstallScript projects.

A One-Click Install installation includes a setup player (Setup.ocx) that 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 installations manifest, the appropriate User Account Control (UAC) prompt is displayed when the Setup.exe file is launched. If end users have an earlier version of Windows on their systems, the manifest is ignored, but the other behavior is the same. The Setup.exe file for One-Click Install installations does not include any COM information. Like any other installation, an Internet installation can use features such as updating, maintenance mode, multi-instance installation, silent installationin short, any feature that is available for any InstallShield installation. The following InstallScript functions are Internet-enabled:
Table 20-10: Function Description Copies a file that is specified by a valid URL, or transmits a CGI or ASP request. Checks the existence of a folder that is specified by a valid URL. Gets information about a file that is specified by a valid URL. Reads lines from a file that is specified by a valid URL. Checks the following:

CopyFile ExistsDir GetFileInfo GetLine Is


OpenFile ParseUrl ReadBytes SeekBytes

Whether the installation is being run from the Internet The existence of a file or folder that is specified by a valid URL Whether a given string is a URL The validity of a URL

Opens a file that is specified by a valid URL. Retrieves the parts of the specified URL. Reads bytes from a file that is specified by a valid URL. Repositions the file pointer within a file that is specified by a valid URL.

One-Click Install Objects

Project: This information applies to InstallScript projects.

940

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

The objects within One-Click Installs setup player are Player and Ether. The Player object is the highest level of the object model, followed by Ether.

Player Object
Before you can use the setup player, you must create an instance of it. For more information, see Using the Setup Player. The Player has one method and one property.

Open (<URL>)Specifies the location of the data .cab files and returns a reference to an Ether object. The argument consists of a URL representing the path to a web server, a UNC path, or the path to the location of the files on your local drive. LastErrorInteger value representing an error code thrown by a method, usually Open().

Examples
Player.Open("http://www.mydomain.com/myproduct"); Player.Open("file://\\server\myproduct"); Player.Open("file://c:/my installations/myproduct/media/default");

LastError Method

Project: This information applies to InstallScript projects.

This is the LastError method of the Player object. This is an integer value containing the error code for an error thrown by a method of the Player, usually Open().

Syntax
var nError = player.LastError;

Example
var ether = Player.Open("http://www.installshield.com")

Parameters
None.

InstallShield 2010 User Guide

ISP-1600-UG00

941

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Return Values
Table 20-11: Return Values for the LastError Method Return Code -2147186688 -2147186687 -2147186686 Description No permissions were granted. Clicking Deny on the Java Security dialog throws this error. Initialization of the applet failed. Quit Netscape and restart. Failed to update or install the Setup Player ActiveX control. Verify your ability to download from the URL specified in the Codebase attribute of the APPLET tag. Failed to instantiate ISPlayer or initialization of the ISPlayer failed. Failed to call player.Open. Player.Open call timed out waiting for applet initialization. Requested URL not found. Verify that your installation files are available at the URL specified during the player.Open call. Unable to access protected resource. This error is returned when attempting to access an installation that requires authentication and the end user does not enter the correct information. The server name could not be resolved. Verify that the URL used in your player.Open call. Misspelling the domain name the URL is a common cause of this error.

-2147186685 -2147186684 -2147186683 -2147166892

-2147166895

-2147012889

Note: For the first six errors listed, the end user can check the Java console for detailed error information.

Open Method

Project: This information applies to InstallScript projects.

The Open method of the Player object accepts one string argument that specifies the URL of the installations cabinet files.

Syntax
var ether = Player.Open("<URL string>")

942

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Example
var ether = Player.Open("http://www.installshield.com")

Parameters
Table 20-12: Valid Parameter for the Open Method Parameter <URL string> Description Specifies the URL of the installations cabinet files.

Return Values
The Open method returns a reference to an Ether object.

Ether Object
The Ether object supports the following methods:
Table 20-13: Methods Supported by the Ether Object Method GetLastError IsPlaying Play SetProperty Description Returns a numeric value indicating the result of the installation. Returns a Boolean value indicating if the installation is running. Starts the installation. Sets a property to a certain value.

GetLastError Method
After calling the Ether objects Play method, call the GetLastError method to find out the result of the installation. GetLastError tells you if an error occurred, if the installation finished successfully, or if the installation was canceled.

Syntax
ether.GetLastError( );

Example
It is best to poll GetLastError as in the following example:
var intervalID = 0; function startInstall() { if (ether) { ether.Play(); if (intervalID == 0) intervalID = window.setInterval("IsSetupFinished()", 3000);

InstallShield 2010 User Guide

ISP-1600-UG00

943

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

} } function IsSetupFinished() { var nResult = ether.GetLastError(); if (nResult != 0) { if (nResult == SETUP_FINISHED) // setup has completed successfully /* to do */ ; if (nResult == SETUP_ERR_CANCELLED) // setup was cancelled /* to do */ ; clearInterval(intervalID); intervalID = 0; } }

Parameters
None.

Return Values
A complete list of GetLastError return values is in Disk1\_graphics\Utilities.js under the releases Disk Images folder, and is given below.

SETUP_RUNNING SETUP_FINISHED SETUP_ERR_GENERAL SETUP_ERR_LOADMEDIA SETUP_ERR_INSTALLKERNEL SETUP_ERR_STARTKERNEL SETUP_ERR_OPENCAB SETUP_ERR_INSTALLSUPPORT SETUP_ERR_SETTEXTSUB SETUP_ERR_INITINFO SETUP_ERR_GETSETUPDRIVER SETUP_ERR_INITPROPERTIES SETUP_ERR_RUNINSTALL SETUP_ERR_UNINSTALLSUPPORT SETUP_ERR_EXTRACTBOOT SETUP_ERR_DOWNLOADFILE SETUP_ERR_CANCELLED

944

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

IsPlaying Method
The IsPlaying method of the Ether object returns a Boolean value indicating whether the installation is running.

Syntax
var <variable> = ether.IsPlaying();

Example
var bPlaying = ether.IsPlaying();

Parameters
None.

Return Values
Table 20-14: Return Values for the IsPlaying Method Return Value true false Description Indicates that the installation is running. Indicates that the installation is not running.

Play Method
The Play method of the Ether object starts the installation. To see an example of the use of this method, build a release using the Create a default Web page option in the Release Wizards Internet Options panel or the Release property grids Create Default Web Page property, then examine the code in the generated Web page (Setup.htm).

Syntax
ether.Play();

Parameters
None.

Return Values
None.

SetProperty Method
The SetProperty method of the Ether object accepts two arguments. The first, a string, represents the name of the property is::CmdLine. The second is a string specifying Setup.exe command-line parameters.

InstallShield 2010 User Guide

ISP-1600-UG00

945

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Syntax
ether.SetProperty("is::CmdLine","Setup.exe command-line options");

Example
ether.SetProperty("is::CmdLine","-l0x0407");

Parameters
The following table contains the parameters for the SetProperty method.
Table 20-15: Parameters for the SetProperty Method Property Name is::CmdLine Property Value A string specifying Setup.exe command-line parameters. For a list of supported parameters, see Setup.exe and Update.exe Command-Line Parameters.

Return Values
None.

Digital Signatures for One-Click Install Installations


When an end user runs a One-Click Install installation, the setup player (Setup.ocx) needs to verify the digital signatures for following files:

Setup.ocx Setup.exe Data1.hdr ISSetup.dll

If any of those files are unsigned or the signature is corrupted, the setup player displays a single prompt to inform the end user that the signature could not be verified. If all files are properly signed and your certificate is not yet always trusted, the setup player displays a prompt to ask the end user to authorize it (similar to the one that is displayed when you run an executable file that you downloaded).
Data1.hdr,

InstallShield signs the Setup.ocx file for you. The certificate that is used to sign the Setup.exe, the and ISSetup.dll files must match. This happens automatically if you select the options for signing the Setup.exe file and the media header.

Replacing Obsolete Properties and Methods


InstallShields simplified model for Internet installations eliminates several methods and properties that the Ether object and its subobjects had in InstallShield Professional 6.x. The following is a list of those methods and properties, and how to replace them if you are converting an InstallShield Professional 6.x installation Web page to work with an InstallShield installation.

946

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

AskDestPath
To display the equivalent dialog during the installation, call the InstallScript function AskDestPath in your installation script. To pass a destination path to the installation from the Web page, set a scriptdefined property.

CommandLine
Replace a line like the following:
ether.CommandLine = "<string value>";

with a line like the following:


ether.SetProperty("is::CmdLine","<string value>");Features, SetState

To offer the equivalent functionality during the installation, call the InstallScript function SdFeatureTree in your installation script. To pass a feature selection to the installation from the Web page, set a scriptdefined property; in addition, in the installation script, use its value to conditionally call FeatureSelectItem.

Features, GetState
To get a features selection state during the installation, call the InstallScript function FeatureIsItemSelected in your installation script. A Web page cannot get a features selection state.

FileToOpen
To open a file during the installation, call the InstallScript function LaunchApplication in your installation script. To pass a file name to the installation from the Web page, set a script-defined property.

GetDownloadSize, FileLevelCosting
To get the required disk space during the installation, call the InstallScript function FeatureGetTotalCost in your installation script. (Feature dialogs such as SdFeatureTree display the required disk space.) A Web page cannot get the required disk space.

Language
Replace a line like the following:
ether.Language = "<language code>";

with a line like the following:


ether.SetProperty("is::CmdLine","-l<language code>");LegacyMode

By default, Internet installations run in legacy modethat is, with the installations user-interface events generated as appropriate. There are two ways to duplicate the effect of setting ether.LegacyMode=false; on your Web page:

Run the installation silently with the following line:


ether.SetProperty("is::CmdLine","-s");

Set a script-defined property or check the return value of Is(WEB_BASED_SETUP), and conditionally call the installations user-interface event handler functions in the OnShowUI handler.

InstallShield 2010 User Guide

ISP-1600-UG00

947

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

ProductName
A Web page cannot get this information.

GetTargetDir
A Web page cannot get this information.

GetTextSub
A Web page cannot get this information.

IsInstalled
A Web page cannot get this information.

SetSetupType
To specify a setup type during the installation, call the InstallScript function FeatureSetupTypeSet in your installation script. To display a setup type selection dialog during the installation, call SdSetupType in your installation script. To pass a setup type to the installation from the Web page, set a script-defined property.

SetTargetDir
To specify a target directory during the installation, assign a value to the system variable TARGETDIR in your installation script. To pass the target directory to the installation from the Web page, set a scriptdefined property.

SetTextSub
To specify a text substitution during the installation, assign a value to the TextSub objects Value property in your installation script. To pass a text substitution to the installation from the Web page, set a script-defined property.

Default Web Page (Setup.htm)

Project: This information applies to InstallScript projects.

A default Web page called Setup.htm is created in your disk image folder when you build your OneClick Install installation using one of the following methods:

Select the Create a default Web page for the setup check box on the Internet Options panel in the Release Wizard. Select Yes for the Create Default Web Page setting on the Internet tab in the Releases view.

You can use this page as it is, customize it however you want, or refer to it as an example of using the Setup Player. Note that the aforementioned Web page creation settings are disabled if the Generate One-Click Install setting in the Releases view is set to No.

948

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

System Requirements for One-Click Install Installations

Project: This information applies to InstallScript projects.

Target System Requirements


Microsoft Windows 95, 98, NT 4.0, 2000, or XP operating system One of the following Web browsers:

Microsoft Internet Explorer 4.0 or later Netscape Navigator 4.06 or later (and Java Plugin installed for version 6 or later) with Microsoft Internet Explorer 3.02 (with Authenticode 2.0 update) or later

Hosting System Requirements


You must have a Web server that supports HTTP 1.1. Note that FTP does not support One-Click Install installations.

Alternate Ways to Call the Setup Player

Project: This information applies to InstallScript projects.

It is not necessary to call the Setup Player from a Web page. It is possible to call the Player from other sources such as a login script or a Visual Basic or Visual C/C++ application. Any programming tool that supports ActiveX controls can call the Player.

Sample Visual Basic Script for Calling the Player


Dim player, ether Set player = CreateObject("Setup.Player.16") Set ether = player.open("http://www.mydomain.com/mysetup") If ether.IsPlaying() Then MsgBox "Setup is running." Else MsgBox "Setup is not running." End If Set player = Nothing Set ether = Nothing

HTTPS and One-Click Install Installations

Project: This information applies to InstallScript projects.

InstallShield 2010 User Guide

ISP-1600-UG00

949

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Your One-Click Install installation can be run under the secure hypertext transfer protocol (HTTPS) that is, HTTP using the Secure Sockets Layer (SLL). The only modification that your installation requires in order to run with HTTPS is to change http:// to https:// in URLs that are passed to Internetenabled functions.

Creating One-Click Install Installations


You can create a One-Click Install installation using the Release Wizard.

Task

To create a One-Click Install installation for an InstallScript project: 1. 2. 3. 4. 5. 6. 7.

Launch the Release Wizard. Navigate to the Internet Options panel. Select the Generate One-Click Install option. Select the Create a default Web page for the setup check box or specify the location of a custom Web page in the Enter the URL to launch box. Specify other options as desired. Complete the rest of the Release Wizard panels. Build your release.

Task

To create a One-Click Install installation for a Basic MSI or InstallScript MSI project: 1. 2. 3. 4. 5. 6. 7. 8.

Launch the Release Wizard. Navigate to the Media Type panel. In the Media Type list, click Web. Navigate to the One Click Install panel, and select the Generate One-Click Install option. Specify the file name for your .htm or .cab file. Indicate the browsers that you want your One-Click Install installation to support. Complete the rest of the Release Wizard panels. Build your release.

Using the Setup Player

Project: This information applies to InstallScript projects.

950

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

The Setup Player is a Setup.ocx file that downloads and then launches the Setup.exe file with the appropriate command line. The Setup.ocx file also supports launching a setup executable file with a name other than Setup.exe; for this to work correctly, the [Startup] section of the Setup.ini file should contain the following key:
LauncherName=SetupLauncher

where SetupLauncher is the file name of the alternate setup launcher. For an example of using the Setup Player in a Web page, build a release using the Create a default Web page option in the Release Wizards Internet Options panel or the Create Default Web Page setting on the Internet tab in the Releases view. Then examine the code in the generated Web page (Setup.htm). Once an instance of the Player has been created, you may use the methods and properties associated with each of the objects within the Player to customize your installation.

Passing Data to the Launched One-Click Install Installation


To pass data to a launched One-Click Install installation, use the is::CmdLine parameter and the CMDLINE script variable.

Running an Internet Installation Silently


To run an Internet installation silently, pass it the desired Setup.exe command-line options by calling the Ether objects SetProperty method, as in the following examples:
ether.SetProperty("is::CmdLine","-s -f1\"C:\\My Folder\\Mydir.iss\""); ether.SetProperty("is::CmdLine","-s -f1\"C:\\My Folder\\Mydir.iss\" f2\"C:\\My Folder\\Mydir.log\"");

Note the following:

When running a silent Internet installation, you must specify the -f1 option; there is no valid default location for the response file in Internet installations. When recording or running a silent Internet installation, you must specify a fully qualified absolute path if using the -f1 or -f2 option; these options do not accept URLs. The second argument to SetProperty must use the escape sequences (\\ and \") to specify backslashes and quotation marks, as in the preceding examples.

Setting the Run-Time Language

Project: This information applies to InstallScript projects.

Edition: Multilingual support is available in InstallShield Premier Edition.

When you specify a language by using the following method, the One-Click Install installation runs in this language regardless of the default language specified in InstallShield or the default language of the target system. If you do not use this method, the One-Click Install installation determines the run-time language in the same way as any other installation.
InstallShield 2010 User Guide ISP-1600-UG00 951

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Task

Add set the run-time language: 1.

Add support for the language to your project:


a. b. c.

On the Project menu, click Settings. The Project Settings dialog box opens. Click the Languages tab. Select the check box for that language that your installation should target.

2.

Add that language to the release:


a. b.

On the Build menu, click Release Wizard. In the Setup Languages panel, select the appropriate language.

3.

On your Web page, before you call the Play method, call the SetProperty method to specify the appropriate language identifier. For example, the language ID for English is 0009. To set English as the runtime language use the following code:
ether.SetProperty("is::CmdLine","-l0009");

Running a One-Click Install Installation in Debug Mode

Project: This information applies to InstallScript projects.

To run your One-Click Install installation in debug mode, enter the following code before invoking ether.Play:
ether.SetProperty( "is::CmdLine", "/d")

Authenticating a User from InstallScript

Project: This information applies to InstallScript projects.

If your One-Click Install installation requires authentication after it is started, you can authenticate the user on the fly using InstallScript. When authentication is required, the Web server returns HTTP error code 401 to your installation, which generates an InternetError event. Respond to that event by prompting the user for a user name and password in the OnInternetError event handler. The easiest way to do so is to use the InternetErrorDlg API in WinInet.dll and return the value IDRETRY from OnInternetError. This causes the installation to issue the HTTP request for the file again. If users enter incorrect information, they will be prompted to enter it again.

952

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Setup.ini
Project: This information applies to InstallScript projects.
Setup.ini is an initialization file that is created during the build process of InstallScript-based projects to control certain elements of the installation. The build process fills in only certain key names and values in Setup.ini. After the build process creates Setup.ini, it is placed in the Disk1 folder in <project folder>\Media\<media name>\Disk Images.

If you want to customize Setup.ini further, modify it with a text editor. You can automate this process by using the Postbuild Options panel of the Release Wizard or the Execute Batch File property in the Releases view to launch a batch file or executable file that performs the desired modifications. Do not simply overwrite Setup.ini with a modified copy from a previous media build; doing so could cause your installation to work improperly.
Setup.ini contains

two predefined sections:

[Startup] [Mif]

You can add additional sections to Setup.ini to pass information to your setup script. You can then call the GetProfString and GetProfInt functions to transfer the information from the Setup.ini file to your installation. Here is an example Setup.ini file:
[Startup]

AppName=My Application CmdLine=/f1Test1.iss EnableLangDlg=Y LauncherName=MyInstall.exe ProductGUID=23EAFFCA-361D-11D3-8B0F-00105A9846E9 SmallProgress=N SplashTime=5 Skin=Setup.skin CheckMD5=N

[Mif]

Type=SMS Filename=Ishield SerialNo=IS50-32XYZ-12345 Locale=DEU

InstallShield 2010 User Guide

ISP-1600-UG00

953

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

Note: If you need to access the file later (after Disk1 has been removed), you should copy Setup.ini to the support folder (SUPPORTDIR) at the beginning of the installation.

The [Startup] Section


You can use the following keynames in the [Startup] section of Setup.ini:

AppName CmdLine EnableLangDlg LauncherName ProductGUID SmallProgress SplashTime Skin CheckMD5

AppName
The AppName keyname identifies an application or product name to be displayed at the beginning of the text string in the startup message dialog box.

Tip: MD5 checking can detect corrupted files, which is useful during Internet installations; not doing MD5 checking can make file transfer proceed faster.

CmdLine
The CmdLine keyname identifies command-line parameters that are to be passed to Setup.exe if none are passed from the command line.

Note: If you use the /v parameter at the command prompt when launching Setup.exe, any parameters that are specified for the CmdLine keyname are ignored.

For more information about available command-line parameters, see Setup.exe and Update.exe Command-Line Parameters.

EnableLangDlg
The EnableLangDlg keyname tells the installation whether to display the Language dialog during installation initialization. The Language dialog lets your end user decide which available language the installation should run in. You can set this value in the Setup Languages panel of the Release Wizard or through the Languages Dialog property in the Releases view.

954

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

For more information about the Language dialog, see How InstallShield Determines Which Language the Installation Runs In.

LauncherName
If you rename Setup.exe, the LauncherName keyname specifies the files new name. This keyname is required if another installation will launch this installation using the DoInstall function.

ProductGUID
The ProductGUID keyname specifies the installations GUID so that Setup.exe has access to this data during initialization. The media builder automatically enters the correct value in Setup.ini; do not change the value.

SmallProgress
The SmallProgress keyname specifies whether the installation initialization dialog is the small box that was shown by installations created with InstallShield Professional version 6.31 and earlier, or if it is larger and is consistent with the rest of the end-user dialogs. Set the value to Y to display the small dialog or N to display the larger dialog. (If the installation displays a security, Save and/or Run Setup, Choose Setup Language, or Qualifying Product(s) Detected dialog, the installation initialization dialog is larger and is consistent with the rest of the end-user dialogs, regardless of the value of this key.) You can set this value in the User Interface panel of the Release Wizard or through the Small initialization dialog property in the Releases view. If SmallProgress is set to N, the installation initialization dialog (and the Choose Setup Language dialog, if any) are not displayed until the startup graphic closes. To specify the length of time for which the startup graphic displays, set the SplashTime value.

SplashTime
The SplashTime keyname specifies the length of time (in seconds) for which the startup graphic is displayed.

Skin
The Skin keyname specifies the name of the skin file that the installation uses to display end-user dialogs. If this keyname is not in Setup.ini, no skin is used. You can specify a skin in the User Interface panel of the Release Wizard or through the Specify Skin property in the Releases view.

CheckMD5
The CheckMD5 keyname tells the installation whether to compare each files MD5 hash value to the value stored in the installation header file during file extraction. You can set this value with the Verify MD5 signature check box in the General Options - Advanced dialog box.

The [Mif] Section


If the [Mif] section is present, the installation will automatically create a installation .mif file in the Temp folder. (Back Office Logo certification requires that a Management Information Format (.mif) file be created for every installation and uninstallation. It uses this file to integrate information about the application.) You can also create an .mif file by using the -m command-line option for Setup.exe and optionally its -m1 and -m2 options.

InstallShield 2010 User Guide

ISP-1600-UG00

955

Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases

These are the keynames under the [Mif] section of Setup.ini:

Type Filename SerialNo Locale

Type
Set this key to SMS.

Filename
The Filename key is optional. It provides the alternate name for the .mif file to be created. If this key is not included, the installation tries to use the AppName key under the [Startup] section of Setup.ini as the .mif file name. If the AppName key is also not present, the installation creates a file with the default name Status.mif. The file name should not include an extension, since .mif files must have the .mif extension. The file name should not include a pathit is placed in the Temp folder by default.

SerialNo
The SerialNo key is also optional. If provided, the information from this key is placed in the Serial Number section in the .mif file. If this key is not present, the installation instead places quotation marks ("").

Locale
The Locale key tells the installation to place the indicated locale in the .mif file. English (ENU) is the default; refer to Microsoft documentation for a complete listing of locale strings. The following is an example of a Setup.ini file for an installation that will automatically create an .mif file.
[Startup] AppName=InstallShield

[Mif] Type=SMS Filename=IShield SerialNo=IS50-32XYZ-12345 Locale=DEU

Cloning Releases
InstallShield enables you to clone or copy a release in the Releases view. This allows you to create a release with all of its properties populated as they were in the cloned release. This way, if you want to create more than one release with only a few differences between them, you can clone a release and change only the settings that you need to change.

956

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Task

To copy or clone a release: 1. 2.

On the View List under Media, click Releases. Right-click the release that you want to copy and click Clone.

A release named Copy of Release x is created. The release copy has all of the same properties as the original release. Rename the release and modify the release settings that you want to change.

Testing and Running Installations


Before distributing your installation, you should test run it to ensure that you discover any issues rather than your customers. InstallShield enables you to test the end-user dialogs (without copying any files to the target system), run the entire installation including transferring files.

Test Running Installations


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

You can test run an installation to review the end-user dialogs. The test run displays the full user interface, but it does not copy any files over to the target system or update the registry.

Task

To test run a project, do one of the following:

In the Releases view, right-click a release and click Test Setup. Click the Test button on the toolbar.

Testing a Trialware Release of Your Product


If you have added a trialware file to your project in the Trialware view and you have built a trialware version of your product, you can test your protected product to determine whether it behaves as planned. Check all of the hyperlinks in the trialware run-time dialogs to make sure that they point to the desired locations. If you test a Try and Die product by running the protected trial version, it will expire at the end of the trial; you will not be able to test your product further on the same test machine without removing the license, as described in the procedure below.

InstallShield 2010 User Guide

ISP-1600-UG00

957

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Task

To remove a license from a test machine: 1.

Copy the files that are added to the TestTools folder at build time to the test machine that contains the license that you want to delete. For each file being wrapped, the TestTools folder contains the following files:

SCResetLicense<WrappedBaseFileName>.exe IsSvcInstSCResetLicense<WrappedBaseFileName>.dll

For example, if a file called Calc.exe is wrapped, the files in the TestTools folder are SCResetLicenseCalc.exe and IsSvcInstSCResetLicenseCalc.dll.
2.

On the test machine, run the SCResetLicense<WrappedBaseFileName>.exe file.

The license for your protected product is removed, and the trial state is reset. The next time you restart your protected product on the same test machine, the trial starts over, enabling you to retest it.

Caution: Do not release the files in the TestTools folder with your product or make them available to your customers. Doing so would enable end users to continually restart a trial each time that it expires. Note that the TestTools files are specific to a particular product and license and cannot be used to delete licenses for other products.

Running Installations from the InstallShield Interface


After you run the Release Wizard and build a release of your installation, you can run it from within InstallShield.

Task

To run any of your built installation packages, do one of the following:

Click the Run button on the toolbar. In the Releases view, right-click a release and click Run Setup. On the Build menu, click Run ReleaseName, where ReleaseName is the name of the release that currently has focus in the Releases view.

InstallShield runs the release that currently has focus in the Releases view. If you selected the Uninstall before installing check box in the Options dialog box, the previously run release (if any) is uninstalled before the current release is run. This option is available on the Preferences tab in the Options dialog box. You cannot specify any command-line parameters when launching your installation from the InstallShield interface. You must launch your installation from the command line to pass parameters to the Windows Installer. For more information, see MsiExec.exe Command-Line Parameters.

958

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Running Installations in Silent Mode


Silent installations are installations that run without an end-user interface. If you want your installation to run silently, InstallShield allows you to create silent installations for Basic MSI, InstallScript MSI, and InstallScript project types.

Basic MSI Silent Installations


To run a Basic MSI installation silently, type the following at the command line:
msiexec /i Product.msi /qn

If your release settings include Setup.exe, you can run the following command:
Setup.exe /s /v"/qn"

Basic MSI installations do not create or read response files. To set installation properties for a Basic MSI project, run a command line such as:
msiexec /i Product.msi /qn INSTALLDIR=D:\ProductFolder USERNAME="Valued Customer"

InstallScript MSI and InstallScript Silent Installations


For InstallScript MSI and InstallScript projects, you need to record a response file that records the enduser interaction. This response file is passed to Setup.exe so that the installation can be run. The traditional silent installation works almost exactly the same as regular installations. It follows the same script logic as the regular installation. If you need to install an InstallScript MSI installation without using Setup.exe, you can use the MSI silent mode.

InstallScript MSI and InstallScript Silent Installations


InstallShield Silent allows automated electronic software distribution, also known as silent installation. With InstallShield Silent, there is no need for end users to monitor the installation and provide input through dialogs. An InstallShield Silent installation runs on its own, without any end-user intervention. If there are multiple instances of your application on a machine, and if a silent update installation for your application runs on that machine, it applies the update to the first instance that it finds, and it does not display the Qualifying Product(s) Detected dialog. To launch InstallShield Silent, use the Setup.exe -s command line parameter.

Windows Logo Guideline: To comply with Windows logo requirements, a silent installation must create a response file in which the default installation options are selected.

You can run your installation with the Setup.exe -r parameter to select installation options and automatically record the InstallShield Silent response file, or you can create your own. To view a realworld example of a response file, refer to the Setup.iss file located on InstallShield installations Disk1. For a description of the response file format, see Creating the Response File. If you need to install an InstallScript MSI installation without using Setup.exe, you can use the MSI silent mode.

InstallShield 2010 User Guide

ISP-1600-UG00

959

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Task

To create a silent installation: 1. 2. 3. 4.

Create the installation. Create the response file. Run the silent installation. Check for errors.

Creating a Silent Installation


If you want to create an installation that will be run in silent mode, create your installation in a typical manner, and test the script in the normal (non-silent) manner. You can easily modify your installation script logic to include flow control based on whether your installation is being run in silent mode. InstallShield provides a system variable called MODE. The MODE variable contains one of the following constants to identify the installations current mode:

NORMALMODEIndicates that the installation is running in normal mode. RECORDMODEIndicates that the Setup.exe file is automatically generating a silent installation file (.iss file), which is a record of the installation input, in the Windows folder. SILENTMODEIndicates that the installation is running in silent mode.

For more information, see MODE.

Tip: All InstallShield built-in and Sd dialogs automatically handle the values stored in the InstallShield Silent response file (.iss file). If you are creating custom dialogs, you will need to call SilentReadData to handle the dialogs return values in silent mode.

After you have created or modified the installation, the next step in creating a silent installation is to create the response file.

Creating the Response File


A normal (non-silent) installation receives the necessary input from end users in the form of responses to dialogs. However, a silent installation does not prompt the end user for input. A silent installation must get its end-user input from a different source. That source is the InstallShield Silent response file (.iss file). A response file contains information similar to that which an end user would enter as responses to dialogs when running a normal installation. InstallShield Silent reads the necessary input from the response file at run time. The format of response files resembles that of an .ini file, but response files have .iss extensions. A response file is a plain text file consisting of sections containing data entries.

960

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

There are two ways in which you can create an InstallShield Silent response file: you can run the installation and have InstallShield record and create the response file for you, or you can write the response file directly.

Recording a Response File


You have the option of letting InstallShield create the response file for you. Simply run your installation with the Setup.exe -r command-line parameter. InstallShield will record all your installation choices in Setup.iss and place the file in the Windows folder. All InstallShield built-in and Sd dialog functions are designed to write values into the Setup.iss file when InstallShield runs in record mode (Setup -r). If you are creating custom dialogs, you will need to call SdMakeName and SilentWriteData to add sections and dialog data to the response file when the installation runs in record mode. Refer to the Sd dialogs source code in the <InstallShield location>\Include folder for examples of using these functions to write to Setup.iss. Read the following section for more information about what data to add to Setup.iss when calling SdMakeName and SilentWriteData.

Manually Creating a Response File


You can also create the response file completely by hand. As mentioned, the Setup.iss file is similar to an .ini file. The sections of an InstallShield response file must be in the following order:
1. 2. 3. 4.

Silent Header Section Application Header Section Dialog Sequence Section Dialog Data Sections (one per dialog)

Section names are contained in square brackets, as in [InstallShield Silent]. Data entries follow their section names and consist of <name=value> pairs, as in the following example:
Dlg0={23EAFFCA-361D-11D3-8B0F-00105A9846E9}-Welcome-0

Task

To create the response file: 1. 2. 3. 4. 5. 6.

Create a text file named Setup.iss using any text editor. Enter the silent header into Setup.iss. Enter the application header into Setup.iss. Enter the dialog sequence into Setup.iss. Enter the dialog data into Setup.iss. Save and close Setup.iss.

A sample response file is included to help familiarize you with the format.

InstallShield 2010 User Guide

ISP-1600-UG00

961

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Response File Silent Header


All response files begin with a response file silent header. The response file silent header enables InstallShield to identify the file as a legitimate InstallShield response file. It also helps to verify that the response file corresponds to an installation created with the proper version of InstallShield. The format of the silent header is shown below. Enter the following lines at the beginning of your Setup.iss file:
[InstallShield Silent] Version=v7.00 File=Response File

The Version=v7.00 line indicates the version of the InstallShield Silent response file, not the version of InstallShield. Use v7.00 in all response files. Future versions of InstallShield that use later response file versions will be able to read earlier response file versions, so response file backward compatibility will be maintained.

Response File Application Header


The response file application header is the second block of information in the response file, immediately following the response file silent header. The response file application header enables you to identify response files visually. It is not used by the installation script or by Setup.exe. You can use the application header to identify exactly which installation the response file is for, since it is often difficult to determine this by looking at the dialog data. The format of the application header is shown below. The values assigned to Name, Version, and Company are derived from the values written to the registry in the call to the CreateInstallationInfo function in your installation script. (In an event-based script, CreateInstallationInfo is called in the default OnMoveData event handler code.) Enter the following lines into your Setup.iss file below the silent header:
[Application] Name=<ProductKey from CreateInstallationInfo> Version=<VersionKey from CreateInstallationInfo> Company=<CompanyKey from CreateInstallationInfo>

Response File Dialog Sequence


The third block of information in the response file, after the silent header and the application header, is the response file dialog sequence. The dialog sequence section lists all dialogs that you would need to use in a normal installation (including custom dialogs), in the order in which they would appear. The dialogs are listed under the section heading [<PRODUCT_GUID>-DlgOrder]. The dialog numbering sequence begins at 0. There is no limit to the number of dialogs that you can list. The order and the number of dialogs is significant. When InstallShield Silent runs, if either the number or the order of the dialogs does not match the order or the number of the dialogs in the non-silent installation, the silent installation fails and the log file records the failure. Make one entry for each occurrence of a dialog. A given dialog may be listed more than once if it appears more than once in the installation. The format for a dialog sequence entry is as follows:
Dlg<#>=<PRODUCT_GUID>-<DialogIdentifier>

962

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

The Dlg<#> part consists of the letters Dlg and a sequence number. The first dialog in the installation is Dlg0. Each dialog after that increments the value of <#> by one. <DialogIdentifier> is in the form functionname-<#>, where functionname is the name of the function that created the dialog, and <#> represents the sequential order of that particular dialog in the installation. For custom dialogs, you can use any unique alphanumeric name for the functionname portion of <DialogIdentifier>. For example, you could refer to a custom dialog as MyDialog. If the tenth dialog in the installation were the second occurrence of the custom dialog MyDialog, there would be an entry in the dialog sequence section such as the following:
Dlg9=<PRODUCT_GUID>-MyDialog-1

The <DialogIdentifier> expression is used to identify the dialog data section for the dialog. Always end the dialog sequence section with a statement that has the following form:
Count=<number of dialogs>

The statement specifies the exact number of dialogs listed in the dialog sequence section. Count every entry. Since dialog numbering begins with 0, the value of Count will always be 1 greater than the highest <#> value for a dialog sequence. The example below lists two dialogs, the Welcome dialog and the AskOptions dialog. Enter your dialog sequence list into Setup.iss as shown in the example below.
[{23EAFFCA-361D-11D3-8B0F-00105A9846E9}-DlgOrder] Dlg0={23EAFFCA-361D-11D3-8B0F-00105A9846E9}-Welcome-0 Dlg1={23EAFFCA-361D-11D3-8B0F-00105A9846E9}-AskOptions-0 Count=2

Response File Dialog Data


The last block of information in a response file is the response file dialog data. The response file dialog data is a collection of sections containing the values returned by each dialog identified in the dialog sequence section. Each dialog has its own section. The values listed are the same values that the dialog returns in a normal end-user input-driven installation. You can also create dialog data sections for custom dialogs. The format for a dialog data section is shown below:
[<PRODUCT_GUID>-<DialogIdentifier>] Result=value Keyname1=value Keyname2=value

The [<PRODUCT_GUID>-<DialogIdentifier>] section header identifies the specific dialog and is followed by the dialog data entry list. <DialogIdentifier> is the same expression used to list the dialog in the dialog sequence section. Data entry items are in the format keyname=value. The keyname is a name for a value returned by a dialog and recorded in the response file. All dialogs, including custom dialogs, return a value for the keyname Result, reflecting the button that was clicked to end or exit the dialog. Many dialogs will also set or return a value in a variable. For example, in a non-silent installation, the AskDestPath dialog returns the destination location in the svDir parameter. The line in the script might look like the following:
nResult = AskDestPath( szTitle, szMsg, svDir, 0 );

InstallShield 2010 User Guide

ISP-1600-UG00

963

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

The corresponding dialog data entry in the Setup.iss file for a silent installation might look like the following:
[{23EAFFCA-361D-11D3-8B0F-00105A9846E9}-AskDestPath-0] Result=1 szPath=C:\Program Files\InstallShield\2010

In the above example, Result=1 is equivalent to clicking the Next button in the dialog, and szPath=C:\Program Files\InstallShield\2010 is the value returned in the svDir parameter of AskDestPath. The name of the variable used in the script is meaningless relative to the Setup.iss file. However, in the data sections, each built-in and Sd dialog has its own set of keynames that map to its parameters. The keynames are important and must be exactly as defined for each dialog. Refer to Dialog Data Keynames List, below.
Setup.iss dialog

When you use custom dialogs, you must create a dialog data entry for the Result keyname for each dialog, plus entries for any other values set or returned by the custom dialogs. Use the Dialog Data Keynames List, below, as an indicator of how to create keyname=value expressions for your custom dialogs. Call GetProfString or GetProfInt to read the dialog data information for the custom dialog. GetProfString and GetProfInt allow you to specify the .iss file, the section, and the keyname, and they return the value assigned to that keyname.

Standard Values for the Result Keyname


All dialogs, including custom dialogs, return a keyname value called Result, indicating which button was clicked to end the dialog. Unless otherwise indicated, the Result standard values are:

12 for the Back button 1 for the Next or OK button

Recording Component and Subcomponent Selections


Some dialog functions allow the end user to select components and subcomponents. There are three kinds of dialog data keyname entries used to record component and subcomponent selections in response files: type, count, and <#> (described below). Every set of component selections and every set of subcomponent selections has one type keyname entry, one count keyname entry, and as many <#> keyname entries as are required to document each individual component or subcomponent selection. When you are creating keynames to record component selections, precede the type, count, and <#> keyname entries with the word Component, thus:
Component-typeComponent-countComponent-0

When you are creating keynames to record subcomponent selections, precede the type, count, and <#> keyname entries with the name of the component to which the subcomponents belong, thus:
Program Files-typeProgram Files-countProgram Files-0Program Files-1

To create complete value entries, use the equal sign to attach the values to the keynames. (The types of values assigned to each kind of keyname are described below.) The following example shows complete value entries for two components, Program Files and Binary Files, and two subcomponents of Program Files, Executables and Support Elements:
Component-type=string Component-count=2

964

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Component-0=Program Files Component-1=Binary Files Program Files-type=string Program Files-count=2 Program Files-0=Executables Program Files-1=Support Elements

The type keyname indicates the data type of the components or subcomponents list. Since InstallShield dialogs currently use only string lists for components and subcomponents lists, type is always equal to string, as in Component-type=string. Future versions may use number lists, in which case type could equal number. Count Keyname Entry Count is equal to the number of selections for a given component or subcomponent entry. For example, if two components were selected for installation in the ComponentDialog dialog, the count dialog data entry would be Component-count=2. If two subcomponents of the Program Files component were selected, there would be a Program Files-count=2 entry. <#> Keyname Entry The number portion of the <#> keyname entry is simply a sequential (one-up) number, beginning with 0, that numbers each recorded component or subcomponent selection. Since numbering begins with 0, the greatest number value will always be one less than the value of count. The value assigned to a <#> keyname entry is the selected components or subcomponents visible name (the string passed as the second parameter to ComponentAddItem when the components or subcomponents list was built). For example, assume the ComponentDialog dialog offers end users a component selection of Program Files, Help Files, Sample Files, and Utilities. If the end user selects Program Files and Help Files, then the dialog data section for that instance of the ComponentDialog dialog will have two list item entries and will look something like this:
[{23EAFFCA-361D-11D3-8B0F-00105A9846E9}-ComponentDialog-0] szDir=C:\MYAPP\FILES Component-type=string Component-count=2 Component-0=Program Files Component-1=Help Files Result=

The following example shows how subcomponent list selections are recorded. The example is for an instance of the SdComponentMult dialog. The example shows that two componentsProgram Files and Help Fileswere selected. It also shows that four subcomponents were chosen: Main Files, Aux. Files, Main Help, and Tutorial Files. Main Files and Aux. Files are subcomponents of Program Files, and Main Help and Tutorial Files subcomponents of Help Files.
[{23EAFFCA-361D-11D3-8B0F-00105A9846E9}-SdComponentMult-0] Component-type=string Component-count=2 Component-0=Program Files Component-1=Help Files Program Files-type=string Program Files-count=2 Program Files-0=Main Files Program Files-1=Aux. Files Help Files-type=string Help Files-count=2 Help Files-0=Main Help
InstallShield 2010 User Guide ISP-1600-UG00 965

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Help Files-1=Tutorial Files Result=1

Dialog Data Keynames List


The dialog data keynames for the InstallShield dialogs are listed in the table below. The first column contains the dialog names. The second column lists the keynames applicable to each dialog. The third column contains descriptions of the values associated with the keynames.
Table 20-16: Dialog Data Keynames Dialog AskDestPath-<#> AskDestPath-<#> AskOptions-<#> Keyname Result szPath Result Description Standard values The path that is set in the edit field Standard values AskOptions is special because the number of return values can change based on the script call. You can use a sequence of keynames of the form Sel-<#>, where <#> is the number of the selection variable. Numbering begins with 0. The number of Sel-<#> entries should match the number of variables (check boxes/ radio buttons) in the particular call to AskOptions. Refer to the following examples:


AskPath-<#> AskPath-<#> Result szPath

Sel-0Maps to first selection variable in AskOptions. Sel-1Maps to second selection variable in AskOptions. Sel-2Maps to third selection variable in AskOptions.

Standard values The path entered in the Destination Directory edit field Standard values The text from the edit field 1 = End user clicked the Yes button 0 = End user clicked the No button

AskText-<#> AskText-<#> AskYesNo-<#>

Result szText Result

ComponentDialog-<#> ComponentDialog-<#>

Result szDir

Standard values The path entered in the Destination Directory field String (the only value currently allowed)

ComponentDialog-<#>

Componenttype

966

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Table 20-16: Dialog Data Keynames (cont.) Dialog ComponentDialog-<#> Keyname Componentcount Component<#> Result Result Choice Description The total number of component selections

ComponentDialog-<#>

The selected items number in the list (numbering begins with 0) 1 = End user clicked the OK button 0 (Result is always 0.) Indicates the final reboot selection made before restarting the machine. Maps to the radio buttons and has these possible values:

MessageBox-<#> RebootDialog-<#> RebootDialog-<#>


SdAskDestPath-<#> SdAskDestPath-<#> Result szDir

602 = Yes, I want to restart my computer now. 0 = No, I will restart my computer later.

Standard values The path entered in the Destination Directory field Standard values String (the only value currently allowed)

SdAskOptions-<#> SdAskOptions-<#>

Result Componenttype Componentcount Component<#> Result Componenttype Componentcount Component<#> Result Result szDir

SdAskOptions-<#>

The total number of component selections

SdAskOptions-<#>

The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)

SdAskOptionsList-<#> SdAskOptionsList-<#>

SdAskOptionsList-<#>

The total number of component selections

SdAskOptionsList-<#>

The selected items number in the list (numbering begins with 0) Standard values Standard values The path entered in the Destination Directory field

SdBitmap-<#> SdComponentDialog-<#> SdComponentDialog-<#>

InstallShield 2010 User Guide

ISP-1600-UG00

967

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Table 20-16: Dialog Data Keynames (cont.) Dialog SdComponentDialog-<#> Keyname Componenttype Componentcount Component<#> Result Componenttype, <subcompone nt>-type Componentcount, <subcompone nt>-count Component<#>, <subcompone nt>-<#> Result szDir Description String (the only value currently allowed)

SdComponentDialog-<#>

The total number of component selections

SdComponentDialog-<#>

The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)

SdComponentDialog2-<#> SdComponentDialog2-<#>

SdComponentDialog2-<#>

The total number of component or subcomponent selections

SdComponentDialog2-<#>

The selected items number in the list (numbering begins with 0)

SdComponentDialogAdv-<#> SdComponentDialogAdv-<#>

Standard values The path entered in the Destination Directory field String (the only value currently allowed)

SdComponentDialogAdv-<#>

Componenttype Componentcount Component<#> Result Componenttype, <subcompone nt>-type Componentcount, <subcompone nt>-count

SdComponentDialogAdv-<#>

The total number of component selections

SdComponentDialogAdv-<#>

The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)

SdComponentMult-<#> SdComponentMult-<#>

SdComponentMult-<#>

The total number of component or subcomponent selections

968

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Table 20-16: Dialog Data Keynames (cont.) Dialog SdComponentMult-<#> Keyname Componentnumber, <subcompone nt>-<#> Result Result Description The selected items number in the list (numbering begins with 0)

SdComponentTree-<#> SdConfirmNewDir-<#>

Standard values 1 = End user clicked the Yes button 0 = End user clicked the No button

SdConfirmRegistration-<#>

Result

1 = End user clicked the Yes button 0 = End user clicked the No button

SdDisplayTopics-<#> SdFinish-<#> SdFinish-<#>

Result Result bOpt1

Standard values 1 = Finish 1 = Yes, I want to view the README file. is selected 0 = Yes, I want to view the README file. is not selected

SdFinish-<#>

bOpt2

1 = Yes, I want to launch [app name] is selected 0 = Yes, I want to launch [app name] is not selected

SdFinishEx SdFinishReboot-<#> SdFinishReboot-<#> Result BootOption

Requires special handling. 1 = Finish 0 = Do not restart Windows or the machine 2 = Restart Windows 3 = Reboot the machine

SdLicense-<#>

Result

12 = End user clicked the Back button 1 = End user clicked the Yes button

SdOptionsButtons-<#>

Result

12 = End user clicked the Back button Or, when the Next button is clicked: 101 = Option button one (top) is selected 102 = Option button two is selected 103 = Option button three is selected 104 = Option button four is selected

SdRegisterUser-<#>

Result

Standard values

InstallShield 2010 User Guide

ISP-1600-UG00

969

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Table 20-16: Dialog Data Keynames (cont.) Dialog SdRegisterUser-<#> SdRegisterUser-<#> SdRegisterUserEx-<#> SdRegisterUserEx-<#> SdRegisterUserEx-<#> SdRegisterUserEx-<#> SdSelectFolder-<#> SdSelectFolder-<#> Keyname szName szCompany Result szName szCompany szSerial Result szFolder Description The text entered in the Name field The text entered in the Company field Standard values The text entered in the Name field The text entered in the Company field The text entered in the Serial (number) field Standard values The folder name entered in the Program Folder field 12 = End user clicked the Back button Or, when the Next button is clicked: 301 = Typical radio button is currently selected 302 = Compact radio button is currently selected 303 = Custom radio button is currently selected SdSetupType-<#> szDir The path entered in the Destination Directory edit field Standard values The text entered in the svEdit1 field Standard values The text entered in the svEdit1 field The text entered in the svEdit2 field Standard values The text entered in the svEdit1 field The text entered in the svEdit2 field The text entered in the svEdit3 field Standard values

SdSetupType-<#>

Result

SdShowDlgEdit1-<#> SdShowDlgEdit1-<#> SdShowDlgEdit2-<#> SdShowDlgEdit2-<#> SdShowDlgEdit2-<#> SdShowDlgEdit3-<#> SdShowDlgEdit3-<#> SdShowDlgEdit3-<#> SdShowDlgEdit3-<#> SdShowFileMods-<#>

Result szEdit1 Result szEdit1 szEdit2 Result szEdit1 szEdit2 szEdit3 Result

970

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Table 20-16: Dialog Data Keynames (cont.) Dialog SdShowFileMods-<#> Keyname nSelection Description The Choose what you want Setup to do radio button selection: 101 = Let Setup modify the AUTOEXEC.BAT file. 102 = Save the required changes to AUTOEXEC.NEW file. 103 = Do not make any changes. SdShowInfoList-<#> SdStartCopy-<#> SdWelcome-<#> SdWelcomeMaint-<#> Result Result Result Result Standard values Standard values Standard values 301 = Indicates that the Modify button was selected when the Next button was clicked. 302 = Indicates that the Repair button was selected when the Next button was clicked. 303 = Indicates that the Remove button was selected when the Next button was clicked. SelectDir-<#> SelectDir-<#> SelectDirEx-<#> SelectDirEx-<#> SelectFolder-<#> SelectFolder-<#> SetupType-<#> Result szDir Result szDir Result szResultFolder Result Standard values The path selected by this dialog Standard values The path selected by this dialog Standard values The folder selected by this dialog 12 = End user clicked the Back button Or, when the Next button is clicked: 301 = Typical radio button is currently selected 302 = Compact radio button is currently selected 303 = Custom radio button is currently selected SprintfBox-<#> Welcome-<#> Result Result 1 = End user clicked the OK button Standard values

InstallShield 2010 User Guide

ISP-1600-UG00

971

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

Special Handling for SdFinishEx


SdFinishEx calls either SdFinish or SdFinishReboot, depending on the value of the system variable
BATCH_INSTALL.

For this reason, SdFinishEx cannot be handled by a response file. To create a silent installation for a script that calls SdFinishEx, use script code such as the following:

if (MODE = NORMALMODE) then SdFinishEx (szTitle, szMsg1, szMsg2, szOpt1, szOpt2, bvOpt1, bvOpt2); else if !BATCH_INSTALL then /* Set bvOpt1 and bvOpt2 to the values you want them to have during a silent installation that does not require rebooting; for example: */ bvOpt1 = FALSE; bvOpt2 = TRUE; else /* When the silent installation requires rebooting, if you want to reboot immediately call the System function as follows: */ System (SYS_BOOTMACHINE); endif; endif;

Sample Response File


The following response file is the .iss file for a silent InstallShield installation.
[InstallShield Silent] Version=v7.00 File=Response File [Application] Name=InstallShield Version=10.50.000 Company=Acresso Software [{77AB941D-5876-11D4-A4A2-006067620F66}-DlgOrder] Dlg0={77AB941D-5876-11D4-A4A2-006067620F66}-SdBitmap-0 Count=8 Dlg1={77AB941D-5876-11D4-A4A2-006067620F66}-Welcome-0 Dlg2={77AB941D-5876-11D4-A4A2-006067620F66}-SdRegisterUser-0 Dlg3={77AB941D-5876-11D4-A4A2-006067620F66}-AskDestPath-0 Dlg4={77AB941D-5876-11D4-A4A2-006067620F66}-SetupType-0 Dlg5={77AB941D-5876-11D4-A4A2-006067620F66}-SelectFolder-0 Dlg6={77AB941D-5876-11D4-A4A2-006067620F66}-SdStartCopy-0 Dlg7={77AB941D-5876-11D4-A4A2-006067620F66}-SdFinish-0 [{77AB941D-5876-11D4-A4A2-006067620F66}-SdBitmap-0] Result=1 [{77AB941D-5876-11D4-A4A2-006067620F66}-Welcome-0] Result=1 [{77AB941D-5876-11D4-A4A2-006067620F66}-SdRegisterUser-0] szName=John Doe szCompany=Acresso Software Result=1 [{77AB941D-5876-11D4-A4A2-006067620F66}-AskDestPath-0] szPath=C:\Program Files\Product Name Version Result=1
972 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

[{77AB941D-5876-11D4-A4A2-006067620F66}-SetupType-0] Result=301 szDir=C:\Program Files\Product Name Version [{77AB941D-5876-11D4-A4A2-006067620F66}-SelectFolder-0] szResultFolder=Product Name Version Result=1 [{77AB941D-5876-11D4-A4A2-006067620F66}-SdStartCopy-0] Result=1 [{77AB941D-5876-11D4-A4A2-006067620F66}-SdFinish-0] Result=1 bOpt1=1 bOpt2=0

Running the Silent Installation


After you have created the installation and the response file, do the following:
1. 2.

Add the response file (which is located in your Windows folder by default) to the Disk1 folder under Advanced Files in the Support Files/Billboards view. Build your release. If you are creating a self-extracting executable file for your installation, enter -s for the Setup Command Line property in the General Options panel of the Release Wizard or for the Setup Command Line property in the Releases view.

Now you are ready to run the installation in silent mode using InstallShield Silent. When running an installation in silent mode, be aware that no messages are displayed. Instead, a log file named Setup.log captures installation information, including whether the installation was successful. You can review the log file and determine the result of the installation. (Note that for certain installation initialization errors, the log file may instead be named Setupexe.log and be created in SUPPORTDIR if the installation is run from the Internet or in SRCDIR otherwise.) To launch InstallShield Silent, run Setup.exe with the -s option. If you created a self-extracting executable file, simply launch it; you included the -s option in step 2 above. InstallShield also provides the -f1 and -f2 switches so that you can specify the name and location of the response file and the location of the log file. For more information, see Setup.exe and Update.exe Command-Line Parameters. To verify if a silent installation succeeded, look at the ResultCode value in the [ResponseResult] section of Setup.log. InstallShield writes an appropriate return value after the ResultCode keyname.

Checking for Errors Using the Setup.log File


Setup.log is

the default name for the silent installation log filegenerated when the end user runs

Setup.exe with the /s argumentand it is by default created in the directory containing the response file

Setup.iss. You can specify a different name and location for Setup.log using the /f1 and /f2 switches to Setup.exe. The Setup.log file contains three sections. The first section, [InstallShield Silent], identifies the version of InstallShield Silent used in the silent installation. It also identifies the file as a log file.

InstallShield 2010 User Guide

ISP-1600-UG00

973

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

The second section, [Application], identifies the installed applications name and version, and the company name. The third section, [ResponseResult], contains the result code indicating whether the silent installation succeeded. An integer value is assigned to the ResultCode keyname in the [ResponseResult] section. InstallShield places one of the following return values in the ResultCode key:
Table 20-17: Return Values for the Setup.log File Result Code 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -51 -52 -53 Description Success. General error. Invalid mode. Required data not found in the Setup.iss file. Not enough memory available. File does not exist. Cannot write to the response file. Unable to write to the log file. Invalid path to the InstallShield Silent response (.iss) file. Not a valid list type (string or number). Data type is invalid. Unknown error during setup. Dialog boxes are out of order. Cannot create the specified folder. Cannot access the specified file or folder. Invalid option selected.

The Setup.log file for a successful silent installation appears as follows:


[Application] Name=Sample App 3000 Version=1.00.0000 Company=Sample Software Corporation Lang=0409 [ResponseResult] ResultCode=0

974

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations

MSI Silent Mode Installations for InstallScript MSI Projects


If you need to silently install an InstallScript MSI project without using Setup.exe, you can use the MSI silent mode.

Launching MSI Silent Installations for InstallScript MSI Projects


The MSI silent installation is launched in the following cases:

The installation is launched at the command line by typing the following:


msiexec product.msi /qn

The installation is activated from an advertised shortcut. The installation is activated from install-on-demand. When the product is removed when an update package is running.

Unlike the traditional silent mode, the MSI silent mode does not follow the regular logic provided through script. It simply runs through the InstallExecuteSequence table. (To see this table, navigate to the Direct Editor.) As a result, some events are not called, including the following:

All UI installation eventsOnFirstUIBefore and OnFirstUIAfter All Feature events

The OnMsiSilentInstall Event


What the Event Does In an InstallScript MSIbased installation, InstallShield runs the OnMsiSilentInstall event handler if the product is not already installed on the target system. This happens if the installation is activated from an advertised shortcut or if the installation is launched through the following command line:
msiexec product.msi /qn

You need to override the OnMsiSilentInstall event if you want to support the MSI silent installation mode. This allows you to perform tasks that are normally performed in the OnFirstUIBefore, OnFirstUIAfter, and feature event handlers. Overriding the Event By default, OnMsiSilentInstall displays a message and then aborts the installation. You can override this event handler by writing your own implementation of the function. The prototype of this function is as follows:
external prototype OnMsiSilentInstall(HWND hInstall);

where hInstall is the handle to the installation. The simplest thing that you can do is to implement an empty body of this event so that the installation will not abort. For example:
function OnMsiSilentInstall(hInstall) begin //Do nothing and allow installation to continue. end;

Again, OnMsiSilentInstall will be called on MSI silent installation and on activation of an advertised shortcut. It will not be called on Install-On-Demand, auto-repair, and uninstall mode.
InstallShield 2010 User Guide ISP-1600-UG00 975

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Detecting the Mode in which a Silent Installation is Running


To detect whether a traditional silent installation is running from InstallShield script, use the following:
if (MODE = SILENTMODE)

To detect whether an MSI silent mode installation (including /q, advertise, auto-repair, uninstall, or install-on-demand) is running from InstallShield script, check the Windows Installer property ISSETUP_UISEQUENCE_PROCESSED using the MsiGetProperty Windows Installer API function. If this property is not set, then it is a silent install. (It indicates that the InstallUISequence is not executed.)

Validating Projects
Validating a project involves applying a set of internal consistency evaluator (ICE) rules to your installation or merge module package. The ICEs are designed to help you determine whether the package contains a valid database that performs its actions correctly. If a package fails one or more ICEs, InstallShield reports the specific ICE rules that were violated and offers additional information to help you troubleshoot the problem. Microsoft created many of the ICEs that are available in InstallShield; Acresso created the custom InstallShield ICEs (ISICEs) that are available for the InstallShield Certified for Windows Vista Validation Suite and the InstallShield Certified for Windows Vista Merge Module Validation Suite. The ISICEs help you validate your package against best practices for Windows-based installations.

Windows Logo Guideline: Validating your project may help you identify whether your installation meets installation requirements for Microsofts Certified for Windows Vista program. Therefore, if you are interested in being able to use the Certified for Windows Vista logo, it is recommended that you use the InstallShield Certified for Windows Vista Validation Suite and the Full MSI Validation Suite to validate your installation package. If you create a merge module in InstallShield, use the InstallShield Certified for Windows Vista Merge Module Validation Suite and the Merge Module Validation Suite to validate your merge module. For more details, see Requirements for the Certified for Windows Vista Program. To learn more about the Certified for Windows Vista program, visit http://www.InnovateOnWindowsVista.com.

Project: The InstallShield Premier Edition 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.

InstallShield also provides an engine for upgrade and patching validation. You can access this through the Upgrade Validation Wizard.

Validating an Installation Package or Merge Module


There are two ways to validate an installation package or a merge module from within InstallShield:

You can configure InstallShield to validate the installation package or merge module every time that you build a release. This is disabled by default. For more information, see Specifying Whether Validation Should Be Performed at Build Time. If you perform validation at build time, you can specify multiple validation suites.

976

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

You can run validation on demand for a built release. To learn how, see Validating an Installation Package or Merge Module on Demand. If you perform validation on demand, you can specify only one validation suite at a time.

Tip: As an alternative, you can validate the installation package or merge module after you build it from the command line by using ISCmdBld.exe. For more information, see ISCmdBld.exe.

Project: The only way to validate a package for an MSI Database project or an MSM Database project is to perform validation on demand.

Note: If you want to see validation warnings that apply to your installation or merge module, you must perform validation on demand; this type of validation message is not available if you perform validation at build time. InstallShield reports the other types of validation messageserrors and failuresduring both validation methods. To learn more about the different types of validation messages, see Viewing Validation Results.

Specifying Whether Validation Should Be Performed at Build Time


InstallShield enables you to specify whether installation packages and merge modules should be validated each time that a release is successfully built. InstallShield also lets you specify one or more validation suites that should be used for validation.

Task

To configure validation settings: 1. 2. 3. 4.

On the Tools menu, click Options. The Options dialog box opens. Click the Validation tab. Select the check boxes for the types of validation that you would like InstallShield to perform at build time. If you prefer to validate on demand, and not at build time, clear the check boxes. If you select the Perform validation using check box or the Perform Merge Module validation using check box, select one or more types of validation that should be performed. To add a new or custom validator (.cub file), click the Browse button and select it.

Note: If you want to see validation warnings that apply to your installation or merge module, you must perform validation on demand; this type of validation message is not available if you perform validation at build time. InstallShield reports the other types of validation messageserrors and failuresduring both validation methods.

InstallShield 2010 User Guide

ISP-1600-UG00

977

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Specifying Which ICEs, ISICEs, and ISBPs Should Be Run During Validation
InstallShield lets you customize the list of ICEs, ISICEs, and ISBPs that should be used for installation package validation and merge module validation.

Task

To specify which ICEs, ISBPs, ISICEs that should be run during validation: 1. 2. 3. 4. 5.

On the Tools menu, click Options. The Options dialog box opens. Click the Validation tab. Click the Customize button. The Customize Validation Settings dialog box opens. In the Select CUB file to customize list, click the suite that you want to customize. In the list of ICEs, select the check box for each of the validators that should be used to evaluate the installation package or merge module. Clear the check box for each of the validators that should not be used for the validation. To configure multiple consecutive validators, select the first file, press and hold SHIFT, and select the last file. Then either select or clear the check box of one of the selected validators.

6.

Click OK.

If you customize the list of ICEs, ISICEs, and ISBPs for a validation suite, anytime that validation is performedwhether it occurs at build time or on demandonly the selected ICEs, ISICEs, or ISBPs are used.

Validating an Installation Package or Merge Module on Demand


InstallShield enables you to validate an installation package or merge module separately from the build process. Doing so is especially helpful if you configured InstallShield so that validation is not performed as part of every successful build, but you do need to run it at some point to test your product for Windows logo compliance or for best-practice compliance.

Task

To validate your release on demand: 1. 2.

Complete a successful build of a release. On the Build menu, point to Validate, and then click the validation type that you want to run.

978

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Viewing Validation Results


InstallShield displays the results of the validation scan on the Validations tab of the Output window. In addition, InstallShield saves the results to a text (.txt) file in a ValidationFiles folder within the release folder. You can view this file either by navigating to your build directory, or by navigating to the Releases view and selecting the Validations folder under your release.

Validation Messages
Validation messages are broken down into three categories:

ErrorsDescribe problems with your database, such as having duplicate component GUIDs. WarningsDescribe problems in your database that may occur in certain circumstances. FailuresOccur when your database has severe enough problems that the validation tool might not be able to run.

If the scan results for your project include validation messages, the messages and associated codes are also listed on the Tasks tab of the Output window.

Note: If you want to see validation warnings that apply to your installation or merge module, you must perform validation on demand; this type of validation message is not available if you perform validation at build time. InstallShield reports the other types of validation messageserrors and failuresduring both validation methods. To learn more about these two validation methods, see Validating an Installation Package or Merge Module.

Tip: You can click a validation code on the Tasks tab of the Output window to see the corresponding Knowledge Base article or HelpNet topic. In addition, you can click a validation message on the Tasks tab to jump to the area of the Direct Editor that corresponds to the validation message. This functionality is available for ICEs, ISICEs, and ISBPs.

ICEs
The validation tool checks your project for compliance with each of the internal consistency evaluators, or ICEs. These ICEs are those used by Msival2.exe (part of the Microsoft Windows Installer Platform SDK) to validate installation and merge module packages for Windows logo compliance. If your installation project or merge module project fails one or more of these ICEs, InstallShield reports the specific ICE rules that were violated and offers additional information to help you troubleshoot the problem. To learn about specific ICEs, see ICE Reference in the Windows Installer Help Library.

InstallShield 2010 User Guide

ISP-1600-UG00

979

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

ISICEs
The InstallShield Certified for Windows Vista Validation Suite and the InstallShield Certified for Windows Vista Merge Module Validation Suite consist of a number of InstallShield ICEs (ISICEs) that help you check your project for compliance with installation requirements of the Certified for Windows Vista program. The following table lists the ISICEs that are available in InstallShield.
Table 20-18: ISICEs ISICE ISICE01 Project Type Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, MSI Database Description Validates that the application is installed to ProgramFiles or the users AppData folder by default.

ISICE02

Validates that all executable files included with the installation or merge module are digitally signed.

ISICE03

Validates that there are no nested-installation custom actions (type 7, 23, and 39).

ISICE04

Validates that there are no custom columns added to standard .msi tables.

ISICE05

Validates that there are no properties or custom tables that begin with MSI (case-insensitive).

ISICE06

Validates that the installation does not include any files protected by Windows Resource Protection.

ISICE07

Validates that MSI components are authored for proper installation and uninstallation.

ISICE08

Validates that deferred custom actions do not have the impersonate bit set.

ISICE09

Validates that the installation includes an MsiPatchCertificate table entry.

980

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Table 20-18: ISICEs (cont.) ISICE ISICE10 Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, InstallScript MSI, Merge Module, MSI Database Basic MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Description Validates that each custom action has a path specified for the Help File Path setting in the Custom Actions view.

ISICE11

Validates that .exe files have embedded manifests with required information.

ISICE12

Validates that no protected registry keys are modified.

ISICE13

Validates that no .hlp files or WinHelp run-time files are included in the installation. This ICE is now ISBP17.

ISICE14

Validates that no obsolete APIs are imported. This ICE is now ISBP18.

ISICE15

Validates that no deprecated APIs are imported. This ICE is now ISBP19.

ISICE16

Validates that no 16-bit components are distributed in an installation that targets 64-bit systems.

ISICE17

Validates that the installation or merge module does not force a reboot.

ISICE18

Validates that the MsiRMFilesInUse dialog is included.

ISICE19

Validates properties related to upgrades, that the Upgrade table is present, and that the installation prevents downgrades.

ISICE20

Validates that no machine-wide settings are installed by a non-privileged installation.

InstallShield 2010 User Guide

ISP-1600-UG00

981

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Tip: In some cases, the following validation error message may be displayed for an ISICE:
File [1] in Component [2] could not be found. All tests against this file's contents may be invalid.

This error occurs if the specified file is missing, and the associated ISICE could not be verified for the file. For example, if an executable file is missing, ISICE11 cannot verify whether the file has an embedded manifest. If the aforementioned validation error message is displayed, resolve the missing file issue, and then rerun validation for your project.

ISICE01

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
The application should be installed to either ProgramFiles or AppData folder by default. The current default location is [1].

[1] is the default installation location for the product.

Description
Users should be able to install products where they need them, and they should have a consistent experience with where files are stored by default. ISICE01 verifies that the default destination location for your product is the Program Files folder or the Application Data folder. If a different location is used, this error message is displayed during validation.

Corrective Action
Change the default location. For more information, see Setting the Default Product Destination Folder (INSTALLDIR).

ISICE02

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

982

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Message (Error)
File [1] in Component [2] is not digitally signed. All [3] files distributed to Windows(R) Vista are required to be signed.

[1] is the name of an executable file, [2] is the name of the component that contains that file, and [3] is the type of file that must be signed.

Description
ISICE02 verifies that all executable files in your installation have been digitally signed. This includes files with the following extensions: exe, dll, ocx, sys, cpl, drv, and scr. If an executable file in your installation has not been digitally signed, this error message is displayed during validation.

Corrective Action
Ensure that all executable files in your installation have been digitally signed. For more information, see Digital Signing and Security.

ISICE03

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
Nested custom action [1] of type [2] is not allowed.

[1] is the name of a custom action in your project, and [2] is the Windows Installer type number of custom action.

Description
ISICE04 verifies that your installation does not include any nested-installation custom actions. Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations on the MSDN Web site.

Corrective Action
To resolve this error, remove the nested-installation custom action from your project. The MSI Type Number value in the Custom Actions and Sequences view (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or the Custom Actions view (in Merge Module and MSM Database projects) for nested-installation custom actions is 7, 23, or 39.

InstallShield 2010 User Guide

ISP-1600-UG00

983

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

As an alternative to using a nested installation, you may want to create a create an InstallShield prerequisite, and then add that InstallShield prerequisite to your installation project. For more information, see Defining InstallShield Prerequisites.

ISICE04

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
The standard MSI table [1] does not match the MSI schema defined in schema.msi.

[1] is the name of a table in your project.

Description
ISICE04 verifies that your installation does not add custom table columns to standard tables. Adding columns to standard tables is reserved for future versions of Windows Installer.

Corrective Action
To resolve this error, remove any custom table columns that were added to the table that is mentioned in the error message. You can do this by exporting the table from the Direct Editor, editing the table in a text editor, and importing the revised table.

ISICE05

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Messages
Message 1 (Error)
MSI property [1] begins with reserved characters. MSI property names cannot start with "MSI" (case-insensitive).

[1] is the name of a property in your project.

984

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Message 2 (Error)
Table [1] begins with reserved characters. Custom table names cannot start with "MSI" (caseinsensitive).

[1] is the name of a table in your project.

Description
ISICE05 verifies that your installation does not include any custom properties or custom tables whose names begin with MSI in any combination of uppercase and lowercase letters. The MSI prefix is reserved for future use in new standard properties and tables.

Corrective Action
To resolve the property-related error, use the Property Manager to rename the custom property that is mentioned in the error message. To resolve the table-related error, use the Direct Editor to export the table, use a text editor to edit the table name in the exported .idt file, and use the Direct Editor to import the newly renamed table into the Direct Editor. Then delete the original custom table.

ISICE06

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message 1 (Error)
File [1] in Component [2] is a Windows Protected File. Protected files may not be distributed to Windows(R) Vista.

[1] is the name of a file in your project, and [2] is the name of the component that contains that file.

Message 2 (Warning)
File [1] in Component [2] has the same file name as a Windows Protected File, but appears to be distributed to a different path.

[1] is the name of a file in your project, and [2] is the name of the component that contains that file.

Description
ISICE06 verifies that your installation does not install files that are protected by Windows Resource Protection (WRP). WRP is designed to ensure that protected system resources are updated on Windows Vista machines only through Microsoft-approved installation or update mechanisms. If your installation installs a file that has the same name as a Windows Protected File, but the file is not installed to the same location as the Windows Protected File, warning message 2 is displayed.

InstallShield 2010 User Guide

ISP-1600-UG00

985

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Corrective Action
To resolve the validation error, remove the file that is mentioned in the error message from your project. If you encounter the validation warning, determine if the file that is mentioned in the message is a protected file:

If the file is not a protected file but it has the same name as a protected file, you can ignore this warning. If the file is a protected file, remove it from your project to resolve this warning.

If your product requires newer versions of system components, the components must be updated on target machines by using a Microsoft service pack or a Microsoft-approved installation package that contains the system component. System components should not be repackaged.

ISICE07

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Messages
Message 1 (Error)
Component.ComponentId for Component [1] is null. All components must have a valid ComponentId for proper installation and uninstallation. If this is left null, justification must be documented.

[1] is the name of a component in your project that does not have a GUID specified in the Component Code setting in the Components view. Message 2 (Error)
Component [1] contains COM data, but it has more than 1 file. Each COM component should contain only 1 COM file.

[1] is the name of a component in your project that contains more than one COM server. Message 3 (Error)
Component [1] has more than one file as the target of a Desktop or Start Menu shortcut.

[1] is the name of a component in your project that has more than one file specified as the target of a shortcut. Message 4 (Error)
Component [1] is associated with multiple features and is referenced in the following tables: [2]. These references require the component to be associated with exactly 1 feature.

986

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

[1] is the name of a component in your project that is associated with more than one feature and that has references in any of the following tables: Class, Extension, MsiAssembly, PublishComponent, TypeLib. [2] is a comma-delimited list of tables that contain references to the component.

Description
ISICE07 verifies that the components in your installation adhere to component rules, which help to ensure that the installation or uninstallation of one product does not harm any other product on a target system. These rules also help to ensure that Windows Installer correctly removes all resources that are connected with a product that is being uninstalled.

Corrective Action
To resolve error 1, open the Components view, select the component that is mentioned in the error message, and click the Component Code setting. In the help pane that is displayed in the lower-right pane, click Generate GUID. If you have a valid reason for leaving the Component Code setting blank, you can document it in the application that you submit for the Certified for Windows Vista program. To resolve error 2, move any COM servers to separate components so that each COM server is the key path of its component. To resolve error 3, use the Shortcuts view to delete all but one of the shortcuts that are associated with the component mentioned in the error message. To resolve error 4, use the Setup Design view or the Features view to remove the component from all but one feature.

ISICE08

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
Custom Action [1] uses impersonation. Impersonation should not be used when running setups on Windows Vista.

[1] is the name of a custom action in your project.

Description
ISICE08 verifies that your installation does not contain any custom actions that use impersonation. If you select one of the Terminal Server Aware options for the type of in-script execution setting (in the Custom Actions and Sequences view, in the Custom Actions view, or on the Respond Options panel of the Custom Action Wizard), the custom action impersonates the end user during per-machine installations on terminal server machines.

InstallShield 2010 User Guide

ISP-1600-UG00

987

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Corrective Action
To resolve this validation error, open the Custom Actions and Sequences view (or the Custom Actions view) and click the custom action that is mentioned in the error message. Change the value of the InScript Execution setting to one of the options that does not include Terminal Server Aware.

ISICE09

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
An MsiPatchCertificate table entry is required for User Account Control (UAC) patching.

Description
ISICE09 verifies that your installation includes an MsiPatchCertificate table entry. In a base installation, this table provides the signer certificate that will be used to verify the digital signature of subsequent patches when they are applied by a non-administrator or an administrator who is not using elevated privileges.

Corrective Action
To resolve this validation error, add the MsiPatchCertificate table to your project. To learn how, see Preparing Installations for Non-Administrator Patches.

ISICE10

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
Custom action [1] of type [2] is not documented in table [3].

[1] is the name of a custom action in your project, and [2] is its Windows Installer type number. [3] is the name of the table that is missing an entry for the custom action that is listed.

988

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Description
The intended behavior of each custom action must be documented for the Certified for Windows Vista program. This is especially helpful if system administrators deploy your product to enterprise environments; they sometimes need to know what the custom actions do. ISICE10 verifies that each custom action in your installation is documented by validating that each entry in the CustomAction table has a corresponding ISCustomActionReference table entry.

Corrective Action
To resolve this validation error, open the Custom Actions and Sequences view (or the Custom Actions view), select the custom action that is mentioned in the error message, and use the Help File Path setting to specify a path to the document that describes the behavior of the custom action. When you specify a value in the Help File Path setting, InstallShield adds a row for that custom action in the ISCustomActionReference table if one has not already been created. In addition, configure the product configuration for the release so that InstallShield streams the contents of each of the custom action help files into the .msi file at build time. For more information, see the description of the Include Custom Action Help setting on the General tab for a product configuration in the Releases view. Note that if the custom action is a merge module that is consumed in your installation project, specify the path in the Custom Actions view of the merge module project and then rebuild the merge module.

ISICE11

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Messages
Message 1 (Error)
Exe [1] in component [2] lacks a manifest.

[1] is the name of an executable file in your project that does not have a manifest, and [2] is the name of the component that contains the executable file. Message 2 (Error)
Exe [1] in component [2] lacks a requiredExecutionLevel level setting in its manifest.

[1] is the name of an executable file in your project that has a manifest that was possibly created for Windows XP but that was not updated for Windows Vista. The manifest does not define the execution level for the executable file. [2] is the name of the component that contains the executable file. Message 3 (Error)
Exe [1] in component [2] lacks a requiredExecutionLevel uiAccess setting in its manifest.

InstallShield 2010 User Guide

ISP-1600-UG00

989

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

[1] is the name of an executable file in your project that has a manifest that was possibly created for Windows XP but that was not updated for Windows Vista. The manifest does not define the UI accessibility value for the executable file. [2] is the name of the component that contains the executable file. Message 4 (Warning)
Exe [1] in component [2] is marked to require elevated privileges (highestAvailable) which requires a waiver from Microsoft.

[1] is the name of an executable file in your project that has a manifest that specifies that elevated privileges are required, and [2] is the name of the component that contains the executable file. Message 5 (Warning)
Exe [1] in component [2] is marked to require elevated privileges (requireAdministrator) which requires a waiver from Microsoft.

[1] is the name of an executable file in your project that has a manifest that specifies that elevated privileges are required, and [2] is the name of the component that contains the executable file. Message 6 (Warning)
Exe [1] in component [2] is marked to require uiAccess which requires a waiver from Microsoft.

[1] is the name of an executable file in your project that has a manifest that specifies that the executable file is allowed to bypass UI protection levels in order to use higher privileges to pass information to other windows on the desktop; that is, the value of uiAccess is set to true. [2] is the name of the component that contains the executable file.

Description
ISICE11 verifies that every .exe file in your installation has an embedded manifest that defines its execution level. The execution level is defined in the manifest as follows:
<requiredExecutionLevel level="asInvoker" uiAccess="false"/>

Other valid values for the level attribute are highestAvailable and requireAdministrator. Note that if you set the level value to highestAvailable or requireAdministrator, you must apply for a waiver from Microsoft to obtain Windows logo certification. The uiAccess attribute indicates whether the executable file is allowed to bypass UI protection levels in order to use higher privileges for passing information to other windows on the desktop, such as onscreen keyboards. This attribute should be set to true only for UI accessibility applications. Note that if you set the UI accessibility value to true, you must apply for a waiver from Microsoft to obtain Windows logo certification.

Corrective Action
To resolve the validation errors (messages 1 through 3), replace the executable file in your installation with one that has an embedded manifest whose level and uiAccess values are set appropriately. The validation warnings (messages 4 through 6) are displayed to inform you that if you want to have your product qualify for the Certified for Windows Vista program but you keep the requiredExecutionLevel element as it is currently defined in the executable files manifest, you may need to obtain a waiver from Microsoft.

990

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

ISICE12

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
Registry key [1] in Component [2] is a protected registry key. Protected registry keys may not be modified on Windows(R) Vista.

[1] is a registry key that only the Trusted Installer group can modify on Windows Vista systems, and [2] is the name of the component that contains that registry key.

Description
ISICE12 verifies that the installation does not attempt to modify registry keys that are protected by Windows Resource Protection (WRP) on Windows Vista systems. Registry keys that can be modified by only the Trusted Installer group are protected by WRP.

Corrective Action
To resolve this validation error, use the Registry view to remove the protected registry key from your project, or move it to a part of the registry that is not protected by WRP.

ISICE16

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Message (Error)
File [1] in Component [2] is a 16-bit file. Installations that target 64-bit systems may not include 16-bit files.

[1] is the name of a 16-bit file in your project, and [2] is the name of the component that contains the file.

Description
If your installation targets 64-bit platforms, ISICE16 verifies that it does not contain any 16-bit files, since 64-bit platforms do not support 16-bit files.

InstallShield 2010 User Guide

ISP-1600-UG00

991

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Corrective Action
To resolve this validation error, replace the 16-bit file with a 64-bit or 32-bit file.

ISICE17

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database

Messages
Message 1 (Error)
Sequence [1] includes the [2] action. Use of the [2] action requires a waiver from Microsoft.

[2] is the name of an action in your project, and [1] is the name of the sequence that contains that action. Message 2 (Error)
Control [1] on Dialog [2] runs the [3] action. Use of the [3] action requires a waiver from Microsoft.

[3] is the name of an action in your project. [2] is the name of the control that includes an event that launches that action. [2] is the name of the dialog that has the control.

Description
ISICE17 verifies that the installation does not use an action to force a reboot. Currently, the only action that is validated is ForceReboot.

Corrective Action
The errors are displayed to inform you that if you want to have your product qualify for the Certified for Windows Vista program but you keep the specified action in your installation, you may need to obtain a waiver from Microsoft. To resolve these validation errors, remove the action from sequence or dialog that is mentioned in the message. Ensure that your project includes the MsiRMFilesInUse dialog to minimize system reboots, and that your application has been properly instrumented to use the Restart Manager API. For more information, see Minimizing Reboots on Windows Vista Systems.

ISICE18

Project: This information applies to the following project types:

992

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Basic MSI MSI Database

Messages
Message 1 (Error)
Dialog [1] is not present in the Dialog table.

[1] is the name of a dialog that should be in your project. Message 2 (Error)
The Title of Dialog [1] does not include '[2]' or '[ProductName]'.

[1] is the name of a dialog in your project, and [2] is the value of the [ProductName] variable.

Description
ISICE18 verifies that the installation includes the MsiRMFilesInUse dialog, and that the dialogs title bar contains the name of the product.

Corrective Action
To resolve error 1, ensure that the MsiRMFilesInUse dialog is in your project. All Basic MSI projects include this dialog by default. For more information about this dialog, see Minimizing Reboots on Windows Vista Systems. To add the dialog back to a Basic MSI project, you can open another Basic MSI project that contains this dialog, or create a new Basic MSI project. Then export the dialog to the project that needs it. For more information, see Exporting Dialogs to Other Projects. To resolve error 2, add the product name or the [ProductName] property to the Caption property for the MsiRMFilesInUse dialog.

ISICE19

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Error)
The table [1] is not present in the installation package.

[1] is the name of a table that must be in the package. Message 2 (Error)
UpgradeCode [1] does not detect and prevent downgrades with a properly scheduled Type 19 Custom Action; the package must prevent downgrades.
InstallShield 2010 User Guide ISP-1600-UG00 993

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

[1] is the value of the UpgradeCode property. Message 3 (Error)


The property [1] is not listed in SecureCustomProperties; this can prevent it from being used correctly for downgrade prevention.

[1] is the name of a property. Message 4 (Error)


The property [1] must be a valid GUID; '[2]' is not a valid GUID.

[1] is the name of a property whose value should be a valid GUID. [2] is the invalid value that is currently used for that property. Message 5 (Error)
Column [1] of table Upgrade must hold a valid GUID; '[2]' is not a valid GUID.

[1] is the name of a column in the Upgrade table, and [2] is the value of an entry in the specified column. Message 6 (Error)
The property [1] must hold a valid numeric version in the format Major.Minor.Build; '[2]' is not a version in this format.

[1] is the name of a property whose value should be a version number in the Major.Minor.Build format. [2] is the invalid value that is currently used for that property. Message 7 (Error)
Column [1] of table Upgrade must hold a valid numeric version in the format Major.Minor.Build; '[2]' is not a version in this format.

[1] is the name of a column in the Upgrade table, and [2] is the value of an entry in the specified column. Message 8 (Error)
The property [1] must not be null or empty.

[1] is the name of a property that is null or empty. Message 9 (Error)


Column [1] of table Upgrade must not be null or empty.

[1] is the name of a column in the Upgrade table. Message 10 (Error)


The property [1] must be provided; '[2]' is the default value.

[1] is the name of a property in your project that has not been customized. [2] is the default value that InstallShield uses for that property. Message 11 (Error)
The property [1] must hold a valid numeric LANGID; '[2]' is not a numeric LANGID.

[1] is the name of a property whose value should be a valid language identifier. [2] is the invalid value that is currently used for that property.
994 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Description
ISICE19 validates properties related to upgrades and that the Upgrade table is present. ISICE19 also helps you determine whether the installation prevents an earlier package from installing over a new package.

Corrective Action
To resolve errors 1 and 2, ensure that the Upgrades view contains a major upgrade item, that the major upgrade item is properly configured to prevent the current version of your product from being installed over a future version, and that your project includes a properly configured and scheduled type 19 custom action. For detailed instructions, see Preventing the Current Installation from Overwriting a Future Major Version of the Same Product. For more information, see Preventing an Old Package from Installing Over a Newer Version in the Windows Installer Help Library. To resolve error 3, add the specified property to the value of the SecureCustomProperties property. You can use the Property Manager view to set a value for a property. To add multiple values, separate each with a semicolon. For more information, see SecureCustomProperties Property in the Windows Installer Help Library. To resolve errors 4 and 5, replace the existing value with a valid GUID. To change the value, open the General Information view. Then click the setting that is listed in the error message. Enter a valid GUID. Note that if you want to use a new, unique GUID, you can click the Generate a new GUID button in the setting. For more information, see GUIDs. To resolve errors 6 and 7, replace the specified value with a valid version number; you can click the error message in the Output window to move to the location in the Direct Editor that has the invalid value. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535. For more information, see Specifying the Product Version. To resolve error 8, enter a value for the specified property. You can use the Property Manager view to set a value for a property. To resolve error 9, enter a value for the specified column. You can use the Direct Editor view to set the value; you can click the error message in the Output window to move to the location in the Direct Editor that needs to be revised. To learn more about any of the Windows Installer tables, see Database Tables in the Windows Installer Help Library. To resolve error 10, replace the default value of the specified property with the appropriate value. You can use the Property Manager view to change the value. To resolve error 11, replace the existing value of the specified property with a valid language identifier.

ISICE20

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

InstallShield 2010 User Guide

ISP-1600-UG00

995

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Messages
Message 1 (Error)
Row [1] of Table [2]: installing, modifying, or deleting a registry key in root [3] requires elevated privileges, but this package does not request elevated privileges.

[1] is the name of the row that contains information about a registry change in your project. [2] is the name of the table that contains that registry-related data. [3] is the predefined root key for the registry data, as listed in the Root column for the specified row. Message 2 (Error)
Row [1] of Table [2]: installing, modifying, or deleting a file in directory [3] requires elevated privileges, but this package does not request elevated privileges.

[1] is the name of a row that contains information about a directory that end users cannot access without elevated privileges. [2] is the name of the table that contains that directory data. [3] is the name of the directory. Message 3 (Error)
Environment variable [1] is a system environment variable, but this package does not request elevated privileges.

[1] is the name of a system environment variable that is included in your project.

Description
If the Require Administrative Privileges setting in the General Information view is set to No for your project, ISICE20 verifies that your installation does not attempt to perform tasks that require administrative privileges, such as writing to system registry or folder locations.

Corrective Action
To resolve ISICE20 errors, do one of the following:

Select Yes for the Require Administrative Privileges setting in the General Information view. For more information, see Entering Summary Information Stream Data. Change your project so that it does not install, modify, or delete data in system locations. For example, if your project adds a registry key to HKEY_LOCAL_MACHINE, use the Registry view to move that registry key to HKEY_CURRENT_USER. If your project adds or modifies a system environment variable, use the Environment Variables view to change the Type setting of that environment variable from System to User.

InstallShield Best Practice Suite


Edition: The InstallShield Best Practice Suite is available in the Premier edition of InstallShield.

Project: This information applies to the following project types:

Basic MSI

996

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

InstallScript MSI MSI Database

Note that some of the ISBPs apply to only Basic MSI and MSI Database projects.

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. The following table lists the ISBPs that are available in InstallShield.
Table 20-19: ISBPs ISICE ISBP01 Project Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, MSI Database Basic MSI, MSI Database Basic MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Description Verifies that no feature is named ALL.

ISBP02

Verifies that no directory is named DATABASE.

ISBP03

Verifies that no ComboBox is shorter than 50 units.

ISBP04

Verifies that properties used on dialogs are secure or restricted public properties. Verifies that no ControlEvent condition is NULL.

ISBP05

ISBP06

Verifies that InstallUISequence custom actions are also sequenced in the InstallExecuteSequence.

ISBP07

Verifies that all features have associated components and all components are associated with features.

ISBP08

Verifies that ARPINSTALLLOCATION is set after CostFinalize in the InstallExecuteSequence.

ISBP09

Verifies that LIMITUI is not set without ARPNOMODIFY.

ISBP10

Verifies that AppSearch properties are secure or restricted public properties.

ISBP11

Verifies that no precompiled .NET assemblies are being distributed.

InstallShield 2010 User Guide

ISP-1600-UG00

997

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Table 20-19: ISBPs (cont.) ISICE ISBP12 Project Basic MSI, InstallScript MSI, MSI Database Basic MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Basic MSI, InstallScript MSI, MSI Database Description Verifies that no file is self-registered.

ISBP13

Verifies that properties set by dialog controls and used in the installation have a default value. Verifies that each file has the correct version information or an MsiFileHash entry.

ISBP14

ISBP15

Verifies that no RadioButtonGroup has Text defined.

ISBP16

Verifies that each component with a 64-bit destination is marked as a 64-bit component.

ISBP17

Verifies that no .hlp files or WinHelp run-time files are included in the installation.

ISBP18

Verifies that no obsolete APIs are imported.

ISBP19

Verifies that no deprecated APIs are imported.

ISBP20

Verifies that no registry entries contained in the Registry table attempt to remove root-level registry keys (such as HKLM\Software) or other keys that would cause adverse issues on target machines.

ISBP01

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
Feature ALL conflicts with the installation meta-feature ALL.

998

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Description
ISBP01 verifies that your installation does not have a feature called ALL in uppercase, lowercase, or mixed case letters. In the context of features, Windows Installer reserves the word ALL for use as a valid value for feature-state properties such as ADVERTISE, REINSTALL, and ADDLOCAL, which can contain the names of specific features, as well as the word ALL to indicate all features. Therefore, none of the individual features in a project should be called ALL.

Corrective Action
To resolve this error, change the name of the feature to something other than ALL. For more information, see Creating Features. You can also resolve this error by clicking the ISBP01 error message in the Output window. InstallShield displays the Feature table in Direct Editor view, and highlights the row that contains the feature named ALL. To rename the feature, select the current name and then type a new one.

ISBP02

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
Directory DATABASE conflicts with Windows Installer's undocumented directory DATABASE.

Description
ISBP02 verifies that your installation does not have a directory called DATABASE in uppercase, lowercase, or mixed case letters. Windows Installer reserves this directory name.

Corrective Action
To resolve this error, click the ISBP02 error message in the Output window. InstallShield displays the Directory table in Direct Editor view, and highlights the row that contains the directory named DATABASE. To rename the directory, select the current name and then type a new one.

ISBP03

Project: This information applies to the following project types:

Basic MSI MSI Database

InstallShield 2010 User Guide

ISP-1600-UG00

999

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Message (Warning)
ComboBox [1] on Dialog [2] has a height less than 50. This results in a ComboBox too short to view multiple items at once.

[1] is the name of a combo box control, and [2] is the name of the dialog that has that control.

Description
If a combo box control has a height of less than 50 installer units, end users may be able to see only one item in the box at a time. To improve the usability, consider changing the height to 50 or higher.

Corrective Action
To resolve this warning, click the ISBP03 warning message in the Output window. InstallShield displays the Control table in Direct Editor view, and highlights the row that contains the combo box control. Then change the value in the Height column for that control to 50 or higher.

ISBP04

Project: This information applies to the following project types:

Basic MSI MSI Database

Messages
Message 1 (Warning)
Dialog [1] Control [2] uses private property [3]. Its value will be unavailable to the execute sequence.

[1] is the name of a dialog in your project, [2] is the name of a control on that dialog, and [3] is the name of a private property that is being set or used by the control. Message 2 (Warning)
Dialog [1] Control [2] uses insecure custom property [3]. Its value may be unavailable to the execute sequence.

[1] is the name of a dialog in your project, [2] is the name of a control on that dialog, and [3] is the name of a property that is used by that control.

Description
You cannot set a private property in the user interface sequence of the installation and then pass the value of that private property to the execute sequence. Therefore, ISBP04 verifies that your installation does not have any dialog controls that use private properties. If a dialog control does use a private property, warning 1 occurs to alert you that you may need to take steps to allow a propertys value to be passed to the execute sequence. In addition, 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 propertys 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. Therefore, ISBP04 also verifies that if your installation has dialog
1000 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

controls that use custom public properties, the custom public properties are listed as values for the SecureCustomProperties property. If the custom public properties are not listed in the SecureCustomProperties property, warning 2 occurs to alert you that you may need to take steps to allow a propertys value to be passed to the execute sequence.

Corrective Action
If you do not need to use the property in the execute sequence, you can disregard the warning message. However, if you do need to use the property in this sequence, you need to resolve the warning. If you need to resolve warning 1, change the private property to a public property. To do so, find the dialog control in the Dialogs view; for the Property property of that control, use all uppercase letters, since public properties must be in all uppercase. Also update all other instances of that property name in your project so that it matches. If you need to resolve warning 2, open the Property Manager view. For the Value column of the SecureCustomProperties property, add the name of the property that is mentioned in the warning message. If this property contains more than one property, separate each one with a semicolon (;).

ISBP05

Project: This information applies to the following project types:

Basic MSI MSI Database

Message (Warning)
Dialog [1] Control [2] has a NULL condition. To ensure the control event always runs, use a condition of 1.

[1] is the name of a dialog in your project, and [2] is the name of a control on that dialog.

Description
ISBP05 verifies that each events condition for each dialog control is not null. This helps to ensure that Windows Installer triggers the controls events under the proper circumstances.

Corrective Action
If Windows Installer should trigger the event that has a null condition only if no other event for that control is triggered, you can disregard the warning message. If you do need to resolve this warning, locate the dialog in the Dialogs view. Click the Behavior item under the dialog. In the list of controls, click the one that is mentioned in the warning message. Ensure that in the lower-right pane, the Events tab is displayed. Then, in the grid in the upper-right pane, enter a condition for the event. To ensure that Windows Installer triggers the event, enter 1 as the condition.

InstallShield 2010 User Guide

ISP-1600-UG00

1001

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

ISBP06

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Warning)
Custom Action [1] is scheduled in the InstallUISequence but not the InstallExecuteSequence. It will not run during a silent or reduced UI installation.

[1] is the name of a custom action in your project.

Description
Actions that are scheduled for the Execute sequence during the Installation sequence do not run during silent, basic UI, or reduced UI installations.

Corrective Action
If Windows Installer should launch the custom action during silent, basic UI, and reduced UI installations, consider scheduling the custom action for the installation execute sequencein addition to or instead of the installation UI sequence. To reschedule the action, open the Custom Actions and Sequences view, and find the action mentioned in the warning message. Then drag it from the Installation sequences User Interface sequence to the Installation sequences Execute sequence. To schedule the action in both sequences, copy the action in the Installation sequences User Interface sequence to the Installation sequences Execute sequence. You can do this in the Custom Actions and Sequences view by pressing and holding CTRL while dragging the action from the former sequence to the latter sequence. If Windows Installer should not launch the custom action during silent, basic UI, and reduced UI installations, you can ignore this warning.

ISBP07

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Warning)
Feature [1] has no components.
1002 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

[1] is the name of a feature in your project. Message 2 (Warning)


Component [1] is not associated with any features.

[1] is the name of a component in your project.

Description
ISBP07 verifies that every component in your project belongs to at least one feature. If you do not associate a component with at least one feature, Windows Installer cannot install the component. ISBP07 also verifies that every feature in your project contains at least one component. Components contain the installation elements, such as files, shortcuts, and registry entries; if a feature does not contain a component, it does not contain anything to install.

Corrective Action
To resolve either of these warnings, use the Setup Design view to associate components with features. To learn more, see Associating Existing Components with Features.

ISBP08

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Warning)
There does not appear to be a Type 51 action setting ARPINSTALLLOCATION after CostFinalize in the InstallExecuteSequence.

Description
The ARPINSTALLLOCATION property specifies the fully qualified path to the primary destination folder of a product. Windows Installer writes this value to the Uninstall registry key. The ARPINSTALLLOCATION property is typically set by a set-a-property type of custom action (type 51). The SetARPINSTALLLOCATION custom action is a built-in InstallShield custom action that is added automatically to Basic MSI and InstallScript MSI projects. If you delete this custom action from your project, you may encounter the ISBP08 warning.

Corrective Action
To resolve this warning, add to your project a custom action with the following settings:

Property Name: ARPINSTALLLOCATION Property Value: [INSTALLDIR]

InstallShield 2010 User Guide

ISP-1600-UG00

1003

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Execution Scheduling: Always execute Install Exec Sequence: After CostFinalize

Note: As a best practice, any actions after CostFinalize should be sequenced after MigrateFeatureStates when feature migration is selected on a major upgrade item.

Install Exec Condition: Not Installed

Leave the default values for all of the other settings. For more information, see Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View).

ISBP09

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
The property LIMITUI has been set, but ARPNOMODIFY has not. This can lead to undesirable behavior with Add or Remove Programs.

Description
If you set the LIMITUI property in an installation, you should also set the ARPNOMODIFY property. The LIMITUI property sets the user interface level to basic. An installation run with a basic UI typically displays only progress messages to end users. It does not allow end users to select features or provide other feedback. The ARPNOMODIFY property prevents end users from modifying the product through Add or Remove Programs.

Corrective Action
To resolve this error, add the ARPNOMODIFY property to your project through the Property Manager view, and set its value to 1. For more information, see Creating Properties.

ISBP10

Project: This information applies to the following project types:

Basic MSI

1004

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

InstallScript MSI MSI Database

Message (Warning)
AppSearch [1] uses insecure custom property [2]. Its value may be unavailable to the execute sequence.

[1] is the name of a system search in your project, and [2] is the name of a property that is used by that system search.

Description
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 propertys value to the execute sequence, the property must be listed as values for the SecureCustomProperties property, or it must be a restricted public property. Therefore, ISBP10 verifies that if the AppSearch table in your project contains custom public properties, the custom public properties are listed as values for the SecureCustomProperties property. If the custom public properties are not listed in the SecureCustomProperties property, the warning occurs to alert you that you may need to take steps to allow a propertys value to be passed to the execute sequence.

Corrective Action
If you do not need to use the property in the execute sequence, you can disregard the warning message. However, if you do need to use the property in this sequence, you need to resolve the warning. To resolve this warning, open the Property Manager view. For the Value column of the SecureCustomProperties property, add the name of the property that is mentioned in the warning message. If this property contains more than one property, separate each one with a semicolon (;).

ISBP11

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Warning)
File [1] appears to be a precompiled native image of a .NET assembly. This may decrease the efficiency compared to precompiling on the target machine.

[1] is the name of a precompiled native image (.ni) of a .NET assembly.

Description
ISBP11 verifies that your project does not include a precompiled native image of a .NET assembly.

InstallShield 2010 User Guide

ISP-1600-UG00

1005

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Corrective Action
To resolve this warning, replace the native image file mentioned in the message with the appropriate .NET assembly file. If you want the assembly to be compiled to machine code during the installation, select Yes for the .NET Precompile Assembly setting of the files component. Precompilation, or just-in-time compilation, takes into account the fact that some code might never be called during execution. It converts the assembly as it is needed during execution and stores the resulting native code so it is accessible for subsequent calls. Precompiling on the target machine allows the process to take advantage of the exact architecture of the machine on which it will be running.

ISBP12

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Error)
Custom Action '[1]' appears to invoke self-registration via RegSvr32. Best practices encourage authoring COM and Registry table data into the installer package.

[1] is the name of a custom action in your project that may be registering a file through RegSvr32.exe at installation time. Message 2 (Error)
File '[1]' is self-registered. Best practices encourage authoring COM and Registry table data into the installer package.

[1] is the name of a file that is marked as self-registering.

Description
Although InstallShield lets you designate that a COM server is self-registering, the preferred method of registering a COM server is to extract the COM information from the file at build time or design time; with this method, InstallShield writes the COM class information to the Class, ProgID, and Registry tables of the .msi database. Self-registration has several limitations; for details, see Self-Registering COM Servers.

Corrective Action
To resolve error 1, remove the custom action that is referenced in the error message, and configure COM extraction for the file as appropriate. To resolve error 2, configure COM extraction for the file as appropriate. To learn more, see Extracting COM Information from a COM Server.

1006

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

ISBP13

Project: This information applies to the following project types:

Basic MSI MSI Database

Message (Error)
Property '[1]' has no default, is set by a dialog control, and is used in table [2]. This may not be populated in a silent or reduced UI installation.

[1] is the name of a property in your project, and [2] is the name of the table that uses that property.

Description
In most cases, each property in the Property table should have a default value. The default value is used if end users run the installation in silent, reduced UI, or basic UI mode.

Corrective Action
If you do not need to add a default value for the property, you can disregard the error message. To resolve this error, open the Property Manager view. Enter a value in the Value column for the property that is specified in the error message.

ISBP14

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Error)
File '[1]' has neither a file version nor an MsiFileHash record. This may require the source package when installing a patch.

[1] is the name of file in your project. Message 2 (Error)


File '[1]' is recorded as version '[2]' but is actually version '[3]'. This may require the source package when installing a patch.

[1] is the name of file in your project. [2] is the version number that is configured for the file, but [3] is the actual version number.

InstallShield 2010 User Guide

ISP-1600-UG00

1007

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Description
ISBP14 verifies that each file in the project has the correct version information or an MsiFileHash entry. Using the correct version information in versioned files and MsiFileHash entries for unversioned files helps Windows Installer to detect and eliminate unnecessary file copying. It also helps ensure that the source package is not required to apply a patch to an earlier version of a product.

Corrective Action
To resolve error 1, consider adding the file version number to the file. If the file is an unversioned file, configure the file so that a file hash is used. InstallShield enables you to override a files version information. Error 2 may occur if the files properties were overridden. To resolve this error, consider removing the version override. To configure the settings for a file, open the Files and Folders view. In the Destination computers files pane, locate the file, right-click it, and click Properties. The Properties dialog box opens, enabling you to configure version information and specifying whether file hashing should be used.

ISBP15

Project: This information applies to the following project types:

Basic MSI MSI Database

Message (Error)
Control [2] on the Dialog [1] is a borderless RadioButtonGroup with overlapping controls and data in the Text column. This may cause repaint issues on some systems.

Description
ISBP15 verifies that if you have a borderless radio button group control on a dialog and one or more other controls overlap the radio button group, the radio button group does not have anything specified for its Text attribute. If it does, it may cause repaint issues for some versions of Windows Installer.

Corrective Action
To resolve this error, click the ISBP15 error message in the Output window. InstallShield displays the Control table in Direct Editor view, and highlights the row that contains the radio button control that is mentioned in the error message. Delete the string in the Text column for that radio button control. As an alternative, you can change the radio button group control so that it uses a border. To do this, open the Dialogs view and find the dialog mentioned in the error message. Click the radio button control, and change its Has Border property to True.

ISBP16

Project: This information applies to the following project types:


1008 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Basic MSI InstallScript MSI MSI Database

Message (Error)
Component [1] installed to 64-bit location [2] is not marked with the 64-bit component attribute. This may allow files to be installed to an incorrect location.

[1] is the name of a component, and [2] is the destination folder for the components files.

Description
If a component is not configured to be 64 bit, Windows Installer may not install the components files to the appropriate 64-bit location.

Corrective Action
To specify that a component is 64 bit, select Yes for the components 64-Bit Component setting. For more information about the 64-Bit Component setting, as well as additional component settings, see Component Settings.

ISBP17

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Error)
File [1] in Component [2] is a WinHelp file and may not be distributed to Windows(R) Vista.

[1] is the name of an .hlp file in your project, and [2] is the name of the component that contains the .hlp file. Message 2 (Error)
File [1] in Component [2] is a WinHelp run-time file and may not be distributed to Windows(R) Vista.

[1] is the name of a Windows Help application file in your project, and [2] is the name of the component that contains that file.

Description
ISBP17 verifies that .hlp files are not included in your project because Windows Vista does not support this type of file.

InstallShield 2010 User Guide

ISP-1600-UG00

1009

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

In addition, ISBP17 verifies that WinHlp32.exe and WinHelp.exe are not included in the project because these applications should not be redistributed.

Corrective Action
To resolve this validation error, remove the help file from your project. Consider converting your help system to a different file format such as .chm, .htm, or .xml. Note that you would need to change your calls from the WinHelp API to the new help system.

ISBP18

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
File [1] in Component [2] imports obsolete API [3].

[1] is the name of a file in your project, and [2] is the name of the component that contains the file. [3] is the name of the obsolete API that the file uses.

Description
ISBP18 verifies that none of the .dll or .exe files in your project use obsolete kernel APIs.

Corrective Action
To resolve this validation error, replace the file with an updated version that does not use the obsolete API. Note that to create the updated version, you may need to rewrite and rebuild the .exe or .dll file. If the .exe or .dll file is from a third-party vendor, contact the vendor to request an updated version.

ISBP19

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Message (Error)
File [1] in Component [2] imports deprecated API [3].

[1] is the name of a file in your project, and [2] is the name of the component that contains the file. [3] is the name of the deprecated API that the file uses.

1010

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Validating Projects

Description
ISBP19 verifies that none of the .dll or .exe files in your project use deprecated kernel APIs.

Corrective Action
To resolve this validation error, replace the file with an updated version that does not use the deprecated API. Note that to create the updated version, you may need to rewrite and rebuild the .exe or .dll file. If the .exe or .dll file is from a third-party vendor, contact the vendor to request an updated version.

ISBP20

Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database

Messages
Message 1 (Error)
Registry entry [1] contains an asterisk in the Name column. This will cause Windows Installer to attempt to remove a root registry key [2].

[1] is the name in the Registry tables Registry column for the registry entry row that has the asterisk (*). [2] is the name of the registry key that would be removed during uninstallation. Message 2 (Warning)
Registry entry [1] installs to a key that is not recommended for installation with software applications. Installing this entry could have an adverse effect on target machines ([2]).

[1] is the name in the Registry tables Registry column for the registry entry row that may cause issues on the target system. [2] is the name of the registry key.

Description
ISBP20 verifies that your project does not include any registry entries that would remove root-level registry keys such as HKEY_LOCAL_MACHINE\SOFTWARE if your product is removed from a target machine. The following table shows an example of some registry data that would cause issues during uninstallation; in this example, the entire HKEY_LOCAL_MACHINE\SOFTWARE, and all of its subkeys and values, would be removed.
Table 20-20: Example of Registry Data that Triggers an ISBP20 Error Registry Registry2 Root 2 Key SOFTWARE Name * Value Component MyComponent

ISBP20 also verifies that your project does not include other registry entries that would cause adverse issues on target machines.

InstallShield 2010 User Guide

ISP-1600-UG00

1011

Chapter 20: Building, Testing, and Deploying Installations Understanding When an Installation or Uninstallation Restarts the Target System

Corrective Action
To resolve the validation error or warning, click the ISBP20 message in the Output window. InstallShield displays the Registry table in Direct Editor view, and highlights the row that contains the potentially problematic registry entry. To delete the registry entry, right-click the row and then click Drop Row(s).

Understanding When an Installation or Uninstallation Restarts the Target System


Project: This information applies to the following project types:

InstallScript InstallScript MSIif the InstallScript user interface (UI) style is the traditional style (which uses the InstallScript engine as an external UI handler)

This information does not apply to InstallScript MSI projects in which the InstallScript UI style is the new style (which uses the InstallScript engine as an embedded UI handler). To learn more, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations.

The BATCH_INSTALL system variable is set to a non-zero value to indicate that one or more operations need to be performed after the target system restarts. For example, BATCH_INSTALL can be set to a non-zero value if the installation determines that a file cannot be installed because the file already exists on the target system and it is locked. When a file in an installation cannot be installed because it is locked, the installation automatically notifies the operating system that the file needs to be updated the next time that the system restarts. Because the file may need to be updated before additional Windows files are loaded, it is updated when Windows is loaded; it is not updated by the InstallScript installation. BATCH_INSTALL can be set during an uninstallation in order to remove locked files after the system restarts. However, after the reboot, the cached installation files are no longer present. Therefore, the only reboot-related operations that can occur are those that the operating system can perform. If BATCH_INSTALL is set to a non-zero value when the file transfer finishes, the following occurs:

The installation does not attempt to self-register any files. This is because it may be necessary for all of the installations files to be completely installed and updated before the files can be self-registered successfully. Note that this is true regardless of whether the files that could not be installed are selfregistering, since the installation assumes that these files could be dependencies of other selfregistering files. In this case, the installation records the files that need to be self-registered so that after the restart, the installation can self-register those files. The framework automatically calls SdFinishReboot (in the OnFirstUIAfter or OnMaintUIAfter events) to give the end user the option of automatically restarting the system after the installation completes. When the installation finishes, it creates an appropriate RunOnce registry value so that the installation runs after the restart; after the restart, the installation is run with the /reboot parameter.

1012

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Debugging Windows InstallerBased Installations

Note that this does not apply to an uninstallation, since after the reboot, the cached installation files are no longer present. When the installation runs after the restart (that is, when it runs with the /reboot parameter), the following occurs:

Any self-registering files that were noted by the installation as needing to be registered are registered. The OnRebooted event handler is called.

Note that for an uninstallation, the installation does not run after the restart; therefore none of these operations can occur.

Debugging Windows InstallerBased Installations


You can debug a Windows Installerbased release using the MSI Debugger. The MSI Debugger enables you to view and set Windows Installer properties as you step through the packages User Interface and Execute sequences. The MSI Debugger runs through each action and dialog until it reaches your breakpoint, at which point it halts execution. Now, you can view and set properties in the Watch window and the Variable window. Finally, you can step through each of the remaining actions, or you can stop the debugger.

Note: Do not confuse the MSI Debugger with the InstallScript Debugger, since they have completely separate purposes. You cannot debug an installation package with the InstallScript Debugger, and you cannot debug an InstallScript custom action with the MSI Debugger.

Starting the MSI Debugger


Before starting the MSI Debugger, you must have built a release and opened the MSI Debugger view in InstallShield. In addition, you should always set a breakpoint so that you can view the state of the installation at a particular action or dialog. When you open the MSI Debugger and begin debugging, it acts on the release that currently has focus in the Releases view. If you have not yet built the release or if the release is compressed into Setup.exe, the debugger is blank and its toolbar and menu items are disabled. Switch to a built release or rebuild with the required options to debug the package.

Task

To start debugging, do one of the following:

Click the MSI Debugging button on the MSI Debugger toolbar. Click the Step Over button on the MSI Debugger toolbar. On the Build menu, point to MSI Debugger and click Start MSI Debugging. On the Build menu, point to MSI Debugger and click Step Over.

InstallShield 2010 User Guide

ISP-1600-UG00

1013

Chapter 20: Building, Testing, and Deploying Installations Debugging Windows InstallerBased Installations

Press F5. Press F11.

The debugger runs the installation, returns focus to itself, and stops the execution of the installation when it reaches the breakpoint. Back in the debugger, you can do any of the following:

View and set Windows Installer properties. Step through the rest of the installation. Exit the debugger and/or the installation.

Setting Breakpoints in the MSI Debugger


Task To set a breakpoint in the MSI Debugger: 1. 2. 3. 4.

In the Releases view, select the release you want to debug. Open the MSI Debugger view. The debugger displays two lists: first every standard and custom action in the User Interface sequence, and then every dialog in the installation. Place the cursor on the line that contains the action or dialog on which you want the debugger to break. Do one of the following to set the breakpoint on that line:

Click the Toggle Breakpoint button on the MSI Debugger toolbar. On the Build menu, point to MSI Debugger and click Toggle Breakpoint. Press F9.

You can set the breakpoint before you start debugging or while a debugging session is open. When the debugger reaches the breakpoint, you can view and set properties or continue debugging.

Tip: Notice that the debugger lists the condition, if any, after each action. Set breakpoints carefully on conditional actions, because if the condition does not evaluate to true, the action is not executed and the debugger will not step in at that point.

Removing Breakpoints
Task To remove a breakpoint: 1. 2.

In the View List under Additional Tools, click MSI Debugger. Place the cursor in a line with a breakpoint and click the Toggle Breakpoint button or press F9 to remove it.
ISP-1600-UG00 InstallShield 2010 User Guide

1014

Chapter 20: Building, Testing, and Deploying Installations Debugging Windows InstallerBased Installations

Task

To clear all breakpoints set in the debugger, do one of the following:

Click the Remove All Breakpoints button. Press SHIFT+F9.

Viewing and Setting Properties in the MSI Debugger


When the debugger stops at a breakpoint or at an action or dialog because you are stepping through the installation, you can view Windows Installer properties and change their values at run time in the Watch window or the Variable window.

The Variable Window


The Variable window displays every property in the databases Property tableexposed in InstallShield through Property Manager Viewand its current value. To change a propertys value as the installation is running, edit the Property Value column. If you do not see the Variable window, click Variable on the View menu.

The Watch Window


You can enter the name of any property in the Watch window to check its value at any point in the installation. For example, enter TARGETDIR in the name column to see what TARGETDIR resolves to at run time. To change the propertys value as the installation is running, edit the Property Value column. If you do not see the Watch window, click Watch on the View menu.

Step Into Actions in the MSI Debugger


You can debug your code when you step into the custom action in the MSI Debugger. You can launch your registered debugger when you step into one of the following types of custom actions:

Windows Installer .dll file custom action Standard .dll file custom action Visual Basic Script or JavaScript custom action InstallScript custom action

Task

To step into the current action in the MSI Debugger, do any of the following:

Click the Step Into button on the MSI Debugger toolbar. On the Build menu, point to MSI Debugger and click Step Into. Press F11.

InstallShield 2010 User Guide

ISP-1600-UG00

1015

Chapter 20: Building, Testing, and Deploying Installations Debugging Windows InstallerBased Installations

A dialog box opens and asks if you want to launch your registered debugger. Select Yes to launch the deubugger. Select No to step over to the next custom action.

Note: Because InstallShield does not provide the source code for the entry point, you will see some machine code once the registered debugger is launched. You need to click the Step Into button twice to see your code.

Step Through Actions in the MSI Debugger


Task To step over the current action or dialog and continue the execution in the MSI Debugger, do any of the following:

Click the Step Over button on the MSI Debugger toolbar. On the Build menu, point to MSI Debugger and click Step Over. Press F10.

Once the debugger reaches a breakpoint on a standard or custom action, it halts the execution of the installation and receives focus. You can then watch and set installer properties. To continue stepping through each successive action, keep pressing F10. You may need to click Next on each dialog in the Setup wizard to progress through the sequence. To view the return value of an action, place the cursor over the action after it has executed. The return value is displayed as a tooltip. If the action executed successfully, the tool tip reads ERROR_SUCCESS. Although setting a breakpoint on an action causes the debugger to break at each subsequent action, setting a breakpoint on a dialog takes you just to that dialog and then the debugger does not step in again until the next breakpoint.

Stopping the MSI Debugger


Task To discontinue debugging a release, do one of the following:

Click the Stop Debugger button on the MSI Debugger toolbar. On the Build menu, point to MSI Debugger and click Stop MSI Debugging. Press SHIFT+F5.

If the debugger is stopped at a break point on a dialog when you try to end the debugging session, InstallShield displays a message box with this message: Please close all the dialogs to stop the debugging session. To close any open dialogs, first press F11 to step over the current breakpoint. Then, close any open dialogs. Canceling out of the installation also stops the debugger.

1016

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Spanning Installations over Multiple Disks or CDs

Spanning Installations over Multiple Disks or CDs


As programs become larger, the need for disk spanning increases. Years ago, this meant shipping your product on multiple floppy disks. The standard is now to use CD-ROMs or DVDs. Although the storage space on a CD or on a DVD is significantly more than what is available on a floppy disk, many products require even more space. Multimedia tutorials, vast help libraries, and graphic-rich programs can result in a product that is larger than 650 MBthe size of a standard CD. If your installation requires more than one CD, DVD, or custom-sized media disk, you need to span it across multiple disks.

Using the Release Wizard


The only way to define how your installation spans across multiple disks is to use the Release Wizard. The wizards panels walk you through the process of creating your release for any size media that you choose, and it lets you specify how your files will span across multiple disks. You can also specify the compression to apply to these files. The wizard offers you the choice of having InstallShield automatically span your installation across disks, if necessary, or you can customize how you want your installation files to be split. If you plan on customizing the way your installation spans across multiple disks, refer to Disk Spanning Rules to reduce problems with your installation.

Limitations
Due to limitations of the Windows Installer service, you cannot run multi-disk installations on a nonremovable drive. For example, if your installation spans two CDs, you need to physically burn the CDs in order to test your installation. If you try to run it from a fixed drive, the installation will fail.

Compressing Multi-Disk Installations


Because neither Setup.exe nor your .msi file can be spanned across multiple disks, your source files need to be kept separate from these files. If you create a network installation, which has unlimited size, and specify that all the files should be compressed, these files are placed inside the .msi file or inside Setup.exe if you elected to create one. All other media types put Setup.exe, your .msi file, and the .cab files that contain all of your source files separately on the media. For example, you might have an installation that contains three featureseach containing a 1.5 MB file, Setup.exe, and the installation files for Windows NTand you want to create a custom media type that is 2 MB in size. The build will span multiple disks. Disk one will contain Setup.exe, InstMsiW.exe (which contains the logic to install the Windows Installer service on Windows NT machines), Setup.ini (which is required for installations that include Setup.exe), and your .msi file. The remaining disks will contain .cab files that store compressed copies of all your source files.

Disk Spanning Rules


You can elect to have the Release Wizard automatically span your installation across as many disks as required. The wizard adheres to the following rules, which all multi-disk installations must follow. If you plan to customize how your installation spans across multiple disks, follow these rules:

InstallShield 2010 User Guide

ISP-1600-UG00

1017

Chapter 20: Building, Testing, and Deploying Installations Spanning Installations over Multiple Disks or CDs

Setup.exe must be on disk one. This rule is applicable if you want to ship your installation on floppy disks and you need to ship Setup.exe. The size of Setup.exedepending on whether you choose one for Windows 9x, Windows NT, or bothcan be 1.31 MB to 2.58 MB in size. The installation file for the Windows Installer service is included in the build as well. This filecalled InstMsiW.exe or InstMsiA.exe, depending on the platform you choosemust also reside on disk one. The second file that must be included on disk one is the .msi file that you are building. The total

combined size of the .msi file, Setup.exe, and the Windows Installer installation files exceeds the maximum capacity of a standard 1.4 MB floppy disk. You have two options if you plan to distribute your setup on floppy disks:

You can distribute your installation without Setup.exe. This option is not available if you are creating an InstallScript MSI project. In addition, this option is not viable if you are targeting any platform other than Windows 2000 or later. The second and most feasible option is to use a distribution medium other than floppy disks.

Any transforms included in your installation must reside on the first disk. For example, if you create an

installation with multiple run-time languages, an .mst file is created for each of those languages. This file is applied to the installation database, and it provides the language selected in the Language Selection dialog.

Redistributables (including merge modules) included in your installation must be stored on the first disk.

Redistributables are streamed into the installation database while the script is built. This process cannot be completed if the redistributables are located on another disk.

Custom Disk Spanning


In the Release Wizard, you will come across a panel that asks you how you would like to handle disk spanning. You can choose to let the wizard automatically span your installation across disks if necessary, or you can manually define the disk spanning. Although you cannot indicate where every file is placed, you can define the disk on which each feature resides. Components and files are automatically placed on the same disk as their feature. There are other guidelines that InstallShield automatically follows, whether you choose to define the layout or let the wizard do it for you. In addition to defining the features that reside on each disk, you can customize the volume label for each disk, create your own disk prompts, and choose to have the wizard enforce the size of your disks. The step-by-step instructions for customizing your disk layout are outlined in the Release Wizard documentation.

Disk Prompts
Disk prompts are displayed to end users when they need to place another disk in the drive to continue with the installation. Although a standard disk prompt is provided, you can provide a prompt that is specific to your product. The string that is displayed actually comes from a number of sources throughout your project, as described below:
1. 2.

The complete prompt originates in the Error table (exposed in the Direct Editor) as error 1302. This value comes from the projects list of string entries, and the default value for English is Please insert the disk: [2].

1018

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Spanning Installations over Multiple Disks or CDs

3. 4.

Windows Installer resolves [2] with the value of the property DiskPrompt, which is set to [1] in the Property Manager. Finally, Windows Installer evaluates [1] to the string you enter into the Disk Prompt field.

In most cases, you will want to enter the same name as the disk volume. For example, assuming the defaults are unchanged, a Disk Prompt entry of Disk8 would cause the user to be prompted with Please enter the disk: Disk8. You can use a question mark where the disk number will be displayed. This question mark automatically evaluates to the correct disk number. If you want to prompt your users with, Please insert the disk: DISK4, you would enter DISK? for the fourth disks name. You need to specify the disk prompt for each disk in your installation.

Volume Labels
The volume label is the name of the disk on which your installation resides. When the installation calls for a new disk, the Windows Installer engine verifies that the volume label of the disk matches the volume label that is stored in the installation database. If the labels do not match, the service assumes that the wrong disk has been inserted in the drive. You can change the volume label when you customize your disk spanning options. The default volume label is DISK1, DISK2, DISK3, and so on. When you build your installation, you will see these directories created in your output location. The disks on which you put your setup need to have the volume labels set to the same names as given by the wizard.

Caution: You cannot change a volume label after the installation has been built. If you do not specify the correct volume label, the Windows Installer service will not recognize the disk and the installation will fail.

You can use a question mark to define the number of the disk. For example, if you want to set the volume label for your disks to InstallShield Disk 1, InstallShield Disk 2, and so on, you would rename every disk so that they read InstallShield Disk ?. At build time, this question mark evaluates to the disk number.

Enforce Disk Size


The Enforce Disk Size option helps you to ensure that your current layout fits on the disks that you have specified. If this option is not selected, and any disk that you want to create goes over the size of the media that you selected, the wizard automatically creates another disk and splits your features accordingly. If you select this option and the disk size exceeds the media size, the build will fail and you will receive build error 1531. You can then go back and trim down your feature size or try a different layout strategy.

Additional Information
If you add features to your installation after you have defined how you want your installation to span across multiple disks, those features are automatically added to the last disk of your installation. You can add new disks to your installation at any time by using the Release Wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1019

Chapter 20: Building, Testing, and Deploying Installations Creating a Setup Launcher

Creating a Setup Launcher


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Note that InstallScript installations always include a Setup.exe file.

InstallShield lets you specify whether you want your installation to include a Setup.exe setup launcher. A Setup.exe setup launcher is required in the following cases:

You want to automatically update or install the Windows Installer engine on a target system, when necessary. You are building a multilanguage installation project and you want the language selection dialog to be displayed. Your project includes InstallShield prerequisites. Your project includes the .NET Framework. You are building a release for an InstallScript MSI project and it uses the traditional style for the user interface. You are building a release whose product configuration includes support for installing multiple instances of a product and you want the instance selection dialog to be displayed when appropriate. You are building a release for a Basic MSI project that includes billboards.

The Setup.exe setup launcher is a bootstrap application that manages the aforementioned scenarios. The Setup.exe tab for a release in the Releases view is where you specify information such as whether you want to use a Setup.exe launcher. To learn more, see Setup.exe Tab for a Release.

Tip: You can also specify setup launcher requirements in the Setup Launcher panel of the Release Wizard.

Windows Installer and Setup.exe


If it is possible that Windows Installer is not present on a target system, or if your installation depends on certain functionality that is available in only a certain version of Windows Installer, InstallShield gives you the option of including with your installation a redistributable that installs Windows Installer. If you select this option, InstallShield creates a Setup.exe launcher that checks for the presence of Windows Installer on the target system. If Windows Installer is not installed, or a more recent version needs to be installed, Setup.exe launches the Windows Installer installation and then launches your installation package. For more information, see Adding Windows Installer Redistributables to Projects.

Multilanguage Support and Setup.exe


Depending on your selections in the language-related settings on the Build tab for a release in the Releases view, Setup.exe also gives end users a choice of the language in which to run the installation.
1020 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

If you plan to distribute your installation in more than one language, Setup.exe is required whenever you want to provide end users the option of selecting which language version of the installation they would like to run. To learn more about multilanguage support, see Creating Multilingual Installations.

InstallShield Prerequisites and Setup.exe


Projects that include InstallShield prerequisites require Setup.exe because Setup.exe checks to see if the target system meets the InstallShield prerequisite conditions. If the conditions are met, Setup.exe installs the InstallShield prerequisites. For more details, see Working with InstallShield Prerequisites that Are Included in Installation Projects.

.NET Framework and Setup.exe


Projects that include the .NET Framework require Setup.exe because Setup.exe checks the target system for the presence of the .NET Framework; if the appropriate version of the .NET Framework is not present, Setup.exe installs it. To learn more about including the .NET Framework, see Adding .NET Framework Redistributables to Projects.

InstallScript MSI Projects and Setup.exe


The traditional-style InstallScript MSI installations require Setup.exe because Setup.exe initiates the InstallScript engine to display the user interface. For this traditional style, the InstallScript engine serves as an external UI handler. Note that if you use the new style of UI for an InstallScript MSI installation, InstallShield embeds the InstallScript engine within the .msi package, and a setup launcher is not required. For detailed information about these two styles, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations.

Multiple-Instance Support and Setup.exe


If you are configuring your product to allow end users to install your product multiple times in each context on a target system, the Setup.exe setup launcher must be used if you want the instance selection dialog to be displayed when appropriate. The Setup.exe file displays the instance selection dialog. To learn more about multiple-instance support, see Installing Multiple Instances of Products.

Billboards and Setup.exe


Basic MSI projects that include billboards require Setup.exe because Setup.exe displays the billboards at run time. For more information about billboards, see Displaying Billboards in Basic MSI Projects.

Distributing Installations
Once you have created your installation, you may need to distribute it to a specified location. This location can be a network drive, a CD, a different location on a local drive, or an FTP site. When you distribute your installation, the disk image created when you built your installation is copied to the location that you specify.

InstallShield 2010 User Guide

ISP-1600-UG00

1021

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

Distributing Releases to a Folder or FTP Site Automatically


When your release is built and tested, the only remaining task is to distribute it to the appropriate location. You can manually copy your release to the appropriate location, or you can use the Postbuild tab in the Releases view to configure the release so that InstallShield automatically copies the release to the appropriate locationa local or network location, or an FTP site.

Task

To configure InstallShield to automatically distribute your release to a particular location: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, select the release that you want to configure. Click the Postbuild tab. Configure the settings as appropriate. To learn more about the settings on the Postbuild tab, see Postbuild Tab for a Release.

Note: If your installation consists of only one disk, the contents of the Disk1 folder are copied to the release location, but not the folder itself. If your installation spans across multiple disks, the folders and their contents are copied to the release location.

Project: For InstallScript and InstallScript Object projects, InstallShield automatically copies the release to the location that you specify on the Postbuild tab every time that you build the release. For any of the following project types, InstallShield copies all of the relevant files for your release to the specified location whenever you right-click the release in the Releases view and then click Distribute:

Basic MSI InstallScript MSI Merge Module

If you specify a folder and an FTP site on the Postbuild tab, InstallShield copies the files to only the FTP location.

If you want the build engine to copy your release to the specified location after every build in a Basic MSI, InstallScript MSI, or Merge Module project, select Yes for the Distribute after build setting.

Preparing Installations for Internet Distribution


The way in which consumers receive software is rapidly changing. Before the advances in Internet technology and the introduction of high-speed connections, all software was shipped on some type of removable medium, such as floppy disks or CD-ROMs. Today, many people download their software directly from the Internet. In order to take advantage of this time- and money-saving software distribution process, you must package your installation in an easily downloadable and installable manner. There are several criteria that your Web-ready installation may need to meet:

1022

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

Compressed Size
Although many people now connect to the Internet through high-speed cable modems or DSL lines, others still use lower-speed modems. Package size is very important to people with slower connections due to the increased amount of online time required to download an application.

Self-Extracting
Many file compression utilities require a special client-side application to decompress the application files. This need for another utility complicates the download and installation process for end users. To simplify the installation process, the compression utility that you use should be self-extracting so that no other application is required.

Digitally Signed
To make your customers feel more secure about downloading and installing your software, you can digitally sign your application package. The digital signature identifies you or your company to end users and assures them that the application code has not been altered or tampered with since publication. To learn how to digitally sign your application, see Digital Signing and Security. To learn more about digital signatures, visit www.verisign.com.

Easy to Use
Perhaps the most important aspect of packaging your installation for Internet distribution is making it easy to use. Your end users may not want to specify a location where the installation files should be saved and then search their computer to locate those files. Instead, the installation should be seamlessly integrated into the compression package, requiring only one step to begin the installation.

Proxy Server Support


You may want to configure your installation to download certain files only if they are needed on the target system. For example, the Windows Installer engine, the .NET Framework, and some InstallShield prerequisites may already be present on some or most target systems. Instead of embedding these files in your installation (which would increase your overall installation size), you can configure your project so that only the ones that are needed are downloaded at run time. If your end users access the Internet through a proxy server and your installation is configured to download files, the installation uses the system proxy settings that are manually configured in Internet Explorer during the download. This occurs even if another browser on the target system is the default browser. Note that InstallShield does not include support for the Automatically Detect Settings functionality in Internet Explorer. (If end users have the Automatically Detect Settings check box selected in Internet Explorer for their LAN connection and the installation needs to download files, the installation fails because the files cannot be downloaded. If it is possible that your end users may have the Automatically Detect Settings check box selected in Internet Explorer for their LAN connections, you may want to embed all of the files in your installation rather than configure them to be downloaded; if the files are embedded, the failures can be avoided.) However, InstallShield does support the Automatic Configuration Script functionality that is set up for LAN connections in Internet Explorer.

InstallShield 2010 User Guide

ISP-1600-UG00

1023

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

Distributing Releases on Floppy Disks


Although it is not directly supported, you can distribute your release on floppy disks by using the Custom media type. The challenges that arise when you try to build your release on floppy disks are described below:
Table 20-21: Challenges Associated with Installations Distributed on Floppy Disks Challenge Disk Space Explanation Although Microsoft ships Windows 2000 and later with the Windows Installer service, all other operating systems to date do not ship with this service. Therefore, the Windows Installer service must be installed before your installation can run. Unfortunately, there are two versions of this installationone for Windows NT 4.0 and one for Windows 9x. Each of these installations requires more than 1.4 MB of disk space. Because of these file size requirements, it is difficult to distribute your installation program on a floppy disk if you need to distribute the Windows Installer service installations as well. The .msi file created by InstallShield that interacts with the Windows Installer service cannot be spanned across multiple disks and it must reside on the first disk of your installation. Therefore, if you want to include all of your files in one compressed .msi file, it might not fit on one floppy disk. However, if your files can remain uncompressed, they can be included on successive disks of the installation.

Disk Spanning

Building Floppy Disk Releases


Despite the complications involved with distributing your installation by floppy disk, it can be done. To achieve this end, you must use the Release Wizard.

Note: If you build a multiple-disk installation, you need to set the volume label on the second and subsequent disks.

Redistributable Files that Are Distributed with an InstallScript Installation


Project: This information applies to InstallScript projects.

The following files are automatically created by InstallShield and can be redistributed with your software distribution, as discussed in your End-User License Agreement.The media build automatically includes them as needed in your disk image folders.

Main Media Files


data<2, 3, 4, >.cab data1.cab data1.hdr

1024

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

ISSetup.dll layout.bin setup.exe setup.ini setup.inx

Option Files
setup.isnSkin File setup.htmOne Click Install .htm page setup.zipOne Click Install Netscape plug-in file setupapplet.jarOne Click Install Netscape plug-in file

InstallShield 2010 User Guide

ISP-1600-UG00

1025

Chapter 20: Building, Testing, and Deploying Installations Distributing Installations

1026

ISP-1600-UG00

InstallShield 2010 User Guide

21
Creating Trialware

Edition: Trialware functionality is available with the Premier edition of InstallShield.

Offering prospective customers a free trial version of your product can be a highly effective sales tool, but it carries the risk that some will abuse the privilege and continue to use the product without paying for it. InstallShield enables you to create a protected trialware version of your product without requiring you to modify the source code. With the Trialware view, you can configure trialware settings for one or more of your products executable files to protect your product from piracy. Using InstallShield to protect your product lets you do the following:

Invest minimal time and expense to turn your product into trialware. Set firm expiration dates using sophisticated, flexible technology that blocks unauthorized extensions of trials. Specify hyperlinks that should be displayed in the trialware run-time dialogs, which are launched whenever end users launch a protected application. The hyperlinks direct users to Web pages that inform them, for example, how to purchase your product.

Types of Trialware
Edition: Trialware functionality is available with the Premier edition of InstallShield.

InstallShield offers one type of trialware to help you control unauthorized use of your product: Try and Die. InstallShield also enables you to build an unprotected release (that is, the products installation is built without applying trialware protection).

InstallShield 2010 User Guide

ISP-1600-UG00

1027

Chapter 21: Creating Trialware How InstallShield Protects Trialware

Try and Die


Try and Die trialware lets you offer prospective customers a fully functional trial version of your product. After the predetermined trial limit has been reached on an end users machine, the trial version expires, and it no longer runs on that machine. Try and Die trialware is often used for distribution at trade shows. It is also sometimes used to protect beta versions of a product. If prospective customers want to buy the product and continue using it after the trial limit has been reached, they need to uninstall the Try and Die version and then install an unprotected version.

Unprotected Product
You can configure the trialware settings in your installation project and then later easily build a release of your product that does not have the trialware protection. You can use this non-trialware release if you want to test the installation of your product but you do not want to test the trialware run time. You can also distribute this release to customers who have finished evaluating your product and have decided to purchase it. For more information, see Excluding Trialware Protection from a Release.

How InstallShield Protects Trialware


Edition: Trialware functionality is available with the Premier edition of InstallShield.

The following sections explain the structure of applications and how they are protected when trialware protection is applied.

Unprotected Product
If an application is not protected with the trialware functionality available in InstallShield, the end user launches the main application file when starting the product. This main application may call subordinate applications and use data contained in data files. The structure of a typical unprotected application is illustrated in the following diagram:

Figure 21-1: Unprotected product

1028

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Trialware Technology

Application Protected with Try and Die


If the installation for an application is built with the Try and Die functionality, the main application file (.exe, .dll, .ocx, or .scr) is protected by a Try and Die shell. This protection includes changes to the application code that prevent the application from being run directly. The application must be run by the shell in order to execute successfully. Subordinate applications can be either protected in the same way as the main application file or left unprotected. Shells can be used in this way to protect main application files and subordinate application files. The shell will run the product file (or product files, if more than one is protected) only if the trial limit has not been reached. The Try and Die trialware protection is implemented as illustrated in the following diagram:

Figure 21-2: Product protected with a Try and Die shell

The addition of the Try and Die shell to the main application file does not change the files version number or the files last-modified date. However, it does increase the size of that file.

Trialware Technology
Edition: Trialware functionality is available with the Premier edition of InstallShield.

With the Trialware view, you can configure a license for trialware. InstallShield uses the license to wrap a trialware shell around your products executable file (.exe, .dll, .ocx, or .scr file). The file can be unwrapped and used only according to the license settings that you configure, such as the trial limit (a specified number of days or a specified number of uses). The trialware technology available in InstallShield should not be confused with freeware or shareware. Often freeware and shareware have limited functionality. For example, end users sometimes cannot print anything from shareware or freeware, or a watermark might be added to every page. Such limitations are established to encourage prospective customers to purchase a fully functional version of a product; however, building such limitations into your product can be costly and waste valuable development time. With trialware, the only limitation is the time limit or the limited number of uses. You enable a prospective customer to use the latest version of your productwith all of its features fully availableon a trial basis. No dongle is used to limit or lock software access. After a predetermined trial limit has been reached, the trialware expires.
InstallShield 2010 User Guide ISP-1600-UG00 1029

Chapter 21: Creating Trialware Trialware Technology

Licenses
Trialware technology actually involves two types of licenses: a license that wraps the protected executable file and a license that identifies a protected trialware product on the end users machine. Both types of license are associated with each other by a license number, and the term license is used to refer to both types of licenses. When you create trialware with InstallShield, you acquire a unique license for your product. The license is downloaded from the license server to your machine, and it is stored in your InstallShield project file. InstallShield uses the license to wrap a trialware shell around your products application file. The application file can be unwrapped and used only according to the license settings that you configure. When an end user runs your trialware for the first time on their machine, the trialware stores a license in both a license file and an anchor. Both must be present on a system to allow licensing to work. The anchor is stored in an operating systemspecific location to hinder end users from trying to reset the license state by simply deleting the license file. This approach allows license data to remain safe even if the trialware product or the operating system requires reinstallation. If an end user reformats a hard drive that has trialware, it will not affect license data stored on that machine. However, repartitioning the hard drive will. End users can use ghosting utilities to back up a disk or partition to an image and restore the trialware later.

InstallShield Licensing Service


The InstallShield Licensing Service is required for all trialware products. During the installation of a trialware product, the installation checks to see if the service is already on the machine:

If the InstallShield Licensing Service is not already on the machine, the installation automatically installs it as an NT service (on Windows NT, Windows 2000, and Windows XP). The reference count for the service is set to one. If it is already on the machine, the reference count is increased by one.

During the uninstallation of a trialware product, the uninstallation decreases the reference count by one: If the updated reference count is zero, the service is automatically uninstalled because no other products on the machine need the service. If the updated reference count is not zero, the service is not uninstalled.

The reference count helps prevent the service from being removed if remaining trialware products need the service.

Files Installed with a Trialware Product


When you build a trialware version of a product, InstallShield automatically adds a file called IsSvcInst<FileName>.dll to your installation, where <FileName> is the name of your wrapped file without the dot or file extension. This IsSvcInst<FileName>.dll file is installed with the executable file that you are protecting, and the trialware technology uses it if an end user manually removes the InstallShield Licensing Service.

End-User Privacy
Try and Die trialware is completely anonymous. It does not allow or involve product activation. No information is sent to any sort of server for activation when an end user runs Try and Die trialware.

1030

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Adding a Trialware File

Workarounds for Trialware Issues with .NET, Java, PowerBuilder, or Other Interpretive Languages
InstallShield cannot wrap .NET or Java files for the Try and Die type of trialware. In addition, InstallShield cannot wrap files that were created with applications such as PowerBuilder, which uses interpretive languages. With .NET and Java-based applications, build errors may occur in InstallShield when users attempt to build the installation. With PowerBuilder-created applications, end users can install the application, but the application cannot be launched when end users click Finish in the trialware run-time dialog. If your application is a .NET or Java-based application or you used a tool such as PowerBuilder to create your application, create a traditional Windows-based .dll file:

The .dll file should contain a function that is called by your products executable file. Wrap the .dll file with the trialware protection in InstallShield. Obfuscate the function call to make it difficult for unscrupulous users to create their own versions of the unwrapped .dll file in an attempt to work around the trialware protection and use your application without having to activate it.

With this workaround, when an end user tries to launch the executable file, the executable file calls the protected .dll file, which triggers the trialware technology.

Adding a Trialware File


Edition: Trialware functionality is available with the Premier edition of InstallShield.

When you add a trialware file to your project and then configure its settings, you are preparing a fully functional, protected trial version of your product.

Task

To add a trialware file: 1. 2. 3. 4.

Open the Trialware view. Right-click the Trialware Files explorer and then click New File Configured for Trial Usage. InstallShield adds the item to the explorer. Rename the item if necessary. The name is for internal use only and is not displayed to end users. On the General tab, select the application file (.exe, .dll, .ocx, or .scr) in your project that you want to protect.

Once you have added the file in the Trialware view, you need to select the appropriate type of trialware and acquire a license.

InstallShield 2010 User Guide

ISP-1600-UG00

1031

Chapter 21: Creating Trialware Specifying the Type of Trialware

Note: InstallShield displays a warning icon ( ) for the item that you added to the Trialware Files explorer. In order to protect a file, you must specify the corresponding .exe, .dll, .ocx, or .scr file; the type of trialware; and the license. Once you have specified these settings, InstallShield changes the warning icon to a protected trialware icon ( ).

Specifying the Type of Trialware


Edition: Trialware functionality is available with the Premier edition of InstallShield.

InstallShield enables you to prepare one type of trialware: Try and Die. This type lets end users try your product for a specified number of days or a specified number of uses. You can allow end users to extend the trial for an additional limited number of days or uses. Once the trial limit or extension limit has been reached, they can no longer run the product.

Acquiring a License
Edition: Trialware functionality is available with the Premier edition of InstallShield.

A license identifies a protected trial product. It is recommended that you acquire a unique license for each version of your product. Otherwise, if end users try version 1.0 of your Try and Die product, the trial expires when the predetermined trial limit has been reached. Thus, the same end users would not be able to also try version 2.0 if you use the same license to wrap version 2.0.

Task

To acquire a license: 1. 2. 3. 4. 5.

Open the Trialware view. Add a trialware file if you have not already done so, and select the executable file (.exe, .dll, .ocx, or .scr file) that you want to protect. In the License(s) area of the General tab, click Acquire. The Acquire New License Wizard opens. Complete the panels in the Acquire New License Wizard. The license server downloads the license to your machine and stores it in the project file. In the License(s) list, select the license that you just obtained.

1032

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Trial Limits and Extensions

Once you have specified the license and the executable file on the General tab, the icon in the Trialware Files explorer changes from a warning icon ( ) to a protected trialware icon ( ). InstallShield cannot protect a file unless you configure these settings. If you build your project when the warning icon is displayed, a build error occurs (unless you have chosen to Excluding Trialware Protection from a Release).

Trial Limits and Extensions


Edition: Trialware functionality is available with the Premier edition of InstallShield.

When you create a trial version of your product using InstallShield, you set the trial limiteither a specific number of days or a specific number of uses. Note the following details about the trial limit:

If you set the trial limit to a specific number of days, the trial period starts on the day that the end user launches your trialware product for the first time. The trial period starts on that first day even if the end user clicks the Cancel button on one of the trialware run-time dialogs and does not start using the product. If you set the trial limit to a specific number of uses, the countdown for the number of trial uses starts with the first time that the end user launches your product. If an end user clicks the Cancel button on one of the trialware run-time dialogs and does not start using the product, the number of uses does not change. Note that for per-user installations of trialware, the trialware usage count is per machinenot per user on the same machine.

In addition to specifying the trial limit, you can specify whether end users are allowed to extend the trial limit. If you allow trial extensions, you must specify the number of days or the number of uses that the trial can be extended. You also must specify the extension serial number that all end users should use to extend the trial. If you want to prevent end users from evaluating or activating your trialware after a specific date, you can specify the expiration date. To learn more, see Expiration Dates for Trialware.

Trial Limit and Extension Example for Try and Die


To illustrate how the trial limit and a trial extension affect the Try and Die type of trialware, consider the following properties and the corresponding values that are specified on the Advanced tab of the Trialware view:

Type of Trial Limit = Days Trial Limit Quantity = 20 Allow Trial Extension = Yes Extension Limit Quantity = 10 Expiration Date = (Does not expire)

InstallShield 2010 User Guide

ISP-1600-UG00

1033

Chapter 21: Creating Trialware Expiration Dates for Trialware

The following table shows what happens in this example if an end user starts using your trialware product on January 1:
Table 21-1: Trial Limit and Extension Example for Try and Die Date January 1 Description An end user launches the trialware for the first time on this day. Therefore, the trial period begins on this day, regardless of what day the trialware was actually installed on the target machine. Whenever the end user launches the product, a trialware run-time dialog is displayed before the product starts, informing the end user how many days remain in the trial period. For example, on January 18, there are 3 days left in the trial period. If the Product Purchase URL property contains a URL, the run-time dialog displays a hyperlink that the end user can click to visit a Web page for information on purchasing the product. When the end user clicks Next, the trialware run-time dialog closes and the product starts. January 21 through January 30 If the end user launches the product during this period, the trialware run-time dialog is displayed to inform the end user that the trial period has expired. If the Product Purchase URL property contains a URL, the run-time dialog displays a hyperlink that the end user can click to visit a Web page for information on purchasing the product. If the end user clicks the icon in the upper-left corner of the dialog and then clicks Sales Support, the run-time dialog prompts the end user for the extension serial number: If the end user enters the correct extension serial number, the trial period is extended through January 30 (even if the end user waits until January 30 to extend the trial). When the end user clicks Next, the trialware run-time dialog closes and the product starts. If the end user does not enter the correct extension serial number, the trialware run-time dialog does not permit the end user to start the product. The end user can try to re-enter the extension serial number.

January 1 through January 20

Note that the countdown for the number of days in the trial extension period starts the day after the initial trial period ends. This occurs even if the end user does not immediately extend the trial, but instead waits several days after the trial period is over to extend it. January 31 or anytime afterward If the end user tries to use the product, the product cannot be started. A trialware run-time dialog is displayed to inform the end user that the trial period has ended. If the Product Purchase URL property contains a URL, the run-time dialog displays a hyperlink that the end user can click to visit a Web page for information on purchasing the product. Note that the end user can no longer extend the trial.

Expiration Dates for Trialware


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If you want to prevent end users from evaluating or activating your trialware after a specific date, you can specify the expiration date. The trial expires when either of the following conditions is met:

The current date is on or after the date specified in the Expiration Date property on the Advanced tab of the Trialware view.
ISP-1600-UG00 InstallShield 2010 User Guide

1034

Chapter 21: Creating Trialware Expiration Dates for Trialware

The end user has used the product for the maximum number of times or uses as specified in the Type of Trial Limit and Trial Limit Quantity properties on the Advanced tab of the Trialware view.

Expiration Date Example with the Days Type of Trial Limit


The following table shows what happens under certain conditions when an expiration date is used. In each scenario, the Type of Trial Limit property is set to Days.
Table 21-2: The Effect of an Expiration Date on Trialware with the Days Type of Trial Limit Scenario The end user starts and finishes the trial period and the trial extension period before the expiration date. The end user starts the trial period before the expiration date; however, the trial period is set to end after the expiration date. Result The expiration date does not affect the trialware.

When the number of days remaining is displayed in the trialware run-time dialogs, it will take into account the expiration date. For example, if the trial limit is set to 30 days, but the end user first launches the trialware 10 days before the expiration date, the trialware run-time dialog states that 10 days remain in the trial. Note that even if trial extensions are allowed, the end user will not be able to extend the trial because it would occur after the expiration date.

The end user tries to start the trial period after the expiration date. The end user starts and finishes the trial period before the expiration date. Next, the end user tries to extend the trial.

The end user cannot run the trialware. The trialware run-time dialog states that the trial period has ended.

The expiration date does not affect the initial trial period. If the end user tries to extend the trial period after the expiration date, the end user will not be able to do so. The trialware run-time dialog will state that the trial period has ended. If the end user extends the trial period before the expiration date, the end user can continue evaluating the product, as long as the end user is extending the trial before the trial extension period is over. (Note that the countdown for the number of days in the trial extension period starts the day after the initial trial period ends. This occurs even if the end user does not immediately extend the trial, but instead waits several days after the trial period is over to extend it.) When the system calculates the number of days remaining in the trial period, it takes into account the expiration date. If the trial extension is scheduled to end after the expiration date, the number of days remaining is decreased accordingly.

InstallShield 2010 User Guide

ISP-1600-UG00

1035

Chapter 21: Creating Trialware Setting the Trial Limit

Expiration Date Example with the Uses Type of Trial Limit


The following table shows what happens under certain conditions when an expiration date is used. In each scenario, the Type of Trial Limit property is set to Uses.
Table 21-3: The Effect of an Expiration Date on Trialware with the Uses Type of Trial Limit Scenario Before the expiration date, the end user launches the trialware the maximum number of times that are allowed for the initial trial limit and the trial extension. The end user starts using the product before the expiration date; however, the end user does not (before the expiration date) launch the trialware the maximum number of times that are allowed. Before the expiration date, the end user launches the trialware the maximum number of times that are allowed. Next, the end user tries to extend the trial. Result The expiration date does not affect the trialware.

The end user can continue using the trialware until either of the following occurs: The end user launches the trialware the maximum number of times that are allowed. The current date is the expiration date (or after the expiration date).

As soon as either of those conditions becomes true, end user cannot run the trialware. The trialware run-time dialog states that the trial period has ended. The expiration date does not affect the number of initial trial uses in this scenario. If the end user tries to extend the trial after the expiration date, the end user will not be able to do so. The trialware run-time dialog will state that the trial period has ended. If the end user extends the trial before the expiration date, the end user can continue evaluating the product until they no longer have any remaining uses or until the expiration date is reachedwhichever occurs first.

Setting the Trial Limit


Edition: Trialware functionality is available with the Premier edition of InstallShield.

Task

To set the trial limits: 1. 2. 3. 4.

Open the Trialware view. In the Trialware Files explorer, click the file whose trial limits you want to set. Click the Advanced tab. Set the trial limitrelated properties as appropriate for your trialware.

The trial limitrelated properties that you should set are:

1036

Type of Trial Limit

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Setting or Changing a Trialware Expiration Date

Trial Limit Quantity Allow Trial ExtensionIf you set this property to Yes, also set the values of the Extension Limit Quantity and Extension Serial Number properties.

For details about setting the trial limits and allowing a trial extension, see Trial Limits and Extensions.

Setting or Changing a Trialware Expiration Date


Edition: Trialware functionality is available with the Premier edition of InstallShield.

You can set an expiration date to prevent evaluations and activations of your product after a certain date. Expiration dates are often used for beta versions of a product. For example, you may want to set the expiration date to the last day of the beta trial period. When the beta trial period is over, end users can no longer use the trialware version of your product, even if they have additional days or uses remaining in their trial.

Task

To set or change the expiration date for your trialware: 1. 2. 3. 4. 5. 6. 7.

Open the Trialware view. In the Trialware Files explorer, click the file whose expiration date you want to set. Click the Advanced tab. Double-click the Expiration Date property. The Expiration Date dialog box opens. Select the I want my trial to expire on this date option. Specify the last day on which any end users should be able to evaluate or activate your product. You can either type the date in the box or click the arrow to select the date from a calendar. Click OK.

InstallShield sets the value of the Expiration Date property to the date that you specified. End users will not be able to evaluate your product after the expiration date.

Removing a Trialware Expiration Date


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If you previously set an expiration date for your trialware and you later decide that it should not have one, you can remove it.

InstallShield 2010 User Guide

ISP-1600-UG00

1037

Chapter 21: Creating Trialware Setting the Hyperlinks for the Trialware Run-Time Dialogs

Task

To remove the expiration date for your trialware: 1. 2. 3. 4. 5. 6.

Open the Trialware view. In the Trialware Files explorer, click the file whose expiration date you want to set. Click the Advanced tab. Double-click the Expiration Date property. The Expiration Date dialog box opens. Select the I do not want my trial to have an expiration date option. Click OK.

InstallShield sets the value of the Expiration Date property to (Does not expire).

Setting the Hyperlinks for the Trialware Run-Time Dialogs


Edition: Trialware functionality is available with the Premier edition of InstallShield.

The default values for the hyperlink properties are for pages on the InstallShield Web site. You must change these default values or delete them before releasing your trialware. Otherwise, hyperlinks to the InstallShield Web site will be included in your trialware run-time dialogs.

Task

To set the hyperlinks for the trialware run-time dialogs: 1. 2. 3. 4.

Open the Trialware view. In the Trialware Files explorer, click the file whose run-time hyperlinks you want to configure. Click the Advanced tab. Set the URL-related properties as appropriate for your trialware.

Trialware Run-Time Dialogs


Edition: Trialware functionality is available with the Premier edition of InstallShield.

Whenever an end user launches a protected Try and Die product, a trialware run-time dialog or message box opens before the application starts. The following topics describe the end-user experience with Try and Die trialware and provide sample run-time dialogs:

1038

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Trialware Run-Time Dialogs

Try and Die Dialog (Trial Has Not Expired) Try and Die Dialog (Trial Has Expired) Try and Die Dialog (Serial Number Required to Extend Trial) Try and Die Dialog (Trial Is Extended)

If an end user resets the machines date or time and then tries to run trialware, a message box opens. For more information, see Trialware Message Box (System Clock Change).

Hyperlinks in the Trialware Run-Time Dialogs


The trialware run-time dialogs contain a number of hyperlinks that you can set or exclude as appropriate. If you do not specify a uniform resource locator (URL) for some of the hyperlinks, the hyperlinks that do have specific URLs are automatically rearranged to eliminate gaps between missing hyperlinked text. The Help, Privacy Policy, and Feedback hyperlinks, for example, are arranged flush right near the lowerright corner of the run-time dialogs. If you do not specify a URL for the Privacy Policy link, the Help link is moved closer to the Feedback link automatically. In most cases, you may want to specify a page on your Web site as the URL. However, you do have the ability to set a URL property with a mailto URL. If an end user clicks a mailto URL hyperlink in one of the trialware run-time dialogs, a new email message is opened in the end users email application, and the destination address is populated in the To field. For example, if you set the Feedback URL property to the following string, an email message will open with feedback@mycompany.com in the To field whenever the end user clicks the Feedback link.
mailto:feedback@mycompany.com

You can also specify the text for the Subject line with the following code, using %20 in place of spaces:
mailto:feedback@mycompany.com?Subject=My%20Subject

Try and Die Dialog (Trial Has Not Expired)


Edition: Trialware functionality is available with the Premier edition of InstallShield.

Whenever an end user launches the Try and Die version of a product, a trialware run-time dialog opens before the application starts. If the trial has not expired, the trialware run-time dialog displays a message stating how many days or uses remain in the trial, as shown in the sample dialog below for a product called Try and Die. The end user can click the Finish button to begin using the application. This same dialog is also displayed if the end user has extended the trial and then launched the product anytime before the trial extension expires.

InstallShield 2010 User Guide

ISP-1600-UG00

1039

Chapter 21: Creating Trialware Trialware Run-Time Dialogs

Figure 21-3: Sample Try and Die dialog (Trial has not expired.)

Try and Die Dialog (Trial Has Expired)


Edition: Trialware functionality is available with the Premier edition of InstallShield.

Whenever an end user launches the Try and Die version of a product, a trialware run-time dialog opens before the application starts. If the trial has expired, the trialware cannot be started. The trialware run-time dialog displays a message informing the end user that the trial has ended, as shown in the first sample dialog below for a product called Try and Die. When the end user clicks Finish, the trialware run-time dialog closes and the product does not start. If the trialware has been configured to allow an extension of the trial, InstallShield adds a Sales Support menu command to this trialware run-time dialog. This command is hidden on a menu in the dialog to encourage your prospective customers to purchase the product rather than try to extend the trial. If end users click the icon in the upper-left corner of the dialog, as shown in the second dialog below, they can select this Sales Support command. Then the next run-time dialog prompts the end user for the extension serial number.

1040

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Trialware Run-Time Dialogs

Figure 21-4: Sample Try and Die dialog (Trial has expired.)

Figure 21-5: Sample Try and Die dialog (Trial extension is allowed.)

Try and Die Dialog (Serial Number Required to Extend Trial)


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If the end user clicks Sales Support, as shown in the previous trialware run-time dialog, the dialog shown below opens to enable the end user to enter the extension serial number:

If the end user does not enter the correct extension serial number, the trialware run-time dialog does not permit the end user to start the product. The end user can try to re-enter the extension serial number.

InstallShield 2010 User Guide

ISP-1600-UG00

1041

Chapter 21: Creating Trialware Trialware Run-Time Dialogs

If the end user enters the correct extension serial number and then clicks Next, the trial is extended for the predetermined number of extension days or uses. When the end user clicks Next, the next trialware run-time dialog opens.

Figure 21-6: Sample Try and Die dialog (Serial number required to extend trial.)

Try and Die Dialog (Trial Is Extended)


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If the end user enters the correct extension serial number to extend the trial, the trialware run-time dialog shows how many days or uses remain in the trial, as shown in the sample dialog below. The end user can click the Finish button to begin using the application. Subsequent launches of an extended trial will show the Trial Is Extended dialog, as long as the trial extension has not expired.

1042

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Trialware Run-Time Dialogs

Figure 21-7: Sample Try and Die dialog (Trial is extended.)

Trialware Message Box (System Clock Change)


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If an end user attempts to abuse the trial limit by setting back the system clock and then running Try and Die trialware (either before or after the trial has expired), the message box shown below opens.

If the end user clicks Yes, the message box closes, enabling the end user to restore the date and time. If the end user clicks No, the trial ends, and the trialware cannot be started.

This is done to prevent end users from trying to gain more time for their trial by setting their computers date back to an earlier date.

Figure 21-8: Trialware message box (System clock change)

InstallShield 2010 User Guide

ISP-1600-UG00

1043

Chapter 21: Creating Trialware Resetting the License During Development and Testing

Resetting the License During Development and Testing


Edition: Trialware functionality is available with the Premier edition of InstallShield.

Note that if you test a Try and Die product by running the protected trial version, it will expire at the end of the trial; you will not be able to test your product further on the same test machine without removing the license. When you build a trialware release and the Disable Trialware Build property in the Releases view is set to the default setting of No, a folder called TestTools is created and placed in the same folder as the DiskImages folder for the selected release.

Caution: Do not release the files in the TestTools folder with your product or make them available to your customers. Doing so would enable end users to continually restart a trial each time that it expires. Note that the TestTools files are specific to a particular product and license and cannot be used to delete licenses for other products.

For each file being wrapped, the TestTools folder contains the following files:

SCResetLicense<WrappedBaseFileName>.exe IsSvcInstSCResetLicense<WrappedBaseFileName>.dll

For example, if a file called Calc.exe is wrapped, the files in the TestTools folder are SCResetLicenseCalc.exe and IsSvcInstSCResetLicenseCalc.dll. You can use the TestTools files to remove the license for your product from a machine, resetting the trialware state. This enables you to restart the trial for your protected product and retest it. For more information, see Testing a Trialware Release of Your Product.

Informing End Users How to Extend a Trial


Edition: Trialware functionality is available with the Premier edition of InstallShield.

You can configure your trialware so that it allows end users to extend a trial. Note that if you allow trial extensions, end users can extend the trial only once. They cannot continually extend the trial. If you allow trial extensions for your trialware and then end users ask for an extension, you need to provide them with the extension serial number. The instructions below explain how end users would extend a Try and Die trial if it has expired.

1044

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 21: Creating Trialware Removing a Trialware File

Task

If end users want to extend a Try and Die trial, they need to: 1. 2.

Start the trialware product. The trialware run-time dialog displays a message that states that the trial has ended. Click the icon in the upper-left corner of the dialog, and then click Sales Support.

Figure 21-9: Sample Try and Die dialog (Trial extension is allowed.) 3.

Enter the extension serial number that you have provided to them, and then click Next.

Removing a Trialware File


Edition: Trialware functionality is available with the Premier edition of InstallShield.

If you no longer want to include a particular trialware file in your project, you can remove it.

Task

To remove a trialware file: 1. 2. 3.

Open the Trialware view. In the Trialware Files explorer, click the trialware file that you want to remove from your project. Press Delete.

The trialware file is removed from your project. If you need to build a release of your product that does not have the trialware protection, refer to Excluding Trialware Protection from a Release.

InstallShield 2010 User Guide

ISP-1600-UG00

1045

Chapter 21: Creating Trialware Removing a Trialware File

1046

ISP-1600-UG00

InstallShield 2010 User Guide

22
Creating Transforms

Project: This information applies to Transform projects.

A transform (.mst file) is a simplified Windows Installer database that contains the differences between two .msi databases. Transforms enable an administrator to apply modified settings to a database when deploying an installation package.

Customizing Installations
For example, a user may need to customize an installation in different ways for different departments in their company. The traditional office suite comes with a spreadsheet program, a word processor, and a presentation tool. The accounting department may need only the spreadsheet and the presentation programs, while the writing department may need the word processor and the spreadsheet. A third department may need the entire suite of applications. Rather than manually setting up every person in the company, a user can take the original installation of the entire suite, customize it to the needs of each department, and then create a transform between the two packages. A transform needs to be created for each separate product configuration.

Creating Transforms
InstallShield makes the task of creating multiple configurations of your product as easy as stepping through a wizard. You can create a transform by using either of the two methods described below. Creating a Transform by Comparing Two .msi Packages In one method of creating a transform, a base .msi package serves as the starting point for all of your customization, and the target package contains all of the changes that you would like to be reflected in the installation. Once you have prepared the base .msi package and the target .msi package, you can use the Transform Wizard to create a transform. When you finish this wizard, InstallShield compares the two packages and creates a transform (.mst file) that contains the differences between the two packages.

InstallShield 2010 User Guide

ISP-1600-UG00

1047

Chapter 22: Creating Transforms Creating a Transform by Comparing Two .msi Packages

Creating a Transform Based on a Single .msi Package Another way to create a transform is to create a new transform project. When you create a new transform project, the Open Transform Wizard launches. Use the Open Transform Wizard to open an existing .msi package in Direct MST mode and edit the project as needed. InstallShield evaluates the differences between the base .msi package and the changes you make in Direct MST mode and creates a transform project (.mst file) that contains the differences. This method of creating a transform enables you to specify additional transforms that should be incorporated into your transform project. It also lets you specify default user-interface responses for end users.

Applying Transforms
Once a transform has been created, it can be applied at run time, depending on whose machine the application is being installed. For example, you can check if the target machine is in the accounting department. If it is, the accounting transform is applied to the original installation, and only the spreadsheet and presentation programs are installed.

Creating a Transform by Comparing Two .msi Packages


Project: This information applies to Transform projects.

Note: If a transform project includes new files (files not found in the original .msi file), these files will not be found when running the installation. To avoid this issue, you can either put the transform project in the same location as the base .msi package, or manually copy the source files to the location of the base .msi package.

Task

To create a transform by comparing two .msi packages: 1. 2. 3. 4. 5.

Open the base .msi package in InstallShield. Save the project with a new name. This new project is your target project. For more information, see Saving a Project with a New Name and Location. Make all of the changes that you would like to be reflected in the installation and then build a release. On the Tools menu, click Create/Apply Transform. The Transform Wizard opens. Complete the panels in the Transform Wizard to create the transform.

1048

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 22: Creating Transforms Creating a Transform Based on a Single .msi Package

Creating a Transform Based on a Single .msi Package


Project: This information applies to Transform projects.

Note: If a transform project includes new files (files not found in the original .msi file), these files will not be found when running the installation. To avoid this issue, you can either put the transform project in the same location as the base .msi package, or manually copy the source files to the location of the base .msi package.

Task

To create a transform based on a single .msi package: 1. 2. 3. 4. 5. 6.

On the File menu, click New. The New Project dialog box opens. On the Windows Installer tab, click Transform. In the Project Name box, type a name for your transform project. In the Location box, type the path where your transform project should be stored or click Browse to find the location. Click OK. The Open Transform Wizard opens. Complete the panels in the Open Transform Wizard to create the transform.

Applying Transforms
Project: This information applies to Transform projects.

When you apply a transform, you are modifying a base .msi package to incorporate changes that you included in the transform (an .mst file). The two methods of applying a transform are described below.

Applying a Transform from the Command Line


One way to apply a transform is to pass a command line to Msiexec.exe or Setup.exe. When you apply a transform from the command line, you are changing the database of your .msi package at run time. To apply a transform at run time, your command-line statement should look something like this, specifying the desired transform with the TRANSFORMS property:
msiexec /i "ProductName.msi" TRANSFORMS="YourTransform.mst"

Use semicolons to separate multiple transforms.

InstallShield 2010 User Guide

ISP-1600-UG00

1049

Chapter 22: Creating Transforms Editing Transforms

Caution: Do not use semicolons in the name of your transform because the Windows Installer service interprets semicolons as file name separators.

When you specify more than one transform at the command line, the transforms are applied in the order specified. For example, you could have a base package that has only one feature, and one transform that adds a second feature, and another transform that changes the second feature in some way. The transform that adds the feature must be specified before the transform that changes the second feature; otherwise, the change will not be made properly.

Using the Transform Wizard to Apply a Transform


When you use the Transform Wizard to apply a transform, you create an installation package (.msi package) that reflects all of the changes contained in the transform file. This can be useful for network administrators who are customizing applications for all of their users.

Task

To launch the Transform Wizard:

On the Tools menu, click Create/Apply.

Editing Transforms
Project: This information applies to Transform projects.

InstallShield enables you to edit .msi packages without having to convert them to an InstallShield (.ism) project. You can save the changes made as a transform (.mst) file.

Opening Existing Transforms for Editing


In InstallShield, you can browse for an existing .mst file. Before InstallShield can open the .mst file, it needs the base .msi to which this file should be applied. Also, it requires the names of any additional .mst files that should be applied to the base .msi file before opening the .mst file for editing. The first time that you open an .mst file in InstallShield, the Open Transform Wizard launches. This wizard enables you to specify the .mst file, the base .msi file, and any additional transforms to apply before editing. The last panel of this wizardthe Create a Response Transform panellets you specify whether or not your transform should be a response transform. A response transform includes default responses for the user interface portion of the installation. If you specify that you want to create a response transform, the user interface elements of the installation are executed, enabling you to customize the options available in each panel of the installation wizard. When the Open Transform Wizard is finished, the transforms are applied and the .mst file opens in InstallShield in Direct MST mode (which is similar to Direct Edit mode). The data specified in the wizard is saved so that the next time that you open the .mst file, the transform project opens directly in InstallShield.

1050

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 22: Creating Transforms Saving .msi Files as Transforms

Task

To open an existing transform: 1. 2. 3.

On the File menu, click Open. The Open dialog opens. Select the .mst file that you would like to open. Click Open. The Open Transform Wizard opens.

Saving .msi Files as Transforms


When you are editing an .msi file in Direct Edit mode, you can save the file as an .mst file.

Task

To save an .msi file as an .mst file: 1. 2.

On the File menu, click Save As. The Save As dialog box opens. In the Save as type box, select Windows Installer Transforms (*.mst).

All the changes made since the last save are saved to the .mst file specified.

Saving Transforms as .msi Files


You can save an .mst file as an .msi file.

Task

To save a transform as an .msi file: 1. 2. 3.

Open the transform project in InstallShield if you have not already done so. On the File menu, click Save As. The Save As dialog box opens. In the Save as type box, select Windows Installer Packages (*.msi).

An .msi file is created. It contains all of the data from the base .msi file, the .mst file that you were editing, and any additional .mst files applied. The project is treated as a Direct Mode MSI project. For more information, see Editing .msi and .msm Databases in Direct Edit Mode.

Response Transforms
Project: This information applies to Transform projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1051

Chapter 22: Creating Transforms Response Transforms

A response transform is a type of transform that enables administrators to set up default values for an installation by simply running the user interface sequence and entering the desired values. For example, you might want to create a response transform that contains default values for which features are installed, for the installation location of the application, and for the company name. The default values that you specify are used as a starting point for your transform. To create a response transform, use the Open Transform Wizard.

Creating a Response Transform


Project: This information applies to Transform projects.

Task

To create a response transform: 1. 2. 3.

Open the Open Transform Wizard. Complete each panel of the wizard as needed. On the Create Response Transform panel, select Create response transform. In the Command line properties (optional) box, specify command-line properties (in property name/value pairs separated by semicolons) that you would like to be passed to the response transform. Click Finish. The user interface elements of the installation are executed. Complete the simulated installation, customizing the options available in each panel of the installation wizard as needed. No file transfer takes place, and no changes to your machine occur. When you reach the end of the installation sequence, click Install.

4. 5. 6.

The simulated installation exits, and InstallShield saves all of the changes that you made during the simulated installation as values in the Property table of your transform project. These values are used as default values in the your installation.

Modifying a Response Transform


Project: This information applies to Transform projects.

Task

To modify an individual response in an existing transform project: 1. 2. 3.

On the File menu, click Open. The Open dialog box opens. Select the transform project (.mst file) whose responses you would like to modify. Click Open. InstallShield opens your transform project in Direct MST mode.

1052

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 22: Creating Transforms Configuring Server Locations

4. 5.

In the Direct Editor, click the Property table. Modify the values of any response properties as needed. Examples of properties that you may want to modify include COMPANYNAME and USERNAME.

As an alternative, you can also follow the same steps described for Creating Transforms; these steps enable you to launch the user interface of the installation and select the appropriate responses.

Testing a Response Transform


Project: This information applies to Transform projects.

To see the changes you made to the responses, you can test the user interface part of your transform by doing any of the following:

On the Build menu, click Test. Click the Test button. Press CTRL+T.

Configuring Server Locations


Project: This information applies to Transform projects.

If end users install a product from a network server or Web site, and they install features to run from the server or Web site, the product may need access to the .msi package and related files on the server or Web site sometime after the initial installation. The product may also require access if a file is deleted or becomes corrupted; the installation can copy the problematic file or files automatically from the server or Web site. InstallShield enables you to specify in your transform a list of network or URL source paths to your products installation package. The paths in this list are stored in the SOURCELIST property. Windows Installer appends this list to the end of an end users existing source list for the product at run time.

Adding Server Locations


Project: This information applies to Transform projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1053

Chapter 22: Creating Transforms Configuring Server Locations

Task

To add a network server path or a Web site URL for a server location: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. In the Server Locations setting, click the ellipsis button (...). The Server Locations dialog box opens. Specify server locations as needed. Click OK.

InstallShield updates the value in the Server Locations setting with the locations that you specified.

Modifying Server Locations


Project: This information applies to Transform projects.

Task

To modify a location in the server list: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. In the Server Locations setting, click the ellipsis button (...). The Server Locations dialog box opens. Modify server locations as needed. Click OK.

InstallShield updates the value in the Server Locations setting as required.

Removing Server Locations


Project: This information applies to Transform projects.

Task

To remove a path for a server location: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. In the Server Locations setting, click the ellipsis button (...). The Server Locations dialog box opens. In the Source Paths list, select the path that you want to remove. Click the Delete button.

1054

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 22: Creating Transforms Configuring Server Locations

5.

Click OK.

Changing the Order of Server Locations


If an installation needs access to the source files that are stored on a network server or a Web site, it uses the first accessible path in the list of server locations. InstallShield lets you change the order of paths if necessary.

Project: This information applies to Transform projects.

Task

To change the order of the server locations: 1. 2. 3. 4. 5.

In the View List under Installation Information, click General Information. In the Server Locations setting, click the ellipsis button (...). The Server Locations dialog box opens. In the Source Paths list, select the path that you want to move. Click the Move Up and Move Down buttons as needed to change the order. Click OK.

InstallShield 2010 User Guide

ISP-1600-UG00

1055

Chapter 22: Creating Transforms Configuring Server Locations

1056

ISP-1600-UG00

InstallShield 2010 User Guide

23
Designing InstallShield Prerequisites and Other Redistributables
InstallShield provides many third-party redistributables that you can incorporate into projects as InstallShield prerequisites, merge modules, and InstallScript objects. You can also create your own redistributables and distribute them to other installation developers. The following sections describe each of these types of redistributables.

InstallShield Prerequisites

Project: The following project types include support for InstallShield prerequisites:

Basic MSI ClickOnce InstallScript InstallScript MSI

An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. Some examples of InstallShield prerequisites that are included with InstallShield are Java Runtime Environment (JRE), Jet 4.0, and SQL Server 2008 Express Edition. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects.

Project: In Windows Installerbased installations, including InstallShield prerequisites in your project enables you to chain multiple installations together, bypassing the Windows Installer limitation that permits only one Execute sequence to be run at a time. The Setup.exe setup launcher serves as a bootstrap application that manages the chaining.

Note: Unlike Windows Installer 4.5 chaining, the InstallShield prerequisite installations are not processed as a single transaction; that is, successful installations are not rolled back after failures in later prerequisites. To learn more about Windows Installer 4.5 chaining support, see Configuring Multiple Packages for Installation Using Transaction Processing.

InstallShield 2010 User Guide

ISP-1600-UG00

1057

Chapter 23: Designing InstallShield Prerequisites and Other Redistributables

For information on configuring the settings for the InstallShield prerequisites that are available in InstallShield, as well as details on how to create your own InstallShield prerequisites, see Defining InstallShield Prerequisites. Types of InstallShield Prerequisites When you add an InstallShield prerequisite to a Basic MSI, ClickOnce, InstallScript, or InstallScript MSI project, it is considered to be the setup prerequisite type of InstallShield prerequisite by default. That is, it is treated as a base application or component that must be installed on the target machine before your product can be installed. The installation for a setup prerequisite runs before the main installation runs if the prerequisite is not already installed on the system. Basic MSI projects enable you to associate InstallShield prerequisites with features in your main installation. When an InstallShield prerequisite is associated with one or more features, it is called a feature prerequisite; it is installed if one or more features that contain the prerequisite are installed at run time and if the prerequisite is not already installed on the system. Thus, if a feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed. To learn more about these two types of InstallShield prerequisites, see Setup Prerequisites vs. Feature Prerequisites.

Merge Modules
InstallShield enables you to create your own merge modules that can be used in any of your installation projects or distributed for use by other installation developers. To learn more, see Designing Merge Modules.

Note: Many of the merge modules included in the Redistributables view are authored by Microsoft or another third party. InstallShield distributes these modules as a courtesy to assist you in creating your installation project. However, InstallShield cannot modify or fix any problems that may exist within third party-authored modules. You are encouraged to contact the vendor regarding issues with specific third party-authored modules.

InstallScript Objects
InstallShield enables you to create your own InstallScript objects that can be used in any of your installation projects or distributed for use by other installation developers. To learn more, see Creating InstallScript Objects.

1058

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

Defining InstallShield Prerequisites


Project: The following project types include support for InstallShield prerequisites:

Basic MSI ClickOnce InstallScript InstallScript MSI

All of these project types include support for the setup prerequisite type of InstallShield prerequisite. Basic MSI projects include support for the feature prerequisite type.

Use the InstallShield Prerequisite Editor in InstallShield to modify the settings for any of the prerequisites that are included with InstallShield. You can also create custom prerequisites using this tool and then add them to your projects. Specifying your own InstallShield prerequisites and modifying existing ones enables you to set options such as the following:

The URL from where the prerequisite files should be downloaded to the target machine Conditions under which the prerequisite should be installed Other prerequisites on which a particular prerequisite is dependent The command line for the prerequisite The command line to be used if the installation is running in silent mode Whether the target machine should be restarted after installation of a prerequisite Whether the administrative privileges are required to install the prerequisite Whether the installation should display a message box that enables end users to choose whether to install the prerequisite

Creating an InstallShield Prerequisite


Task To create a new InstallShield prerequisite: 1. 2. 3.

On the Tools menu, click Prerequisite Editor. The InstallShield Prerequisite Editor opens. Configure the settings on each of the tabs as needed. On the File menu, click Save.

InstallShield 2010 User Guide

ISP-1600-UG00

1059

Chapter 24: Defining InstallShield Prerequisites

Modifying an Existing InstallShield Prerequisite


Task To modify an existing InstallShield prerequisite: 1. 2. 3. 4. 5.

On the Tools menu, click Prerequisite Editor. The InstallShield Prerequisite Editor opens. On the File menu, click Open. The Open dialog box opens. Select the InstallShield prerequisite file (.prq) by browsing, and then click Open. Make changes as needed. On the File menu, click Save.

Setting Properties for an InstallShield Prerequisite


The Properties tab of the InstallShield Prerequisite Editor is where you specify a description and a unique identifier for an InstallShield prerequisite.

Task

To set properties for an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Properties tab. In the Unique identifier for InstallShield prerequisite box, type a unique file identifier for the prerequisite or leave the default value as is. This could be the name of the prerequisite application or component, or a GUID.

Note: Every time you open the InstallShield Prerequisite Editor to create a new prerequisite, a new GUID is generated and listed in the Unique identifier for InstallShield prerequisite box. 4.

In the Description box, type an overview of the InstallShield prerequisite. This description is displayed under the Overview heading when you select an InstallShield prerequisite in the Redistributables view.

Specifying an Alternate URL for a .prq File


You may want to specify an alternate URL for your .prq file if both of the following conditions are true:

You have specified that one or more InstallShield prerequisites in your installation should be downloaded from the Web instead of being included in the Setup.exe file or on the source media. For more information, see Specifying the Location for InstallShield Prerequisites at the Release Level. It is possible that later you might want to redirect your end users to a different URL to download an InstallShield prerequisites application files.
ISP-1600-UG00 InstallShield 2010 User Guide

1060

Chapter 24: Defining InstallShield Prerequisites

In this scenario, the .prq file that you include with your Setup.exe installation has an alternate URL specified. When an end user runs the installation, the target machine visits the alternate URL specified in the Setup.exe .prq file, downloads that .prq file, and uses the file URLs specified in the alternate .prq file to download the necessary files for the prerequisite application.

Task

To specify an alternate URL for a .prq file: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Properties tab. In the Alternate location to download .prq from if prerequisite files are being downloaded box, type the alternate URL for your .prq file. For example:
http://www.mywebsite.com/MyPrq.prq

Setting Installation Conditions for an InstallShield Prerequisite


You need to specify installation conditions that determine whether an InstallShield prerequisite is already installed on the target machine. Failure to do so causes problems because the target system behaves as if the prerequisite was not properly installed. You can also create installation conditions that specify operating system, registry, or file requirements. The Conditions tab of the InstallShield Prerequisite Editor is where you set installation conditions. If the InstallShield prerequisite should be installed on somebut not alloperating systems, you can create multiple operating system conditions for the prerequisite. If a target machine meets any one individual operating system condition, it meets the operating system requirements for that prerequisite. If a condition evaluates as true at run time, that condition is met. The InstallShield prerequisite is installed on the target machine if the following are true:

The target machine meets any of the operating system conditions and all of the other conditions that are listed on the Conditions tab. For feature prerequisites only (that is, an InstallShield prerequisite that is associated with one or more features in the main installation)The feature that contains the feature prerequisite must be installed. Thus, if the feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed.

Adding a New Installation Condition for an InstallShield Prerequisite

Task

To add a new installation condition for an InstallShield prerequisite: 1. 2.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Conditions tab.
ISP-1600-UG00 1061

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

3. 4.

Click Add. The Prerequisite Condition dialog box opens. Select the appropriate option for the type of condition and then set the properties for the condition as needed.

The InstallShield Prerequisite Editor adds the condition to the Conditions tab. If a condition evaluates as true at run time, that condition is met. The InstallShield prerequisite is installed on the target machine if the following are true:

The target machine meets any of the operating system conditions and all of the other conditions that are listed on the Conditions tab. For feature prerequisites only (that is, an InstallShield prerequisite that is associated with one or more features in the main installation)The feature that contains the feature prerequisite must be installed. Thus, if the feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed.

For example, you might have an InstallShield prerequisite that has several different conditions:

A specific file is not present on the target machine. In this example, if this file is missing, it indicates that an application that your product requires must be installed; otherwise, your product should not be installed. The target machine has Windows XP. The target machine has Windows Vista.

In this example, if the target machine is running Windows XP or Windows Vista and the InstallShield prerequisite is not associated with a feature, the prerequisite is installed, but only if the specified file is not present. The same is true if the InstallShield prerequisite is associated with a feature that the installation installs at run time.

Adding an Operating System Condition for an InstallShield Prerequisite


If the InstallShield prerequisite should be installed on somebut not alloperating systems, you can create multiple operating system conditions for the prerequisite. If a target machine meets any one individual operating system condition, it meets the operating system requirements for that prerequisite.

Task

To add a new operating system requirement for an InstallShield prerequisite: 1. 2. 3. 4. 5.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Conditions tab. Click the Add button. The Prerequisite Condition dialog box opens. Select the Setup is running on a specified platform option. Do one of the following:

In the Select which platform the prerequisite should be run on box, select the operating system that is required on the target system for the prerequisite.
ISP-1600-UG00 InstallShield 2010 User Guide

1062

Chapter 24: Defining InstallShield Prerequisites

In the Select which platform the prerequisite should be run on box, select Custom. Then configure the operating system settings as appropriate.

Tip: You can also use the values from an existing predefined operating system condition as the basis for a new custom condition. To do so: In the Select which platform the prerequisite should be run on box, select the appropriate predefined operating system, and then change the setting to Custom. Then you can further configure the operating system condition by specifying additional values in the Custom area. 6.

To specify a range of service pack numbers for which this prerequisite condition is true, use the Service Packs boxes. For example, if target system must have service pack 2, 3, or 4, enter 2 in the first box and 4 in the second box. To target all future service packs, leave the second box blank. To target only service pack 3, enter 3 in both boxes. Click OK.

7.

The InstallShield Prerequisite Editor adds the operating system condition to the Conditions tab.

Note: Instead of storing in the .prq file the value that you selected in the Select which platform the prerequisite should be run on box, the InstallShield Prerequisite Editor stores the underlying operating system settings that are associated with the value that you selected. Therefore, if you select the Custom option but do not change or configure any settings in the Custom area, the InstallShield Prerequisite Editor does not set the value of this box to Custom the next time that you reopen the Prerequisite Condition dialog box for the selected condition. Instead, it sets the value of the box to the predefined operating system option.

Modifying an Installation Condition for an InstallShield Prerequisite

Task

To modify an existing condition: 1. 2. 3. 4. 5.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Conditions tab. Select the condition that you would like to modify. Click the Modify button. The Prerequisite Condition dialog box opens. Modify the condition as needed.

The InstallShield Prerequisite Editor updates the modified condition on the Conditions tab.

InstallShield 2010 User Guide

ISP-1600-UG00

1063

Chapter 24: Defining InstallShield Prerequisites

Removing an Installation Condition from an InstallShield Prerequisite

Task

Remove a condition from an InstallShield prerequisite: 1. 2. 3. 4.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Conditions tab. Select the condition that you would like to remove. Click Remove.

Specifying Files for an InstallShield Prerequisite


When you are creating a new InstallShield prerequisite, you must specify the installation files that should be included with the prerequisite. You can also modify the list of files for an existing InstallShield prerequisite. The Files to Include tab of the InstallShield Prerequisite Editor is where you specify the files.

Task

To add one file for an InstallShield prerequisite: 1. 2. 3. 4. 5.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Files to Include tab. Click Add. The New File dialog box opens. In the File box, type the path and name of the file. To find the file by browsing, click the ellipsis (...) button. If end users should be able to download the file from the Web, specify the URL in the URL to file box. This URL is the same one that InstallShield uses when installation authors use the Redistributables view to download an InstallShield prerequisite from the Internet to their local machines. For example, if the URL for the file is http://www.mywebsite.com/Folder1/Notepad.exe, enter the following in this box:
http://www.mywebsite.com/Folder1

Task

To add more than one file at a time for an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, click the Files to Include tab. Click Add Multiple Files. The Open dialog box opens. Select the files that you would like to add. To select multiple consecutive files, select the first file, press and hold SHIFT, and select the last file. To select multiple nonconsecutive files, select the first file, press and hold CTRL, and select each additional file.

1064

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

4.

Click Open.

Note: Adding files by using this method does not also set the URL where those files can be downloaded. To set the URL for multiple files, see Specifying URLs for Downloading InstallShield Prerequisites.

Task

To modify the settings for an existing file: 1. 2. 3. 4.

In the InstallShield Prerequisite Editor, click the Files to Include tab. Select the file whose name, path, or URL you would like to modify. Click Modify. The New File dialog box opens. Modify the settings as needed.

Task

Remove a file from an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, click the Files to Include tab. Select the file that you would like to remove. Click Remove.

Specifying URLs for Downloading InstallShield Prerequisites


If end users should be able to download the files for an InstallShield prerequisite in your installation, you must specify the URL on the Files to Include tab of the InstallShield Prerequisite Editor.

Task

To specify the URL of one or more files for an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Files to Include tab. Select one or more files for which you would like to specify the URL. To select multiple consecutive files, select the first file, press and hold SHIFT, and select the last file. To select multiple nonconsecutive files, select the first file, press and hold CTRL, and select each additional file. Click Set File(s) URL. The Set File(s) URL dialog box opens. In the URL to Files Parent Folder box, type the URL for the parent directory of the selected file or files. This URL is the same one that InstallShield uses when installation authors use the Redistributables view to download an InstallShield prerequisite from the Internet to their local machines. For example, if you selected files called Notepad.exe and Paint.exe, and the URLs for these files are http://www.mywebsite.com/Folder1/Notepad.exe and http:// www.mywebsite.com/Folder1/Paint.exe, enter the following in this box:

4. 5.

InstallShield 2010 User Guide

ISP-1600-UG00

1065

Chapter 24: Defining InstallShield Prerequisites

http://www.mywebsite.com/Folder1

6.

Click OK.

Tip: As an alternative to the above steps, you can also specify the URL for an individual file when you add it to the list of prerequisite files on the Files to Include tab. For more information, see Specifying Files for an InstallShield Prerequisite.

Specifying Parameters for Installing an InstallShield Prerequisite


The Application to Run tab of the InstallShield Prerequisite Editor is where you specify how a prerequisite should be installed on the target machine.

Task

To specify parameters for installing an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Application to Run tab. In the Specify the application you wish to launch list, select the filetypically a Setup.exe setup launcher or an .msi filethat should be launched on the target machine if the InstallShield prerequisite is installed. Only files that have been specified on the Files to Include tab are included in this list. If the main installation is a Basic MSI or InstallScript MSI installation, and if you specify an .msi file and you indicate on the Behavior tab that the progress should be shown, the Setup.exe setup launcher captures progress messages and uses Windows Installer APIs instead of MsiExec.exe to launch the .msi package at run time. If you specify any other file type, or if you specify an .msi file for which progress should not be shown, the Setup.exe setup launcher runs the file with either the open verb (for .msi and .exe files) or the default verb (for all other file types) at run time.

Project: If you specify an .msi file and you indicate on the Behavior tab that the progress should be shown, the Setup.exe setup launcher captures progress messages and uses Windows Installer APIs instead of MsiExec.exe to launch the .msi package at run time.

If you specify any other file type, if you specify an .msi file for which progress should not be shown, or if the main installation is an InstallScript installation, the Setup.exe setup launcher runs the file with either the open verb (for .msi and .exe files) or the default verb (for all other file types) at run time.
4.

If the Windows Installer engine, the .NET Framework, or both must be installed before this InstallShield prerequisite is installed, select the Requires Windows Installer engine and/or .NET Framework to be installed first check box.

1066

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

Note: Selecting this check box does not add the Windows Installer engine or the .NET Framework to your installation. It only specifies that if they are included in the installation, they should be installed before this InstallShield prerequisite is installed. To include the Windows Installer engine or the .NET Framework with your installation, you must add them to your project. To learn how, see Adding Windows Installer Redistributables to Projects or Adding .NET Framework Redistributables to Projects. 5.

If applicable, in the Specify the command line for the application box, type the command line for the file selected in the Specify the application you wish to launch list. Do not include the name of the file in this box. For more details, see Specifying Command-Line Parameters for an InstallShield Prerequisite.

6.

If applicable, in the Specify the command line for the application when the setup is running in silent mode box, type the appropriate command line. Do not include the name of the file in this box. For more details, see Specifying Command-Line Parameters for an InstallShield Prerequisite.

7.

If the selected InstallShield prerequisite application requires that the target machine be restarted after the application is installed, type the return code in the Specify the return code (in decimal) the application returns if a reboot is required box.

If multiple return codes exist, list each one separated by a comma. If you do not know the return codes for the file that you are launching as the InstallShield prerequisite, contact the author of the file. For more information on InstallShield prerequisites that require a restart, see Restarting a Target Machine for InstallShield Prerequisite Installations.

Specifying Command-Line Parameters for an InstallShield Prerequisite


The Application to Run tab of the InstallShield Prerequisite Editor lets you specify command-line parameters that you want to be used when the InstallShield prerequisite is launched on the target system.

Task

To specify command-line parameters that you want to be used when an InstallShield prerequisite installation is launched: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Application to Run tab. In the Specify the command line for the application box, type any valid command-line parameters for the file that is selected in the Specify the application you wish to launch list. Do not include the name of the file in this box. If you want to specify the command line that should be used for the InstallShield prerequisite if the main installation is running in silent mode, type any valid command-line parameters in the Specify

4.

InstallShield 2010 User Guide

ISP-1600-UG00

1067

Chapter 24: Defining InstallShield Prerequisites

the command line for the application when the setup is running in silent mode box. Do not include the name of the file in this box. The command-line parameters that you enter in this setting are also used if the prerequisite is configured to be hiddenthat is, if the The prerequisite should be hidden from the installation list check box on the Behavior tab is selected.

Note: Using the /s command-line parameter to launch an installation that includes an InstallShield prerequisite does not automatically run the prerequisite installation silently. You may also need to specify a valid silent command-line parameter for the InstallShield prerequisite in the Specify the command line for the application when the setup is running in silent mode setting on the Application to Run tab. Also note that no command-line parameters are passed to the InstallShield prerequisite if you leave the Specify the command line for the application when the setup is running in silent mode box blank and one or both of the following conditions are also true:

The main installation is run silently. The The prerequisite should be hidden from the installation list check box on the Behavior tab is selected for the prerequisite.

Therefore, if you specify standard command-line parameters, it is recommended that you also specify silent command-line parameters.

How the Setup Launcher Passes the Command-Line Parameters to the InstallShield Prerequisite
If the InstallShield prerequisite installation is an .msi package and you indicate on the Behavior tab that the progress should be shown, the setup launcher uses Windows Installer APIsinstead of MsiExec.exeto launch the .msi package with the command-line parameters that you specify on the Application to Run tab. Under these circumstances, you can enter any of the following types of parameters for the command line:

Windows Installer property names and values in the following format:


PROPERTY=VALUE /L

(as well as any variants such as /L*v)

/log /q

(as well as any variants such as /qb+!)

/quiet

Note that if you specify that the progress should be shown, the user interface of the prerequisites .msi package is not displayed by default. If you want to override this behavior, you can specify /qf as a command-line parameter. If the InstallShield prerequisite installation is any other file type, or it is an .msi package for which progress should not be shown, the setup launcher runs the file with either the open verb (for .msi and .exe files) or the default verb (for all other file types) at run time. Therefore, in the case of an .msi package for which progress should not be shown, you can use any of the command-line parameters that MsiExec.exe accepts. For a list of the supported command-line parameters, see Command-Line Options and Standard Installer Command-Line Options in the Windows Installer Help Library.

1068

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

If your InstallShield prerequisite installation is a Setup.exe file that was created with InstallShield, the formatting that is done for that prerequisite command-line parameters that you specify on the Application to Run tab differs depending on whether you associated the InstallShield prerequisite with a feature in your project. If the InstallShield prerequisite is not associated with a feature, it is called a setup prerequisite. If the InstallShield prerequisite is associated with one or more features, it is called a feature prerequisite.

Note: To learn more about the differences between setup prerequisites and feature prerequisites, see Setup Prerequisites vs. Feature Prerequisites.

In the setup prerequisite case, the setup launcher supports property substitution through the commandline parameters for the following properties:

SETUPEXEDIRThis property identifies the path to the setup launcher file. For example, if the path to the setup launcher is C:\MySetups\MyApp\Setup.exe, the value of [SETUPEXEDIR] is C:\MySetups\MyApp. SETUPEXENAMEThis property identifies the name of the setup launcher file that was created when the project was built. The installation updates the value of this property at run time if the setup launcher file was renamed. The following path identifies the full path to this file:
[SETUPEXEDIR]\[SETUPEXENAME]

ISPREREQDIRThis property identifies the path to the running InstallShield prerequisite. The path includes the final slash. You can use this property to refer to files within the InstallShield prerequisitefor example, [ISPREREQDIR]MyConfigFile.ini. ProductLanguageThis property identifies the language that the installation should use for any strings in the user interface that are not authored into the database.

For a feature prerequisite, the command-line parameters that you specify on the Application to Launch tab are formatted at run time like a formatted text field. Therefore, you can use the aforementioned properties at the command line, as well as any of the standard command-line parameters that Setup.exe supports. For a list of supported command-line parameters, see Setup.exe and Update.exe CommandLine Parameters.

Restarting a Target Machine for InstallShield Prerequisite Installations


InstallShield uses several methods to determine if a target machine should be restarted after running the InstallShield prerequisite.

Registry Key Changes


The target machine may need to be restarted if any of the following registry keys have been modified after the InstallShield prerequisite has been run:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Session Manager\FileRenameOperations

InstallShield 2010 User Guide

ISP-1600-UG00

1069

Chapter 24: Defining InstallShield Prerequisites

The registry keys are counted before and after the InstallShield prerequisite is run. If these numbers are not the same, it is assumed that the file is trying to restart the system and exit the installation. On Windows 9x platforms, InstallShield also checks the Wininit.ini file and looks at the [rename] section.

Return Code Specified in the .prq File


If the exit code of the .exe file matches the return code specified in the InstallShield prerequisite file (.prq), the target machine may need to be restarted. The return code of the .prq file is entered in the Specify the return code the application returns if a reboot is required box of the InstallShield Prerequisite Editor. For more information, see Specifying Parameters for Installing an InstallShield Prerequisite.

Return Codes 1641 and 3010


The target machine may need to be restarted if a reboot state is returned for an .msi package that is run for an InstallShield prerequisite. The standard Windows Installer reboot return codes are:

ERROR_SUCCESS_REBOOT_INITIATED (1641) ERROR_SUCCESS_REBOOT_REQUIRED (3010)

Behavior Specified in the .prq File


One of the fields on the Behavior tab in the InstallShield Prerequisite Editor enables you to specify what should happen if any of the aforementioned conditions are or are not applicable to a particular InstallShield prerequisite. For more information, see Specifying the Behavior for an InstallShield Prerequisite that Requires a Restart.

Specifying Installation Behavior for an InstallShield Prerequisite


When you are creating a new InstallShield prerequisite or modifying an existing one, you can specify whether end users may skip the InstallShield prerequisite installation. You can also specify how the prerequisite installation should proceed if it appears that the target machine does or does not need to be restarted. The Behavior tab of the InstallShield Prerequisite Editor is where you specify these types of InstallShield prerequisite installation behavior.

Specifying that an InstallShield Prerequisite Requires Administrative Privileges


In the Windows Vista environment, end users typically run as standard users without administrative privileges. If an InstallShield prerequisite requires administrative privileges, Windows Vista displays a User Account Control (UAC) prompt that requires end users to provide consent or credentials. If your InstallShield prerequisite does require administrative privileges or if you want the InstallShield prerequisite to be installed per machine, you can specify that on the Behavior tab of the InstallShield Prerequisite Editor.

1070

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

Task

To specify that an InstallShield prerequisite installation requires administrative privileges: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. Select the The prerequisite requires administrative privileges check box.

Note: This setting applies to installations that are run on Windows Vista systems. Earlier versions of Windows ignore this setting.

Allowing End Users to Choose Whether to Install an InstallShield Prerequisite


You may want your InstallShield prerequisites installation to display a message box that permits end users to choose whether they want to install the InstallShield prerequisite. You can indicate this on the Behavior tab of the InstallShield Prerequisite Editor.

Task

To allow end users to choose whether to install an InstallShield prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. Select the The prerequisite may be optionally skipped by the user check box.

Specifying Whether to Include the Name of a Prerequisite in the List of Setup Prerequisites to Be Installed on the Target System
If a target system needs one or more setup prerequisites to be installed, the setup prerequisite dialog is typically displayed at run time before the main installation runs. When an end user clicks the Install button on this dialog, the setup prerequisites are installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1071

Chapter 24: Defining InstallShield Prerequisites

Figure 24-1: Sample Setup Prerequisite Dialog that Shows the List of Setup Prerequisites that Need to Be Installed

The Behavior tab of the InstallShield Prerequisite Editor lets you specify whether you want a setup prerequisite to be hidden from the list in the prerequisite dialog. If a prerequisite is hidden, it is installed when the conditions require it, even though it is not listed as one of the prerequisites that needs to be installed. If all of the setup prerequisites in an installation are hidden, the installation does not display the setup prerequisite dialog at run time.

Task

To specify whether to list a setup prerequisite in the setup prerequisite dialog at run time: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. Do one of the following:

To hide the setup prerequisite, select the The prerequisite should be hidden from the installation list check box. Note that if the setup prerequisite is hidden, it is launched with its silent command-line parametersnot its standard command-line parameters. To learn more, see Specifying Command-Line Parameters for an InstallShield Prerequisite.

To include the setup prerequisite in the list, clear the The prerequisite should be hidden from the installation list check box.

1072

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

Note: Note that feature prerequisites are never listed in the setup prerequisite dialog at run time, regardless of whether the The prerequisite should be hidden from the installation list check box is selected or cleared. That is, if you add an InstallShield prerequisite to your project and associate it with a feature, that feature prerequisite is not listed in the setup prerequisite dialog that is displayed at run time before the main installation runs. For more information about feature prerequisites, see Setup Prerequisites vs. Feature Prerequisites.

Specifying Whether to Show the Progress of an InstallShield Prerequisite Installation at Run Time
The Behavior tab of the InstallShield Prerequisite Editor lets you specify whether you want the InstallShield prerequisite installation to show the status bar that shows the actual progress of the prerequisite installation, along with installation progress messages from Windows Installer, at run time. This functionality is available only if the prerequisite launches an .msi file; it is not possible if the prerequisite launches a Setup.exe file. In addition, the installation that contains the InstallShield prerequisite must be a Basic MSI or InstallScript MSI installation. If the progress is not shownor if the installation that contains the InstallShield prerequisite is an InstallScript installation, the prerequisite installation displays an Installing [PrerequisiteName] message on the run-time dialog, and the status bar loops continuously until the prerequisite installation has completed.

Task

To specify whether to show the progress messages and the status bar for an InstallShield prerequisite installation: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. Do one of the following:

To show the progress, select the Progress should be shown in the prerequisites window (raw MSI files only) check box. To avoid showing the progress, clear the Progress should be shown in the prerequisites window (raw MSI files only) check box.

Note: If you specify that the progress should be shown, only some command-line parameters are supported. Commandline parameters are specified on the Application to Run tab of the InstallShield Prerequisite Editor. For more information, see Specifying Command-Line Parameters for an InstallShield Prerequisite. Also note that if you specify that the progress should be shown for a prerequisite that is an .msi package, the user interface of the prerequisites .msi package is not displayed by default. If you want to override this behavior, you can specify /qf as a command-line parameter on the Application to Run tab of the InstallShield Prerequisite Editor.

InstallShield 2010 User Guide

ISP-1600-UG00

1073

Chapter 24: Defining InstallShield Prerequisites

Planning for Issues that Could Occur with an InstallShield Prerequisite Installation
Sometimes after an InstallShield prerequisite installation has been run, the conditions still indicate that the InstallShield prerequisite needs to be installed. If that occurs, either of the following may be true:

The InstallShield prerequisite was not successfully installed. The conditions that were specified for the InstallShield prerequisite were not accurate.

For example, a condition may indicate that the InstallShield prerequisite needs to be installed if a particular file does not exist on the target machine. If the file is still missing even after the InstallShield prerequisite is installed, it is possible that the condition should not have been created. The Behavior tab of the InstallShield Prerequisite Editor lets you indicate how the installation should proceed under these types of circumstances.

Task

To plan for potential issues related to an InstallShield prerequisites installation: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. In the If, after installing the prerequisite, the conditions still indicate it is required list, click the appropriate item.

Specifying the Behavior for an InstallShield Prerequisite that Requires a Restart


When you are creating a new InstallShield prerequisite or modifying an existing one, you can specify how the InstallShield prerequisite installation should proceed if it appears that the target machine does or does not need to be restarted. For example, in some cases, you may want the installation to first prompt the end user before restarting the machine; in other cases, you may want to skip the restart. The Behavior tab of the InstallShield Prerequisite Editor provides the flexibility needed to carry out the response that is appropriate for each InstallShield prerequisite.

Task

To specify the behavior for an InstallShield prerequisite that requires the target machine to be restarted: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Behavior tab. In the If the prerequisite requires a reboot list, click the appropriate item.

To learn about the available options, see Behavior Tab.

1074

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

Specifying Dependencies for an InstallShield Prerequisite


When you are creating a new InstallShield prerequisite or modifying an existing one, you can specify other InstallShield prerequisites (.prq files) on which this InstallShield prerequisite depends. The Dependencies tab of the InstallShield Prerequisite Editor is where you specify the dependencies.

Adding a Dependency for an InstallShield Prerequisite

Task

To add a dependency for an InstallShield prerequisite: 1. 2. 3. 4.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Dependencies tab. Click the Add button. The New Dependency dialog box opens. In the File box, type the path and name of the .prq file that is required for the current InstallShield prerequisite. To find the .prq file by browsing, click the ellipsis (...) button. InstallShield prerequisite files are stored in the following location:
InstallShield Program Files Folder\SetupPrerequisites

5.

Click OK.

Modifying a Dependency for an InstallShield Prerequisite

Task

To modify an existing dependency setting: 1. 2. 3. 4. 5.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Dependencies tab. Select the dependency that you would like to modify. Click Modify. The New Dependency dialog box opens. Modify the setting as needed.

Removing a Dependency from an InstallShield Prerequisite

Task

Remove a dependency from a prerequisite: 1. 2. 3.

In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Dependencies tab. Select the dependency that you would like to remove.
ISP-1600-UG00 1075

InstallShield 2010 User Guide

Chapter 24: Defining InstallShield Prerequisites

4.

Click Remove.

Saving an InstallShield Prerequisite


Once you have created a new InstallShield prerequisite or modified an existing one using the InstallShield Prerequisite Editor in InstallShield, you must save the InstallShield prerequisite file (.prq).

Task

To save an InstallShield prerequisite that is open in the InstallShield Prerequisite Editor: 1. 1.

On the File menu, click Save As. The Save As dialog box opens. Specify the file name and .prq extension for the InstallShield prerequisite file. InstallShield prerequisite files are stored in the following location:
InstallShield Program Files Folder\SetupPrerequisites

2.

Click the Save button.

InstallShield prerequisites that are stored in the SetupPrerequisites directory are listed in the Redistributables view.

1076

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 25: Designing Merge Modules

Designing Merge Modules


Merge modules enable several development teams to work on separate components independently. Each team can populate its installation database without immediately considering how their work will affect other components. When the components are fully developed, each component in the merge module database can be merged into the main product installation database. InstallShield enables you to create your own merge modules that can be used in any of your installation projects or distributed for use by other installation developers. The most important step in creating your merge module lies in its design. To have a well-designed merge module, you need to break up your files into components, which constitute the developers perspective of the project. Unlike creating a complete installation with features, components, and files, a merge module contains only components, which, in turn, contain files. The major aspects involved in creating a merge module are listed below.
Table 25-1: Major Aspects of Merge Module Creation Merge Module Element Components Description Enable you to group your application data together. They constitute the developers view of a projectcontaining data such as files, registry entries, and shortcuts. The Components view is where you design the components for your merge module. Elements that are added to a component to complete the hierarchy, as described above. Enable you to publish your component, register COM servers, file extension servers, and MIME types. You can also use the components advanced settings to create an application paths entry in the registry.

Files, registry data, and shortcuts Advanced settings

Creating a Merge Module Project


A merge module (or .msm file) contains all of the logic and files needed to install distinct pieces of functionality. For example, many applications require Visual Basic run-time DLLs. Instead of having to include the file in a component and figure out its installation requirements, you can simply attach the Visual Basic Virtual Machine merge module to one of your projects features. Merge module properties include the following:

Product Name Product Version Application Type Language INSTALLDIR

You can specify any merge module dependencies and exclusions in the Module Dependencies and Module Exclusions settings in the General Information view. To create a merge module, start by creating a Merge Module project.
InstallShield 2010 User Guide ISP-1600-UG00 1077

Chapter 25: Designing Merge Modules

Task

To create a Merge Module project: 1. 2. 3. 4.

On the File menu, click New. Click the Windows Installer tab. In the box of project types, click Merge Module Project. In the Project Name box, enter a name for your project.

Important: When you create a new Merge Module project, the name that you specify in the New Project dialog box should have 35 characters or fewer. This is because the name that you enter is used with the GUID in the ModuleID field of the ModuleSignature table of your merge module file, and the limit for the object name portion of the ModuleID field is a maximum of 35 characters. 5. 6.

In the Location box, specify the location where you want to save the project, or click the Browse button to navigate to the location. Click OK.

Setting the Default Destination Folder for a Merge Module


The value that you enter for the INSTALLDIR setting in the General Information view serves as the default folder for all of your merge modules files. That is, its value is assigned to the Windows Installer folder property INSTALLDIR, which is the default component destination folder.
[TARGETDIR]

If you would like to let the users of your merge module override the default destination directory, enter in the INSTALLDIR setting. To learn more, see Overriding a Merge Modules Destination.

Other Destination Folder Considerations


Note that each component in your Merge Module project also has a Destination setting. The components Destination setting overrides the INSTALLDIR setting in the General Information view. Therefore, if you want all of your merge modules files to be installed by default to the merge modules destination folder, enter [INSTALLDIR] for all of your components Destination settings.

Selecting the Merge Module Language


The Language setting in the General Information view lets you to select the language for which your module is designed. For example, if your module installs a user interface, specify the language for which that user interface was designed. If the module is run on a machine that does not match your module language setting, it is not installed.

Tip: Select Language Independent to allow your module to run on all languages.

1078

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 25: Designing Merge Modules

Adding Dependencies to Merge Modules


While some merge modules are self-contained, some require other merge modules in order to function properly. For example, your merge module may require the Visual Basic run-time libraries. If this is the case, you need to add that merge module as a dependency to your new merge module. When adding a file to a merge module, you may encounter a Setup Best Practices violation if the file is contained in another merge module that is stored on your system. If this happens, you should add that merge module as a dependency.

Caution: When you are creating a typical Basic MSI or InstallScript MSI project, merge modules are automatically added to your project when you add a file that is available within a merge module. When you are creating a merge module and you add a file that is available within another merge module, you will receive a Setup Best Practices alert telling you to set that merge module as a dependency. InstallShield does not create the dependency for your Merge Module project.

Dependency information entered in the General Information view is written to your projects ModuleDependency table, which you can view using the Direct Editor.

Adding Dependencies from the Redistributables Gallery


A merge module is in your redistributables gallery if it is located in one of the paths that are specified on the Merge Modules tab of the Options dialog box.

Task

To add one or more dependencies from the redistributables gallery: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. In Module Dependencies setting, click the ellipsis button (...). The Module Dependencies dialog box opens. Select the check boxes of the merge modules that are required for the merge module that you are creating. Click OK.

InstallShield adds the dependency to the grid in the General Information view. You can change the settings for the dependency if necessary.

Adding Dependencies that Are Not in the Redistributables Gallery

Task

To add a dependency that is not present on your machine: 1. 2.

In the View List under Installation Information, click General Information. In Module Dependencies setting, click the Add a new module dependency button.

InstallShield adds the dependency to the grid in the General Information view. Configure each of its settings as needed.

InstallShield 2010 User Guide

ISP-1600-UG00

1079

Chapter 25: Designing Merge Modules

Note: Be careful when entering the value for the Module ID setting, since InstallShield does not check to ensure that it is correct. You will not know if it fails until you try to run the installed program.

Adding Exclusions to Merge Modules


Occasionally you may need to exclude certain merge modules from being associated with the module that you are creating. This may occur because an older version of a module might not be compatible with your new module. As a result, you need to exclude that module from any setup that your new module will be associated with.

Adding Exclusions from the Redistributables Gallery


A merge module is in your redistributables gallery if it is located in one of the paths that are specified on the Merge Modules tab of the Options dialog box.

Task

To add an exclusion from the redistributables gallery: 1. 2. 3. 4.

In the View List under Installation Information, click General Information. In Module Exclusions setting, click the ellipsis button (...). The Module Exclusions dialog box opens. Select the check boxes of the merge modules that are not compatible with the merge module that you are creating. Click OK.

InstallShield adds the exclusion to the grid in the General Information view. You can change the settings for the exclusion if necessary.

Adding New Exclusions that Are Not in the Redistributables Gallery

Task

To add an exclusion that is not present on your machine: 1. 2.

In the View List under Installation Information, click General Information. In Module Exclusions setting, click the Add a new module exclusion button.

InstallShield adds the exclusion to the grid in the General Information view. Configure each of its settings as needed.

Note: Be careful when entering the value for the Module ID setting, since InstallShield does not check to ensure that it is correct. You will not know if it fails until you try to run the installed program.

1080

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 25: Designing Merge Modules

Referencing DIM Files in a Merge Module


InstallShield enables you to add .dim files to a Merge Module project. A .dim file is used to communicate installation requirements in an XML-structured file that is authored and maintained alongside other source code that make up a software module. You can create .dim files with InstallShield Collaboration, a tool that is available for Visual Studio development environments, or InstallAnywhere Collaboration, a tool that is available for Eclipse development environments. You can add a merge module that contains .dim files to any project type that supports merge modules for example, Basic MSI, InstallScript, and Direct MSI projects. You can also add a merge module that contains .dim files to another merge module as a dependency. If you add a merge module that contains DIM references to an installation project, InstallShield associates the DIM references with the feature in the installation project that contains the merge module.

Publishing a Merge Module to a Repository from Within a Merge Module Project


If you are designing a merge module that you would like to reuse in Windows Installerbased installations or share with other users, you can publish it to a repository. InstallShield enables you to configure a release for the merge module so that the merge module is published to a repository whenever the release is built.

Task

To configure the settings for publishing a merge module to a repository from within the merge module project: 1. 2. 3. 4. 5. 6. 7. 8.

In the View List under Media, click Releases. Click the Build tab. In the Releases explorer, add a product configuration and a release if you have not already done so. In the Releases explorer, click the release whose publication settings you would like to configure. For the Publish Merge Module property, select the appropriate repository. All of the repositories to which you have access are listed here. For the Display Name property, specify a name for the merge module that you are publishing to the repository. This name is displayed for the merge module in the Redistributables View. For the Publisher property, type your name. For the Description property, type a description of the merge module.

Whenever you build the selected release, InstallShield publishes the merge module to the specified repository. Merge modules are built into an installation at build time. If you make a change to a repository merge module and then republish it to the repository, any project that has the old version of the repository merge module will be updated the next time that a release of the projects installation is rebuilt.

InstallShield 2010 User Guide

ISP-1600-UG00

1081

Chapter 25: Designing Merge Modules

1082

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Creating InstallScript Objects


Project: This information applies to InstallScript Object projects.

InstallShield enables you to create your own InstallShield objects that can be used in any of your installation projects or distributed for use by other installation developers. Objects replace the templates found in earlier versions of InstallShield.

Note: Objects that you create can be used only with InstallShield X or later, InstallShield DevStudio, or InstallShield Professional 6.1 or later.

Creating an object is little different from creating a standard installation project. One difference is the importance of scope. When you create an object, you need to ensure that the objects scope is optimal for its intended use. The scope of an object affects its usability. If the scope is too narrow, the object may be insufficient for your needs. If the scope is too large, the object may to be too cumbersome to be practical. The following sections describe the steps in the object creation process.

Creating an Object
Currently, there are two ways to create an object. You can create a new InstallScript Object project from the New Project dialog box or convert an existing InstallScript project into an InstallScript object.

Task

To convert an existing InstallScript project into an InstallScript object: 1. 2. 3. 4. 5.

On the File menu, click Save Project As. A Save As dialog box opens. Select a folder in which to create a copy of the project. Note that you cannot save the new object project in the same folder as the original project. In the File name box, type a name for the new project. In the Save as type list, select InstallScript Object Project (*.ism). Click Save.

An object project file (.ism file) with the name that you specified, and all project subfolders, are created in the location that you specified. That project opens in InstallShield.

Object Design
The purpose of an object is to install a discrete piece of functionality. For example, you may need to install the latest version of DirectX in order for your application to run. Rather than including all the necessary files separately in your installation project, you can include the DirectX object that comes with InstallShield. Imagine if this same object contained, for example, Visual Basic run-time .dll files and MDAC support. The object would be too large for your needs. It would install files that are not needed and would increase the time required for the installation process. Therefore, it is a good idea to streamline your object as much as possible. Do not try to include four different technologies in one object. Instead, create four separate objects.

InstallShield 2010 User Guide

ISP-1600-UG00

1083

Chapter 26: Creating InstallScript Objects

Objects follow the same structure as traditional installations, with one major differenceobjects do not support setup types. The highest level of organization in an object is the feature. Under features fall components. Additionally, objects do not support shell objects. If you would like to create shell objects from an object, you will need to do so via script. For more information, see Designing Objects.

Building an Object
Building an object is very similar to building an installation project. The easiest way to complete this task is to use the Release Wizard. The main difference between building an object and building an installation project is the fact that you do not need to specify a media type for an object. The wizard enables you to create media in the CD-ROM format only. For more information, see Building an Object from the User Interface.

Testing Objects
As with any other software endeavor, it is a good idea to test before you release to the public. Testing an object is easyjust create a standard installation project, add your object to it, build it, and run it. If it works as planned, you are ready to include your object in projects. If not, you will need to debug. See Testing and Debugging an Object. (Note that if you have the object project and its associated installation project open in separate instances of InstallShield and you modify and rebuild your object, you must close and reopen the associated installation project to incorporate those modifications.)

Distributing Objects
As used here, distributing an object does not mean including that object in an installation and installing the files from that object on a target machine. Instead, distributing an object refers to creating an installation that will make that object available on other users machines for use in their installation projects. Because you do not want to install the logic contained within an object, you cannot just add it to a component as you normally would. To help you register your objects, you can use the InstallShield Object Installer object. When you associate this object with a feature, you will be prompted to select the object from your local gallery that you would like to distribute. For more information, see Distributing an Object.

Designing Objects
The design of your objecthow components and file groups are arrangedaccompanied by the actual content of the object, is the single biggest hurdle you need to clear in order to have a stable, usable object. Several key areas are involved in designing an object. Each is described below.

Object Project Settings


Another difference between standard installation projects and objects lies in the project settings. Tabs for object creation are available on the Project Settings dialog box. On these tabs, you can define the language the object was developed in, the display name of the object, and the icon and help topic associated with the object. You can also can choose the kind of wizard interface, if any, that you would like to provide with your object. For more information, see Designing an Objects Wizard.

1084

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Managing Components
It is important that you take the time to properly divide your project into features. When designing your features, you need to plan for scenarios such as localization and conditional selection of features. For more information, see Designing Features for Objects.

Properties and Methods


Properties and Methods allow your users to interact with your object both during design time and run time. For more information, see Creating a Property and Creating a Method.

Creating a Design-Time Wizard


If you include any properties in your object, it is a good idea to provide a graphical interface so that users of your object can easily set those properties according to their needs. For more information, see Designing an Objects Wizard.

Creating the Runtime User Interface


Your object can display dialogs to the end users of installations that include the object. For information on creating a run-time user interface for your object and calling that interface from an installation that includes the object, see Creating the Objects Run-Time User Interface.

Localizing Your Objects Design Environment


The InstallShield interface is localized into English and Japanese. If you would like your object to be localized to these languages, see Localizing an Objects Design-Time Environment for more information.

Internationalizing Your Objects Run-Time Experience


If your application is designed to run in multiple languages, you will need to prepare an internationalized object. Installing language-specific files with an object differs slightly from standard installations. For more information, see Preparing an Object for Internationalization.

Making Your Object Compatible with Installations During Run Time


Your object should support all the operating systems and languages that are supported by any installation that includes the object. For more information, see Making Your Object Compatible with Installations During Run Time.

Designing Features for Objects


It is very important that you design your features well. A haphazard design of features may make it difficult for you to internationalize your object, selectively build files into the object, or conditionally install files. The following sections discuss a few guidelines that will help you accurately and efficiently design the feature layout of your object.

Selectively Installing an Objects Features


More often than not, you will want to place conditions on the selection of your objects features. For example, if you are creating an object that installs DCOM, you will want to check if the target system already has DCOM installed. If DCOM is present, reinstalling it would be a waste of time and may cause complications. To allow your objects features to be conditionally selected without unwanted effects on the project that includes the object, you must design your object according to the following guidelines.
InstallShield 2010 User Guide ISP-1600-UG00 1085

Chapter 26: Creating InstallScript Objects

Your object should never select its own features but only deselect them as needed. (An objects features are selected by default.) If your object selects one or more of its own features, that will cause the feature that includes the object to be selectedeven if that feature had previously been deselected by the end user or the projects internal logic. However, an objects deselecting its own features can also potentially cause a problem. The following paragraphs describe the problem and its solution. Suppose a project has two main features, A and B; B has no subfeatures but contains an object that, in turn, contains a feature, C. The InstallScript engine automatically deselects a feature when all its child features are deselected; so if feature C is not selected, the DCOM object will not be selected. If the DCOM object is not selected, feature B will not be selected. This behavior can cause problems if you have components associated with the main feature, in this case feature B. Because the feature that contains the components is not selected, the components directly associated with it will not be installed. If you want your component to be selected regardless of whether DCOM is selected, create a dummy feature within your object. If feature C is not selected, the dummy feature will still be selected. Since the dummy feature is selected, feature B will also be selected, and its component will be installed.

Installing Language Dependent Files


When developing an installation that targets multiple languages, you often have different language versions of the same file. If these files have a common name, you may encounter problems when InstallShield builds your installation and copies all of the installation files to the release. When the Release Wizard runs, it takes all of the files within a feature and stores them in the same directory on the release. If you have two files with the same name, but in separate components, one of those files will be overwritten if the two components belong to the same feature. To overcome this problem, you will need to create a separate feature for each language that you are targeting. For more information, see Preparing an Object for Internationalization.

Managing Object Files


When you build an object, all of its files are sent to the release in an uncompressed fashion. As a result, objects that contain multiple files with the same name can run into problems. If those files with the same name reside in the same feature, only one of them will end up in the release. The rest of the identically named files will be overwritten by the last one sent to the release. The main reason you would have files with the same name is for multiple language support. If that is the case, it is recommended that you create a separate feature for each language that you are supporting. For more information, see Preparing an Object for Internationalization. An additional layer of assurance can be added by defining a CD-ROM folder for every feature. By defining a CD-ROM folder, you are specifying where on the media the files for each feature will be sent. To define a CD-ROM folder, simply navigate to the Features view and enter a name for your folder in the CD-ROM Folder property. You must define a CD-ROM folder for every feature that contains a file with the same name as any file that the build places uncompressed in the Disk1 image folder (for example, the compiled script file Setup.inx, or any file that you placed in the Support Files/Billboards views Advanced Files nodes Disk1 subnode).

1086

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Designing an Objects Wizard


When you include properties in your object, it is a good idea to provide an interface for the users of your object to modify those properties. InstallShield can create a stock wizard for you based on the properties that you created, or you can create your own wizard using Visual Basic or Visual C++.

The InstallShield Stock Wizard


The InstallShield stock wizard is well-suited for in-house use of your object. The stock wizard displays all of your read-only properties and provides an edit field for your read/write properties. There are a few limitations of the stock wizard that can be overcome by using a custom wizard. For example, the stock wizard cannot be customized to fit your needs. You cannot pick and choose which properties you would like to display, nor can you customize the way the wizard looks. If you would like to create a customized interface for your wizard, you will need to create your own wizard in Visual C++ or Visual Basic. Another drawback of the stock wizard is that it does not provide support for array properties. Although the stock wizard has a few limitations, it is simple to implement and use.

Custom Wizards
If you need to provide a more professional look to your wizard, greater functionality, or customized display, you should create your own wizard using Visual C++ or Visual Basic. If you had these applications installed before you ran the InstallShield installation, the functionality to create an InstallShield object wizard will have been added. If you installed either of these programs after you installed InstallShield, you will need to run the InstallShield installation in maintenance mode in order to add the wizard functionality to your Visual Studio application. To create an InstallShield object wizard in Visual C++, click New on the File menu. Then, select InstallShield Object Wizard from the list of project types. In Visual Basic, select InstallShield Object Wizard from the New Project dialog box. When you create an InstallShield Object Wizard project in Visual C++, a new ATL-MFC based VC wizard framework project will be displayed. In Visual Basic, a template project will be created. Commented code within the each project type shows how to retrieve and save the object properties. For more information, see Custom Object Wizards. When you are finished creating your wizard, compile it.

Note: When you are distributing an object that has a custom wizard, make sure to include any dependencies for the wizard .dll file in the distribution installation project. Include the required files in a feature that you place above the InstallShield Object Installer feature in the Setup Design or Features view. You can avoid having dependencies by creating a static wizard .dll file.

Specifying Whether to Use the InstallShield Stock Wizard or a Custom Wizard

Task

To specify whether you want to use the InstallShield stock wizard or a custom wizard that you have created: 1. 2.

In the View List under Installation Information, click General Information. Do one of the following:

If you want to use the stock wizard: In the Object Wizard setting, select Use InstallShield Object Stock Wizard.
ISP-1600-UG00 1087

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

If you want to use your own custom wizard: In the Object Wizard setting, click the ellipsis button (...). The Browse for My Custom Object Wizard dialog box opens. Select the wizard file that you created for your object.

When you build a release for your project, the object will include the wizard that you specified.

Custom Object Wizards


To use your own wizard for your object, rather than InstallShields predefined stock wizard, you must supply an in-process COM server. This server must implement an IDevWizard interface. This interface is called by InstallShield when the object is first included in a project, and when Modify is selected from the context menu of an already included object in the Objects views Features pane. This interface is useful for displaying values of object properties and allowing those values to be changed. This interface must offer a Display method with two arguments:

An IDispatch pointer that provides access to the objects properties. A Boolean return value that indicates whether changes should be made to an existing objects properties or, if there is no existing object, whether a new object should be created.

In C++, this interface is defined as follows:


interface IDevWizard : IDispatch { HRESULT Display([in] IDispatch *pObject, [out, retval] VARIANT_BOOL* Confirmed); };

The server can also implement an ISetupDesignObjectBuild interface. The InstallShield release builder calls this interface to determine which of the objects features should be excluded from the build of a project containing the object. (If this interface is not implemented, all of the objects features are included in the build.) This interface is useful for excluding from the built project those object features that will never be installed because of selections that the installation author made in the objects wizard. For example, if your object offers optional support for various drivers, and the project author chooses not to include some of those drivers, the features containing those drivers can be excluded from the built project. This interface, if implemented, must offer an IsIncluded method with three arguments:

An IDispatch pointer that provides access to the objects properties. A string value specifying the feature, for example, Feature 1\Subfeature 1A. A Boolean return value that indicates whether the component should be included in the build.

In C++, this interface is defined as follows:


interface ISetupDesignObjectBuild : IDispatch { HRESULT IsIncluded([in] IDispatch *pObject, [in] BSTR FeaturePath, [out, retval] VARIANT_BOOL* Included); };

1088

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Note: When you are distributing an object that has a custom wizard, make sure to include any dependencies for the wizard .dll file in the distribution installation project. Include the required files in a feature that you place above the InstallShield Object Installer feature in the Setup Design or Features view. You can avoid having dependencies by creating a static wizard .dll file.

Localizing an Objects Design-Time Environment


For each of the languages in which the InstallShield interface is localized, you can specify a different display name, short name, .htm file, and icon for your object. You perform this localization on the Project Settings dialog boxs Language-Specific Object Properties tab. The first option on the Language-Specific Object Properties tab is the IDE Language list box. Select the first language you would like to support and, if it is not English, uncheck the Use Default box. Then, fill in the rest of the Language-Specific Object Properties Tab. If you are only supporting one language, you can close this dialog box. However, if you plan on supporting additional languages, you can select the next language from the list and provide the necessary information for that language.

Note: If you create your own wizard, you will need to provide run-time strings in the wizards executable file for each language that you are supporting.

Preparing an Object for Internationalization


Designing an object that installs different files based on the target machines language is similar to designing an installation with the same functionality. One vital difference between objects and standard installation projects makes internationalizing your object slightly more complex than installations. This differencethe fact that the release builder places an object projects files uncompressed in the disk imagerequires you to handle your internationalized files at the feature level. The following sections discuss the steps and strategies required to prepare your object for internationalization.

Adding Languages to Your Object


If you have the Premier edition of InstallShield, you can associate any of the supported languages with your object through the Language tab of the Project Settings dialog box.

Designing Language-Specific File Groups


The most important step in creating an internationalized object is separating your language-specific data into components. This process is best illustrated with an example. If you are supporting three languages, English, French, and German, and you would like English to be the default language, you should have a minimum of four components. The first component will be for English-only files. The Language property for this component should be set to English and all the languages that you are not directly supporting. By doing this, you are enabling your object to be installed on any language, not just the three you support. If the target machine is running in a language other than one of your three supported languages, the English files will be installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1089

Chapter 26: Creating InstallScript Objects

For the French and German components, simply add the French and German files to their respective components. Set the language of the French component to French and set the language of the German component to German. Finally, add your language-independent files to another component. Mark this component as language independent. The table below should help to illustrate the layout of your four file groups.
Table 26-1: Sample File Group Layout Language of files All English-specific files All French-specific files All German-specific files All language-independent files Component language English + all unsupported languages French German Language independent

Designing Language-Specific Features


If you would like to include language-specific data in your object, you need to create a feature for each of the languages that you are targeting. This step may seem superfluous, since you cannot actually define a features language. However, due to the way files are stored in the disk image, you cannot add components from multiple languages to one feature. When the Release Wizard runs, it takes all the files within a feature and stores them in the same directory on the release. If you have two files with the same name, but in separate components, one of those files will be overwritten if the two components belong to the same feature. To overcome this problem, you will have to make a separate feature for each language that you are targeting. Then, simply add the corresponding components.

Making Your Object Compatible with Installations During Run Time


Your object should support all of the operating systems and languages that are supported by any installation that includes the object. Operating system mismatches could cause the installation to not perform correctly; language mismatches can confuse the installations end users. To help avoid such mismatches, do one of the following:

Add support to your object for all operating systems and languages that are supported by InstallShield. To add operating system support to your object project, go to the General Information view and configure the Platform Filtering setting. To add language support to your object project, see Preparing an Object for Internationalization. Include, with the object, documentation that informs installation authors which operating systems and languages are supported. To do this, create an .htm file that contains the necessary information, then on the Project menu, click Settings. Click the Language-Specific Object Properties tab, and specify the .htm file in the HTML Help field.

Properties and Methods


By definition, properties are used to describe attributes associated with a data structure, and methods are procedures that are executed when an object receives a message.

1090

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Throughout InstallShield, you can add, create, and set properties associated with different aspects of your installation. Properties can be useful in object scripts . Methods, like properties, allow your object to interact with the installation that contains it. Methods, for all practical purposes, are functions. As a matter of fact, the only difference between a method and a function is the fact that a method is declared with the method keyword. Methods allow you to expose your objects functions to other objects and installations.

Creating a Property
Properties can be useful in object scripts. In an object script, properties enable your objects users to change certain settings of your object during either design time through the use of an InstallShield Object Wizard or during run time by passing parameters through script. Common properties include passing error messages from the object to the installation, getting the user name, or any information that your object needs during either run time or design time. For examples of how properties are used, see the inline help for any of the InstallShield objects included in your Objects view. Note the following details about properties:

If a Boolean propertys value is set to TRUE, either by the object script or the script of the installation that includes the object, subsequent checks of the propertys value will show the value to be 1 rather than 1. You cannot pass a LIST variable between an object and an installation script; you can, however, pass a string array.

Creating a Property

Task

To create a property: 1. 2. 3. 4.

Open the InstallScript view. In the InstallScript explorer, right-click Properties and click Add New Property. The Add New Property dialog box opens. Define your propertys settings. Click OK.

The Add New Property dialog box adds the following to your script:

A property declaration with the following syntax:


property(<procedures>) <property data type> <property name> ( ); <procedures> is get

for a read-only property, put for a write-only property, and get,put for a read/ write property. For example:

property(get,put) STRING MyProperty ( );

You can specify arguments for your property by adding the arguments data types inside the parentheses after the property name. For example:
property(get,put) STRING MyProperty ( NUMBER );

InstallShield 2010 User Guide

ISP-1600-UG00

1091

Chapter 26: Creating InstallScript Objects

If you add argument data types to the property declaration, you must add corresponding argument variables to the definitions of the propertys procedure functions.

A declaration of a variable to store the propertys value within the script. For example:
STRING m_strMyProperty;

If you specify an array property in the Add New Property dialog box (by selecting the Array check box), two variables are declared: a variable of type VARIANT that stores the propertys value and an unsized array variable that is used in the InitProperties function block to initialize the propertys value. For example:
STRING arrayMyArrayProperty(); VARIANT m_arrayMyArrayProperty;

A statement, in the InitProperties function block, that initializes the variable that stores the propertys value. For example:
m_strMyProperty = "My Default Value";

If you specify an array property in the Add New Property dialog box (by selecting the Array check box), the variable that stores the propertys value is assigned the value of an array variable. For example:
m_arrayMyArrayProperty = arrayMyArrayProperty;

To initialize elements of the array property to non-null or nonzero values, add assignment statements for the array variables elements before the statement above. For example:
/* Resize the array variable, which is declared with no size. */ Resize ( arrayMyArrayProperty , 3 ); /* Assign values to the arrayMyArrayProperty(0) arrayMyArrayProperty(1) arrayMyArrayProperty(2) array variable's elements. */ = "zero"; = "one"; = "two";

m_arrayMyArrayProperty = arrayMyArrayProperty;

A function call, in the ReadProperties function block, to retrieve the property values stored in the property bag object. This call has the following syntax:
<ReadxxxxProperty> ( PropertyBag, "<property name>", <property value variable> );

<ReadxxxxProperty> is the ReadxxxxProperty function that is appropriate to the data type of the propertys value. For example:
ReadStringProperty( PropertyBag, "MyProperty", m_strMyProperty );

A function call, in the WriteProperties function block, to save the property values to the property bag object. This call has the following syntax:
<WritexxxxProperty> ( PropertyBag, "<property name>", <property value variable> );

<WritexxxxProperty> is the WritexxxxProperty function that is appropriate to the data type of the propertys value. For example:
WriteStringProperty( PropertyBag, "MyProperty", m_strMyProperty );

1092

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

A function block or blocks defining the propertys proceduresthat is, defining the actions that are executed when the propertys value is read or written to by a project containing the object or the objects design-time wizard (if any) A get_<property name> function is defined for a read-only or read/write property; a put_<property name> function is defined for a write-only or read/write property. For example:
function STRING get_MyProperty() begin return m_strMyProperty; end; function void put_MyProperty(newVal) begin m_strMyProperty = newVal; end;

If you specify arguments for your property (by adding the arguments data types to the property declaration, inside the parentheses after the property name), you must add corresponding argument variables to the definitions of the propertys procedure functions. For example:
function STRING get_MyProperty( szAddedArgument ) function void put_MyProperty( szAddedArgument, newVal )

When you are adding arguments to the put_ function, place them before the newVal argument. The newVal argument takes the value that is written to the property by an assignment statement in the calling project or by the objects design-time wizard (if any).

Note: The get_ and put_ functions must not be renamed; if they are renamed, your script will not function properly.

Creating a Structure-Valued Property


To create a property whose value is a data structure, add the following to your object script:

A global declaration of the data structure; for example:


typedef STRUCT begin NUMBER Mem1; NUMBER Mem2; end;

A declaration of a read-only property whose data type is OBJECT. (To write values to the property, you will define a method.) For example:
property(get) OBJECT StructProp();

Place this declaration in the Properties Section block of the object script.

A declaration of a variable to store the propertys value within the object script. For example:
STRUCT m_structStructProp;

Place this declaration in the Local Variables Section block of the object script.

InstallShield 2010 User Guide

ISP-1600-UG00

1093

Chapter 26: Creating InstallScript Objects

A declaration of a method with an argument of the appropriate data type corresponding to each member of the data structure. For the STRUCT structure defined above, the following is an example of an appropriate method declaration:
method NUMBER SetStructProp(NUMBER, NUMBER);

Place this declaration in the Methods Section block of the object script.

Statements, in the InitProperties function block, that initialize the members of the variable that stores the propertys value. For example:
m_structStructProp.Mem1 = 3; m_structStructProp.Mem2 = 5;

Function calls and statements, in the ReadProperties function block, to retrieve the property member values stored in the property bag object. The function calls have the following syntax:
<ReadxxxxProperty> ( PropertyBag, "<storage name for member value>", <member value variable> );

<ReadxxxxProperty> is the ReadxxxxProperty function that is appropriate to the data type of the property members value. For example:
ReadNumberProperty(PropertyBag, "StructProp_Mem1", nStructPropMem1);

For each such function call, add below it a statement that sets a member of the property variable equal to the value that the function retrieved. For example:
m_structStructProp.Mem1 = nStructPropMem1;

Function calls, in the WriteProperties function block, to save the property member values to the property bag object. The function calls have the following syntax:
<WritexxxxProperty> ( PropertyBag, "<storage name for member value>", <property variable member> );

<WritexxxxProperty> is the WritexxxxProperty function that is appropriate to the data type of the property members value. For example:
WriteNumberProperty(PropertyBag, "StructProp_Mem1", m_structStructProp.Mem1);

A get_<property name> function block defining the propertys get procedurethat is, defining the actions that are executed when the propertys value is read by a project containing the object or by the objects design-time wizard (if any). For example:
function OBJECT get_StructProp() begin return m_structStructProp; end;

A function block defining the method that you declared; this method sets the members of the property variable equal to the arguments passed to the method. For example:
function NUMBER SetStructProp( nMem1, nMem2 ) begin m_structStructProp.Mem1 = nMem1; m_structStructProp.Mem2 = nMem2; end;

1094

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Passing a String Array Between an Object and an Installation


To pass a string array between an object and an installation:

Add the following to the object script:

A declaration of a read-write property whose data type is variant. For example:


property(get,put) variant Test();

Place this declaration in the Properties Section block of the object script.

Declarations of the necessary variables, including a variable to store the propertys value within the object script:
STRING arrayTest(); variant m_arrayTest;

Place these declarations in the Local Variables Section block of the object script.

Statements, in the InitProperties function block, that initialize the members of the variable that stores the propertys value. For example:
m_arrayTest = arrayTest;

A function call, in the ReadProperties function block, to retrieve the value stored in the property bag object. For example:
ReadArrayProperty(PropertyBag, "Test", m_arrayTest);

A function call, in the WriteProperties function block, to save the value to the property bag object. For example:
WriteArrayProperty(PropertyBag, "Test", m_arrayTest);

A function block defining the propertys get procedurethat is, defining the actions that are executed when the propertys value is read by a project containing the object or by the objects design-time wizard (if any). For example:
function variant get_Test() begin return m_arrayTest; end;

A function block defining the propertys put procedurethat is, defining the actions that are executed when the propertys value is written to by a project containing the object or by the objects design-time wizard (if any). For example:
function void put_Test(newVal) begin m_arrayTest = newVal; end;

Add the following to the installation script:

In each function block in which you will read a string array from or write it to the object, declarations of an object variable and a string array. For example:
OBJECT oObject; string szTest(3);

InstallShield 2010 User Guide

A call to GetObject to get a reference to the object. For example:


ISP-1600-UG00 1095

Chapter 26: Creating InstallScript Objects

set oObject = GetObject("Object"); if (!IsObject(oObject)) then MessageBox( "Failed to get object reference.", INFORMATION ); abort; endif;

To set the value of the objects string array property, use code like the following:
oObject.Test = szTest;

To retrieve the value of the objects string array property, use code like the following:
szTest = oObject.Test;

Accessing an Objects Properties


There are two different points in time when your properties can be changed, after you have compiled your object. The first is when your object is added to an installation project. If you provide a wizard interface for your object, its read/write properties can be changed during an installations design time. The second way to change a property is during run time through script. In order to allow the users of your object to access its properties during run time, you need to document those properties in the objects help topic. With that documentation, your users should be able to change those properties as needed.

Accessing a Property from the InstallShield Interface


When you access an objects properties from within your installation project, you are actually running portions of that objects script right in the InstallShield interface. For example, when you associate an object with your installation project, the objects properties are read with the get_PropertyName function that is built into every object containing properties. Alternatively, when you change an objects properties through the objects wizard, the put_PropertyName function is called, where PropertyName is the name of the property that you are changing.

Accessing a Property Through Script


To access an objects properties, you must first get a reference to that object. Then, you need to specify which of the objects properties you would like to access. The following code illustrates how to return the Access 97 objects status property:
function OnBegin() /* Declare an object variable to hold a reference to the object. */ OBJECT oObject; begin /* Get a reference to an Access 97 object named "New Access 97 1".*/ set oObject = GetObject("New Access 97 1"); /* Check the Status.Number property. */ if oObject.Status.Number != OBJ_STATUS_SUCCESS then /* Respond to the error as appropriate for your setup. For example, you can display the Status.Description text and abort the setup. */ MessageBox ( oObject.Status.Description, SEVERE ); abort; endif; end;

1096

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

When you change a property at run time, that information is not stored for future uses of the installation. For example, if the installation is later run in maintenance mode, that property will not retain the value it was given during the initial installation. If a Boolean propertys value is set to TRUE, either by the object script or the script of the installation that includes the object, subsequent checks of the propertys value will show the value to be 1 rather than 1.

Tip: If you simply want to retrieve the current status of an object (that is, the current value of Status.Number) in the InstallScript Object, you can use the GetStatus function. For more information, see GetStatus.

Creating a Method
Methods, like properties, allow your object to interact with the installation containing it. Methods, for all practical purposes, are functions. As a matter of fact, the only difference between a method and a function is the fact that a method is declared with the method keyword. Methods allow you to expose your objects functions to other objects and setups.

Creating a Method

Task

To create a method: 1. 2. 3. 4.

Open the InstallScript view. In the InstallScript explorer, right-click Methods and click Add New Methods. The Add New Methods dialog box opens. Define your methods settings. Click OK.

The Add New Method dialog box adds the following to your object script:

A method declaration with the following syntax:


method <method data type> <method name> (<argument data types>);

For example:
method STRING MyMethod( NUMBER, BOOL );

A function block defining the method. For example:


function STRING MyMethod( /*NUMBER*/ arg1, /*BOOL*/ arg2 ) begin end;

InstallShield 2010 User Guide

ISP-1600-UG00

1097

Chapter 26: Creating InstallScript Objects

Using Methods
An objects methods can be accessed only at run time. You can call an objects methods from within your installation project or from another object. To gain access to an objects methods, you first need to get a reference to that object. The following code snippet taken from the BDE 5.0 object demonstrates how to access an object from within your installation script. IsBDERunning - This method returns TRUE if the BDE is running on the target system and FALSE if not. Here is a brief example of this method:
function OnBegin() /* Declare an object variable to hold a reference to the object.*/ OBJECT oObj; STRING szDir; begin /* Get a reference to an BDE 5.0 object named "New BDE 5.11 1". */ set oObj = GetObject("New BDE 5.11 1"); while (oObj.IsBDERunning() ) szMsg = "Borland Database Engine is running, please shut down BDE."; nvResult = SprintfBox( MB_RETRYCANCEL, "BDE in use", szMsg ); if ( nvResult = 2 ) then abort; endif; endwhile; end;

Object Status Properties


Every InstallScript objectwhether predefined or user-definedhas the following read-only properties:

Status StatusBase StatusStruct

StatusBase and StatusStruct are intended only for advanced users. See the following sections for information on these properties.

Status
The Status property is a structure with the following properties as members:
Table 26-2: Members of the Status Property Property Status.Number Status.Description Status.szSource Description The numeric object status. A string describing the objects status. For an error, the source of the error; typically the name of the object as read from one of the objects string entries. For an error, the name of the script file that was executing when the error occurred.

Status.szScriptFile

1098

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Table 26-2: Members of the Status Property (cont.) Property Status.nScriptLine Description For an error, the line of script that was executing when the error occurred. For an error, the error return code.

Status.nScriptError

In an object script, you can set these values by calling SetStatusEx. When you query the status of an object, by default it first queries the status of its subobjects (if any); if one or more of an objects subobjects report an error (that is, have a Status.Number property that is less than OBJ_STATUS_SUCCESS), the value of the first failing objects status property is returned as the value of the parent objects status. A user-defined objects script can override this default behavior by explicitly defining a get_Status function (with no arguments). You can check the value of an objects Status.Number property to determine whether the object can be successfully installedand, if not, what the cause isand display the value of Status.Description to your end user. You can perform this check at any point in a setup; it is recommended that you at least check for success or failure in the OnBegin event handler, as in the following example:
function OnBegin() /* Declare an object variable to hold a reference to the object. */ OBJECT oObject; begin /* Get a reference to an Access 97 Object named "New Access 97 1". */ set oObject = GetObject("New Access 97 1"); /* Check the Status.Number property. */ if oObject.Status.Number != OBJ_STATUS_SUCCESS then /* Respond to the error as appropriate for your setup. For example, you can display the Status.Description text and abort the setup. */ MessageBox ( oObject.Status.Description, SEVERE ); abort; endif; end;

The following table lists those possible values of Status.Number and Status.Description that are common to all objects. Some objects also have possible values of these properties that are unique to that object. For lists of those possible values, see the individual objects help page (by selecting the object in the Objects view, or in the Setup Design or Features view under its associated feature).
Table 26-3: Possible Values of Status.Number and Status.Description that Are Common to All Objects oObject.Status.Number OBJ_STATUS_SUCCESS OBJ_STATUS_OSINVALID OBJ_STATUS_DISKSPACE OBJ_STATUS_LANGUAGESUPPORT OBJ_STATUS_NOTADMINISTRATOR oObject.Status.Description The operation was successful. Incorrect target operating system. Not enough disk space. Language not Supported. Administrator rights required.

InstallShield 2010 User Guide

ISP-1600-UG00

1099

Chapter 26: Creating InstallScript Objects

Table 26-3: Possible Values of Status.Number and Status.Description that Are Common to All Objects (cont.) oObject.Status.Number OBJ_STATUS_SETKEY OBJ_STATUS_GETKEY OBJ_STATUS_SETVALUE OBJ_STATUS_GETVALUE OBJ_STATUS_SETTARGET OBJ_STATUS_LOADDLL OBJ_STATUS_FILELOCKED OBJ_STATUS_FILENOTFOUND OBJ_STATUS_FILECOPY OBJ_STATUS_FILELAUNCH OBJ_STATUS_SETLOGDATA OBJ_STATUS_GETLOGDATA OBJ_STATUS_INITVARS oObject.Status.Description Unable to set registry key. Unable to get registry key. Unable to set registry value. Unable to get registry value. Unable to set script-defined folder value. Unable to load DLL. A required file was locked. File not found. File copy failed. Failed to launch file. Unable to set data in setup log. Unable to get data from setup log. Unable to initialize variables.

StatusBase
The StatusBase property is a structure with the same members as the Status property. This property is typically used only by objects that have a customized get_Status method; except for special cases a setup should not query this property directly, as it could bypass any custom status handling that the object provides. The StatusBase property enables you to use an objects default status handling, including checking the statuses of the objects subobjects. If you have created a custom get_Status function for your object, you can use the StatusBase property within the get_Status function to use the default object status handling, as in the following example:
function object get_Status() object oThis; begin // Do some custom handling here. // Get a reference to this object. set oThis = GetObject( "" ); // Fail if this is not an object. if( !IsObject( oThis ) ) then return NULL; endif; // Return the standard status information. return oThis.StatusBase; end;

1100

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

StatusStruct
The StatusStruct property is a structure with the same members as the Status property. This property is typically used only by objects that have a customized get_Status method; except for special cases, an installation should not query this property directly because it could bypass any custom status handling that the object provides. The StatusStruct property allows you to bypass the default object status handling. You can use this property if you want your object to ignore subobject status values, as in the following example:
function object get_Status() object oThis; begin // Get a reference to this object. set oThis = GetObject( "" ); // Fail if this is not an object. if( !IsObject( oThis ) ) then return NULL; endif; // Return the status information directly. return oThis.StatusProp; end;

Creating the Objects Run-Time User Interface


Your object can display a dialog sequence to end users of an installation that includes the object. To define this dialog sequence, use the object scripts UI event handlersOnFirstUIBefore, OnFirstUIAfter, OnMaintUIBefore, and OnMaintUIAfter. (By default, these handlers do not display any dialogs in an object project.) In a project containing objects with dialog sequences, you have two alternatives for displaying the objects dialogs:

Show all object dialog sequences at one point in the project by calling the ShowObjWizardPages function. Show each objects dialog sequence whenever you choose by calling any or all of the objects ShowxxxxxUIyyyyy methods (that is, ShowFirstUIBefore, ShowFirstUIAfter, ShowMaintUIBefore, and ShowMaintUIAfter).

The ShowObjWizardPages Function


The ShowObjWizardPages function is called by default in each UI event handler of an InstallScript installation project created with InstallShield X, InstallShield DevStudio, or InstallShield Professional 6.1 or later; you can study the use of this function in the default event handlers as a guideline. Calling ShowObjWizardPages in a projects UI event handler displays each included objects corresponding UI code. For example, calling ShowObjWizardPages in a projects OnFirstUIBefore event handler displays each included objects OnFirstUIBefore code. The included objects UI event handlers are executed in the order in which the objects appear in the projects Components view. The end user should be able to advance through the installations entire dialog sequence by using the Next and Back buttons. To allow this, do what is done in the default UI event handler code: assign each dialog functions return value (NEXT or BACK) to the variable nResult, and call ShowObjWizardPages as follows:

InstallShield 2010 User Guide

ISP-1600-UG00

1101

Chapter 26: Creating InstallScript Objects

nResult = ShowObjWizardPages(nResult);

The ShowxxxxxUIyyyyy Methods


All user-created objects internally support the methods ShowFirstUIBefore, ShowFirstUIAfter, ShowMaintUIBefore, and ShowMaintUIAfter. When you call an objects ShowxxxxxUIyyyyy method, the objects corresponding UI code is executed. For example, the following call executes the objects OnFirstUIBefore code:
nResult = oObject.ShowFirstUIBefore(nResult);

As with the ShowObjWizardPages function, enable end-user navigation by assigning each dialog functions return value to nResult, and calling ShowxxxxxUIyyyyy methods as in the preceding example.

Object UI Event Handler Code


Create object UI event handler code by modifying the default code. This default code, although it does not display any dialogs, contains the code structure that is necessary to enable end-user navigation.

To display a single dialog, place the dialog function call immediately after either the FIRST_DIALOG or the LAST_DIALOG label. To display two dialogs, place the first dialog function call immediately after the FIRST_DIALOG label and the last dialog function call immediately after the LAST_DIALOG label. To display more than two dialogs, place the first dialog function call immediately after the FIRST_DIALOG label and the last dialog function call immediately after the LAST_DIALOG label. For each intermediate dialog, place the dialog function call in a code block structured like the FIRST_DIALOG and LAST_DIALOG blocks.

In each of the above cases, assign the return value from the dialog function call to the variable
nDirection.

Unsupported Features in Objects


Due to both the purpose and implementation of objects, certain features are not supported when you are creating your object in the InstallShield interface. The following list outlines these unsupported features. For more information on the different design philosophies between objects and installation projects, see Designing Objects.
Table 26-4: Features that Are Not Supported in Objects Unsupported Feature Setup Types

Description Setup types are not supported in objects. If you are creating an object out of an existing installation project, your setup types will be disregarded. When creating an object, you do not have any choices as to the type of media that you would like to build. All objects will be built uncompressed with the CDROM option. The Shortcuts view is not supported in objects. In order to create a shortcut or folder within an object, you need to do so from the script with the AddFolderIcon, CreateProgramFolder, or CreateDir function.

Media Types

Shortcuts and Folders

1102

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Table 26-4: Features that Are Not Supported in Objects (cont.) Unsupported Feature Support Files

Description Where standard installations allow you to specify splash screens; billboards; and language-dependent, language-independent, and advanced files in the Support Files view, objects allow only language-dependent and languageindependent files.

Product Registry Keys Windows Logo Guideline: When any installation created with InstallShield is run, product registry keys are automatically created on the target machine. The product registry keys, which are created at HKLM\SOFTWARE\<Company name>\<Product name>\<Version> are required for Microsoft Logo compliance. Therefore, if you would like to have these registry keys created, you need to add them yourself.

Building an Object
Building an object is essentially the same as building a standard installation. To build your object from the InstallShield user interface, you will need to use the Release Wizard, which prompts you for all the information necessary to build your object.

Building an Object from the User Interface

Note: An object must be compiled using the library files Ifxobject.obl and Isrt.obl. These files are automatically referenced by your object project if you created your project by using the New Project dialog boxs InstallScript Object project type or the Save As command on the File menu. If you created your object project in some other way, click Settings on the Build menu. Then check the Libraries (.obl) box on the Compile-Link tab to make sure that Ifxobject.obl and Isrt.obl are listed there.

Building an object is essentially the same as building a standard installation. To build your object, you will need to use the Release Wizard, which prompts you for all the information needed to build your object. The Release Wizard displays the following panels for object projects:
Table 26-5: Object-Specific Panels in the Release Wizard Release Wizard Panel Specify a Release Panel General Options Panel Description Enables you to create a new release or select an existing release. Lets you specify preprocessor variable definitions and advanced release properties.

Modify Property Dialog Box/ Lets you select the operating systems that your object supports. Release WizardPlatforms Panel

InstallShield 2010 User Guide

ISP-1600-UG00

1103

Chapter 26: Creating InstallScript Objects

Table 26-5: Object-Specific Panels in the Release Wizard (cont.) Release Wizard Panel Setup Languages Panel Description Displayed if more than one language is selected in the Project Settings property sheets Language page. Lets you select the languages that your object will support, a default object language, and whether to let end users select the language in which the object runs. Lets you specify which features are included in the built release. Lets you digitally sign your object. Digitally signing your object assures end users that the code within your object has not been modified or corrupted since publication. Lets you copy disk image folders to a folder or FTP site, or execute a batch file, after the next time you build the release. Displays a summary of release information.

Features Panel Digital Signature Panel

Postbuild Options Panel

Release Settings Summary Panel

Note: When you build an object, that object is automatically added to the Objects view and can be used in any installation that you create from that point on. If a previous version of that object already exists in the gallery, it will be overwritten with the newly built object. If you build more than one media, the latest media will be copied to your Objects view.

Compiling and Building an Object from the Command Line


Compiling and building an object from the command line is handled in an identical fashion to compiling and building an installation from the command line. To learn how to compile and build your object from the command line, see Using ISCmdBld.exe to Build a Release from the Command Line.

Testing and Debugging an Object


Testing your object is similar to testing a standard installation. The main difference lies in the fact that you must include your object in a standard installation in order to test it. This means you must first build your object, include it in an installation project, and then build and run the installation project. The following methods of debugging are available to you when developing your object.

Note: If you have the object project and its associated installation project open in separate instances of InstallShield and you modify and rebuild your object, you must close and reopen the associated installation project to incorporate those modifications.

Script Debugger
The Script Debugger enables you to step through the code of your installation as it runs. To debug an object with the Script Debugger, you must include that object in a standard installation project, compile, and debug. Alternatively, you could design your object as a standard installation, test and debug it, and then convert it to an object through the following procedure.

1104

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Task

To convert an object: 1. 2. 3. 4. 5.

On the File menu, click Save As. The Save As dialog box opens. Select a folder in which to create a copy of the project. Note that you cannot save the new object project in the same folder as the original project. In the File name box, type a name for the new project. In the Save as type list, select InstallScript Object Project (*.ism). Click Save.

An object project file (.ism file) with the name that you specified, and all project subfolders, are created in the location that you specified. That project opens in InstallShield. For additional information, see InstallScript Debugger.

Note: When you are designing your object as a standard installation with the intent to later convert it to an object, be aware of the following restrictions: An object cannot contain setup types; any setup types that you define or setup type functions that you call in the project are ignored when it is converted to an object project. There are a number of functions and events that are not supported in objects. All information on built media will be lost when the project is converted; you will need to rebuild the project.

Debugging an Object on Another Machine


Generate inline debugging information is an option on the Build Settings dialog boxs Compile/ Link tab. It enables you to debug your object on a machine other than the machine on which the object was created. If you do not use this option, debugging information is placed in a file named Setup.dbg, and its location is stored in the header of Setup.inx. This scheme works fine if you debug the script on the same machine on which you did the compilation. However, on a different machine, the .dbg file may not be stored in the same location. The Generate inline debugging information option was designed to alleviate this problem. If you use this option, all debugging information is stored in Setup.inx. This way, the installation never needs to search for the debugging information. It is recommended, for two reasons, that you clear the Generate inline debugging information option before compiling the Setup.inx file that you ship with your final product. First, the debugging information increases the size of Setup.inx and may cause the installation to run more slowly. Second, inline debugging information will make it easier for others to reverse engineer your code.

Cabinet File Viewer


The Cabinet File Viewer enables you to peer into your compiled object or installation file. With this tool, you can see which files, components, features, and registry entries were built into the object. To view the contents of an object associated with an installation project, click Expert Mode on the Cabinet File viewers View menu. For more information, see the Cabinet File Viewer Help File, which is accessible from within the Cabinet File Viewer.

InstallShield 2010 User Guide

ISP-1600-UG00

1105

Chapter 26: Creating InstallScript Objects

Task

To launch the Cabinet File Viewer from within InstallShield:

On the Tools menu, point to InstallScript and click Cabinet File Viewer.

Log File Viewer


The Log File Viewer enables you to view the installation log file. An installation log file is created when your installation is first run, and it is maintained when your installation is running in maintenance mode. When the installation is run to uninstall your application, the log file is removed with the application. During maintenance mode and uninstallation, you can use the log file to determine the current state of each component in the installation, as well as any operations that were logged for specific components. Logged operations include folder creation, file transfer, registry entry creation, .ini file changes, and custom operations defined in the installation script. Logged operations that are not related to a specific component will also be included in the log file. The installation log file is named Setup.ilg and is created automatically during the normal file transfer of the installation in the installed Disk 1 location. This location defaults to InstallShield Program Files Folder\Setup GUID, but you can change the location by changing the value of the DISK1TARGET system variable before the Move Data event in the installation script.

Task

To launch the Log File Viewer from within InstallShield:

On the Tools menu, point to InstallScript and click Log File Viewer.

Debugging a Custom Design-Time Wizard


If you have created a custom design-time wizard for your object, you may need to debug that wizard.

Task

To debug the wizard, do the following: 1. 2. 3.

From within your development environment, launch a debug version of the wizard, setting breakpoints as desired. In the InstallShield interface, insert the object in a feature of another project to launch the objects wizard. If your development environment is Microsoft Visual Basic, you must also do the following:
a. b.

Minimize the interface. A Server Busy message box opens. (You may need to click the title bars minimize button a few times before the message box opens.) In the Server Busy message box, click the Switch To button or press ENTER.

1106

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Distributing an Object
The major advantage of objects is the fact that anyone creating an InstallShield installation can include your object in their installation with a minimal amount of work, as long as your object is installed and registered on their machine. The easiest way to register an object is to use the InstallShield Object Installer. This object enables you to package the object that you would like to distribute, and it will register that object on the target machine, if InstallShield X or later, InstallShield DevStudio, or InstallShield Professional 6.1 or later is present.

Task

To add the InstallShield Object Installer to your installation: 1. 2. 3.

Open the Objects view. The InstallShield Objects/Merge Modules pane lists all of the available objects. In the Features pane, select the feature to which you want to add the InstallShield Object Installer. Right-click InstallShield Object Installer and click Add to selected feature.

An associated wizard appears to guide you through the customization process.

Note: The object that you would like to distribute must be present in your InstallShield Object Gallery. If it is not present, you need to register that object. To learn how, see Registering Objects in InstallScript Projects.

Object Scripts
InstallShield enables you to extend object support by defining additional functions and constants that are not supported in object projects by adding scripts in the InstallScript view. Essentially, you can write scripts that enhance the functionality supported by the InstallShield interface.

Functions Not Supported in Object Projects


The following is a list of InstallScript functions that are not supported in object projects.

OnFileReadOnly OnRemovingSharedFile OnFileLocked OnNextDisk OnMD5Error OnFileError OnComponentError SdSetupType SdSetupTypeEx


ISP-1600-UG00 1107

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

SetupType ComponentSetupTypeSet ComponentSetupTypeEnum ComponentSetupTypeGetData

Constants Not Supported in Object Projects


The following is a list of InstallScript constants that are not supported in object projects.

IFX_ONNEXTDISK IFX_ONNEXTDISK_MSG IFX_MAINTUI_MSG IFX_ONMAINTUI_CAPTION IFX_SDFINISH_MSG1 IFX_SDFINISH_MAINT_MSG1 IFX_SDFINISH_MAINT_TITLE

Functions Supported Only in Object Projects


The following is a list of InstallScript functions supported only in object projects.

SetStatus WizardDirection

Adding a ScriptDefinedVar Property to Your Object


Several of the objects included in InstallShield have a ScriptDefinedVar property. This property enables you to set at run time the value of a script-defined variable that you used to define a path (for example, <MYSERVICEFOLDER>\MyService.exe) at design time. For example, main script code like the following lets the end user specify the value of <MYSERVICEFOLDER>:
/* Get a reference to the object that is named "New Custom Object 1" in the Components pane. */ set oObj = GetObject("New Custom Object 1"); /* Get folder selection from end user. */ svDir = TARGETDIR; AskDestPath ( "" , "Specify folder for service files:" , svDir , 0 ); /* Tell the object the desired value of <MYSERVICEFOLDER>. */ oObj.ScriptDefinedVar("<MYSERVICEFOLDER>") = svDir;

1108

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 26: Creating InstallScript Objects

Task

To include the ScriptDefinedVar property in your object script: 1. 2. 3.

Open the InstallScript view. In the InstallScript explorer, right-click Properties and click Add New Property. The Add New Property dialog box opens. Make the following entries:
c.

In the Property Name box, type the following:


ScriptDefinedVar

d. e.

In the Data Type list, select String (since you will be writing string data to the property). In the Access Method list, select Read/Write. (You can select Write Only instead if you are certain users of the object will never want to check the current value of the property from their main script.)

4. 5.

Click OK to close the dialog box and automatically add all the necessary code to your object script. Make the following changes to the property script code that was automatically added:
a. b.

Open the InstallScript view. In the InstallScript explorer, under Properties, double-click ScriptDefinedVar to move the script editor panes insertion point to the ScriptDefinedVar declaration. Add a string parameter to the declarationthat is, change the declaration from this:
property(get,put) STRING ScriptDefinedVar();

to this:
property(get,put) STRING ScriptDefinedVar( STRING );

c.

In the InstallScript explorer, under Functions, double-click get_ScriptDefinedVar to move the script editor panes insertion point to the get_ScriptDefinedVar function block. Find the following function block:
function STRING get_ScriptDefinedVar() begin return m_strScriptDefinedVar; end;

Change it to this:
function STRING get_ScriptDefinedVar( szScriptVar ) /* Add string argument. */ begin return TextSub.Value( szScriptVar ); /* Get value associated with szScriptVar. */ end;

d.

In the InstallScript explorer, under Functions, double-click put_ScriptDefinedVar to move the script editor panes insertion point to the put_ScriptDefinedVar function block. Find the following function block:
function void put_ScriptDefinedVar(newVal) begin m_strScriptDefinedVar = newVal; end;

InstallShield 2010 User Guide

ISP-1600-UG00

1109

Chapter 26: Creating InstallScript Objects

Change it to this:
function void put_ScriptDefinedVar( szScriptVar, newVal ) /* Add string argument. */ begin TextSub.Value( szScriptVar ) = newVal; /* Associate newVal with szScriptVar. */ end;

Using System Variables in Objects


System variables are predefined variables that contain information such as the source path, the target path, the Windows folder, and the Windows system folder. You cannot declare these variables in your script. InstallShield automatically initializes system variables when the installation process begins. Although you can change and initialize system variables within objects, it is not recommended. When you change a system variable in an object, that change will affect the entire installation. For example, if your object initializes TARGETDIR to a specific value, that value will override what was previously set in the installation project. Therefore, the entire installation will be installed to the directory specified in the object, and not the directory specified by the installation developer.

Setting Your Objects Destination Through the Script


You may decide to define of one of your objects components Destination properties in terms of a scriptdefined variable. If you do, users of your object will need to ensure that the value of the script-defined variable is set before they call ComponentCompareSizeRequired in their script; otherwise, the function will report insufficient disk space. You can provide the ability to set the value of the script-defined variable in one or both of the following ways:

A write-only or read/write object property whose put_ function calls ComponentSetTarget, for example:
function VOID put_SetTargetDest ( szScriptVar , szValue ) begin ComponentSetTarget ( MEDIA , szScriptVar , szValue ); end;

An end-user dialog displayed by the objects OnFirstUIBefore event handler.

1110

ISP-1600-UG00

InstallShield 2010 User Guide

27
Updating Applications
Installing upgrades for applications is a much more common operation than installing the original release of an application. This makes creating effective, reliable upgrades a very important task. Updating Applications provides solid background information on the different types of upgrades and also clears up common misconceptions about patching. It helps you determine the best upgrade solution for your product and guides you through the steps of creating upgrades, patches, QuickPatch projects, differential releases, and full releases. In addition, this section explains how you can use FLEXnet Connect to notify end users that a new version of your product is ready for release.

Upgrades Overview
The cost of maintaining software applications is often more expensive than the cost of original development. This makes creating effective, reliable upgrades an important task. Being able to distribute robust upgrades for an application depends on how the original installation package was structured and distributed. This help topic will provide a basic foundation for creating robust upgrade packages.

Upgrade Methods for Basic MSI and InstallScript MSI Projects


Windows Installer provides different methods for implementing three different upgrade types: small update, minor upgrade, and major upgrade. Upgrades can be packaged as either a full installation or a patch. A patch is simply another mechanism for implementing a type of upgrade. With a patch, however, you deliver to your customers only the bits required to change an installed file into a new file, unlike a full release.

Upgrade Methods for InstallScript Projects


When working with InstallScript installations, you can update an application with either a full release package or differential release. Various considerations such as file size and the presence of files from any previous release must be considered in determining the best upgrade method.

Note: If you used a version of InstallShield Professional earlier than 6.0 to create media for an InstallScript project, the media cannot be updated.
InstallShield 2010 User Guide ISP-1600-UG00 1111

Chapter 27: Updating Applications Upgrades Overview

Major Upgrades
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

In a major upgrade, the product changes are large enough to merit changes to both the product version number and the product code, as well as the package code. An example is updating version 1.2 of a product to 2.0. A major upgrade acts like a first-time installation if an earlier version is not present. If an earlier version is present, a major upgrade typically uninstalls the earlier version and then installs the new version. It is also possible to have a major upgrade first install over the earlier version and then remove any unused files. This method is more efficient, but strict component-authoring rules must be followed.

How Major Upgrades Work


As the Windows Installer help implies, you must change the product code for the latest version of your installation in order to perform a major upgrade.

Note: You can set the product code for your installation in the General Information view. It does not matter what the new product code is, as long as it is unique.

By virtue of having a unique product code, your latest installation will have its own independent registration with the Windows Installer service on end users machines. This means that unless some other step is taken, the Windows Installer installs the latest version of your product independently of any of the previous versions. This may be okay if the two versions of your product can coexist on the same machine, but then that would not be an upgrade. Therefore, for the sake of this discussion, it is assumed that two versions should not coexist on the same machine. Once you update the product code for your latest installation, you need to use the Upgrades view to specify information for any previous version or versions that you want to upgrade. For more information about what is involved in creating a major upgrade, see Creating Major Upgrades.

Major Upgrades at Run Time


When an earlier version of the product is not available on the target machine and the end user runs a major upgrade, the installation behaves as a first-time installation. If an earlier version of the product does exist on the target machine and the end user runs a major upgrade, they encounter almost the exact same installation experience as if they were to install the latest application on a clean target machine. The difference is that before installing its new resources, the installation typically uninstalls the earlier version from the target machine. This removal is reflected in the progress bar of the Setup Progress dialog, which gives end users the ability to see the progress of the uninstallation. After the removal of the previous installation has completed, the resources from the latest installation are then installed onto the target machine.

1112

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Upgrades Overview

This type of upgrade is a complete uninstallation and then reinstallation of all of the resources associated with your application. Therefore, any data for your application that has been configured by the end user may be completely deleted from the end users machine. If you need to retain some of the end-user data, create a custom action that backs up this data and then replaces it after the installation of new data has completed.

Minor Upgrades
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

A minor upgrade is a change to the product database and files large enough to merit a change to the ProductVersion property but not to the ProductCode property. In other words, both the package code and the product version number are different than those in the earlier installation package, but the product code of the minor upgrade does not change. An example is updating version 1.1 of a product to version 1.2. Minor upgrades usually do not have significant changes to the installation organization between versions. A minor upgrade packaged as a full installation acts like a first-time installation if an earlier version is not present, or it installs over an existing installation of a product. Essentially for an upgrade of an existing installation, a minor upgrade installs the differences between your version 1.2 and 1.1 application.

Tip: You can modify the product version for your upgrade in the General Information view.

Small Updates
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

In essence, a small update is a type of upgrade used to modify a few files for an installed application; it typically delivers small bug fixes. A small update consists of product changes (such as hotfixes) so small that no change to the product version is necessary or desired. A package code change is required for a small update. A drawback to small updates installed with versions of Windows Installer earlier than 3.0 is that external programs, including installers for later versions of your product, cannot distinguish between the original version and the updated version. In addition, Windows Installer versions earlier than 3.0 cannot enforce the correct order in which small updates should be applied.

InstallShield 2010 User Guide

ISP-1600-UG00

1113

Chapter 27: Updating Applications Upgrades Overview

Patching
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Patching is a streamlined mechanism for updating earlier versions of a Windows Installer installation package, thereby updating the application. With a patch, you deliver to your customers only the bits required to change an installed file into a new file. One benefit of a patch is that the size of the upgrade package can be significantly smaller than the full-installation package required to deliver the same upgrade. Keeping an upgrade package as small as possible allows you to more easily deliver your upgrades over the Internet. However, you should note that a patch may not always present the best solution. For example, if you want to change your installation from compressed to uncompressed, or vice versa, you should package your upgrade as a full installation, but not as a patch. To learn more about determining the best packaging option for your upgrade, see Packaging Options for Upgrades. A patch is delivered in the form of a patch package (.msp) file, which your end user can apply to an installed product. A patch package is capable of updating as many earlier versions of an installation package as required. A patch package contains separate transforms and instructions for updating each previous version that you specify. An important aspect of patch creation is generating a patch creation properties (.pcp) file, which defines the parameters on which the patch package is to be created. The .pcp file is a database that has a specific schema, but you can open it and edit it directly with InstallShield or Orca. The Patch Design view provides an easy-to-use interface to simplify the patch creation process. This view groups together all the logical considerations you will need to make in patch creation.

QuickPatch Projects
Project: You can create a QuickPatch to update an earlier version of your product only if the earlier version was installed using Windows Installer. The installation for the earlier version of your product must have been created with one of the following project types:

Basic MSI InstallScript MSI QuickPatch

A QuickPatch project is a specific type of project recommended for installation authors who want to ship small, single updates to their users. Changes that are more extensive such as adding custom actions and changing .ini data typically require a standard patch. QuickPatch authoring provides a simple alternative to creating a patch configuration in the Patch Design view, even though it provides less customization. Fundamentally, both patch creation methods produce the same deliverable types: .msp and .exe files. With a QuickPatch, you can do any of the following:
1114 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Upgrades Overview

Add new files to the original installation or an earlier QuickPatch. Delete files in the original installation. Delete files that were added with an earlier QuickPatch. Perform the same set of above operations on registry entries. Remove custom actions that were included with the original installation but that do not apply to the current QuickPatch project.

The creation of a QuickPatch project always begins with the Create New QuickPatch Wizard. After you have completed the wizard, you can configure project settings once the QuickPatch project opens in InstallShield.

Differential Releases
Project: This information applies to InstallScript projects.

In an InstallScript project, you can define and build a differential releasethat is, a release that contains the files that are absent fromand/or have a different date, time, size, or attribute than the version in one or more of a specified set of existing releases. A differential release is used to update the versions of your product that were installed by those existing releases. This type of upgrade also includes all of the maintenance/uninstallation features files. The new versions of Data1.hdr, Data1.cab, and Layout.bin do not overwrite the existing versions but are placed in a new folder.

Note: Since a differential release consists of only the changed files between the specified existing media and the new media, installing a differential release on a system that does not have a specified earlier version of the product would most likely not produce a valid application. To update a system that does not have an earlier version of the product, create a full release.

Files Included in a Differential Release


When you define a differential release, you specify one or more existing releases to which the current project should be compared when new differential release is created. You specify these existing releases in the Update panel of the Release Wizard. A file in the current project is included in the differential release if any of the following are true:

The file is absent fromor has a different date, time, size, or attribute than the copy inat least one of the specified comparison releases. The file is in a component whose Difference property is set to Include Always. The file is in a component that is absent from at least one of the specified comparison releases. The file is in a component whose name is different in at least one of the specified comparison releases. The file is in a component whose Destination, Languages, or Operating Systems properties are different in at least one of the specified comparison releases.

InstallShield 2010 User Guide

ISP-1600-UG00

1115

Chapter 27: Updating Applications Determining the Best Upgrade Solution

The file is in a component that is associated with a feature whose name or path within the feature hierarchy is different in at least one of the specified comparison releases.

Installing a Differential Release


When an installation initializes and the ADDREMOVE system variable is nonzero, the installation automatically attempts to initialize any differential releases that have been installed with the same product GUID. The installation enumerates all subfolders of the DISK1TARGET folder and searches these subfolders for differential releases; a differential release is found and loaded if all of the following conditions are met:

The subfolder contains a Data1.hdr file that is a valid InstallShield X or later, InstallShield DevStudio 9, or InstallShield Professional 6 or later Data1.hdr file for a differential release. The product GUID stored in the header file matches the product GUID of the installation. The product version of the differential release is newer than the product version of the installation.

Full Releases
Project: This information applies to InstallScript projects.

With an InstallScript project, you can define and build a full release for an upgrade. A full release includes all of the files linked into the installation project. By default, this type of release behaves as a first-time installation if an earlier version of the product is not already present on the target system. It also is capable of installing over an earlier version and replacing that version completely. When you create a full release to update one or more earlier versions of a product, you must specify whether the release is version specific or non-version specific:

Non-version specificThis is the default option. A non-version-specific full release can be installed

on a system that does not have an earlier version of the product. It can also update any earlier version of the product.

Version specificA version-specific full release updates only the versions that you specify should be updated. If you set your full release to be version specific but you do not also specify version numbers, the update can be applied to any earlier version of your product.

Determining the Best Upgrade Solution


The methods used to create an upgrade for a product depend on how the original installation package was developed. If the original installation was created with a Windows Installerbased project, you will essentially create a major upgrade, a minor upgrade, or a small update to update your product. If the original installation was created with an InstallScript project, you will create a differential or full release to update your product. Both types of projects are discussed below.

1116

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Basic MSI and InstallScript MSI Projects


The first step in creating an installation for any type of upgrade is identifying whether you want to address target systems that do not have any earlier version of your product. Then you can determine what type of method you should use to package the upgrade. The following table presents a general overview to help you decide which method you should use. For a more in-depth discussion of the techniques for packaging the upgrade, see Packaging Options for Upgrades.
Table 27-1: Possible Upgrade Solutions for Windows InstallerBased Projects Status of the Target Systems Some of the target systems have an earlier version of the product, and some do not have any version of the product.

Type of Installation Needed If file size is not an issue, you can create one installation that does both of the following:

Technique for Packaging the Update Create a major or minor upgrade and package it as a full installation.

Behaves as a first-time installation if an earlier version of the product is not already present on the target system Updates an existing product if it is already installed on the target system For the first-time installation, create a major or minor upgrade and package it as a full installation. For end users who have an earlier version of your product, create a major or minor upgrade and package it as a patch.

Some of the target systems have an earlier version of the product, and some do not have any version of the product.

If you want a small installation for end users who need to update an earlier version of the product, you can create two separate installations:

A full installation that behaves as a first-time installation. A smaller installation that updates one or more earlier versions of an already installed product. Since this installation consists of only the changed data between the versions to be updated, it usually enables you to deploy your upgrade using much less bandwidth than that required to deploy a fullinstallation package.

Tip: In some cases, a patch is not appropriate. For more guidelines on determining whether a patch is appropriate for your upgrade, see Packaging Options for Upgrades.

Note: A patch package is not a type of upgrade; it is simply a mechanism for distributing an upgrade with a small footprint.

InstallShield 2010 User Guide

ISP-1600-UG00

1117

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Table 27-1: Possible Upgrade Solutions for Windows InstallerBased Projects (cont.) Status of the Target Systems All of the target systems have an earlier version of the product.

Type of Installation Needed You can create a small installation that updates one or more earlier versions of an already installed product. Since this installation consists of only the changed data between the versions to be updated, it usually enables you to deploy your upgrade using much less bandwidth than that required to deploy a full-installation package.

Technique for Packaging the Update Do either of the following:

Create a major or minor upgrade and package it as a standard patch. Create a QuickPatch project.

The QuickPatch technology in InstallShield enables you to create simple patches for previously installed products. Although customization is somewhat limited when you create a patch by using a QuickPatch project, the creation of a QuickPatch project is a simpler alternative to creating a standard patch. For more details, see Patch vs. QuickPatch Project.

Note: Like a standard patch, a QuickPatch is a mechanism for distributing an upgrade with a small footprint.

InstallScript Projects
If the original installation was created with an InstallScript project, you can create one of two types of update releases:

Differential releaseThis type of release contains the files that are absent fromand/or have a

different date, time, size, or attribute than the version inone or more of a specified set of existing releases. A differential release is used to update the versions of your product that were installed by those existing releases.

Full (non-differential) releaseThis type of release behaves as a first-time installation if an earlier

version of the product is not already present on the target system. It also is capable of installing over an earlier version and replacing that version completely. Since a differential release consists of only the changed files between the versions to be updated, it usually enables you to deploy your update using much less bandwidth than that required to deploy the full release. However, only a full release can be installed on a system on which no version of your product is currently installed. For more details, see Differential Releases and Full Releases.

Major Upgrade vs. Minor Upgrade vs. Small Update


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1118

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Windows Installer supports three types of product upgrades: major upgrades, minor upgrades, and small updates. The following table serves as a guide to help you determine which type of upgrade best suits your needs. If any one of the requirements for your upgrade is not appropriate for a minor upgrade or a small update, you should create a major upgrade. If you are not sure which type of upgrade you should use for your Windows Installerbased project or if you do not have a preference, you can create an automatic upgrade.
Table 27-2: Major Upgrade vs. Minor Upgrade vs. Small Update Requirement for the Upgrade Change the name of the .msi package Use a Major Upgrade? Yes Use a Minor Upgrade? No Use a Small Update? No

Note The default file name is taken from the Product Name property, provided the .msi file is not compressed in a Setup.exe installation launcher.

Enable end users to install earlier versions and the latest version on the same machine Add a new subfeature

Yes

No

No

Yes

In some cases

In some cases

If the new subfeature consists of new components only, you can use a small update, a minor upgrade, or a major upgrade. If the new subfeature consists of existing components, you must use a major upgrade.

Move or delete a feature in the product tree Add a new component to a new feature Add a new component to an existing feature

Yes

No

No

Yes

Yes

Yes

Yes

Yes, if the version of Windows Installer is 2.0 or later

Yes, if the version of Windows Installer is 2.0 or later

Windows Installer 1.x requires new components in an upgrade package to be placed in new features for minor upgrades and small updates; it also requires special command-line handling.

Move or delete a component in the product tree Change the component code of an existing component Change the key file of a component

Yes

No

No

Yes

No

No

Yes

No

No

InstallShield 2010 User Guide

ISP-1600-UG00

1119

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Table 27-2: Major Upgrade vs. Minor Upgrade vs. Small Update (cont.) Requirement for the Upgrade Add, remove, or modify any of the following: files, registry keys, or shortcuts Use a Major Upgrade? Yes Use a Minor Upgrade? Yes Use a Small Update? Yes

Note If the file, registry key, or shortcut is in more than one component and the component is shared by two or more features, a major upgrade must be used.

Codes Associated with the Different Types of Upgrades


Several Windows Installer codes help identify a product:

Package CodePart of the Summary Information Stream, the package code identifies a particular database. The package code is not a Windows Installer property. Any two .msi databases with identical package codes must have identical contents. Therefore, you should change the package code for each build. ProductVersionThis is a Windows Installer property that contains the product version. Note that

Windows Installer uses only the first three fields of the ProductVersion property for version comparisons. For example, for a product version of 1.2.3.4, the 4 is ignored. (Note that this is true for comparisons of ProductVersion values, and not for file versions.)

ProductCodeThis is a Windows Installer property that contains the GUID of a product. Windows

Installer treats two products with different ProductCode GUIDs as unrelated, even if the values for the ProductName property are the same.

UpgradeCodeThis is a Windows Installer property that contains a GUID representing the product

family. The UpgradeCode should be consistent across different versions and languages of a family of related products for patching purposes. You can set the UpgradeCode for an upgrade in the Upgrades view. For any type of upgrade, you must change various combinations of the package code, product version, and product code to identify the product being installed. The following table identifies when each code should be changed for different types of upgrades.
Table 27-3: Codes that Need to Be Changed for the Different Types of Upgrades Package Code Small Update Minor Upgrade Major Upgrade X X X X X X Product Version Product Code Upgrade Code

Automatic Upgrades
Project: This information applies to InstallScript projects.

1120

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Determining the Best Upgrade Solution

To simplify the upgrade creation process, InstallShield offers you the ability to create automatic upgrades. An automatic upgrade is a special type of upgrade that you can create if you do not know which type of upgrade you should use or if you do not have a preference. With automatic upgrades, InstallShield determines which type of upgrademajor upgrade or minor upgradewould be optimal based on comparisons between the earlier and later packages that you specify.

Patch vs. QuickPatch Project


Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

To update a product without distributing a complete, updated installation package, you can create a Windows Installer patch package (.msp). InstallShield provides two different patch creation alternatives serving different scenarios: one method uses the Patch Design view, and the other uses the QuickPatch project type. Find the appropriate solution for your product by reading about both alternatives below.

Note: Major upgrades are typically not packaged as patches. Therefore, the table below assumes that the patch created through the Patch Design view is for a minor upgrade or a small update. QuickPatch projects produce QuickPatch packages that serve as minor upgrades. Table 27-4: Patch vs. QuickPatch Project Requirement for the Patch Add a new subfeature Add a new component to a new subfeature Add a new component to an existing feature

Use a Patch? Yes Yes

Use a QuickPatch? No No

Note

Yes, if the version of Windows Installer is 2.0 or later

No

Windows Installer 1.x requires new components in an upgrade package to be placed in new features for minor upgrades and small updates; it also requires special command-line handling.

Add, modify, or remove a file

Yes

Yes

InstallShield 2010 User Guide

ISP-1600-UG00

1121

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Table 27-4: Patch vs. QuickPatch Project (cont.) Requirement for the Patch Add, modify, or delete registry data

Use a Patch? Yes

Use a QuickPatch? Yes

Note All new registry data being added with a QuickPatch must be associated with a feature that already exists in the original product.

Add, modify, or delete a shortcut Add, modify, or delete custom actions

Yes

No

Yes

Can only delete custom actions that were included in the original base installation. No

Update a mobile device application Add or remove a redistributable Add, modify, or remove ODBC resources Edit an .ini file Edit an .xml file Configure server settings such as IIS Web sites, component services, and SQL scripts Digitally sign files (such as your applications executable files) in the patch package

Yes

Yes

No

Yes

No

Yes Yes Yes

No No No

Yes

Not automatically

For QuickPatch projects, you must manually sign the individual files and then add them to your project.

Using the Patch Design View


The Patch Design view provides an integrated, visual method for creating patches and selecting the proper settings associated with each patch configuration you create. You can create multiple patch configurations in the Patch Design view. Each patch configuration contains the settings and data required to build a patch. In most cases, you will begin patch creation in the Patch Design view. If you are looking for a simple patching solution, you can create a QuickPatch project.

Using the QuickPatch Project


The Create New QuickPatch Wizard, which is launched when you create a QuickPatch project, is targeted at installation authors who want to ship small updates to their users. It provides a simpler alternative to patch creation in the Patch Design view.
1122 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Determining the Best Upgrade Solution

Although customization is limited when you create a patch by using a QuickPatch project, it produces the same deliverable types as the Patch Design view: .msp and .exe files.

Packaging Options for Upgrades


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you want to prepare an installation that updates a version of your product installed on an end users machine, you can consider two different methods for packaging your major upgrade, minor upgrade, or small update:

You can package your upgrade as a full installation that updates an existing product if an earlier version is installed, or behaves as a first-time installation if no earlier version is present. You can package your upgrade as a patch that contains only the changed data (.msi data and bytelevel file differences) between the versions to be updated.

Full-Installation Packages
Both a minor upgrade and a small update act like first-time installations if an earlier version is not present, or they install over an existing installation of a product. A major upgrade also acts like a firsttime installation if an earlier version is not present; however, a major upgrade typically uninstalls any earlier version and then installs the new version.

Patch Packages
Patches enable you to distribute just the bits and portions of the database necessary to update your applications files to a specific version, possibly resulting in a much smaller package than an upgrade packaged as a full installation. This enables you to deploy your upgrades using much less bandwidth than that required to deploy a full-installation package.

Note: A patch is not a type of upgrade. Patching is simply a mechanism for distributing a major upgrade, a minor upgrade, or a small update with a small footprint. In fact, creating a patch involves first designing the upgrade and then packaging it as a patch. Before you create a patch, it is recommended that you test the upgrade as a full-installation package.

Determining the Best Packaging Option for Your Upgrade


The topic Determining the Best Upgrade Solution includes a table that you can review to determine what type of packing option you should use to update an earlier version of your product. In some cases, a standard patch or a QuickPatch may be seem to be the ideal mechanism for packaging your upgrade. However, under certain conditions, you should package your upgrade as a full installation instead of a patch. For example:

If the target image was created with Windows Installer 1.2 or earlier, and the upgraded image is created with Windows Installer 2.0 or later, you should package your upgrade as a full installation,

InstallShield 2010 User Guide

ISP-1600-UG00

1123

Chapter 27: Updating Applications Determining the Best Upgrade Solution

but not as a patch. Creating patches for packages that span this schema inflection point can be problematic. For more information, see Val0011, which describes the associated validator for upgrading and patching validation.

If you want your upgrade to move one or more files on the target system from one location to another, you should package your upgrade as a full installation, but not as a patch. If your end users install a patch for an upgrade that moves files on the target system, problems may occur. For example, the patch may not work, a repair to the target system may not work, a subsequent patch may not work, or end users may not be able to uninstall the product. As a workaround, you can create your patch so that it deletes the files in the old location and adds the files to the new location. If you want to change your installation from compressed to uncompressed, or vice versa, you should package your upgrade as a full installation, but not as a patch. If you use a patch in this scenario, a repair to the target system may not work, a subsequent patch may not work, or the end user may not be able to uninstall the product. If you need to move files from one .cab file to another, or if you need to change the order of files in a .cab file, you should package your upgrade as a full installation, but not as a patch. If your original installation had more than 32,767 files but your latest installation has fewer than 32,767 files, a patch will fail. Similarly, if your original installation had fewer than 32,767 files but your latest installation has more than 32,767 files, a patch will fail. In either case, you should package your upgrade as a full installation. Note that if both the original installation and the latest installation have more than 32,767 (or both have fewer than 32,767 files), you can package your upgrade as a patch.

Patches cannot be created for major upgrades of InstallScript MSI projects. Therefore, if you need to distribute a major upgrade for an InstallScript MSI project, you should package it as a full installation.

Differential vs. Full Releases


Project: This information applies to InstallScript projects.

If the original installation for your product was created with an InstallScript project, you need to create a differential release or a full release to update your product. If some of the target systems have an earlier version of the product, and some do not have any version of the product, you can package your upgrade as a full release. This type of release behaves as a first-time installation if an earlier version of the product is not already present on the target system. It also is capable of installing over an earlier version and replacing that version completely. If all of the target systems have an earlier version of the product, you can package your upgrade as a differential release. This type of release contains the files that are absent fromand/or have a different date, time, size, or attribute than the version inone or more of a specified set of existing releases. A differential release is used to update the versions of your product that were installed by those existing releases.

1124

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Note: If you used a version of InstallShield Professional earlier than 6.0 to create media for an InstallScript project, the media cannot be updated.

Working with Upgrades, Patches, and QuickPatch Projects


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you are going to package your upgrade as a full installation or as a standard patch, you begin by opening the latest version of your project and making the necessary changes, such as adding files and registry entries, as needed. If you would like to package your upgrade as a QuickPatch, you begin by creating a new projecta QuickPatch project. With a QuickPatch project, you identify which earlier releases should be patched by your QuickPatch. Refer to the topics in this section to learn how to create major upgrades, minor upgrades, small updates, automatic upgrades, patches, and QuickPatch projects. This section also explains how you can validate your upgrade or patch to determine whether your resulting package will perform its actions correctly.

Understanding File Overwrite Rules


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Windows Installer service uses several file overwrite rules, by default, to determine whether a file included in an upgrade should overwrite a file that already exists on the target system. The rules apply when the REINSTALLMODE property uses the o setting to install over older files on the target system. To change this behavior, you can replace the o option with one of the following values:

pReinstall

only if there is no equivalent file on the target system. the file is missing or if it is an earlier or equal version.

eReinstall if dReinstall

if file is missing or different. files, regardless of version.

aReinstall all

Note that the setting for REINSTALLMODE applies to all of the features being installed; it cannot be set for an individual feature. In addition, setting REINSTALLMODE to include a will likely cause prompts for the original installation source during the application of a patch.
InstallShield 2010 User Guide ISP-1600-UG00 1125

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Upgrade Considerations
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Following are some guidelines for creating upgrades.

Updating the Package Code, the Product Version, and the Product Code
For any type of upgrade, you must change various combinations of the package code, product version, and product code to identify the product being installed. For more information, see Major Upgrade vs. Minor Upgrade vs. Small Update.

Upgrade and Patch Optimization


When you are configuring a minor upgrade or a small update, use the patch optimization functionality in your build settings. Using patch optimization helps you synchronize component names, component GUIDs, File table keys, and Directory table keys in the upgraded image with those in the target images. This helps to make the smallest possible patches. If you do not use patch optimization, the patch may be the same size as the target .msi package, or it may break Windows Installer component rules. The patch-creation process uses the File table keys to determine if two files are the same file. (The actual file names cannot be used reliably, since a package might contain more than one file with the same name, installed under different conditions.) If you specify the previous package for patch optimization, InstallShield uses identical File table keys for identical files.

Tip: If your package uses dynamic file linking, it is recommended that you use patch optimization when building your upgrade. This keeps the key files consistent across the releases.

To use the patch optimization functionality, specify the previous Windows Installer package on the Advanced Settings panel in the Release Wizard. You can also specify the previous Windows Installer package through the Previous Package setting on the Build tab for the release in the Releases view.

Adding a Subfeature with a Minor Upgrade


In general, a minor upgrade should not include a new top-level feature. However, new subfeatures of existing features are allowed. If you are adding a new subfeature for a minor upgrade, set two of the subfeatures properties as follows so that they are installed correctly during a minor upgrade:

Remote InstallationSet this property to Favor Parent. RequiredSet this property to Yes.

The user interface of a minor upgrade does not usually show the feature tree; however, maintenance mode for the updated installation typically does expose the feature tree. If you want the new subfeature to be excluded from the feature tree so that end users cannot deselect it, set the subfeatures Display property to Not Visible.

1126

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Removing Installed Data


If your minor upgrade removes data such as files, registry settings, or .ini files, simply removing the data that existed in the earlier product version from your project will not cause the file to be removed when the upgrade is applied. To learn how to remove such data, see Configuring Minor Upgrades to Remove Installed Data.

Configuring InstallShield to Automatically Determine the Upgrade Type


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you do not know which type of upgrade you should use for your Windows Installerbased project or if you do not have a preference, you can create an automatic upgrade. With automatic upgrades, InstallShield determines which type of upgrademajor upgrade or minor upgradewould be optimal based on comparisons between the earlier and later packages that you specify. The topics in this section explain how to create and work with an automatic upgrade.

Adding an Automatic Upgrade Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add an automatic upgrade item: 1. 2.

Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click Upgrade Windows Installer Setup and click Add Automatic Upgrade Item. InstallShield adds the automatic upgrade item to the explorer. Rename the item so that it reflects the latest version of your installation.

3.

Configuring Automatic Upgrade Item Properties

Project: This information applies to the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1127

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

InstallScript MSI

When you add an automatic upgrade item to your project, you must configure its automatic upgrade item properties. You can configure these properties when you click your new automatic upgrade item in the Prepare Setup For Upgrade Scenarios explorer of the Upgrades view. In addition, you need to configure general upgrade properties that InstallShield will use to create your upgrade, depending on whether InstallShield determines that a major or a minor upgrade is necessary for your automatic upgrade item. You can configure these general properties on the tabs that are displayed when you click Upgrade Windows Installer Setup in the Prepare Setup For Upgrade Scenarios explorer of the Upgrades view:

Common tab Advanced tab

Converting Automatic Upgrades to Major or Minor Upgrades

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To convert an automatic upgrade item to a major upgrade or a minor upgrade: 1. 2.

Open the Upgrades view. Right-click the automatic upgrade item that you would like to convert and then click Convert to Minor Upgrade Item or Convert to Major Upgrade Item.

Removing Automatic Upgrade Items

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove an automatic upgrade item: 1. 2.

Open the Upgrades view. Right-click the automatic upgrade item that you would like to delete and then click Delete.

1128

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Creating Major Upgrades


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Once you have determined that a major upgrade is the best upgrade solution for you, you can begin to create a major upgrade in the Upgrades view. Note that a major upgrade signifies significant change in functionality and warrants a change in the ProductCode property; you can update this property in the General Information view.

Note: When you change the product code, Windows Installer treats your latest and previous product versions as unrelated, even though the ProductName values are likely the same. If you want both versions of your product to be installable on the same system, you can simply change the product code and the main installation directory (often INSTALLDIR).

Essentially, a major upgrade is two operations rolled into one installation package. The major upgrade either installs the new version of the product and then silently uninstalls the older version or silently uninstalls the older version and then installs the newer version. The sequence of these two separate operations depends on how you configure the installation package of the newer version of the product. For more information on creating a major upgrade using InstallShield, refer to this section of the InstallShield Help Library.

Adding a Major Upgrade Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add a major upgrade item: 1. 2.

Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click Upgrade Windows Installer Setup and click Add Major Upgrade Item.

InstallShield adds a new major upgrade item.

InstallShield 2010 User Guide

ISP-1600-UG00

1129

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Configuring Major Upgrade Properties

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you add a major upgrade item in the Upgrades view, a general setting that you can modify is the scheduling of the RemoveExistingProducts action. You can modify this setting in the Upgrades view by selecting Upgrade Windows Installer Setup and clicking the Common tab. The configurable properties for your major upgrade item are presented in a more user-friendly format on the Common and Advanced tabs than in the Upgrade table in the Direct Editor. On the Common tab for a major upgrade item, you specify the Upgrade Code value of the products that you want to update as well as the versions of products that you want to update. On the Advanced tab, InstallShield by default includes an ISSetAllUsers custom action; this action sets ALLUSERS correctly during a major upgrade. (In addition, ISSetAllUsers sets the custom property IS_MAJOR_UPGRADE if a major upgrade is taking place.) To specify whether to include the ISSetAllUsers action, use the General tab of the Options dialog box. You can access this dialog box by selecting Options from the Tools menu. On that tab, you can clear or select the Automatically create ISSetAllUsers action check box.

Removing Major Upgrade Items

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove a major upgrade item from the Upgrades view: 1. 2.

Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click the major upgrade item and click Delete.

Creating Minor Upgrades


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1130

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Once you have determined that a minor upgrade is the best upgrade solution for you, you can start by adding a minor upgrade item in the Upgrades view. After you build an installation with a minor upgrade item, the build engine performs a series of tests to determine whether that your latest installation can successfully upgrade the previous version of your installation. However, adding a minor upgrade item is not necessarily required for a minor upgrade to function properly. See the Running a Minor Upgrade with Setup.exe section below for more details. Any new features that you add to the latest version of your installation must be added as subfeatures of existing features. These new features must have the Remote Installation property set to Favor Parent and the Required attribute set to Yes in the Features view.

Minor Upgrades at Run Time


At run time, the end user will first see a message box announcing that an upgrade will occur. This message specifies the name of the previous product, alerting the end user as to which existing application will be updated. At this point, the end user can stop the installation process if desired. This prompt is followed by a Welcome dialog, and when the end user clicks Next on the Welcome dialog, the setup will install its new resources. While installing its resources, the installation will update the progress bar in the Setup Progress dialog so that users will be able to track the upgrade process.

Tip: In the Upgrades view, you can disable the initial upgrade prompt when you click Upgrade Windows Installer Setup in the explorer and configure the Common tab properties for small updates and minor upgrades.

Note: At run time during a minor upgrade, Windows Installer does not reinstall a component if its key file would be downgraded in the process. Therefore, the key file in the upgrade needs to have a version number that is equal to or greater than that of the key file in the old package. The exception is when the end user sets the REINSTALLMODE property to a, which forces the installation of all files, regardless of version. For more information about file overwrite rules, see Overwriting Files and Components on the Target System.

A minor upgrade installs its new resources over the application that currently exists on the target machine. If you want to completely uninstall and then reinstall your application, you should consider a major upgrade.

Running a Minor Upgrade with Setup.exe


If you build a release that includes Setup.exe, your latest installation will be minor upgrade enabled. Setup.exe can detect when a previous version of your application exists on a target machine. When Setup.exe detects a previous version, it will run the rest of your installation in minor upgrade mode.

Running a Minor Upgrade Without Using Setup.exe


If you intend to distribute your installation without wrapping it in Setup.exe, there is a manual process that your end users must follow to start the installation. For this reason, you should consider using Setup.exe; however, you can achieve similar results without it. The Installer properties REINSTALL and REINSTALLMODE must be set from the command line to start an installation in upgrade mode. In all but the most advanced scenarios, the property REINSTALLMODE should be set to vomus and the property REINSTALL should be set to ALL. A typical command line can look like the following:
msiexec.exe /i \product.msi REINSTALLMODE=vomus REINSTALL=ALL

InstallShield 2010 User Guide

ISP-1600-UG00

1131

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

If the update contains features that you do not want to update, you should set REINSTALL to a comma-separated list of the features that you want to update, as in the following command:
msiexec /i \product.msi REINSTALLMODE=vomus REINSTALL=F1,F3,F5

The feature names you use in the REINSTALL property are case-sensitive.

Note: Do not set REINSTALL equal to ALL for a first-time installation.

A critical point to note is that you do not want to set these properties on the command line unless a previous version of your installation already exists on the target machine. If you do, the installation will appear to run in minor upgrade mode, and your application files may not be installed. Be sure that your end users will be able to discern when command line should and should not be used.

Note: The REINSTALLMODE attribute v is very important if you are performing a minor upgrade. This parameter tells the installer to refresh its internal setup cache for your product with the new installation package. Without this parameter, your installation will have no knowledge of any of the changes that you have made to the latest installation package.

Adding a Minor Upgrade Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add a minor upgrade item in the Upgrades view: 1. 2.

Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click Upgrade Windows Installer Setup and click Add Minor Upgrade Item.

InstallShield adds a new major upgrade item.

Tip: If you are creating an upgrade that can update more than one previous version, you can add additional minor upgrade items.

Configuring Minor Upgrade Properties

Project: This information applies to the following project types:

Basic MSI

1132

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

InstallScript MSI

When you add a minor upgrade item in the Upgrades view, a general setting you can modify is how a setup launcher (if your build configuration includes a setup launcher) should behave if an earlier product version is present. You can modify this setting in the Upgrades view by selecting Upgrade Windows Installer Setup and clicking the Common tab. Once you have added a minor upgrade item in the Upgrades view and made sure that it is selected, you can browse for the .msi database for the earlier product version that you want to update in the Setup to Upgrade field of the properties page for that minor upgrade item. On the same properties page, you can also set release flags in the Release Flags field to exclude the minor upgrade item from the build.

Configuring Minor Upgrades to Remove Installed Data

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield includes support for different methods for configuring a minor upgrade to remove installed data. Two methods are discussed in the following sections.

Method 1
To configure a minor upgrade to remove data that was installed during an earlier release, open your InstallShield project in which you are configuring the upgrade, and in the Files and Folders view, delete the file. Then you can create a record in the corresponding Remove tables within the Direct Editor. The Remove tables in the Direct Editor include the RemoveFile, RemoveIniFile, and RemoveRegistry tables. To remove registry data from a component in a minor upgrade, you should create a record in the RemoveRegistry table. Records in the RemoveRegistry table describe the registry key and value to remove when the associated component is installed. Unlike the RemoveFile table, the RemoveRegistry table does not accept an option to remove the specified registry data when the associated component is uninstalled. Instead, you can author a registry value with the Uninstall entire key flag. If your component contains a registry value with a hyphen in the Name field and an empty Value field, the specified registry key and all its contents will be removed when the component is removed. For other types of data, there is usually either an uninstallation flag available in the Windows Installer table or a corresponding uninstallation table. To remove .ini data, for example, there is a RemoveIniFile table. For environment variable data, there is a corresponding uninstallation flag.

Note: If a component is shared with other products, you should change the component code when removing resources. Furthermore, changing an existing components component code requires a major upgrade. For major upgrades, you do not need to populate the Remove tables since a major upgrade requires a complete uninstallation.

InstallShield 2010 User Guide

ISP-1600-UG00

1133

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Method 2
Mark a component as transitive, and set a condition on the component that will evaluate to false when a minor upgrade is applied.

Removing Minor Upgrade Items

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove a minor upgrade item from the Upgrades view: 1. 2.

Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click the minor upgrade item and click Delete.

Creating Small Updates


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The steps for creating a small update are the same as the steps for creating a minor upgrade with one key exception: the product version should be changed for a minor upgrade, but not for a small update. If you need to create your upgrades so that they can be applied to your product using versions of Windows Installer earlier than 3.0, it is recommended that you avoid creating small updates. Since small updates do not change the product version, external programsincluding installers for later versions of your productcannot distinguish a product with the small update applied from one without the small update. Windows Installer 3.0 and later requires Windows 2000 Service Pack 3, or later. Small updates are typically packaged as a patch, not as a full installation. If you are sure that the upgrades that you create will be applied to your product with version 3.0 or later of Windows Installer, you can take advantage of patch sequencing support and use small-update patches to update earlier versions of your product.

Patching Considerations
Project: This information applies to the following project types:

1134

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Basic MSI InstallScript MSI QuickPatch

Following are some guidelines for creating patches and QuickPatch projects.

Testing the Upgrade Before Creating the Patch


It is recommended that you test your upgrade as a full-installation package before creating the patch. If the full-installation package successfully updates the earlier version of the application, then you can create the patch.

Creating an Update Launcher (Update.exe)


InstallShield lets you specify whether you want your update to include an Update.exe update launcher. An Update.exe update launcher is required in the following cases:

You want to automatically update or install the Windows Installer engine on a target system, when necessary. You are building a patch for an InstallScript MSI project. You want to automatically install the .NET Framework on a target system, when necessary. You are building a patch whose product configuration includes support for installing multiple instances of a product and you want the instance selection dialog to be displayed when appropriate. To learn more about multiple-instance support, see Installing Multiple Instances of Products and Creating Patches for Multiple Instances of a Product.

The Update.exe update launcher is a bootstrap application that manages the aforementioned scenarios. If you configure InstallShield so that it does not create an Update.exe update launcher, it creates an .msp file. For more information, see:

Specifying Whether to Build an Update.exe Update Launcher for a Patch Specifying Whether to Build an Update.exe Update Launcher for a QuickPatch Package

Optimizing Patches for Large Files


Selecting the Optimize Patch for Large Files check box in the Patch Design view results in smaller bit-level patches for application files that are larger than 4 MB. For QuickPatch projects, each QuickPatch that is built is automatically optimized for large files.

Patches for Compressed Installations


The patch creation process requires an uncompressed release of the previous installations and the latest installation. If the installations are compressed installations, you can use an administrative image of the releases. InstallShield automatically creates an administrative image for you if you specify an installation that is compressed for a patch configuration in the Patch Design view. InstallShield also automatically creates an administrative image for you if you specify an uncompressed image in a QuickPatch project.

InstallShield 2010 User Guide

ISP-1600-UG00

1135

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Patches and the REINSTALL Property


If you discover while testing your patch that you are prompted to locate the original installation source, you can sometimes avoid such problems by setting the REINSTALL property explicitly to the features that you have modified. This property is set to ALL by default.

Self-Registration of COM Servers in a Patch or QuickPatch Package


InstallShield uses InstallShield self-registration (which uses the ISSelfReg table) for new COM servers that are marked to be self-registered in a QuickPatch project if all of the following conditions are true:

The ISSelfReg table exists in the upgraded .msi file that is used to create the QuickPatch. The ISSelfRegisterFiles custom action is present in the Execute sequence. The ISSelfReg option is selected on the Preferences tab of the Options dialog box in InstallShield.

If any of the aforementioned conditions are false, InstallShield uses Windows Installer self-registration (the SelfReg table). To use InstallShield self-registration in a patch if any of the aforementioned conditions are false, use the Patch Design view instead of a QuickPatch project.

Windows Installer 3.0 (and Later) and Patches


Windows Installer 3.0 and later includes many patch-related enhancements. If your patch or QuickPatch will be applied to target machines with Windows Installer 3.0 or later, you can take advantage of those enhancements. For more information, see the following:

Patch Sequencing Patch Uninstallation Non-Administrator Patches

Note that Windows Installer 3.0 and later supports major-upgrade patches that do not have any sequencing data. However, the installer does not support major-upgrade patches that have sequencing data, which would be stored in the MsiPatchSequence table.

Windows Installer 1.2 and Patches


To create a patch that targets the Windows Installer 1.2 engine, select the appropriate patch configuration in the Patch Design view. Then on the Advanced tab, set the Minimum Windows Installer Version property to 120.

Support for Patching Multiple Instances of a Product


If you create a patch for a Basic MSI project that includes support for installing multiple instances of a product in the same context on the same machine, InstallShield configures the patch so that end users can apply it to one instance or all of the instances. To learn more, see Creating Patches for Multiple Instances of a Product.

1136

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Patch Sequencing

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

InstallShield enables you to specify the order that Windows Installer version 3.0 or later should apply small-update patches to an installed product, regardless of the order in which they are provided to the target machine. With patch sequencing data, you can ensure that Windows Installer knows the intended relationships among the upgrades packaged within a family of patches. Consequently, applying patch 1 of a product after patch 2 has already been applied will register patch 1 without overwriting patch 2 files. For versions of Windows Installer earlier than version 3.0, the patch sequence is ignored, and any smallupdate patches are applied to the product in the order that they are provided to the target machine. The patch sequencing functionality available with Windows Installer 3.0 and later simplifies the patch creation process. The following sections show how.

Creating Patches to Be Applied with Versions of Windows Installer Earlier than 3.0
If you need to create your patches so that they can be applied to your product via versions of Windows Installer earlier than 3.0, it is recommended that you avoid creating small updates. Small updates do not change the product version; therefore, external programs, including installers for later versions of your product, cannot distinguish a product with the small update applied from one without the small update. For scenarios limited to versions of Windows Installer earlier than 3.0, you need to plan around such limitations of the installer, thus targeting an increasing number of possible earlier product states. The sample application lifecycle presented in the following table illustrates the resulting complexity.
Table 27-5: Sample Application Lifecycle for Patches Applied with Versions of Windows Installer Earlier than 3.0 Application Package 1. Base installation 2. Minor upgrade 3. Minor upgrade 4. Minor upgrade 5. Minor upgrade 6. Major upgrade Product Version Previous Setups Targeted by Package 1.0 1.1 1.2 1.3 1.4 2.0 1.0 1.0, 1.1 1.0, 1.1, 1.2 1.0, 1.1, 1.2, 1.3 1.0, 1.1, 1.2, 1.3, 1.4

Creating Patches to Be Applied with Windows Installer 3.0


With the patch sequencing functionality available with Windows Installer 3.0 and later, you can safely use a small-update patch to deliver a discrete upgrade for several different versions of a product, even though small updates do not change the product version. Unlike a small update, a minor upgrade changes the product version. Minor upgrades also form the framework for the sequencing of small-

InstallShield 2010 User Guide

ISP-1600-UG00

1137

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

updates patches. If a small update for version 1.1 of a product is applied to version 1.2, the installer registers the small update on the target system and applies it as if it were encountered before the 1.2 minor upgrade was applied. Small-update patches also enable Windows Installer 3.0 and later to maintain a valid product state as other patches are applied and removed individually from the product. In addition, patch sequencing lets you generate upgrade packages from a smaller set of earlier product states without requiring you to consider every possible combination of patches that could exist on the target machine. The sample application lifecycle presented in the following table illustrates this advantage.
Table 27-6: Sample Application Lifecycle for Patches Applied with Windows Installer 3.0 Patch Sequence Number 1 2 3 4 Product Version 1.0 1.0 1.0 1.0 1.0 1.1 Previous Setups Targeted by Package 1.0 1.0 1.0 1.0 1.0

Application Package 1. Base installation 2. Small update 3. Small update 4. Small update 5. Small update 6. Minor upgrade

All of the small updates in the table above belong to the same patch family. Windows Installer 3.0 and later uses the patch family to compare a small-update patch with all of the other patches within the same family and determine the order in which each of the patches should be applied to the target machine. Patch sequences are added to the MsiPatchSequence table of the patch package database. This table defines the relationships between patches that target the same family of patches.

Creating Patches to Be Applied with Windows Installer 3.1


The patch sequencing functionality available with Windows Installer 3.1 enables you to further simplify the patch creation process with respect to minor upgrades. The Minor Update to Target RTM Version (MSI 3.1 Required) property on the Advanced tab of the Patch Design view lets you specify whether you want a minor-upgrade patch to target the release to manufacturing (RTM) version of the product (or the most recent major upgrade of the product, if one has been installed). You have two options for this property:

If you want your minor-upgrade patch to essentially remove all of the patches up to the RTM version of the product (or the most recent major upgrade of the product, if one has been installed) before applying the current minor-upgrade patch, select Yes for this property. With this option, all patches (with or without sequencing data) are removed. You do not need to target additional baseline versions and thus increase the patch payload. All end users can successfully apply the patch without applying any intermediate patches. If you do not want your minor-upgrade patch to remove all of those earlier patches, select No. If you select this option, it may be necessary for your patch to contain the information needed to target each of the earlier minor upgrades that were created after the RTM (or the most recent major upgrade of the product, if one was created).

1138

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

For example, if you are creating a minor-upgrade patch for service pack 2 and you select No for this property, your patch needs to target the minor-upgrade patch for service pack 1. You could also optionally target other baselines (such as RTM); doing so would increase the patch payload. Note that if you do not target the RTM version, any end user who has the RTM version but not the service pack 1 minor-upgrade patch would need to install service pack 1 before service pack 2.

Creating Patches to Be Applied with Windows Installer 4.5


If a superseded patch installs a component for the product but later a superseding patch removes that component, the components feature state may be changed to advertised, and it may not reinstalled. In addition, none of the remaining components associated with that feature can be maintained. This can be a problem on target systems that have Windows Installer 4.0 or earlier. The patch sequencing functionality available with Windows Installer 4.5 offers enhanced supersedence robustness to avoid this issue. You can specify that a component in the current patch should be flagged for uninstallation in order to avoid leaving this component orphaned on the target system after a future superseding patch is applied. If a subsequent patch is installed and it is flagged to supersede the first patch, Windows Installer 4.5 can unregister and uninstall this component if appropriate. Windows Installer 4.5 supports two methods for flagging superfluous components for uninstallation if they are superseded:

Select Yes for the Uninstall Superseded Component setting for an individual component to indicate that you want it to be uninstalled if appropriate. If you select Yes, InstallShield adds the msidbComponentAttributesUninstallOnSupersedence attribute to the component in the Component table. To access the Uninstall Superseded Component setting, open the Components view and then select the component that you want to configure. The setting is displayed in the grid on the right. The default value of this setting is No.

To indicate that you want all superfluous components in a superseded patch to be uninstalled, set the value of the Windows Installer property MSIUNINSTALLSUPERSEDEDCOMPONENTS to 1. You can set the value of the property from the command line or by adding this property to your project through the Property Manager view.

Windows Installer 4.0 and earlier ignore the msidbComponentAttributesUninstallOnSupersedence attribute and the MSIUNINSTALLSUPERSEDEDCOMPONENTS property.

Patch Uninstallation

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Windows Installer 3.0 or later supports the uninstallation of patches for small updates and minor upgrades; the patches to be uninstalled must have been installed with Windows Installer 3.0 or later. When a patch is uninstalled, the product is returned to the state it was in before the patch was
InstallShield 2010 User Guide ISP-1600-UG00 1139

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

uninstalled. With earlier versions of Windows Installer, an end user who wants to remove a patch needs to uninstall the patched product and then reinstall the product without applying the patch. In this case, any patches that should not be removed must be reapplied. End users can uninstall patches through Add or Remove Programs on systems running Windows XP SP2 and later. For systems running Windows Installer 3.0 or later with earlier versions of Windows, patches must be uninstalled from the command line. For more information, see Uninstalling Patches in the Windows Installer Help Library. The uninstallation of patches is not enabled by default because not all patches can be uninstalled. For example, a major upgrade packaged as a patch cannot be uninstalled. It is recommended that you thoroughly test the uninstallation of your patch before deploying it to your end users. To learn more about patches that are not uninstallable, see Uninstallable Patches in the Windows Installer Help Library.

Non-Administrator Patches

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Windows Installer 3.0 and later enables you to create patches that can be installed by nonadministrators. Non-administrator patches can be used if all of the following criteria are met:

The target machine must be running Windows Installer 3.0 or later on the Microsoft Windows XP or later client platform. Server platforms are not supported. The application was installed from a removable media such as a CD-ROM or DVD. The application was installed in a per-machine context.

Note: If the ALLUSERS property is overwritten at the command line, non-administrator patches will fail.

The base installation must include the certificate that will be used to sign all subsequent patches. The base installation must include the MsiPatchCertificate table. This table provides the signer certificate that will be used to verify the digital signature of subsequent patches when they are applied by a non-administrator. If necessary, this table can contain multiple certificates, and subsequent patches would need to be able to verify at least one of the certificates. For more information, see Preparing Installations for Non-Administrator Patches. The non-administrator patch must contain the MsiDigitalCertificate table. This table contains the signing certificates for the signed patches. For more information, see Signing a Patch Package or Signing a QuickPatch Package.

If any of the above criteria are not met, end users cannot install the digitally signed patch in a lockeddown environment.

1140

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

A typical scenario in which non-administrator patches are used is the computer game industry. Some computer game users are children who might not have access to areas of the system other than folders in their own user profile and registry keys under HKEY_CURRENT_USER. Their parents would have administrative access to the machines so that they can control what is installed and what their children can access. Parents would install any and all applications. If patches are available for the installed software, children would be able to download and install non-administrator patches without help from their parents, as long as all of the above criteria have been met.

Creating and Applying Patches


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

This section of the help discusses how to create and apply patches to an installation. It also covers how to enable the uninstallation of a patch, use patch sequencing, and sign a patch package.

Adding a New Patch Configuration Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add a new patch configuration item: 1. 2.

Open the Patch Design view. Right-click Patch Design and click Add New Patch Configuration.

InstallShield adds a new patch configuration item.

Adding a New Latest Setup Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1141

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Task

To add a new latest setup item: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click the appropriate patch configuration item and click Add New Latest Setup.

InstallShield adds a new latest setup item.

Adding a New Previous Setup Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add a new previous setup item: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click an existing previous setup item and click Add New Previous Setup.

InstallShield adds a new previous setup item.

Adding an External File

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To add an external file: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click Additional External Files and click Add New External File.

InstallShield adds a new external file item. You can configure this file in the pane on the right.

1142

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Configuring Patch Properties

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The best way to create and configure a patch is to use the Patch Design view. Before you work in the Patch Design view, you should have already built the projects for your earlier and later product versions. Each patch designed in the Patch Design view begins as a patch configuration. A patch configuration consists of one latest setup item and one or more previous setup items. At the patch configuration level, you can configure properties on the following property tabs:

Common Identification Digital Signature Sequence Advanced

After you have set the patch configuration properties, drill down the hierarchy in the explorer, and configure the latest and previous setup items.

Specifying Identification Information for a Patch

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Windows Installer 3.0 and later adds an Add or Remove Programs entry for each patch that is applied to a target system, even if the patch is not uninstallable.

Tip: Every time that you change the latest setup for a patch configuration in the Patch Design view, 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.

Task

To specify identification information for a patch: 1. 2. 3.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Identification tab.
ISP-1600-UG00 1143

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

4.

Configure each of the settings.

Enabling the Uninstallation of a Patch

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Windows Installer 3.0 and later supports the uninstallation of patches for small updates and minor upgrades. However, not all patches can be uninstalled. For details about the uninstallation of patches, including the associated limitations, see Patch Uninstallation.

Task

To enable the uninstallation of a patch: 1. 2. 3. 4.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Common tab. Select the Allow Patch to be Uninstalled (Requires Windows Installer 3.0) check box.

Sequencing Patches

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Before you define a sequence for patches, you should create the necessary upgrade items in the Upgrades view. Then you should add a patch configuration item in the Patch Design view. Once you have completed those tasks, you can specify the sequence for the patches.

Task

To define a patch sequence: 1. 2. 3.

Open the Patch Design view. In the Patch Design explorer, click the patch configuration whose sequence you would like to define, and then click the Sequence tab. Do one of the following:


1144

To use default patch sequencing that InstallShield generates, select the Use Default Patch Sequencing check box. To use no patch sequencing, clear the Use Default Patch Sequencing check box.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

To specify your own custom sequencing:


a. b. c.

Clear the Use Default Patch Sequencing check box. Click Add. The Patch Sequence dialog box opens. Define the sequence information as needed.

Signing a Patch Package

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Windows Installer 3.0 and later enables you to create patches that can be installed by nonadministrators. Non-administrator patches can be used if strict criteria are met. For example, the base installation that the patch will update must include the certificate that will be used to sign the patch package. To learn about the other criteria that must be met, see Non-Administrator Patches.

Note: If you want to digitally sign the filessuch as your applications executable filsin your patch, you can specify which files should be signed through the Signing tab in the Releases view.

Task

To sign a patch package: 1. 2. 3. 4. 5.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Digital Signature tab. Select the Sign the patch package check box. Configure the digital signature settings.

Password-Protecting a Patch Package

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For added security, you can password-protect your patch. When you password-protect your patch, any end user who wants to apply your patch must enter a case-sensitive password to launch your update.

InstallShield 2010 User Guide

ISP-1600-UG00

1145

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Task

To password-protect a patch package: 1. 2. 3. 4. 5.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Advanced tab. For the Password Protect Launcher setting, select Yes. For the Launcher Password setting, specify the password that you want your patch to use.

Note: The password is case-sensitive.

Specifying Whether to Build an Update.exe Update Launcher for a Patch

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield lets you specify whether you want InstallShield to create an Update.exe update launcher for your patch package. An Update.exe update launcher is required if you want to automatically update or install the Windows Installer engine on a target system if necessary. For more information on when an Update.exe launcher is required, see Patching Considerations. If you configure InstallShield so that it does not create an Update.exe update launcher, it creates an .msp file.

Task

To specify whether to include an Update.exe update launcher for a patch: 1. 2. 3. 4.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Common tab. To include Update.exe, select the Create Update.exe check box. To avoid including Update.exe, clear the Create Update.exe check box.

Tip: You can also use the Advanced tab to specify whether you want to include Update.exe.

1146

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Specifying the Update Launcher Type (Unicode or ANSI) for a Patch Package

Project: This information applies to patch creation for Basic MSI projects. Note that although the Update.exe bootstrapper for an InstallScript MSI project supports Unicode, the InstallScript engine, which manages the user interface for an InstallScript MSI patch package (.msp), does not support Unicode. Therefore, if you create a Unicode version of Update.exe for an InstallScript MSI patch, Unicode strings are displayed at run time in the user interface for the Update.exe bootstrapper; however, ANSI strings are displayed in the user interface for the .msp package.

If your patch includes an update launcher, InstallShield lets you specify the type of update launcher that you want to build:

UnicodeA Unicode update launcher can correctly display double-byte characters in the update launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the double-byte-character language.

Windows 9x does not support Unicode update launchers.

ANSIAn ANSI update launcher displays double-byte characters in the update launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page.

This option is recommended for InstallScript MSI projects.

Task

To specify the update launcher type for a patch: 1. 2. 3. 4.

In the Patch Design view, create a patch configuration if you have not already done so. In the Patch Design explorer, click the patch configuration. Click the Advanced tab. For the Update Launcher Type setting, select the appropriate option.

Copying a Latest Setup Item to Another Patch Configuration

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

If you have added more than one patch configuration item to the Patch Design view, you can copy the latest setup item within one patch configuration to another patch configuration.

InstallShield 2010 User Guide

ISP-1600-UG00

1147

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Task

To copy a latest setup item from one patch configuration to another: 1. 2.

Open the Patch Design view. In the Patch Design explorer, drag the latest setup item that you want to copy to the patch configuration item that does not have it.

InstallShield adds the latest setup item, including all of its previous setup items and additional external files, to the patch configuration.

Removing Patch Configuration Items

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove a patch configuration item: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click the patch configuration that you want to delete and then click Delete.

Removing Latest Setup Items

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove a latest setup item: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click the latest setup item that you want to delete and then click Delete.

1148

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Removing a Previous Setup Item

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Task

To remove a previous setup item: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click the previous setup item that you want to delete and then click Delete.

Building a Patch

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Once you have configured the settings for a patch configuration in the Patch Design view and created a new release for the patch in the Releases view, you are ready to build a patch for your upgrade.

Task

To build a patch: 1. 2.

Open the Patch Design view. In the Patch Design explorer, right-click the patch configuration item for which you want to build a patch, and then click Build Patch.

InstallShield builds the patch according to the settings you specified for the patch configuration item. The patch is built in the location that you specified on the Common tab for the patch configuration; InstallShield appends the following subdirectories to the output location that you specified:
\PatchConfigName\Patch

By default, InstallShield also performs upgrade and patch validation every time that you build a patch. For more information, see Validating Upgrades, Patches, and QuickPatch Packages. The build will return an error and exit if your latest setup version was built compressed.

Applying Patches

Project: This information applies to the following project types:


InstallShield 2010 User Guide ISP-1600-UG00 1149

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Basic MSI InstallScript MSI

A patch package (.msp) file contains the transforms and instructions necessary for upgrading one or more installed versions of a product. Before you can apply a patch package, Windows Installer version 1.1 or later must be present on the system. In addition, the package that you want to update must be installed locally or as an administrative image. A further requirement is that the existing installation package be installed with the same privileges and for the same users as the patch package. For example, if the product was installed for all users, the update should be installed for all users, as well. The easiest way to apply a patch is to double-click the .msp file in Windows Explorer or right-click the file and then click Open. When you apply a patch for a minor upgrade, a PatchWelcome dialog is the first dialog that opens. When you apply a patch for a major upgrade, the full dialog sequence appears, as when you run an installation standalone. From the command line, you can apply a patch with the MsiExec.exe /p option. Type the following statement to apply a patch package located at X:\Product Updates\Build 36\PatchForV1.msp:
msiexec /p "X:\Product Updates\Build 36\PatchForV1.msp"Update.exe

If you selected the Create Update.exe check box for your patch configuration in the Patch Design view, InstallShield wraps your .msp file in an executable file. Update.exe launches your patch package with the following command-line expression:
msiexec /p <path to .msp file> REINSTALL=ALL REINSTALLMODE=omus

Applying Patches in Silent Mode


There are two ways you can apply a patch in silent mode: either launch MsiExec.exe with the /qn command-line parameter, or pass /s to Update.exe. There is an important consideration to bear in mind when applying a patch in silent mode. In order to operate correctly, the Windows Installer property REINSTALL must be set to ALL and REINSTALLMODE to omus whenever you apply a patch. Since Update.exe always sets these properties at the command line, you do not have to do anything extra if your patch package is applied with Update.exe. When a patch package is applied with a full user interface, one of your installations default dialogs, PatchWelcome, is displayed. It includes control events to set REINSTALL and REINSTALLMODE with the correct options. However, since this dialog is not displayed when the end-user interface is suppressed, you must set the properties at the command line, as demonstrated below:
msiexec /p <path to .msp file> /qn REINSTALL=ALL REINSTALLMODE=omus

Because a patch does not modify the existing cached .msi database, including the v setting for REINSTALLMODE is unnecessary.

Creating a QuickPatch Project


Project: You can create a QuickPatch to update an earlier version of your product only if the earlier version was installed using Windows Installer. The installation for the earlier version of your product must have been created with one of the following project types:

1150

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Basic MSI InstallScript MSI QuickPatch

A QuickPatch project is recommended for installation authors who want to ship small, single upgrades to their users. QuickPatch authoring provides a simple alternative to creating a patch in the Patch Design view, even though it provides less customization. Fundamentally, both patch creation methods produce the same deliverable types: .msp and .exe files. To create a QuickPatch project for an existing .msi file or an already existing QuickPatch, use the Create New QuickPatch Wizard.

Creating a QuickPatch Project for an Existing QuickPatch

Project: This information applies to QuickPatch projects.

You can create a new QuickPatch project based on an existing QuickPatch project. This creates a patch that you can deliver to any end users who need to apply a patch for the original application or specific patched versions of the application.

Caution: If you open and modify any of the releases listed in the History area of the General Information view, your latest project will not work, since intermediate data shared across the releases in the History may have been lost or altered. Therefore, whenever you create a QuickPatch project for an existing QuickPatch project, InstallShield changes the existing QuickPatch project (.ism file) to read-only mode.

Task

To create a QuickPatch project for an existing QuickPatch project: 1. 2. 3. 4.

In InstallShield, open the QuickPatch project (.ism file) that you would like to patch. Open the General Information view. In the General Information explorer, click History. Click Create Next Version.

Your new QuickPatch project opens in InstallShield. You can also use the Create New QuickPatch Wizard to create a QuickPatch for an existing QuickPatch.

Specifying Whether to Streamline the QuickPatch Package

Project: This information applies to QuickPatch projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1151

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

When you are configuring a QuickPatch project, you have the ability to specify whether you want InstallShield to streamline the creation of your QuickPatch package to build as simple a package as possible. The goal of QuickPatch streamlining is to generate a QuickPatch package that has fewer new subfeatures and custom actions than a non-streamlined QuickPatch package. For example, if your QuickPatch project includes a new file or registry entry and InstallShield does not use QuickPatch streamlining, InstallShield creates a new subfeature for that file or registry entry. InstallShield also adds one or more prebuilt InstallShield custom actions to work around certain Windows Installer patch requirements. However, if InstallShield does use QuickPatch streamlining, the file or registry entry is added to an existing feature, and no special prebuilt InstallShield custom actions are required.

Note: InstallShield cannot streamline the creation of a QuickPatch package in the following scenarios:

The QuickPatch package removes an installed file. The QuickPatch package removes or renames a registry key. The QuickPatch package targets a non-streamlined QuickPatch image. That is, you cannot use QuickPatch streamlining if you select the check box in the History area of the General Information view for a QuickPatch that did not use QuickPatch streamlining. If you try to build a streamlined QuickPatch that targets one or more non-streamlined QuickPatch images, InstallShield displays a build warning, and it does not use streamlining.

Task

To specify whether to streamline the QuickPatch package: 1. 2. 3. 4.

In the View List under Patch Settings, click General Information. In the General Information explorer, click Build Settings. Click the Advanced tab. In the Streamline QuickPatch setting, select the appropriate option:

To streamline the QuickPatch package, select Yes. This is the default value for new QuickPatch projects. To avoid streamlining the QuickPatch package, select No.

Specifying Target Releases for Patching

Project: This information applies to QuickPatch projects.

Task

To specify which releases should be patched by your QuickPatch project: 1. 2.

Open the General Information view. In the General Information explorer, click History.

1152

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

3.

Select or clear the check boxes next to the intermediate releasesthe releases in between the Base QuickPatch Image and the current QuickPatch imageto specify whether or not you want them to be patched by the current project.

Note: You cannot clear the check box for the Base QuickPatch Image or the current project. If you clear the check box of an intermediate QuickPatch project, your current QuickPatch project cannot be used to upgrade a machine that has that intermediate image as the latest image of your application. For example, suppose you distributed version 1.0 as an installation and later released a patch that upgrades the original installation to version 1.1. If you create a version 1.2 QuickPatch and the check box for the 1.1 QuickPatch is not selected in the History, your 1.2 QuickPatch can be used to upgrade the 1.0 release but not the 1.1 release.

Specifying Custom Actions for the QuickPatch to Execute

Project: This information applies to QuickPatch projects.

Task

To specify which custom actions should be run when your QuickPatch is applied: 1. 2. 3.

Open the General Information view. In the General Information explorer, click Custom Action. Select or clear the check boxes next to the custom actions to specify whether or not you want them to be run during the installation of your QuickPatch.

Adding Files to a QuickPatch

Project: This information applies to QuickPatch projects.

Task

To add a file to your QuickPatch: 1. 2. 3. 4.

Open the Files view. Right-click the Files To Patch explorer and then click Insert New File. The Open dialog box opens. Click the file that you want to add, and then click Open. InstallShield adds the file to the Files To Patch explorer. Click the new file and then configure its settings.

InstallShield 2010 User Guide

ISP-1600-UG00

1153

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Specifying Identification Information for a QuickPatch

Project: This information applies to QuickPatch projects.

Windows Installer 3.0 and later adds an Add or Remove Programs entry for each QuickPatch package that is applied to a target system, even if the QuickPatch is not uninstallable.

Task

To specify identification information for a QuickPatch: 1. 2.

In the General Information view, click Build Settings, and then click the Identification tab. Configure each of the settings.

Enabling the Uninstallation of a QuickPatch

Project: This information applies to QuickPatch projects.

Windows Installer 3.0 and later supports the uninstallation of QuickPatch packages for small updates and minor upgrades. However, not all QuickPatch packages can be uninstalled. For details about the uninstallation of standard patches and QuickPatch packages, including the associated limitations, see Patch Uninstallation.

Task

To enable the uninstallation of a QuickPatch package: 1. 2.

In the General Information view, click Build Settings, and then click the Common tab. Select the Allow Patch to be Uninstalled (Requires Windows Installer 3.0) check box.

Sequencing QuickPatch Packages

Project: This information applies to QuickPatch projects.

Task

To define a sequence for a QuickPatch package: 1. 2.

In the General Information view, click Build Settings, and then click the Advanced tab. Do one of the following:


1154

To use default patch sequencing that InstallShield generates, set the Create patch sequencing entry property to Yes. To use no patch sequencing, set this property to No.
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Signing a QuickPatch Package

Project: This information applies to QuickPatch projects.

Windows Installer 3.0 and later enables you to create patches that can be installed by nonadministrators. Non-administrator QuickPatch packages can be used if strict criteria are met. For example, the base installation that the patch will update must include the certificate that will be used to sign the patch package. To learn about the other criteria that must be met, see Non-Administrator Patches.

Note: With QuickPatch projects, you can digitally sign the patch package and the Update.exe file. If you want to digitally sign individual filessuch as your applications executable filesin your QuickPatch package, you must manually sign them and then add them to your project. You can use Signcode.exe or SignTool.exe to manually sign your files. For more information, see Digital Signing and Security.

Task

To sign a patch package: 1. 2. 3.

In the General Information view, click Build Settings, and then click the Digital Signature tab. Select the Sign the patch package check box. Configure the digital signature settings.

Password-Protecting a QuickPatch Package

Project: This information applies to QuickPatch projects.

For added security, you can password-protect your QuickPatch package. When you password-protect your QuickPatch package, any end user who wants to apply your QuickPatch must enter a case-sensitive password to launch your update.

Task

To password-protect a QuickPatch package: 1. 2. 3.

In the General Information view, click Build Settings, and then click the Advanced tab. For the Password Protect Launcher setting, select Yes. For the Password Protect Launcher setting, specify the password that you want your patch to use.

Note: The password is case-sensitive.

InstallShield 2010 User Guide

ISP-1600-UG00

1155

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Specifying Whether to Build an Update.exe Update Launcher for a QuickPatch Package

Project: This information applies to QuickPatch projects.

InstallShield lets you specify whether you want InstallShield to create an Update.exe update launcher for your QuickPatch package. An Update.exe update launcher is required if you want to automatically update or install the Windows Installer engine on a target system if necessary. For more information on when an Update.exe launcher is required, see Patching Considerations. If you configure InstallShield so that it does not create an Update.exe update launcher, it creates an .msp file.

Task

To specify whether to include an Update.exe update launcher for a QuickPatch: 1. 2.

In the General Information view, click Build Settings, and then click the Common tab. To include Update.exe, select the Create Update.exe check box. To avoid including Update.exe, clear the Create Update.exe check box.

Tip: You can also use the Advanced tab in the Build Settings area to specify whether you want to include Update.exe.

Specifying the Update Launcher Type (Unicode or ANSI) for a QuickPatch Package

Project: This information applies to QuickPatch packages that are created for the following project types:

Basic MSI QuickPatch (if the base installation is Basic MSI)

Note that although the Update.exe bootstrapper for an InstallScript MSI project supports Unicode, the InstallScript engine, which manages the user interface for an InstallScript MSI patch package (.msp), does not support Unicode. Therefore, if you create a Unicode version of Update.exe for an InstallScript MSI patch, Unicode strings are displayed at run time in the user interface for the Update.exe bootstrapper; however, ANSI strings are displayed in the user interface for the .msp package.

If your patch includes an update launcher, InstallShield lets you specify the type of update launcher that you want to build:

UnicodeA Unicode update launcher can correctly display double-byte characters in the update launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the double-byte-character language. Windows 9x does not support Unicode update launchers.

1156

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

ANSIAn ANSI update launcher displays double-byte characters in the update launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page.

Task

To specify the update launcher type for a QuickPatch package: 1. 2.

In the General Information view, click Build Settings, and then click the Advanced tab. For the Update Launcher Type setting, select the appropriate option.

Deleting Files from the Files To Patch Explorer

Project: This information applies to QuickPatch projects.

Task

To delete a file from the Files To Patch explorer: 1. 2.

In your QuickPatch project, open the Files view. Right-click the file that you want to delete and then click Delete.

Modifying and Removing Installed Files with a QuickPatch

Project: This information applies to QuickPatch projects.

Task

To modify or remove an installed file with your QuickPatch: 1. 2. 3. 4.

Open the Files view. Right-click the Files To Patch explorer and then click Patch Existing File. The Select File dialog box opens. Click the file that you would like to modify or delete. InstallShield adds the file to the Files To Patch explorer. Click the file that you just added to the Files To Patch explorer and then configure its settings.

Tip: As an alternative to steps 3 and 4 above, you can drag and drop files or folders from the Original Setup Files explorer to the Files To Patch explorer.

InstallShield 2010 User Guide

ISP-1600-UG00

1157

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Adding, Modifying, and Deleting Registry Data with a QuickPatch

Project: This information applies to QuickPatch projects.

When you add, modify, or delete registry data with a QuickPatch project, the procedures are basically the same as the ones that you perform for the original installation. The one difference is that before you can add registry data for a QuickPatch project, you must select an existing feature in the View Filter list at the top of the Registry view. All registry data must be associated with a feature that already exists in the original product because you cannot add new features or components with a QuickPatch.

Tip: To change any registry settings that you modified for the QuickPatch project, you can right-click the item and then click Revert.

Validating Upgrades, Patches, and QuickPatch Packages


Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Validation helps identify some common problems that may be encountered when attempting to upgrade an existing Windows Installerbased installation.

Note: You can perform upgrading and patching validation on uncompressed releases only.

The validation engine for upgrading and patching currently consists of different validators that are designed to test for a specific condition and report failure as necessary. Upgrading and patching validation was designed to facilitate the detection of upgrade scenario issues and is distinct from Windows Installer validation, which is better suited for validating first-time installation issues.

Validators

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

1158

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

The following table contains a list of validators for upgrading and patching validation.
Table 27-7: Upgrade and Patch Validators Validator Number Description This validator verifies that when the upgrade is applied, the files that have been removed from the latest version of the installation will be uninstalled from the target machine. This validator detects cases where RemoveFile table entries are scheduled to run during installation only. This validator verifies that the proper settings exist so that an upgrade can start successfully. This validator verifies that when the upgrade is applied, all files that have changed in the latest installation will be installed properly on the target system. This validator verifies that feature InstallLevel values are configured so that no feature will be ignored in an upgrade. This validator detects when a minor upgrade is being attempted, even though a major upgrade should be performed. This validator verifies that the name of the .msi package has not changed. This validator verifies the integrity of the ActionProperty and Version elements of all records in the Upgrade table. This validator verifies that when the installation is run as an upgrade, registry entries that have been deleted from an installation will be removed. This validator detects when schema incompatibility exists. Schema incompatibility will prevent the creation of a patch. This validator verifies that new features are properly added to the latest installation so that they will be installed when the upgrade is run. This validator verifies that the end user is informed of the intended functionality of the Remove attribute for a major upgrade item. This validator warns you that because of a specific entry in the Upgrade table, part of the existing product will be left on the target machine when the major upgrade is applied. This validator warns you that if you want to package your upgrade as a patch in certain scenarios, end users will not be able to uninstall your patch. This validator applies to small updates and minor upgrades.

Val0001 Val0002 Val0003 Val0004 Val0005 Val0006 Val0007 Val0008 Val0009 Val0011 Val0012 Val0013 Val0014 Val0015

Val0001

Project: This information applies to the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1159

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

InstallScript MSI QuickPatch

Message (Error)
The file [1] with a target of [2] appears to have been removed from the setup, but does not appear in the RemoveFile table. This file will not be removed from the target machine when an upgrade is run unless the RemoveFile table has been authored.

[1] is the name of the file that has been removed, while [2] is the target path of this file.

Description
When a small update or minor upgrade is applied, any file or files that have been removed from the latest setup will not automatically be uninstalled from the target machine because a minor upgrade will recache the local .msi database. This recached copy no longer contains any reference to the file, since it has been removed from the setup. To remove this file when the upgrade is run, you must add entries to the RemoveFile table. When the upgrade is run, these RemoveFile table entries will be executed, and the file will be deleted.

Note: This validator does not apply to major upgrades because the uninstall-and-then-reinstall nature of major upgrades does not lend itself to this type of consideration.

To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
Using the file name and file destination from the previous version setup package, create an entry in the RemoveFile table using the Direct Editor. The file name can contain wildcard characters.

Note: When authoring the RemoveFile table, you must specify a component. This components install state is used to determine if a file matching the RemoveFile signature should be removed or not. Be sure to specify a component that you are certain will reinstall when the upgrade is applied.

Val0002

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message (Note)
The RemoveFile table entry [1] has an InstallMode of 1. In an upgrade scenario, if the component [2] does not have to reinstall, the files attributed to this table entry will not be removed. You can change the InstallMode value to 3 so that the files will at least get

1160

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

removed on uninstall, or make sure that this RemoveFile table entry is associated with a component that will get reinstalled.

[1] is the name of the entry in the first column of the RemoveFile table that is causing this message. [2] is the name of the component with which this RemoveFile table entry is associated.

Description
When you author an entry in the RemoveFile table, you must specify a value in the InstallMode column. If this value is set to 1, this tells the installer that the specified file should only be removed upon installation of the associated component. In an upgrade scenario, if the associated component does not need to be reinstalled, then the RemoveFile table entry will not be executed, and the file will not be removed from the target machine. In a subsequent uninstallation, you will need to manually remove this file and the directory that contains it since the file still exists on the target machine.

Note: This validator does not apply to major upgrades because the uninstall-and-then-reinstall nature of major upgrades does not lend itself to this type of consideration.

To perform this validation test, the validation engine will need to compare the latest setup to a previous version of that setup.

Corrective Action
This validator is only a note. It is designed to make you aware of a potential issue with your setup when you are creating an upgrade. If you do not intend on performing an upgrade or you are certain that the component associated with this RemoveFile entry will be reinstalled in an upgrade, you can choose to disregard this note. You can also choose to change the InstallMode value to 3. In this case, a file will not be removed during installation, but it will always be removed during an uninstallation.

Val0003

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Note)
This setup will perform a SMALL upgrade of the referenced previous setup.

Message 2(Note)
This setup will perform a MINIOR upgrade of the referenced previous setup.

Message 3(Note)
This setup will perform a MAJOR upgrade of the referenced previous setup.

InstallShield 2010 User Guide

ISP-1600-UG00

1161

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Message 4(Error)
The package code for the latest setup does not differ from that of the previous version. In order to perform an upgrade, the package code MUST change.

Message 5(Note)
The product version [1] differs from the product version [2] but only past the third element. The Windows Installer does not detect version differences past the third version element.

[1] is the version number of the previous installation. [2] is the version number of the latest installation.

Message 6(Error)
The setup needs to perform a Major Upgrade of the previous setup specified. However, the Upgrade Code for the previous setup [1] is not in the upgrade table. An upgrade will not occur.

[1] is the upgrade code of the previous installation.

Message 7(Error)
The setup needs to perform a Major Upgrade of the previous setup specified. While upgrade table entries exist for the Upgrade Code, there is no upgrade table entry that matches the Product Version [1] or Product Language [2].

[1] is the version number, and [2] is the language ID of the installation.

Message 8(Error)
A previous package does not contain an UpgradeCode property. A major upgrade will fail to uninstall any previous versions that do not have an UpgradeCode.

Description
This validator determines the type of upgrade that is necessary to update an earlier installation. For example, if you are creating a minor upgrade but this validator states that your installation is configured to perform a major upgrade, consider changing your minor upgrade to a major upgrade. This validator also checks if the package code has changed. This check is performed for all upgrade types. Changing the package code is a requirement any time that you decide to release an installation, whether or not you intend to upgrade it. If the package code has not changed, you will see the error described in message 4. If the product version has changed but only past the third version item, the validator displays the note described in message 5. This note is designed to alert you that changes to the fourth item in a version resource will not appear as unique versions to the installer at run time. Additionally, if a major upgrade is required, this validator will check if the appropriate entries exist in the latest installation to remove the previous installation from the target machine. If these entries do not exist, you will see message 6 or 7. Message 6 is displayed when there are no settings related to the earlier product. Message 7 is displayed when there is a setting related to the earlier product, but the signature of that setting does not patch the signature of the previous setup. Error 8 is displayed if there is a setting related to the earlier product, but the upgrade code was not found in the earlier installation.

Corrective Action
If you receive message 4, you must generate a new package code for the latest version of your installation. A good option is to set the Generate Package Code property for the product configuration to Yes.
1162 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

If you receive message 5, you can choose to disregard it since it is for informational purposes. However, note that having indistinguishable versions can create difficulties if you attempt to apply a major upgrade at a later date. If you receive message 6, you need to add a major upgrade item. There are several possible reasons why you might receive message 7. The first possibility is that the product version does not fall within the range of versions specified as potential target installations. If the version of the previous installation is either the upper bound or the lower bound of the acceptable range of product versions to upgrade, you may want to check the minimum and maximum inclusive settings for your major upgrade item. Additionally, the product language may not be listed in the list of supported languages for upgrading. You will also get error message 7 if you have defined a major upgrade item for the previous setup but have marked that item to Detect Only. If you encounter error 8, remove the earlier package that does not have an upgrade code.

Val0004

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message (Error)
The key file '[1]' in component '[2]' is versioned in the previous package and has a lower version or is unversioned in the upgraded package (old file version '[3]', new file version '[4]'). This will prevent the component from reinstalling in an upgrade scenario.

[1] is the name of the key file , [2] is the name of the component that contains the key file, [3] is the version number of the file in the earlier package, and [4] is the version number of the file in the upgrade.

Description
This validator verifies that when the upgrade is applied, all files that have changed in the upgrade will be updated properly on the target system. At run time during a minor upgrade or small update, Windows Installer does not reinstall a component if its key file would be downgraded in the process. Therefore, the key file in the upgrade needs to have a version number that is equal to or greater than that of the key file in the old package. The exception is when the end user sets the REINSTALLMODE property to a, which forces the installation of all files, regardless of version.

Note: This validator does not apply to major upgrades because the uninstall-and-then-reinstall nature of major upgrades does not lend itself to this type of consideration.

To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1163

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Corrective Action
To resolve the error, ensure that the version number of the key file in the upgrade has a version number that is equal to or greater than that of the key file in the old package. As an alternative, you can create a major upgrade.

Val0005

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Warning)
The default InstallLevel for feature [1] is zero. If this feature gets enabled on install, you must author similar logic to ensure that it is also enabled in maintenance mode, otherwise in an upgrade the feature will be ignored.

[1] is the name of the feature whose InstallLevel is the cause of concern.

Message 2(Warning)
A condition for feature [1] may possibly set the InstallLevel for this feature to zero at runtime. If this feature gets enabled on install, you must author similar logic to ensure that it is also enabled in maintenance mode, otherwise in an upgrade the feature will be ignored.

[1] is the name of the feature whose InstallLevel is the cause of concern.

Description
The significance of setting a feature InstallLevel to zero is that it will cause the feature to appear as disabled at run time, and the user will not be able to enable it. It is tempting to set this feature to zero by default and then enable it as needed through a feature condition. In an upgrade, if this feature condition does not get evaluated so that it can set the install level to a value other than zero, the InstallLevel for the feature will remain at zero. Therefore, no changes made to the components in that feature will be installed. Another variation of this issue is that the feature InstallLevel defaults to something other than zero, but there exists a feature condition that sets this feature InstallLevel to zero at run time. This issue raises problems for major upgrades, since the previous installation is already in the field. Val0005 applies to all upgrade types: major, minor, and small. To perform this validation test, the validation engine will need to examine only the latest version of your setup.

Corrective Action
Ensure that any processing that can effect the evaluation of these feature conditions is also performed when an upgrade is run. Remember that in an upgrade, the user interface being displayed to the end user may be different from the user interface displayed the first time the installation is run.
1164 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Making sure that your feature InstallLevel values do not default to zero is important so that a major upgrade will be able to safely install and uninstall files.

Val0006

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Error)
The Component [1] identified by ComponentID [2] is missing from the newest version of your setup. You cannot delete components and still do a minor/small upgrade. You must perform a major upgrade.

[1] is the name of the component that has been removed. [2] is the ComponentID associated with the component that was deleted.

Message 2(Error)
The Feature [1] is missing from the newest version of your setup. You cannot delete features and still do a minor/small upgrade. You must perform a major upgrade.

[1] is the name of the feature that has been removed.

Description
If any components or features have been deleted from the latest version of the installation, you must perform a major upgrade to avoid potential problems associated with leaving resources and registrations on a machine.

Note: If you move a feature or component to another location in the installation, you have effectively deleted it from its original location.

This validator does not apply to major upgrades. It identifies when a minor upgrade or small update should be a major upgrade. To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
If you need to make major architecture changes to your installation, you should apply a major upgrade. You can also use the RemoveFile, RemoveRegistry, and RemoveIniFile tables to clean up some resources that may be orphaned. However, this will not clean up the Windows Installer registration information for those components and features. Leaving that registration information behind can cause unpredictable results in a future upgrade installation or uninstallation of your product.

InstallShield 2010 User Guide

ISP-1600-UG00

1165

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Val0007

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Error)
The MSI package name for the most recent setup [1] differs from the MSI package name of the previous setup [2]. Small/Minor upgrades require that the package name remain the same.

[1] is the name of the new .msi package that has changed. [2] is the name of the original .msi package.

Description
When you perform a minor upgrade or a small update, the previous and latest versions of your installation must have the same .msi package name. Renaming the .msi package will result in the inability to find the source media when the files are transferred. This validator does not apply to major upgrades. To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
This is a limitation of the Windows Installer service. The only recourse here is to give your .msi packages the same name.

Val0008

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Warning)
In the Upgrade table, the Action Property [1] is not listed as a member of SecureCustomProperties. The defined upgrade may not function properly.

[1] is the name of one of the action properties specified in the Upgrade table.

Message 2(Error)
In the Upgrade table, the Action Property [1] is not public. The defined upgrade will not function properly.

[1] is the name of one of the action properties specified in the Upgrade table.

1166

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Message 3(Error)
In the Upgrade table, the Action Property [1] is already defined in the property table. The defined upgrade will not function properly.

[1] is the name of one of the action properties specified in the Upgrade table.

Message 4(Error)
In the Upgrade table, the Action Property [1] is used more than once. This may cause undesirable results at runtime.

[1] is the name of one of the action properties specified in the Upgrade table.

Message 5(Error)
In the Upgrade table, there exists a record where the MaxVersion [1] is less than the MinVersion [2]. This will cause unpredictable results a runtime.

[1] and [2] are version numbers specified in the Upgrade table.

Description
For all records in the Upgrade table:

Ensure that the ActionProperty is public. Ensure that the ActionProperty is unique. Ensure that the ActionProperty is not predefined in the Property table. Ensure that the ActionProperty is in the SecureCustomProperties list. Ensure that MinVersion is less than or equal to MaxVersion.

This validator applies only to major upgrades. To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
To find where the value of the Action property is entered, open the Upgrades view. Select the major upgrade item, and then click the Advanced tab. The Detect Property value is used for the Action property.

Note: Note the following:

The property is public if it is in all uppercase letters. The property is unique if it is not shared with any other major upgrade items. If the property is defined in the Property table, go to the Property Manager and delete it. If the property is not on the SecureCustomProperties list, you can add this to the SecureCustomProperties property in the Property Manager. Multiple properties are delimited by semicolons. Find the major upgrade item in the Upgrades view where the minimum version is higher than the maximum version and correct it.

InstallShield 2010 User Guide

ISP-1600-UG00

1167

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Val0009

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Warning)
A registry entry has been removed from the component [1]. There exists a corresponding entry in the RemoveRegistry table, however, that entry is not associated with this component. This may result in the registry entry not being removed when an upgrade is run.

[1] is the name of the component from which a registry entry has been removed in the latest version of the setup.

Message 2(Error)
A registry entry has been removed from the component [1]. This key must be added to the RemoveRegistry table, otherwise it will be orphaned by an upgrade. [2].

[1] is the name of the component from which a registry entry has been removed in the latest version of the setup. [2] is the missing registry entry in the form <Root>|<Key>|<Value>.

Description
When a small update or minor upgrade is performed, any registry entries that have been removed from the latest installation will not automatically be uninstalled from the target machine. The reason is that a minor upgrade will recache the local .msi database. This recached copy no longer contains any reference to these registry entries, since it has been removed from the installation. To remove this registry entry, add entries to the RemoveRegsitry table so that it will be removed when the upgrade is applied. When the upgrade is run, these RemoveRegistry table entries will be executed, and the registry entry will be deleted.

Note: This validator does not apply to major upgrades because the uninstall-and-then-reinstall nature of major upgrades does not lend itself to this type of consideration.

To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
Using the root, key, and value of a registry entry from the previous version of the installation package, create an entry in the RemoveRegistry table through the Direct Editor. The Value field can be authored with the minus character (). This will result in the removal of the entire registry key with all of its values and subkeys.

1168

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Note: When you add an entry to the RemoveRegistry table, you are required to specify a component. This components install state is used to determine if a registry entry matching this RemoveRegistry signature should be removed. Ensure that you specify a component that you know will be reinstalled when the upgrade is applied.

Val0011

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Error)
The data types for the Version column of the TypeLib table differs from that of the Upgraded image. This will cause a failure to create the patch package.

Message 2(Warning)
The target image was created with Windows Installer 1.2 or previous, and the Upgraded Image was created with Windows Installer 2.0 or later. Although validation did not detect any data type conflicts, creating patches for packages that span this schema inflection point can be problematic.

Description
With the release of Windows Installer 2.0, the schema of the .msi installation package changed. The data type of the Version column in the TypeLib table changed from I2 to I4. It is not possible to patch .msi installations using the old schema with .msi packages using the new schema.

Note: This validator does not apply to major upgrades because the uninstall-and-then-reinstall nature of major upgrades does not lend itself to this type of consideration.

To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
You can still distribute your upgrade as a minor upgrade, however, you will not be able to distribute your upgrade as a patch.

Val0012

Project: This information applies to the following project types:

Basic MSI
ISP-1600-UG00 1169

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

InstallScript MSI QuickPatch

Message 1(Error)
The new feature [1] is defined as a root level feature. New features MUST be defined as subfeatures of features that already exist in the original setup.

[1] is name of the feature causing the validation message.

Message 2(Error)
The validation engine has detected the new feature [1]. This feature must have the 'FavorParent' and 'Required' attributes set to Yes in order to install in an upgrade scenario.

[1] is name of the feature causing the validation message.

Description
If you intend to distribute the latest version of your installation as a small update or a minor upgrade, you must follow certain rules if you decide to add features to the installation. The first rule is that the feature must be added as a child to an existing feature. The second rule is that the feature must have its Remote Installation property set to FavorParent and its Required property set to Yes. If these two rules are not followed, the contents of the new feature will not be installed when the upgrade is applied. Instead, the end user will need to run the installation in maintenance mode and manually select the feature to be installed locally. This validator does not apply to major upgrades. To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
Add the new feature as a child of an existing feature, and set its Remote Installation property set to FavorParent and its Required property set to Yes.

Val0013

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Warning)
Validation has detected that you are using the Remove column in the Upgrade table for the entry [1]. Doing this will result in the incomplete uninstallation of the referenced setup. For the most common upgrade scenarios, you should not author the Remove column of the upgrade table.

[1] is the Upgrade code being referenced in the Upgrade table.

1170

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

Description
When the remove attribute of a major upgrade item is left empty, it will remove all of the features from the target product, effectively uninstalling the entire product. If you place one feature name in the remove attribute of a major upgrade item, only that feature will be removed, and all of the other features of the existing product will be left on the target machine along with the target product itself. This means that you will be left with two products on the target machine with two entries in Add or Remove Programs. This feature is intended for users who want to leave the target product on end users machine while removing only some of its features. This validator applies only to major upgrades. To perform this validation test, the validation engine needs to examine the latest installation only.

Corrective Action
This is a warning. If the behavior described above is what you desire, you can disregard this warning. Otherwise, do not use the Remove attribute of a major upgrade item.

Val0014

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Error)
The component identified by ID [1] has been removed from the latest version of the setup. On a Major Upgrade the resources contained within these components will get uninstalled, possibly deleting resources necessary for your application to run.

[1] is the component code that identifies a component in the earlier installation.

Description
This validator performs this check only if the major upgrade is configured to install new files, then remove unneeded files. The issue this validator is designed to protect you against does not exist if the major upgrade is configured to uninstall the product first, then reinstall it. When the target upgrade mode is selected, the installer achieves this functionality by relying on reference count components on the target machine. The reference count for a required component is incremented when the latest application is installed, and it is decremented when the earlier application is removed. However, since the reference count never reaches zero, the persistent components remain on the target machine.

InstallShield 2010 User Guide

ISP-1600-UG00

1171

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

The problem exists when you delete a component from the installation, and then add the resources from that component to a different component. Instead, you should perform the following:
1. 2.

Install a new component with new resources. Uninstall the old component with old resources.

When the old component is uninstalled in step 2, it may remove registry entries, .ini file changes, environment variables, and so on if they were added by the new component in step 1. Since components are referenced by a GUID, and a new component GUID is generated every time you add a new component to your installation project, even a simple deletion or addition of a component that already exists can cause this behavior. This validator applies only to major upgrades. To perform this validation test, the validation engine compares the latest installation to an earlier version of that installation.

Corrective Action
To correct this problem, you can either configure your upgrade to uninstall the application first and then reinstall it, or you can add a component with a GUID equal to the one specified in this error message. Even though the component is empty, its existence helps Windows Installer keep accurate reference counts, and it helps to prevent components from being prematurely uninstalled.

Val0015

Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

Message 1(Warning)
The [1] table contains new content. Therefore, if you are packaging this upgrade as a patch, you will not be able to make it an uninstallable patch.

[1] is the name of the table that is causing this message.

Description
When an end user uninstalls a patch, the product is returned to the state it was in before the patch was uninstalled. If a patch is not uninstallable, an end user who wants to remove the patch needs to uninstall the patched product and then reinstall the product without applying the patch.

Note: If a target machine does not meet certain requirements (for example, it must have Windows Installer 3.0 or later), the patch will not be uninstallable, even if this validator warning is resolved. For more information about the requirements for uninstallable patches, see Patch Uninstallation.

1172

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

If a patch adds a row to any of the following specific tables, the patch cannot be uninstalled, even if the Allow this patch to be uninstalled check box is selected for the patch.

BindImage Class Complus CreateFolder DuplicateFile Environment Extension Font IniFile ISLockPermissions IsolatedComponent ISSelfReg LockPermissions MIME MoveFile MsiServiceConfig MsiServiceConfigFailureActions MsiLockPermissionsEx ODBCAttribute ODBCDataSource ODBCDriver ODBCSourceAttribute ODBCTranslator ProgId PublishComponent RemoveIniFile SelfReg ServiceControl ServiceInstall

InstallShield 2010 User Guide

ISP-1600-UG00

1173

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

TypeLib Verb

Note that under certain conditions, it is possible that an end user may not be able to remove a patch that adds content to the RemoveFile or RemoveRegistry tables. If the patch is designed to remove a file or registry entry that was not included in the original installation package, uninstalling the patch will not restore that file or registry entry. This validator applies to small updates and minor upgrades only. To perform this validation test, the validation engine compares the latest installation to an earlier version if the Allow this patch to be uninstalled check box is selected for the patch.

Corrective Action
This validator is designed to warn you that if you are creating a patchor you later decide to package your upgrade as a patchyour end users will not be able to uninstall the patch unless you take corrective action to resolve it. To resolve this warning, do one of the following:

Clear the Allow this patch to be uninstalled check box for the patch. If you do this, end users will not be able to uninstall the patch. Remove the new data from the table mentioned in the warning message. Note, however, that depending on your patch requirements, removing new table data may mean that your patch will not fix the issue in your application that led you to create the patch in the first place.

Patching Assemblies in the Global Assembly Cache


Project: This information applies to the following project types:

Basic MSI InstallScript MSI QuickPatch

With Windows Installer 3.0 or later, the MsiPatchOldAssemblyFile and MsiPatchOldAssemblyName tables enable a patch package to patch an assembly in the global assembly cache (GAC) without making a run-time request for the original installation source. By default, InstallShield automatically generates entries for these tables when you build a patch or QuickPatch package. (To disable this automatic generation in a patch or QuickPatch project, set the Generate MsiPatchOldAssembly tables property to No. For a patch, this property is on the Advanced tab of the patch configuration item in the Patch Design view. In a QuickPatch project, this property is on the Advanced tab of the Build Settings item in the General Information view.)

Note: To automatically generate entries for the MsiPatchOldAssemblyFile and MsiPatchOldAssemblyName tables, InstallShield must have write access to the latest version of the .msi package to which the patch applies. InstallShield modifies this package before creating the patch. InstallShield automatically attempts to make this package writable; if it cannot, a build warning is generated, and the table entries are not created. These table entries are applied only if the target system is running Windows Installer 3.0 or later. The patch runs if the system is running Windows Installer 2.0; however, these tables are ignored, and if the patch needs to update a file in the
1174 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

GAC, it makes a request for the original source package. InstallShield generates these table entries even if you include only the Windows Installer 2.0 engine in Update.exe, since a target system with Windows Installer 3.0 or later already installed can use them.

Working with Differential and Full Releases


Project: This information applies to InstallScript projects.

InstallShield provides two different mechanisms for creating upgrades for InstallScript installations:

You can package your upgrade as a full release that updates an existing product if an earlier version is installed, or behaves as a first-time installation if no earlier version is present. You can package your upgrade as a differential release that contains only the changed data (bytelevel file differences) between the versions to be updated.

For step-by-step instructions on how to update an InstallScript installation by either creating a differential or full release, consult this section of the help.

Creating an InstallScript Release to Update Previous Versions

Project: This information applies to InstallScript projects.

InstallShield enables you to create a release for an InstallScript project to update one or more existing versions of your application. You can customize any necessary criteria through the script.

Note: If the product that you want to update was not installed by an installation created with InstallShield X or later, InstallShield DevStudio, or InstallShield Professional 6.0 or later, you must create a new project. You may also want to consider creating a new project if you plan to include extensive changes in this update.

Task

To create an update release: 1. 2.

Open a new or existing InstallScript project. Verify that the Product GUID matches the GUID with which the previous version of your product was installed. To check the Product GUID, in the General Information view, inspect the value of the Product GUID setting.

Note: If you are creating a new project and you want to update features that were installed by the original installation, ensure that each features GUID matches the GUID with which the previous version of that feature was installed. To check a features GUID, select it in the Features or Setup Design view and inspect the value of its GUID property. 3.

Specify a version number for your product update:

InstallShield 2010 User Guide

ISP-1600-UG00

1175

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

a. b. 4.

In the View List under Installation Information, click General Information. In the Version setting, type the version number.

Indicate whether you want to build a differential or full release:


a. b.

In the Releases view, click the desired release. If you want to build a differential release, set the value of the Differential Media property to Yes and continue with step 6. If you want to build a full release, leave the property set to No and continue with step 5.

Note: If you are using the Release Wizard, the Update panel is where you select the release format (Full or Differential). 5.

If you are building a full release, specify the versions of your product to which the update should be applied. In the Supported Versions property, type the applicable version numbers using a semicolon to separate the different versions (for example, 1.2.3;1.2.4). If you leave the Supported Versions property blank or select the Non-version specific, the update is applied to all earlier versions of your product. Continue with step 7.

Note: These version numbers can also be specified in the Release Wizard by selecting version numbers from the box on the Update panel. Do not specify version numbers that correspond to releases that were created by versions of InstallShield Professional earlier than 6.0 because those releases cannot be updated. 6.

If you are building a differential release, you must use the Release Wizard to specify one or more existing releases to which the current project is compared when creating the new differential release.

Note: Do not specify existing releases that were created by versions of InstallShield Professional earlier than 6.0 because those releases cannot be updated. Only the specified existing releases can be updated by the resulting differential release. To review the criteria that determine whether a file in the current project is included in a differential release, see Differential vs. Full Releases.

To specify a release in the current project:


a. b. c. d.

In the Releases view, right-click the release name and select Release Wizard. The Release Wizard opens. In the Update panel, click Add. The Add Existing Media dialog box opens. Select the desired release. Click OK.

To specify a release that is not in the current project:


a. b.

In the Releases view, right-click the release name and select Release Wizard. The Release Wizard opens. In the Update panel, click Import. The Media File Properties dialog box opens.

1176

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

c.

Specify the Data1.hdr file of the desired release by either entering the fully qualified file name in the Media Header File box or select or clicking the browse button to browse for the file. Click OK.

d.

Confirm the specified releases version information is displayed in the Differential Media box of the Update panel. If no version information is displayed, do the following:
a. b. c.

Select the release in the list box and click Modify. The Media File Properties dialog box opens. Select the Specify the version information below option and type or select a version number in the list. Click OK.

7.

Build the release.

See Migrating from InstallShield Professional 6.x for more information on using a version 6.x-created script with an update-enabled installation.

Notifying End Users about Upgrades Using FLEXnet Connect


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

FLEXnet Connect provides a mechanism that enables you to automatically notify your Web-connected end users when patches, updates, and product information for your application are ready for release.

FLEXnet Connect Implementation


There are two cycles of tasks that you perform when using FLEXnet Connect to automatically inform end users about updates: initial deployment and update deployment. Once you have performed the initial deployment steps for your application, each time you want to distribute an update of that application to end users, you perform the update deployment cycle of steps. To learn about the initial deployment steps, see Preparing Installations for Update Notifications.

Update Deployment
1. 2. 3. 4. 5.

Use InstallShield to create an update for your application. Register your new product version and product code with the FLEXnet Connect Publisher site, a Web-based management portal. Publish your update to the FLEXnet Connect Publisher site, and set the Message Status to Test. Test your update. Publish your update to the FLEXnet Connect Publisher site, and set the Message Status to Active.

InstallShield 2010 User Guide

ISP-1600-UG00

1177

Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects

FLEXnet Connect includes a variety of options that can be purchased together for a complete solution, or separately for a customized solution. To learn more, visit the Acresso Web site. To access the FLEXnet Connect documentation, see the FLEXnet Connect Help Library.

1178

ISP-1600-UG00

InstallShield 2010 User Guide

28
Additional Installation Options
In addition to helping you create an installation package that installs products, InstallShield provides other installation options to help you enhance your final installation package. Some of these options include enabling multilingual installations, building conditional statements, and defining installation prerequisites. Read more about additional installation options in the following sections.

InstallShield 2010 User Guide

ISP-1600-UG00

1179

Chapter 28: Additional Installation Options

1180

ISP-1600-UG00

InstallShield 2010 User Guide

29
Creating Multilingual Installations

Edition: The Premier edition of InstallShield includes support for creating multilingual installations.

InstallShield supports many features that enable you to customize your installation for global distribution. Using these features, you can create a single installation project that displays end-user text in multiple languages and can handle conditional installation of language-specific files. Creating a multilingual installation primarily involves separating code from language-specific resources and files. You may also need to distribute separate files for your installation, such as graphics, license files, or custom actions, depending on the language in which the installation is running. Another consideration is whether you need to install different application files depending on the target systems locale.

Task

InstallShield enables the creation of multilingual installations by dividing installation authoring into the following distinct tasks:

Specify the languages that your installation will include. Translate the strings for each supported language. Modify end-user dialogs as necessary for each language. Mark any language-dependent components. Select the languages to include in the release.

Globalization Tips
Consider these points when designing your product for a global audience:

The goal of global distribution is a localized product that is international in scope and readily adaptable to specific areas of the world.
ISP-1600-UG00 1181

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Setting the Default Project Language

The key to globalization is resource and code separation, plus country and language independence. Globalizing your installation requires a design that is simple and modular. Creating a worldwide specification package means incorporating global requirements into the installation specifications from the beginning. Make bitmaps and icons culturally sensitive. What may be acceptable in one country could be misleading or offensive in another. English strings are usually shorter than equivalent text strings in other languages. Translated strings grow an average of 30 to 40 percent. This implies that both static and temporary storage areas will increase in size. When designing prompts, use only one-half of the available space to allow for expansion. Avoid hard-coding element positioning and size on the screen, because these items can change when the element is translated.

Setting the Default Project Language


One of the projects supported languages must serve as its default language. The default language determines the following:

The localizable strings that you specify throughout various views in InstallShieldsuch as the Display Name setting for a feature or the Description setting for a shortcutare all from the default languages string entries, which you can see in the String Editor view. You can edit the values for the default language in the String Editor view, or in the other views throughout InstallShield. If your installation does not include the language selection dialog and it also does not include support for a target systems language, the default language is the language in which the installation runs on that target system. (The language selection dialog lets end users select which language version of the installation they would like to run.)

You can use the General Information view or the String Editor view to specify or change the default language.

Task

To use the General Information view to specify or change a projects default language: 1. 2.

In the View List under Installation Information, click General Information. In the Default Language setting, select the appropriate language.

Task

To use the String Editor view to specify or change a projects default language: 1. 2.

In the View List under User Interface, click String Editor. In the Default Language box, select the appropriate language.

1182

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Settings for Languages

Tip: You can override the default user interface language for a particular release. To do so, select the appropriate language in the Default Language setting on the Build tab in the Releases view.

Settings for Languages


Edition: The Premier edition of InstallShield includes support for creating multilingual installations.

InstallShield lets you set languages at the project level, at the component level, and at the release level. Specifying languages at each level has different affects on your project. The following table describes various language-related settings.
Table 29-1: Language Settings in InstallShield Setting General Information view settingSetup Languages Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description

Project: The behavior of this setting varies, depending on whether the project type is Windows Installer based (a Basic MSI, InstallScript MSI, or Merge Module project) or InstallScript based (an InstallScript or InstallScript Object project). In Basic MSI, InstallScript MSI, and Merge Module projects, the Setup Languages setting lets you specify the languages that you want to be listed in the UI Languages setting in the Releases view. Therefore, if a language is not listed for this Setup Languages setting at the project level, you cannot include that particular UI language in your projects releases. In InstallScript and InstallScript Object projects, the Setup Languages setting lets you specify the languages that you want to be listed in the Languages setting in the Components and Releases views in your project. In general, if a language is not listed for this setting at the project level, you cannot designate that a particular component in your project is targeted for that language; in addition, you cannot designate that the components and UI strings for a particular language are included in your projects releases. When you add a supported language to your project through this setting, InstallShield adds string entries for that language to your project. The string entries include the built-in user-interface string resources that are already translated. For more information, see Selecting the Installation Languages.

InstallShield 2010 User Guide

ISP-1600-UG00

1183

Chapter 29: Creating Multilingual Installations Settings for Languages

Table 29-1: Language Settings in InstallShield (cont.) Setting Project Type Description The Languages setting for a component enables you to specify the languages for which the component is intended, for use in build-time filtering. By default, components are language independent, meaning that none of the components data (such as files and registry entries) are specific to a particular language.

Component Basic MSI, settingLanguages InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Project: In InstallScript and InstallScript Object projects, if a language is not selected in the General Information view of a project, it is not listed as one of the available languages for the projects components. To designate that the component is intended for only certain languages, click the ellipsis button (...) in this setting. The Languages dialog box opens, enabling you to select the appropriate languages for the component. For more information, see Marking Components as Language Dependent.

Tip: To learn how to specify which language-dependent components are installed at run time, see Installing Components Based on Language. Releases view setting (Build tab)Data Languages Basic MSI, InstallScript MSI, Merge Module Use the Data Languages setting if you want to include certain components and exclude others based on the language that is selected for each component. If the language specified for a component does not match one of the languages that is selected for this setting, InstallShield does not include the component in the release. By default, releases are language independent; that is, none of the projects components are excluded from the release. Releases view setting (Build tab)UI Languages Basic MSI, InstallScript MSI, Merge Module The UI Languages setting lets you specify which user interface languages you want to include in a release. Note that if a language is not selected in the Setup Languages setting in the General Information view of the project, it is not listed as one of the available languages for the UI Languages setting. Use the Language(s) setting if you want to include certain components and exclude others based on the language that is selected for each component. This setting also lets you specify which user interface languages you want to include in a release. If the language specified for a component does not match one of the languages that is selected for this setting, InstallShield does not include the component in the release. In addition, if a UI language that is included in the project does not match one of the languages that is selected for this setting, InstallShield does not include the UI strings in the release. By default, releases are language independent; that is, none of the projects components or UI strings are excluded from the release. Note that if a language is not selected in the General Information view of a project, it is not listed as one of the available languages for the Language(s) setting.

Releases view setting (Build tab)Language(s)

InstallScript, InstallScript Object

1184

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Selecting the Installation Languages

For information about the default language in a project, see Setting the Default Project Language.

Selecting the Installation Languages


Edition: The Premier edition of InstallShield includes support for creating multilingual installations.

If you have the Premier edition of InstallShield, you can select the languages that you want to include in your installation. When you add a language to your project, InstallShield adds string entries for that language. To add supported languages to your project, use the Setup Languages setting in the General Information view. The affect of this setting differs, depending on what project type you are using.

In Basic MSI, InstallScript MSI, and Merge Module projects, the Setup Languages setting in the General Information view lets you specify the languages that you want to be listed in the UI Languages setting in the Releases view. Therefore, if a language is not listed for this Setup Languages setting at the project level, you cannot include that particular UI language in your projects releases. In InstallScript and InstallScript Object projects, the Setup Languages setting in the General Information view lets you specify the languages that you want to be listed in the Languages setting in the Components and Releases views in your project. In general, if a language is not listed for this setting at the project level, you cannot designate that a particular component in your project is targeted for that language; in addition, you cannot designate that the components and UI strings for a particular language are included in your projects releases.

When you add a supported language to your project through this setting, InstallShield adds string entries for that language to your project. The string entries include the built-in user-interface string resources that are already translated. The New Language Wizard in InstallShield lets you add unsupported languages to projects. An unsupported language is one in which none of the default run-time strings are translated. When you add an unsupported language to a project, that language is made available in the Setup Languages setting, and in other various language-related settings throughout InstallShield. In addition, InstallShield uses the strings from your projects default language as placeholders for the strings in that newly added unsupported language; you can use the String Editor view to provide translated strings for unsupported language. You can build an installation for distribution in as many languages as you have support for, but InstallShield runs an installation in only one language. For more information, see How InstallShield Determines Which Language the Installation Runs In.

Marking Components as Language Dependent


All new components are language independent by default. Mark a component as specific to a language if you want the component and its data built into a package that targets that language.

InstallShield 2010 User Guide

ISP-1600-UG00

1185

Chapter 29: Creating Multilingual Installations Installing Components Based on Language

Task

To mark a component as language dependent: 1. 2. 3. 4.

In the View List under Organization, click Setup Design (for installation projects only) or Components. Select the component that you want to configure as language dependent. InstallShield displays the components settings in the right pane. Click the Languages setting. InstallShield displays the list of languages in the bottom-right pane. Select the check box for each language to which this components data apply. Clear the check box for each language that does not apply.

Tip: To learn how to specify which language-dependent components are installed at run time, see Installing Components Based on Language.

Installing Components Based on Language


Assuming that its feature is selected for installation, a language-dependent component that is present in the release is installed onto the target system. The components language setting determines which components are built into the release, not necessarily which components are installed.

Specifying Which Language-Dependent Components Are Installed at Run Time for Basic MSI and InstallScript MSI Projects
To specify whether a component is installed based on the target systems language, use the Windows Installer property SystemLanguageID in the components Condition setting. For example, the following condition allows the componentwhich may o r may not be marked as French in InstallShieldto be installed only onto French (France) systems:
SystemLanguageID = 1036

Other properties that can be used to determine language characteristics at run time are UserLanguageID, which is the numeric identifier of the end users default language, and ProductLanguage, which is the identifier of the language in which the installation is running.

Specifying Which Language-Dependent Components Are Installed at Run Time for InstallScript Projects
During run time of InstallScript installations, you can control the languages that your installation supports by calling the FeatureFilterLanguage function. In the OnFilterComponents event handler, the framework typically calls this function with the languages that match the target system so that only the appropriate components are installed. By calling FeatureFilterLanguage, you can override this default behavior to install or prevent the installation of components based on any language criteria that you specify. For more information, see FeatureFilterLanguage.

1186

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Including Languages in the Release

Including Languages in the Release


Edition: The Premier edition of InstallShield includes support for creating multilingual installations.

When you configure a release through the Release Wizard or the Releases view, you can specify the language of the installations end-user interface and for filtering language-dependent application data. You can use the same project to build a version of your release for any of the supported languages. Or you can select multiple languages in the Release Wizard or the Releases view to create a single installation that is capable of running in any one of the included languages and installing components specific to any number of languages.

Including User-Interface Resources for a Language


You decide which languages to make available in your installation in the Release Wizard or the Releases view. While you can create a package that contains support for several languages, the installation itself is presented in only one language. For more information, see How InstallShield Determines Which Language the Installation Runs In.

Including Language-Dependent Components


Another consideration is which of your applications language-dependent data you want to include in your project. By marking a component as language dependent and then configuring the appropriate language-related setting on the Build tab in the Releases view as needed, you can automatically include or exclude (filter) that component from the release. You can also specify the language for the release in the Release Wizard. If you do not select specific languages at the release level, InstallShield includes all components in the release. If you select a language, InstallShield builds all components that are specific to that language and all language-independent components into the release. For example, choosing to build an Englishonly release means that Japanese componentsthat is, components with Japanese selected for the Languages settingare filtered out.

Tip: You may have components specific to several languages depending on your selections for the language-related setting in the Releases view or the Release Wizard. To learn how to install them only on machines with a specific locale, see Installing Components Based on Language.

Translating String Entries


Instead of hard-coding strings throughout your project, you can use string entries in areas of InstallShield that accept localizable text. Each string entry consists of a language-independent identifier and a corresponding language-specific value. At run time, the installation displays the appropriate translated string values.

InstallShield 2010 User Guide

ISP-1600-UG00

1187

Chapter 29: Creating Multilingual Installations Exporting and Importing String Entries

To help streamline the process of localizing a project, all of the text strings that may be displayed at run time during the installation process are available in one consolidated view: the String Editor view. You can use this view to edit the strings for everything from button text to feature descriptions. You can also use this view to export each languages string entries to a file, translate the values that are listed in the file, and then import the translated file into your project. For information on working with string entries, see Using String Entries in InstallShield. For import and export instructions, see Exporting and Importing String Entries.

Exporting and Importing String Entries


To ease the task of translating all of the run-time strings in your project, InstallShield enables you to export the string entries for a language to a tab-delimited text (.txt) file. You can provide that .txt file to a translator who can update the file with translated text. Then you can import the .txt file back into your InstallShield project for a localized end-user interface.

Tip: To automate the export and import process, you can use the InstallShield automation interface. To learn how, see Exporting and Importing String Entries Using the Automation Interface.

Exporting a Languages String Entries from InstallShield to a Text File


InstallShield lets you export all of the string entries for a language, or only some of the string entries. You may want to export only the string entries that have been modified since a specific date. This is useful if you want to give the translator only the string entries that are new or have been modified since the last round of translations.

Task

To export all of the string entries for a language: 1. 2. 3. 4. 5. 6.

In the View List under User Interface, click String Editor. Click the Export Strings button. The Select File and Language to Export dialog box opens. Browse to the location where you want InstallShield to save the text file. In the File name box, enter the name of the text file that you want InstallShield to create. In the Language list, select the language whose strings you want to export to the text file. Click Save.

InstallShield exports all of the selected languages string entries to a tab-delimited Unicode text file. You can give this text file to your translator.

Tip: By default, the export process creates a Unicode text file. Although the Select file and language to export dialog box has a check box that lets you export the string entries to an ANSI file, an ANSI file is not created by default. The Unicode text file is the preferred type of file, since ANSI files requires that the build machine have the appropriate code pages for double-byte languages. To learn more, see Code Page Requirements for Language Support.

1188

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Exporting and Importing String Entries

Task

To export only some of the string entries for a language: 1. 2.

In the View List under User Interface, click String Editor. Select the string entries that you want to export:


3. 4. 5. 6.

To select multiple consecutive rows, click the first row, and then press SHIFT while clicking the last row. To select multiple nonconsecutive rows, click the first row, and then press CTRL while clicking each additional row.

Press CTRL+C to copy the string entries in the selected rows to the Clipboard. Create a new text file in a text editor such as Notepad. Press CTRL+V to paste the content in the Clipboard in the text file. Save the text file. It is recommended that you save the file with Unicode encoding, since Unicode supports double-byte characters. To learn more, see Code Page Requirements for Language Support.

Tip: The automation interface lets you automate the process of exporting only the string entries that have been modified since a specific date. To learn more, see Exporting and Importing String Entries Using the Automation Interface.

Importing String Entries from a Text File Into an InstallShield Project


InstallShield lets you import translated string entries from a text file to an InstallShield project.

Task

To import the tab-delimited text file that has been translated: 1. 2. 3. 4. 5.

In the View List under User Interface, click String Editor. Click the Import Strings button. The Select File and Language to Import dialog box opens. Select the text file that you want to import. In the Language list, select the language for the text entries that you are importing. Click Open.

The string entry importer checks for conflicts with string identifiers. If any conflicts exist, InstallShield prompts you to indicate whether you want to overwrite the existing entry in your project with the one in the text file.

InstallShield 2010 User Guide

ISP-1600-UG00

1189

Chapter 29: Creating Multilingual Installations Modifying Dialogs for Each Language

Modifying Dialogs for Each Language


When you add support for a language to your project, InstallShield provides a version of each standard dialog translated into the newly added language. You can edit these dialogs, as well as custom or imported dialogs, for each supported language in the Dialog Editor.

Task

To view these dialogs: 1. 2. 3. 4.

In the View List under User Interface, click Dialogs. In the Dialogs explorer, expand the All Dialogs item. Double-click the name of a dialog to see an item for each supported language. To modify a dialogs layout, select the language version.

The rule to remember is that all controls have the same properties, string entries, and behavior for each language. When you add a control to the English (United States) copy of a dialog, you are adding the same control to the German version. Setting the Sunken property of a bitmap to True makes that property True for each language-specific version.

Resizing Elements
The exceptions to the above rule are the Height and Width properties of a control. These properties are specific to each languages version. Because string lengths can vary widely from one language to another, when you resize a control, you are not affecting the controls size for any other language. For example, you may need to enlarge a push button to accommodate a longer string after it is translated into German. The push button remains the same size for every version of the dialog since it was created. When you resize the control in the German layout, it is resized only for that language.

Modifying Strings
The strings in each dialog come from that languages string entries. When you select a string for a control that accepts localizable text, although the string identifier is the same for each language-specific version, the string value that is displayed comes from the current languages string entries. If you edit the value in the controls property sheet, you are actually editing that string identifiers value for that language.

Modifying File Resources


Several controls, such as bitmaps and check boxes, accept a file that will be streamed into the setup package. Because the file resources can be different depending on the language, when you edit the File Name value, you will be supplying a file only for that particular language. The file name can differ for each language because every File Name property uses a string entry. Thus, the file name is originally the same for every language. When you edit strings in the String Editor view or edit the dialog layout for a specific language, you can enter a new file name only for that language.

Right-to-Left-Language Dialogs
Basic MSI and Merge Module projects include support for languages that are written and read from right to left. For more information, see Dialog Support for Right-to-Left Languages.

1190

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations How InstallShield Determines Which Language the Installation Runs In

How InstallShield Determines Which Language the Installation Runs In


Although you can localize an installation in as many languages as your project supports, an installation can be run in only one language. When Setup.exe is first launched, it determines which language should be used for the installation depending on the languages that you include in the installation project, or on the end users selection, as described below.

If your installation has support for only one language, it always runs in that language. When Setup.exe initializes, it determines the target systems language. If you selected more than one language in the Setup Languages panel of the Release Wizard (or on the Build tab for the release in the Releases view), and one of those languages matches the target systems language, then Setup.exe launches the installation in the target systems language. If the target systems language is not present in your installation, Setup.exe launches the installation in the default language.

Displaying the Language Selection Dialog at Run Time


InstallShield lets you specify whether you want Setup.exe to display the Languages dialog that allows end users to choose the language in which the installation should run. The Languages dialog is always displayed in the default language, which you can also set in the Setup Languages panel of the Release Wizard, or on the Build tab for the release in the Releases view. The dialog presents a list of available languages, which are the same languages that you selected in the Setup Languages panel and on the Build tab. When a selection is made, a Basic MSI or InstallScript MSI installation applies a transform containing all of the user interface resources for that language and then launches the installation in the selected language. Because the Languages dialog is displayed by Setup.exe, you need to create a setup launcher. For more information, see Creating a Setup Launcher.

Note: The first time that the end user selects a language in the Languages dialog, the installation runs in the selected language. After an installation has been run in a particular language, it cannot be run in any other language on the same machine. This prevents the installation from running repair mode in a language that is different from the one that was used for the first-time installation. It also prevents the installation from installing features for a language that is different from the one that was used for the first-time installation.

Customizing Language Support


Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in Basic MSI projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1191

Chapter 29: Creating Multilingual Installations Language Identifiers

If you need your installation to run in languages that are not supported by InstallShield Premier Edition, or you want to create your own translations for some of the supported languages, you can add support for those languages with the New Language Wizard. This wizard lets you to select the languages that you would like to support and the projects to which you would like to add these languages. It then adds the languages you choose to the list of available languages for your installation. To learn more about this wizard, see New Language Wizard.

Language Identifiers
Throughout the InstallShield interface, you must refer to specific languages by their language identifiers, or LCIDs. The identifier is an integer value that identifies a specific language. The language ID is more commonly given as a hexadecimal value, but you must specify the decimal version for Windows Installer. The following table shows the LCIDs for all of the supported languages. To learn more about language support, see Run-Time Language Support in InstallShield.

Project: Note that Basic MSI and InstallScript MSI installations use different IDs than InstallScript installations.

1192

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 29: Creating Multilingual Installations Language Identifiers

Edition: Also note that support for Arabic (Saudi Arabia) and Hebrew is available only in Basic MSI and Merge Module projects in the Premier edition. Table 29-2: Language Identifiers Identifier (Windows Installer Based) 1025

Language Name Arabic (Saudi Arabia)

Identifier (InstallScript) (This language is not supported.) 0x042d 0x0402 0x0403 0x0804 0x0404 0x041a 0x0405 0x0406 0x0413 0x0409 0x040b 0x0c0c 0x040c 0x0407 0x0408 (This language is not supported.) 0x040e 0x0421 0x0410 0x0411 0x0412 0x0414

Basque Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English (United States) Finnish French (Canada) French (France) German Greek Hebrew

1069 1026 1027 2052 1028 1050 1029 1030 1043 1033 1035 3084 1036 1031 1032 1037

Hungarian Indonesian Italian Japanese Korean Norwegian

1038 1057 1040 1041 1042 1044

InstallShield 2010 User Guide

ISP-1600-UG00

1193

Chapter 29: Creating Multilingual Installations Language Identifiers

Table 29-2: Language Identifiers (cont.) Identifier (Windows Installer Based) 1045 1046 2070 1048 1049 3098 1051 1060 1034 1053 1054 1055

Language Name Polish Portuguese (Brazil) Portuguese (Portugal) Romanian Russian Serbian (Cyrillic) Slovak Slovenian Spanish Swedish Thai Turkish

Identifier (InstallScript) 0x0415 0x0416 0x0816 0x0418 0x0419 0x0c1a 0x041b 0x0424 0x040a 0x041d 0x041e 0x041f

1194

ISP-1600-UG00

InstallShield 2010 User Guide

30
Installing Multiple Instances of Products

Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Caution: Creating an installation that lets end users install multiple instances of a product on the same machine and in the same context requires sophisticated authoring and serious commitment on the part of the installation developer. This functionality is recommended for only advanced installation developers.

Windows Installer allows only one instance of a product code to be installed in the machine context and only one instance to be installed in each user context. Windows Installer 3.x and later includes support for a product codechanging transform. This type of transformcalled an instance transformenables the same .msi package to be used to install multiple instances of the same product in the same context because it changes the product code for each instance. Using the multiple-instance support in InstallShield reduces some of the effort needed to support multiple instances of a product. With InstallShield, you can configure one base installation or patch for a product and then configure multiple instances that correspond with each additional instance that you want to support. At build time, InstallShield creates an instance transform for each instance and streams the instance transforms into the .msi package. At run time, the installation typically displays an instance selection dialog that lets end users specify whether they want to install a new instance or maintain an existing one.

Run-Time Requirements for Multiple-Instance Support


Project: This information applies to Basic MSI projects.
InstallShield 2010 User Guide ISP-1600-UG00 1195

Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield

For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

The following table lists the operating system and Windows Installer requirements for multiple-instance support.
Table 30-1: Run-Time Requirements for Multiple-Instance Support Type of Requirement Requirement Target operating system The target system must have one of the following operating systems, or a later version: Implication Consider adding a launch condition so that end users can install the product only on platforms that support installing multiple instances of products.

Windows Server 2003 Windows Vista Windows XP SP1 Windows 2000 SP4 Tip: You can use the Installation Requirements page of the Project Assistant to quickly add launch conditions to your project. For more information, see Specifying Operating System Requirements in the Project Assistant. If target systems may not have Windows Installer 3.0 or later, consider adding the Windows Installer redistributable to your project. To learn more, see Adding Windows Installer Redistributables to Projects.

Windows Installer version

Windows Installer 3.0 or later is required.

Configuring Multiple Instances in InstallShield


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

The typical process for adding multiple-instance support to a Basic MSI project is as follows:
1. 2. 3. 4. 5.

For a product configuration in the Releases view, add a new instance for each instance that you want to support. Set the properties for each instance. Ensure that each instance will have its own isolated files and nonfile data on the target system if appropriate. For more information, see Special Considerations for Multiple-Instance Support. Build your release. Thoroughly test your release.

1196

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield

Adding an Instance to a Product Configuration


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

When you are configuring multiple instances for your product in InstallShield, you need to add and define one instance for each instance to be installed, in addition to the base instance that is permitted by your base installation package. In InstallShield, instances are defined at the product configuration level. Each instance that you create corresponds with a different instance transform that InstallShield creates at build time.

Note: Do not add an instance for the base instance that is permitted by your installation package. Your installation does not need an instance transform for this instance.

Task

To add an instance to a product configuration: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the product configuration that should contain the new instance. Click the Multiple Instances tab. Right-click the Instances explorer and then click New.

InstallShield adds a new instance with a number as the name of the instance. In addition, InstallShield adds the ProductCode property, with a new GUID value, to the pane on the right. Once you have added an instance, you need to set its properties. For more information, see Setting Properties for an Instance.

Tip: When InstallShield adds the new instance to the Instances explorer, you can enter a new name for the instance, or right-click the instance later and then click Rename. For information on naming an instance, see Naming an Instance.

Naming an Instance
Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

InstallShield 2010 User Guide

ISP-1600-UG00

1197

Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield

When you add the first instance to any product configuration in your project, InstallShield adds the Windows Installer property InstanceId to your project, and sets its value to 0. The 0 value is for the base installation package. Each instance that you define in your project must have a different integer for its InstanceId value. InstallShield uses the name of an instance on the Multiple Instances tab in the Releases view as the InstanceId property value that corresponds with that instance. Therefore, when you are naming an instance, make sure that you conform to the following guidelines:

Each instance in a product configuration must have a different name. Each instance name must be an integer: it cannot contain any letters or other characters.

Task

To assign a new InstanceId value to an instance: 1. 2. 3. 4. 5.

In the View List under Media, click Releases. In the Releases explorer, click the product configuration that contains the instance that you want to modify. Click the Multiple Instances tab. In the Instances explorer, right-click the instance whose InstanceId property value you want to change, and then click Rename. Enter a new value.

Setting Properties for an Instance


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Each instance must have a unique product code. Therefore, when you add an instance to a product configuration in the Releases view, InstallShield automatically adds the ProductCode property, with a new GUID value, to the pane on the right for that instance. You should also set the ProductName property to a different name for each instance. This helps to make instances easily distinguishable from each other in Add or Remove Programs. You can set additional properties for an instance. For example, you may want to define instance-specific properties that you use in conditions for components. As another example, you may want to set a property for each instance to define an instance-specific location for certain files or registry entries.

Tip: InstallShield automatically sets the value of the InstanceId property with a different identifier for each instance in a product configuration. To learn more, see Naming an Instance.

1198

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield

Task

To set a property for an instance: 1. 2. 3. 4. 5. 6.

In the View List under Media, click Releases. In the Releases explorer, click the product configuration that contains the instance. Click the Multiple Instances tab. In the Instances explorer, click the instance. In the grid in the right pane, click the field in the Property column of the last row, and then enter the name of the property that you want to set. In the Value column, enter the property value that you want to be associated with the current instance.

To set the value of a property for the base instancethe instance that is installed by the base installation packageenter the property and corresponding value in the Property Manager view. To learn more, see Creating Properties.

Deleting an Instance from a Product Configuration


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

If you want to reduce the number of instances of your product that are allowed in the machine context and in each user context, you can delete an instance from a product configuration in your project.

Task

To delete an instance from a product configuration: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the product configuration that contains the instance that you want to remove. Click the Multiple Instances tab. In the Instances explorer, right-click the instance that you want to remove, and then click Delete.

InstallShield deletes the instance, as well as all of its associated properties, from your project.

InstallShield 2010 User Guide

ISP-1600-UG00

1199

Chapter 30: Installing Multiple Instances of Products Special Considerations for Multiple-Instance Support

Special Considerations for Multiple-Instance Support


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Caution: Creating an installation that lets end users install multiple instances of a product on the same machine and in the same context requires sophisticated authoring and serious commitment on the part of the installation developer. This functionality is recommended for only advanced installation developers.

Supporting the installation of multiple instances of a product requires careful advance planning to ensure that the multiple instances can exist side by side within the same context. Consider the following points when you are planning your installation.

To ensure that uninstalling or upgrading some instances of your product does not affect other instances, you may need to isolate some or all of the files and the nonfile data that are installed on the target system for each instance. In some cases, you may not want to isolate some of the files. For example, if your installation includes one or more COM servers, you may want to configure each component that contains a COM server to install to a location that does not change for each instance. For these components, you can select Yes for the Shared setting so that Windows Installer uses DLL reference counting. You may need to create a separate set of components for each instance that your installation supports. In this scenario, you could add a condition in the Components view or the Setup Design view for each component so that each one is installed for the appropriate instance. For example, since the default InstanceId value for the base instance that is installed by the installation is 0, you could use the following condition for a component that contains data for the base instance:
InstanceId=0

The default InstanceId value for the next instance that is installed is 1. Therefore, you could use the following condition for a component that contains data for this next instance:
InstanceId=1

For more information, see Authoring Multiple Instances with Instance Transforms in the Windows Installer Help Library.

Configuring and Building a Release that Includes Multiple-Instance Support


Project: This information applies to Basic MSI projects.

1200

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 30: Installing Multiple Instances of Products Creating Patches for Multiple Instances of a Product

For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Configuring the Release


To include multiple-instance support in a release, you must configure your release to include a Setup.exe setup launcher, since it displays the instance selection dialog when appropriate. To learn how to include the Setup.exe setup launcher, see Creating a Setup Launcher.

Building the Release


Building a release that includes multiple-instance support is slightly different than building a release that does not include this support. For multiple-instance support, InstallShield builds some additional files: instance transforms and instance packages. Instance Transforms At build time, InstallShield generates instance transforms for each instance. InstallShield streams the instance transforms into the .msi file that it creates in the Disk1 folder. Depending on how you have configured the release, the .msi file may be compressed into the Setup.exe file, or it may be left uncompressed. Instance Packages At build time, InstallShield generates an .msi file for each instance. The name of each file is InstanceIdN.msi, where N represents the value of the InstanceId property for that instance. The .msi files are stored in a folder called Instances under the release location.

Creating Patches for Multiple Instances of a Product


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

To create a patch that updates multiple instances of a product, begin by creating a minor upgrade or a small update. Then configure a patch in the Patch Design view. For the previous setup, select the Setup.exe file or the .msi file of the earlier installation that installs the version of the product that you want to upgrade. For the latest setup, select the Setup.exe file or the .msi file of upgrade release.

Tip: For detailed information about creating upgrades and patches, see Updating Applications.

At patch build time, InstallShield creates an Update.exe file or an .msp file, depending on how you have configured the patch in the Patch Design view. For an overview on the run-time behavior of a patch that includes multiple-instance support, see RunTime Behavior for Installing Multiple Instances of a Product.

InstallShield 2010 User Guide

ISP-1600-UG00

1201

Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product

Run-Time Behavior for Installing Multiple Instances of a Product


Project: This information applies to Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Running a First-Time Installation that Includes a Setup.exe File


The first time that an end user runs the Setup.exe file for your installation that supports multiple instances, Windows Installer installs the base instance that corresponds with your base installation package without any of the instance transforms. By default, the standard dialogs are displayed, regardless of whether your installation supports multiple instances. If your product is successfully installed and the end user runs your installation again, the setup launcher displays a dialog that lets them select which instance they want to install. This instance selection dialog is displayed after the language selection dialog, if your installation includes one, but before the InstallWelcome dialog. The dialog contains two radio buttons:

Install a new instanceThis option lets end users install a new instance of your product. When an end user selects this option, the new instance of the product is installed. Maintain or upgrade an existing instanceThis option lets end users maintain or upgrade an instance that they select from a list of already installed instances. When an end user selects this option, selects the instance that they want to change, and then clicks Next, the installation displays the following dialogs for the selected instance: the PreparingToInstall dialog, the MaintenanceWelcome dialog, and then the MaintenanceType dialog.

Figure 30-1: Instance Selection Dialog Displayed the Second Time the Product Is Being Installed

1202

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product

If an end user installs the last supported instance and then runs the installation again, the same dialog is displayed, but the Install a new instance option is disabled. The Maintain or upgrade an existing instance option is selected, and the end user can select the instance that they want to maintain or upgrade.

Tip: To suppress the instance selection dialog, you can use the /instance command-line parameter.

Running an Upgrade Packaged as a Full Installation that Includes a Setup.exe File


When a multiple-instance installation is an upgrade that is packaged as a full installation and that has a Setup.exe file, it behaves as a first-time installation if a user is installing the base instance or a new instance by launching the Setup.exe file. If an end user selects the Maintain or upgrade an existing instance option for an already installed instance, the installation lets the end user upgrade or maintain that instance, just as it would for a first-time installation.

Tip: To suppress the instance selection dialog, you can use the /instance command-line parameter.

Launching a First-Time Installation or an Upgrade that Is Packaged as a Full Installation Without a Setup.exe File from the Command Line
When you do not include a Setup.exe setup launcher with your multiple-instance installation, an end user can run your .msi file to install the base instance that corresponds with your base installation package without any of the instance transforms. In order to install any instance that corresponds with one of the instance transforms in your package, the end user needs to include the appropriate command-line parameters for MsiExec.exe. For example, the following command line installs a new instance, since the MSINEWINSTANCE property is set to 1. Windows Installer applies the InstanceId1.mst instance transform during installation of the new instance. The colon before the name of the instance transform is required because InstallShield embeds the instance transforms within the .msi file.
msiexec /i MyPackage.msi MSINEWINSTANCE=1 TRANSFORMS=:InstanceId1.mst

Note that the convention that InstallShield uses for naming instance transform files is the property name InstanceId, followed by the instances value of the InstanceId property, followed by .mst. Thus, for the instance whose InstanceId property is set to 5, the name of the transform is InstanceId5.mst. The MSINEWINSTANCE property should be set to 1 only if it is the first time that the end user is installing the specified instance; otherwise, an error is displayed. To perform maintenance for an instance or to upgrade an instance, use the /n parameter to pass the instances product code. For example, the following command line displays the MaintenanceType dialog, which lets the end user specify whether they want to upgrade, maintain, or remove the instance of the product that has the specified product code:
msiexec /i MyPackage.msi /n {00000001-0002-0000-0000-624474736554}

To uninstall an existing instance, use the following format at the command line:
msiexec /i MyPackage.msi /n {00000001-0002-0000-0000-624474736554} /x

InstallShield 2010 User Guide

ISP-1600-UG00

1203

Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product

Running an Upgrade that Is Packaged as a Patch with an Update.exe File


If you package your upgrade as a patch and you specify that you want to include an Update.exe file, the installation displays the patch version of the instance selection dialog. The dialog contains two radio buttons:

Patch all of the existing instancesThis option lets end users apply a patch to all installed instances of your product. When an end user selects this option, Windows Installer applies the patch to each instance separately, until all instances are updated. The instances are updated in order from the lowest InstanceId property value to the highest. Patch an existing instanceThis option lets end users apply a patch to an instance that they select from a list of already installed instances. When an end user selects this option, selects the instance that they want to change, and then clicks Next, the installation displays the PreparingToInstall dialog and then the PatchWelcome dialog.

Figure 30-2: Instance Selection Dialog Displayed When an Update.exe Patch is Launched

Tip: To suppress the patch version of the instance selection dialog, you can use the /instance command-line parameter.

Running an Upgrade Packaged as a Patch Without an Update.exe File


If you use an .msp file without an Update.exe file for your patch, and the end user runs your .msp file without passing any command-line parameters, Windows Installer behaves as if the end user selected the Patch all of the existing instances option in the patch version of the instance selection dialog: Windows Installer applies the patch to each instance separately, until all instances are updated. The instances are updated in order from the lowest InstanceId property value to the highest. To apply an .msp patch to a specific instance, pass the /p option, as well as the /n option. The /n option must specify the product code of the installed instance to which the patch should be applied. For example:

1204

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product

msiexec /p mypatch.msp /n {00000001-0002-0000-0000-624474736554}

InstallShield 2010 User Guide

ISP-1600-UG00

1205

Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product

1206

ISP-1600-UG00

InstallShield 2010 User Guide

31
Detecting Conditions on the Target System
When you are creating an installation, you may need to make sure that certain conditions exist on the target system. For example, if your product requires a particular operating system, your installation may need to check the target system to ensure that this requirement is met. If the requirement is not met, your installation might display an error to inform the end user about the requirement. InstallShield includes support for detecting various conditions on a target system. For more information, see this section of the documentation.

Building Conditional Statements


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

A conditional statement is an expression that the Windows Installer can evaluate as True or False. Typically, conditional statements are used to perform some action or enable a components installation based on the value or existence of a property. You can use operators similar to those in Visual Basic for comparative and logical operations. For more information, see Conditional Statement Syntax.

InstallShield 2010 User Guide

ISP-1600-UG00

1207

Chapter 31: Detecting Conditions on the Target System Building Conditional Statements

Tip: In the Components, Dialogs, Custom Actions and Sequences, and Custom Actions views of InstallShield, you can access the Condition Builder dialog box when you click the ellipsis button in the condition property to help you build conditional statements.

Important: When you click the OK button on this dialog box, InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Conditional Statement Syntax.

Examples
The following table provides examples of some conditional statements and explanations of how they can be used. Consult the Windows Installer Help Library for more information on Windows Installer properties and conditional expression operators.
Table 31-1: Examples of Conditional Statements Purpose To install a component only on machines running Windows 2000 or later, specify this expression for its Condition property. To install a component only on Windows XP, specify the expression for its Condition property. Syntax VersionNT>=500

VersionNT=501 And WindowsBuild>=2264

Note: You can also use the ServicePackLevel and WindowsBuild properties to distinguish between different operating systems. For a list of values, see Operating System Property Values in the Windows Installer Help Library. To execute a custom action only if the product has not been installed, check the value of the Installed property with this condition. To install a component only if the target system is using U.S. English as the default language, compare the value of the SystemLanguageID property to the language ID for U.S. English by using this component condition. Not Installed

SystemLanguageID=1033

Note: Related properties include UserLanguageID (the default language for the current user) and ProductLanguage (the language being used for the setup programs user interface). To allow your product to be installed only if the screen resolution is a minimum of 1024 X 768, add this condition to the Install Condition setting in the General Information view. ScreenX >= 1024 AND ScreenY >= 768

1208

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 31: Detecting Conditions on the Target System Building Conditional Statements

Table 31-1: Examples of Conditional Statements (cont.) Purpose To allow your product to be installed only if the target system has at least 2 GB of RAM, add this condition to the Install Condition setting in the General Information view. Syntax PhysicalMemory >= 2048

Conditional Statement Syntax


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

Conditional statements have a strictly governed syntax that uses properties, Windows Installer table keys, literals, and evaluative operators.

Functionality
A conditional statement performs some action in an installationsuch as launching a custom action or installing a componentbased on whether the expression evaluates to True, which has the numeric value of 1. False returns have the numeric value of 0. The simplest of expressions, specifying a property name, is True if the property is defined. For example, the simple conditional statement Version9X evaluates to True when the installation is running under Windows 95 or Windows 98. You can build more complex conditional statements using the operators and values described in the tables below.

Values
The following table describes how to use values in your conditional statements. All values except for environment variables are case sensitive.
Table 31-2: Descriptions of Values Value Windows Installer property Description The name of the property. Nonexistent properties are evaluated as empty strings. Any integer value from -32,767 to +32,767. You cannot use a floating point value.

Integer

InstallShield 2010 User Guide

ISP-1600-UG00

1209

Chapter 31: Detecting Conditions on the Target System Building Conditional Statements

Table 31-2: Descriptions of Values (cont.) Value String literal Description Enclose the text in quotation marks. For example:
"InstallShield"

Environment variable

Precede the variable name with a percent symbol. For example:


%TEMP

Operators
The tables below list all of the conditional statement operators by type. Note the following:

The operators follow the same precedence as those in Visual Basic. Use parentheses to override precedence. Operators are not case sensitive. Unlike in Visual Basic, there are no arithmetic operators. Precede the operator with a tilde (~) if you do not want the comparison to be case sensitive. The result is always False when you compare a string with an integer, unless you use the <> operator.

Table 31-3: Descriptions of Logical Operators Logical Operator Not And Or Xor Eqv Imp Description Performs logical negation. The result is True if the value is False, and vice versa. The result is True if both values are True. The result is True if either value is True. The result is True if only one of the values is True. The result is True if both values are True or both values are False. Performs a logical implication. The result is True if the first term is False or the second is True.

Table 31-4: Descriptions of Comparative Operators Comparative Operator Description = <> > >= The result is True if the first value is equal to the second. The result is True if the first value is not equal to the second. The result is True if the first value is greater than the second. The result is True if the first value is greater than or equal to the second.

1210

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 31: Detecting Conditions on the Target System Detecting Administrator and Elevated Privileges

Table 31-4: Descriptions of Comparative Operators (cont.) Comparative Operator Description < <= The result is True if the first value is less than the second. The result is True if the first value is less than or equal to the second.

Table 31-5: Descriptions of Substring Operators Substring Operator >< << >> Description The result is True if the first string contains the second. The result is True if the first string starts with the second. The result is True if the first string ends with the second.

Table 31-6: Descriptions of Bitwise Operators Bitwise Operator >< << >> Description The result is True if both integers have any bits in common. The result is True if the high 16 bits of the first integer are equal to the second integer. The result is True if the low 16 bits of the first integer are equal to the second integer.

Detecting Administrator and Elevated Privileges


Basic MSI Projects
On Windows XP and earlier and Windows Server 2008 and earlier, two properties for detecting user privileges are AdminUser and Privileged. The AdminUser property is set if the end user has Administrator privileges. The Privileged property is set if the installation is running with elevated privileges (that is, if the end user has administrative privileges, if the installation has been assigned by a system administrator, or if both the user and machine policies AlwaysInstallElevated are set to true. In most cases, the Privileged property is more appropriate. On Windows Vista and Windows Server 2008, the AdminUser property is by default assigned the same value as the Privileged property. To restore the distinction between AdminUser and Privileged on these systems, you can set the MSIUSEREALADMINDETECTION property to 1 in the Property Manager view. Note that for Windows Vista and Windows Server 2008, AdminUser and Privileged are always set during the User Interface sequence; therefore, they cannot detect whether an installation is actually running with elevated privileges during the User Interface sequence. However, custom actions running as deferred in system context have correct value for Privileged (and for AdminUser, if MSIUSEREALADMINDETECTION is also set). Because only actions running as deferred in system context should modify the system, distinguishing privileged from non-privileged installations is

InstallShield 2010 User Guide

ISP-1600-UG00

1211

Chapter 31: Detecting Conditions on the Target System Detecting First-Time Installations

significant only for that type of action. One consequence of this behavior is that AdminUser and Privileged should not be used in a projects install conditions for targeting Windows Vista or Windows Server 2008.

InstallScript and InstallScript MSI Projects


The following InstallScript expression returns TRUE if the end user has Administrator privileges, except for some cases on Windows Vista and Windows Server 2008 systems:
Is(USER_ADMINISTRATOR, "");

On Windows Vista and Windows Server 2008 systems, Is returns TRUE if the SE_GROUP_USE_FOR_DENY_ONLY security identifier (SID) attribute is not set for the group. That is, if the current user is in the Administrators group but that user is running the installation with a standard access token on Windows Vista, Is returns FALSE.

Detecting First-Time Installations


Your installation can determine whether the installation is being run for the first time on a target system.

Basic MSI Projects


In the Windows Installer sequences, the following conditions detect certain types of installation:

First-time installation: Not Installed Maintenance: Installed Uninstallation: REMOVE="ALL" (after the InstallValidate action)

InstallScript Project
In InstallScript, the MAINTENANCE variable is FALSE for a first-time installation, and TRUE for maintenance mode or uninstallation. Therefore, you can use an if-statement like the following for any code you want to run only for a first-time installation.
if (!MAINTENANCE) then // code to run for first-time installation endif;

Triggering Behavior Only During a First-Time Installation


There may be times when you want to use a custom action to call a function only during a first-time installation, but not during uninstallation.

1212

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 31: Detecting Conditions on the Target System Detecting If the End User Has Selected a Specific Feature

Basic MSI Projects


At run time for Basic MSI projects, the same sequences are used for first-time installations and maintenance installations (including uninstallation). There is no separate uninstallation sequence. Therefore, any custom actions that you schedule in the Installation sequences will, by default, run for both installation and uninstallation. To specify that an action should run only for a first-time installation, you can use the Not Installed condition. The Not Installed condition is appropriate, for example, for a custom action that launches a Readme file for the application being installed.

InstallScript and InstallScript MSI Projects


In InstallScript and InstallScript MSI installations, you can use the MAINTENANCE system variable to determine whether the installation is running in maintenance mode or if it is a first-time installation. The following code sample shows how to use it in your script:
if (!MAINTENANCE) then // it is a first-time install endif; And for reinstall/modify/repair, it's: if (MAINTENANCE) then // ...not first-time endif;

Detecting If the End User Has Selected a Specific Feature


Your installation can determine whether the end user has selected to install a specific feature. The method depends on which project type you are using.

Basic MSI Projects


Windows Installer defines conditions of the form &FeatureName=n to detect a features action state. For example, to determine if a feature called ProgramFiles is selected to be installed locally, and it was not already installed, use the condition &ProgramFiles=3.

InstallScript and InstallScript MSI Projects


The InstallScript function FeatureIsItemSelected returns TRUE if a feature is currently selected in one the feature-selection dialogs (such as SdFeatureTree).

Detecting If the End User Is Running a Particular Operating System


Your installation can determine which operating system is on a target system.

InstallShield 2010 User Guide

ISP-1600-UG00

1213

Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine

Using Windows Installer Properties to Detect the Operating System


The Windows Installer properties VersionNT, Version9X, ServicePackLevel, and WindowsBuild describe the target operating system.

Project: You can use these Windows Installer properties in conditions for items such as features, components, and custom actions in the following project types:

Basic MSI InstallScript MSI Merge Module

Note: Property names are case-sensitive, so Version9X and Version9x are considered different properties.

Using an InstallScript Structure Variable to Detect the Operating System


The InstallScript structure SYSINFO is automatically initialized to describe the operating system on the target system. You can use this structure in your InstallScript code to trigger specific behavior on certain platforms. For specific values to check, see SYSINFO.

Project: You can use the SYSINFO structure in event-driven InstallScript code in the following project types:

InstallScript InstallScript MSI InstallScript Object

You can also use this structure in InstallScript custom actions in the following project types: Basic MSI InstallScript MSI Merge Module

Detecting Whether the Installation Is Being Run on a Virtual Machine


InstallShield lets you determine whether an installation is running on any of the following types of virtual machines:

Microsoft Hyper-V A VMware product such as VMware Player, VMware Workstation, or VMware Server Microsoft Virtual PC

To check for virtual machines, you can either use Windows Installer properties, or you can use an InstallScript structure or function.

1214

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine

Note: Emulators such as Bochs and QEMU are not detected.

Using Windows Installer Properties to Detect a Virtual Machine

Project: You can use Windows Installer properties in conditions for items such as features, components, and custom actions in the following project types:

Basic MSI InstallScript MSI Merge Module

To use Windows Installer properties to detect the presence of a virtual machine and determine the type of virtual machine, you first need to create a custom action that calls the ISDetectVM function in the SetAllUsers.dll file.

Task

To add a custom action that checks for a virtual machine: 1. 2. 3. 4.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI and InstallScript MSI projects) or Custom Actions (in Merge Module projects). In the center pane, right-click the Custom Actions explorer, point to New MSI DLL, and click Stored in Binary table. InstallShield adds a new custom action. Change the name of the action to something like ISDetectVM. Configure the custom actions settings in the right pane:

In the DLL Filename setting, select the SetAllUsers.dll file. The typical path is:
<ISProductFolder>\redist\language independent\i386\SetAllUsers.dll

In the Function Name setting, enter the following name:


ISDetectVM

In the In-Script Execution setting, select Immediate Execution. Schedule the custom action as needed by selecting the appropriate option in one or more sequence settings.

InstallShield 2010 User Guide

ISP-1600-UG00

1215

Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine

The custom action sets the following Windows Installer properties at run time:
Table 31-7: Windows Installer Properties for Detecting Virtual Machines Property Name IS_VM_DETECTED Description If the value of this property is 1, one of the following virtual machine environments is present:

Microsoft Hyper-V A VMware product such as VMware Player, VMware Workstation, or VMware Server Microsoft Virtual PC

If the value is not set, no virtual machine has been detected. IS_VM_TYPE This property indicates the type of virtual machine that is present on a target system. Available values are:

0No virtual machine has been detected. 1The installation is running on a VMware product such as VMware Player, VMware Workstation, or VMware Server. 2The installation is running on a Microsoft Hyper-V machine. 3The installation is running on a Microsoft Virtual PC machine. 4The type of virtual machine is not known.

You can use the aforementioned properties in conditional statements. For example, if your product cannot be used on virtual machines, enter the following conditional statement in the Install Condition setting of the General Information view:
Not IS_VM_DETECTED

If you have a component that should be installed only on VMware images, enter the following conditional statement in the Condition setting of the Components view:
IS_VM_TYPE=1

Using an InstallScript Structure and Variable to Detect a Virtual Machine

Project: You can use an InstallScript structure and variable in event-driven InstallScript code in the following project types:

InstallScript InstallScript MSI InstallScript Object

You can also use the structure and variable in InstallScript custom actions that are in the following project types: Basic MSI InstallScript MSI Merge Module

1216

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine

You can use the SYSINFO.bIsVirtualMachine structure in your InstallScript code to determine whether the installation is being run on a virtual machine. In addition, you can use the VIRTUAL_MACHINE_TYPE constant with the GetSystemInfo function to determine which type of virtual machine is present. For example, in an InstallScript event handler such as OnFirstUIBefore or in an InstallScript custom action, you can use code such as the following snippet:
if (SYSINFO.bIsVirtualMachine) then SprintfBox (0, "VM", "This is a virtual machine. Type: %d", GetSystemInfo (VIRTUAL_MACHINE_TYPE, nNumber, szString)); else MessageBox ("This is not a virtual machine.", 0); endif;

At run time, a message box is displayed. If the target system is a Microsoft Hyper-V image, a VMware image, or Microsoft Virtual PC, the message box says, This is a virtual machine, and it also lists the type of virtual machine. If the target system is not one of those virtual machines, the message box says, This is not a virtual machine.

InstallShield 2010 User Guide

ISP-1600-UG00

1217

Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine

1218

ISP-1600-UG00

InstallShield 2010 User Guide

32
Searching for Installed Data
InstallShield provides support for the Windows Installer capability of searching for installed data on a target system at run time. Depending on the results of the search, the installation can store a value in a property and even use the property in an installation condition. Examples of system searches that your installation can perform include:

Search for a file or folder on the target system at run time and store the full path to the file or folder, if found, in a property. This includes support for XML files. Read data from the registry or from an .ini file located in the target systems WindowsFolder directory and store the data in a property. Then use the property in an installation condition.

InstallShield includes several predefined system searches that you can add to your project. In addition, system searches that have been defined in one project and published to a repository can be reused in other projects. Use the System Search view to add a predefined system searchwhether it is a search that is included with InstallShield or one that is stored in a repositoryto your project. You can also use the System Search view to customize any predefined searches or define your own system searches for your installation.

Adding a Predefined System Search


Use the System Search view to add a predefined system searchwhether it is a search that is included with InstallShield or one that is stored in a repositoryto your project.

Task

To add a predefined system search: 1. 2. 3.

Open the System Search view. Right-click the grid and then click Add predefined search. The Add Predefined Search Dialog Box opens. If you want system searches that have been published to a repository to be displayed, select the Show Searches in Repository check box.
ISP-1600-UG00 1219

InstallShield 2010 User Guide

Chapter 32: Searching for Installed Data Adding a System Search

4. 5.

Select the value for the system search that you would like to add. Click OK.

InstallShield adds the search to the grid in the System Search view. If you need to make changes to the predefined search after you have added it to your project, see Modifying a System Search to learn how.

Adding a System Search


Your installation can include system searches for different types of installed data on a target system. To add to your project one of the predefined system searches available in InstallShield or a system search that is stored in a repository, see Adding a Predefined System Search. To define your own custom system search, follow the steps below.

Task

To add a system search: 1. 2. 3.

Open the System Search view. Right-click the grid and then click Add. The System Search Wizard opens. Complete the panels in the System Search Wizard.

InstallShield adds the search to the grid in the System Search view.

Modifying a System Search


Task To modify a system search: 1. 2. 3.

Open the System Search view. Right-click the grid entry for the system search that you want to modify and then click Modify. The System Search Wizard opens. Complete the panels in the System Search Wizard.

Publishing a System Search to a Repository


If your project contains a system search that you would like to reuse in other projects or share with other users, you can publish it to a repository.

1220

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 32: Searching for Installed Data Removing a System Search

Task

To publish a system search to a repository: 1. 2. 3.

Open the System Search view. In the grid, right-click the system search and then click Publish Wizard. The Publish Wizard opens. Complete the panels in the Publish Wizard.

After you have imported a system search from a repository into a project, there is no link between the current system search and the existing repository system search. If you make a change to the system search and then republish it to the repository, it does not affect the system search in the project to which it was imported. However, you can reimport the system search from the repository into your project.

Removing a System Search


Task To remove a system search: 1. 2.

Open the System Search view. Right-click the grid entry for the system search that you want to remove and then click Delete.

The deleted system search will no longer be included in your installation.

Searching for XML Data


Application and configuration settings are sometimes stored in XML files. Use the System Search view to define a search for data in an XML file that may exist on the target system at run time. You can search for a specific attribute, a specific element, or a specific element content string. The results are stored in a property; you can use that property in an installation condition, as the destination for a component in your installation, or in other areas of your installation.

Example
This section presents an example that shows how to search for XML data on target systems at run time. For this example, the product called MyProduct has an executable file called MyProduct.exe. The path for this .exe file is written to a file called Configuration.xml at run time.

Tip: For information on how to use properties to change XML files at run time, see Using Windows Installer Properties to Dynamically Modify XML Files.

Following is sample code from the Configuration.xml file:


<?xml version="1.0" encoding="utf-8"?> <configuration> <startup>

InstallShield 2010 User Guide

ISP-1600-UG00

1221

Chapter 32: Searching for Installed Data Searching for XML Data

<requiredRuntime version="1.0.0" safemode="true" /> </startup> <appSettings> <add value="MyProduct" path="C:\Program Files\MyCompany\MyProduct\MyProduct.exe"/> </appSettings> </configuration>

The value of the path attribute in the above XML code depends on where end users install MyProduct. The main objective of this example is to find the value of the path attribute and store that value in a property.

Task

To configure the system search for the XML data: 1. 2. 3.

In the View List under Behavior and Logic, click System Search. Right-click the grid and then click Add. The System Search Wizard opens. Complete each of the wizard panels as follows:
a. b.

On the What do you want to find? panel: In the list, select XML file value. On the Specify the file details panel:


c.

In the File Name box, type the following:


Configuration.xml

In the Look In area, select A full path, and type the following path:
[ProgramFilesFolder]MyCompany\MyProduct

On the Specify the data panel:

In the XPath to XML Element box, type the following XPath expression:
/configuration/appSettings/add[@value='MyProduct']

In the Look For area, select Value of Attribute in this Element, and type the following in the Attribute Name box:
path

d.

On the What do you want to do with the value? panel:

In the Store the value in this property box, type the following:
PATH_IN_XML_FILE

In the Additional Options area, select Just store the value in the property.

You can use the value of the search property in another area of your project. For example, to display the value of the property in a dialog in your installation, add a text control to the dialog, and set the Text value of the control to something like this:
PATH_IN_XML_FILE = [PATH_IN_XML_FILE]

If the value of the path attribute in the XML file is C:\Program Files\MyCompany\MyProduct\MyProduct.exe, the dialog displays the following text:

1222

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 32: Searching for Installed Data Searching for XML Data

PATH_IN_XML_FILE = C:\Program Files\MyCompany\MyProduct\MyProduct.exe

InstallShield 2010 User Guide

ISP-1600-UG00

1223

Chapter 32: Searching for Installed Data Searching for XML Data

1224

ISP-1600-UG00

InstallShield 2010 User Guide

33
Editing Installation and Project Tables

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

Important: Editing the installation and project tables directly, rather than using the dedicated views in InstallShield, is for advanced users who are very familiar with the Windows Installer database format.

The Windows Installer databases that are built with InstallShield consist of tables. InstallShield project files (.ism files) use the Windows Installer table format. In addition to providing a graphical user interface for working with the content of the Windows Installer and .ism tables, InstallShield also lets you manipulate the tables directly through the Direct Editor view. The Direct Editor supports different types of tables:

Standard tables, which are defined by Windows Installer InstallShield tables, which InstallShield creates to add functionality to your installation Custom tables, which you create and which you can read from or write to with a custom action

The Direct Editor can run in two different modes:


Project edit modeThis mode lets you edit tables in the project file (.ism). The changes that are made in the Direct Editor are incorporated into the Windows Installer package that InstallShield creates at build time.

InstallShield 2010 User Guide

ISP-1600-UG00

1225

Chapter 33: Editing Installation and Project Tables Editing Project Tables

When you are working in any of the following Windows Installerbased project types, you are working in project edit mode: Basic MSI, InstallScript MSI, Merge Module, and QuickPatch.

Direct edit modeThis mode lets you edit tables in the Windows Installer database (.msi, .msm, or .mst file). When you save the changes that you have made in the Direct Editor, InstallShield updates the Windows Installer database.

When you are working in any of the following Windows Installerbased project types, you are working in direct edit mode: MSI Database, MSM Database, and Transform.

Editing Project Tables


Project: The Direct Editor in the following project types lets you view and edit the tables in your project file (.ism):

Basic MSI InstallScript MSI Merge Module QuickPatch

The Direct Editor in InstallScript and InstallScript Object projects lets you see all of the tables in your .ism file; however, it is recommended that you use the other views in InstallShield to modify these types of projects.

InstallShield project files (.ism files) use the Windows Installer table format. The Direct Editor is a view in InstallShield that lets you review all of the tables in your project file (.ism). This view also offers functionality for advanced users who are very familiar with the Windows Installer database format. For example, you can use the Direct Editor to perform the following tasks:

View all of the tables in the project file (.ism). Add and remove records from tables. Cut, copy, and paste records or fields. Edit individual fields in the tables. Add custom tables. Filter the table records that are shown to hide ones that do not contain a specific string. Search one table or all tables for a specific string and replace it if necessary. Resize and reorder the columns in a table.

Adding New Tables Through the Direct Editor


Project: This information applies to the following project types:


1226

Basic MSI InstallScript MSI


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 33: Editing Installation and Project Tables Adding Records to a Table

Merge Module MSI Database MSM Database QuickPatch Transform

InstallShield lets you add tables to your project file (.ism) or Windows Installer database (.msi, .msm, or .mst).

Task

To add a new table through the Direct Editor: 1. 2. 3.

In the View List under Additional Tools, click Direct Editor. Right-click the Tables explorer and then click Add Table. The Create Table Wizard opens. Complete all of the panels in the wizard.

Windows Logo Guideline: The Certified for Windows Vista Program requires that you avoid naming a custom table with the MSI (in uppercase, lowercase, or mixed-case letters). The MSI prefix is reserved for future use in new standard properties and tables.

Adding Records to a Table


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor view lets you add records (or rows) to a table in your project or database.

Task

To add a record (row) to a table: 1. 2. 3. 4.

In the View List under Additional Tools, click Direct Editor. Select the table to which you want to add a record. Click the New Record button. The Add Record to Table dialog box opens. Complete each of the fields as needed.

InstallShield 2010 User Guide

ISP-1600-UG00

1227

Chapter 33: Editing Installation and Project Tables Finding and Replacing in the Direct Editor

5.

Click OK.

Finding and Replacing in the Direct Editor


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor includes support for standard find-and-replace functionality. This functionality may be useful if you want to search for specific data or strings in your project or database and replace them with revised data or strings.

Finding Data in the Direct Editor

Task

To find data in the Direct Editor: 1. 2. 3. 4. 5.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, select one of the tables that you want to search. Click the Find String button. The Find dialog box opens. In the Find what box, type the string that you want to find. Select any other options that you want. To search only the selected table, select the Search in current table only check box. To search all tables in the Direct Editor, clear this check box.

6.

Click Find Next.

InstallShield finds the first instance of the string that you specified.

Finding and Replacing Data in the Direct Editor

Task

To find and replace data in the Direct Editor: 1. 2. 3.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, select the table in which you want to find and replace data. Click the Find and Replace button. The Replace dialog box opens.

1228

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 33: Editing Installation and Project Tables Editing a Table Record

4. 5. 6. 7.

In the Find what box, type the string that you want to replace. In the Replace with box, type the new string. Select any other options that you want. Click Find Next, Replace, or Replace All.

InstallShield replaces strings as needed.

Editing a Table Record


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor view lets you edit a recordor rowin a table of your project or database.

Task

To edit a record in a table through the Direct Editor: 1. 2. 3. 4. 5.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, select the table that contains the record that you want to edit, and then select the row. Click the Edit Selected Record button. InstallShield displays the Edit Record in Table dialog box. This dialog box lets you edit any of the data in the selected row. Edit the record as needed. Click OK.

Note: The Direct Editor performs field-level validation to help you avoid using an improper data type. To maintain referential integrity when editing tables in the Direct Editor, select the Maintain referential integrity check box on the Preferences tab of the Options dialog box. You can access this dialog box by clicking Options on the Tools menu. The check box is selected by default.

InstallShield 2010 User Guide

ISP-1600-UG00

1229

Chapter 33: Editing Installation and Project Tables Editing Fields in a Table

Editing Fields in a Table


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor view contains spreadsheetlike tables that let you modify strings and other data in your project or database.

Task

To edit fields in a table through the Direct Editor: 1. 2. 3.

In the View List under Additional Tools, click Direct Editor. Select the table that contains the field that you want to edit. Do any of the following:

To overwrite all of the text in a table cell, click the table cell and then type the new value. To place the cursor at a particular place within a table cell, double-click that place. Then type your change. If a field takes a foreign key into another table, you can select the appropriate foreign key from the list in the cell.

Tip: The parenthetical note in each column heading indicates the type and size of data that you can enter in the column. For example, S255 indicates a string with up to 255 characters; I2 indicates a 2-byte integer.

Note: The Direct Editor performs field-level validation to help you avoid using an improper data type. To maintain referential integrity when editing tables in the Direct Editor, select the Maintain referential integrity check box on the Preferences tab of the Options dialog box. You can access this dialog box by clicking Options on the Tools menu. The check box is selected by default.

1230

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 33: Editing Installation and Project Tables Exporting Tables from the Direct Editor

Exporting Tables from the Direct Editor


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor lets you export one or more tables as .idt files. You can then import the .idt files into another project or database through the Direct Editor.

Task

To export one or more tables from the Direct Editor: 1. 2. 3. 4. 5.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, right-click one of the tables that you want to export, and then click Export Table(s). The Export Table(s) dialog box opens. In the Output Directory box, specify the directory where you want InstallShield to save the .idt files, or click the Browse button to navigate to the location. In the Tables box, select the check boxes of the tables that you want to export. Click OK.

InstallShield creates a separate .idt file for each table that you selected to export.

Importing Tables with the Direct Editor


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

You can use the Direct Editor to import a table (.idt file) into your InstallShield project file (.ism) or Windows Installer database (.msi, .msm, or .mst).
InstallShield 2010 User Guide ISP-1600-UG00 1231

Chapter 33: Editing Installation and Project Tables Deleting Records from a Table

Task

To import a table (.idt file) using the Direct Editor: 1. 2. 3. 4.

In the View List under Additional Tools, click Direct Editor. Right-click the Tables explorer and click Import Table. Select the table that you want to import. Click Open.

InstallShield imports the table into your project or database.

Deleting Records from a Table


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

You can use the Direct Editor to delete a record in your InstallShield project file (.ism) or Windows Installer database (.msi, .msm, or .mst).

Task

To delete a record (row) from a table: 1. 2. 3. 4.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, select the table that contains the record that you want to delete. In the table grid, select the record that you want to delete. Click the Delete Selected Records button or press DELETE.

Removing Tables Through the Direct Editor


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1232

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 33: Editing Installation and Project Tables In-Place Windows Installer Database and Project File Differencing

Merge Module MSI Database MSM Database QuickPatch Transform

You can use the Direct Editor to delete a custom table in your InstallShield project file (.ism) or Windows Installer database (.msi, .msm, or .mst).

Task

To remove a custom table: 1. 2.

In the View List under Additional Tools, click Direct Editor. In the Tables explorer, right-click the custom table that you want to delete, and then click Drop Table.

Note: You can remove (drop) only user-defined tables. InstallShield tables and standard tables cannot be removed.

In-Place Windows Installer Database and Project File Differencing


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

InstallShield provides .msi file differencing functionality, which allows you to have two .msi packages open in the Direct Editor for comparison purposes. When you are editing a transform (.mst file), the differences between the base package and the applied transform are highlighted in the Direct Editor. The base package is the current file that you have open in the InstallShield interface. The compared file is any package you have on your system that you want to compare with the base package. Therefore, if you see a red X icon in front of a table in the Direct Editor after you initiate a difference, then that suggests that the table exists in the base file and not the compared file. In-place differencing is not just limited to .msi packages and transforms. You can also compare other files such as .msm, .ism, and .pcp files.

InstallShield 2010 User Guide

ISP-1600-UG00

1233

Chapter 33: Editing Installation and Project Tables Entering Binary Data in a Table

In the Direct Editor, you can undo or accept the difference. Icons in the first column of the Direct Editor tables indicate whether the row is a deletion or an addition, or if the row contains a change. The comparison file also displays added or removed columns in a table.
Table 33-1: Icons in the Direct Editor Tables Icon Description Row has been changed. Row has been added. Row has been deleted.

To see the specific change that has been made, move your mouse over a column to see a tooltip that describes the difference.

Task

To compare two projects or databases: 1. 2. 3. 4.

Open the base project file (.ism) or database (.msi, .msm, .mst, or .pcp). On the Tools menu, point to Difference, and then click Compare to File. The Select Compare File dialog box opens. In the Files of type box, select the type of file that you want to compare with your base file, and then browse to select it. Click Open.

InstallShield indicates any differences between the two files in the Direct Editor.

Task

To end the compare session:

On the Tools menu, point to Difference, and then click End Compare. InstallShield removes all of the in-place differencing from the Direct Editor.

Entering Binary Data in a Table


Project: This information applies to the following project types:


1234

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 33: Editing Installation and Project Tables Orphaned Directory Entries

QuickPatch Transform

When you are working in any of the following Windows Installerbased project types, you are working in project edit mode: Basic MSI, InstallScript MSI, Merge Module, and QuickPatch. In project edit mode, tables such as the Binary, Icon, and Patch tables do not store binary data; they store links to build-source paths. Therefore, if you use the Direct Editor to edit these tables, ensure that you include the fully qualified path and file name. Otherwise, InstallShield cannot include the file in the release that it builds. When you are working in any of the following Windows Installerbased project types, you are working in direct edit mode: MSI Database, MSM Database, and Transform. In these project types, tables such as the Binary, Icon, and Patch tables store binary data. If you use the Direct Editor to edit these tables, InstallShield enables you to browse to select the file that should be streamed into the table.

Orphaned Directory Entries


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

Directory entries are orphaned when they are improperly or inappropriately modifiedpossibly in the Direct Editor. This happens when the path is broken in the Directory table. For example, INSTALLDIR is built by combining the three records that make up the full path:
ProgramFilesFolder\ISYourCompanyDir\ISYourProductDir

This typically resolves to:


C:\Program Files\Your Company Name\Your Product Name

If any record of ProgramFilesFolder\ISYourCompanyDir\ISYourProductDir is modified to be invalid, INSTALLDIR or any other directory path that contains the invalid record will not be resolved correctly. In this example, if you rename the Directory record ISYourCompanyDir to MyCompany (in the Directory column), but do not update the Directory_Parent of the ISYourProductDir record to MyCompany, the INSTALLDIR path is broken.

InstallShield 2010 User Guide

ISP-1600-UG00

1235

Chapter 33: Editing Installation and Project Tables Orphaned Directory Entries

1236

ISP-1600-UG00

InstallShield 2010 User Guide

34
Using the InstallShield Tools

Edition: The InstallShield MSI tools are included with the Premier and Professional editions of InstallShield. The Premier edition also includes a separate installation and extra licenses that let you install just the tools, without InstallShield, on separate machines. For specific terms, see the End-User License Agreement for the InstallShield MSI tools.

InstallShield includes tools that help you troubleshoot complex issues with Windows Installer packages:

InstallShield MSI Diff enables you to quickly compare two .msi, .msm, .msp, or .pcp files. It lets you apply one or more .msp and .mst files to an .msi file and see the changes in the resulting .msi database. You can also use this tool to compare two InstallShield project files (.ism or .ise) that are saved in binary format. This tool uses color coding to show additions, modifications, deletions, and schema differences. You can easily integrate InstallShield MSI Diff with most source code control systems. InstallShield MSI Query lets you test SQL statements using the Windows Installer version of SQL before you run them in your build script. You can quickly see if a SQL statement is formatted correctly and view the results that it generates. InstallShield MSI Sleuth is a diagnostic tool that lets you view the current installed state of a target system. InstallShield MSI Sleuth displays a list of all of the .msi packages that are installed. You can click any .msi package in the list to see the status of its features and components, its known source locations, as well as tables and binary streams within the database. This tool also helps you identify the installed product or products whose packages contain a specific component code. InstallShield MSI Grep searches a collection of .msi and .msm packages for specific text. You can narrow the search to show results for only certain tables or columns.

You can launch any of these tools from the InstallShield Tools subfolder on the Windows Start menu.

Note: All of these tools require .NET Framework 2.0 to be installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1237

Chapter 34: Using the InstallShield Tools InstallShield MSI Diff

InstallShield MSI Diff


InstallShield MSI Diff enables you to quickly compare two .msi, .msm, .msp, or .pcp files. It lets you apply one or more .msp and .mst files to an .msi file and see the changes in the resulting .msi database. You can also use this tool to compare two InstallShield project files (.ism or .ise) that are saved in binary format. You can easily integrate it with most source code control systems. This tool uses color coding to show additions, modifications, deletions, and schema differences. The color code in the lower-right corner of InstallShield MSI Diff shows the legend that identifies which colors indicate each type of difference. You can launch InstallShield MSI Diff from the InstallShield Tools subfolder on the Windows Start menu. You can also launch this tool from within InstallShield: On the Tools menu, point to Difference, and then click InstallShield MSI Diff.

Tip: To show or hide unchanged rows in the various database tables: On the View menu, click Unchanged Rows. This menu command has a check mark if the unchanged rows are displayed; it does not have a check mark if the unchanged rows are hidden. To show or hide unchanged database tables: On the View menu, click Unchanged Tables. This menu command has a check mark if the unchanged tables are displayed; it does not have a check mark if the unchanged tables are hidden.

Determining the Changes that a Transform (.mst File) Makes


You can use InstallShield MSI Diff to see how an .msi package changes when a transform (.mst file) is applied to it.

Task

To determine the changes that a transform makes: 1. 2. 3. 4. 5. 6.

Open InstallShield MSI Diff. On the File menu, click Open. The Open dialog box opens. Select the .msi package, and then click Open. InstallShield MSI Diff opens the .msi database. On the File menu, point to Transforms, and then click Apply Transform. The Open dialog box opens. Select the .mst transform, and then click Open. InstallShield MSI Diff applies the transform to the .msi database that is open. Examine the changes.

If you want to apply a series of transforms to an .msi package, you can repeat steps 4 and 5 for each transform.

Tip: Note that InstallShield MSI Diff also lets you apply a series of multiple transforms and patches to an .msi package, and see the changes in the resulting .msi database. To learn how to apply a patch to an .msi package, see Determining the Run-Time Effects of a Patch.
1238 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 34: Using the InstallShield Tools InstallShield MSI Diff

Determining Whether a Patch Is Valid for an .msi Package


You can use InstallShield MSI Diff to determine whether a patch is valid for a specific .msi package. InstallShield MSI Diff analyzes the internal transforms that are contained within the patch.

Task

To determine whether a patch is valid for an .msi package: 1. 2. 3. 4. 5.

Open InstallShield MSI Diff. On the File menu, click Open. The Open dialog box opens. Select the .msi package, and then click Open. InstallShield MSI Diff opens the .msi database. On the File menu, point to Patches, and then click Apply Patch. The Open dialog box opens. Select the patch (.msp file), and then click Open.

If the patch applies to the selected .msi database, InstallShield MSI Diff applies the patch to the database that is open. If the patch is not applicable, InstallShield MSI Diff displays a message box to inform you that the patch is not valid for the selected database.

Determining the Run-Time Effects of a Patch


You can use InstallShield MSI Diff to determine what Windows Installer will do with a given patch file and how that will affect the cached .msi package on a target system.

Task

To determine the run-time effects of a patch: 1. 2. 3. 4. 5. 6.

Open InstallShield MSI Diff. On the File menu, click Open. The Open dialog box opens. Select the .msi package, and then click Open. InstallShield MSI Diff opens the .msi database. On the File menu, point to Patches, and then click Apply Patch. The Open dialog box opens. Select the patch (.msp file), and then click Open. InstallShield MSI Diff applies the patch to the database that is open. Examine the changes.

If you want to apply a series of patches to an .msi package, you can repeat steps 4 and 5 for each patch.

Tip: Note that InstallShield MSI Diff also lets you apply a series of multiple transforms and patches to an .msi package, and see the changes in the resulting .msi database. To learn how to apply a transform to an .msi package, see Determining the Changes that a Transform (.mst File) Makes.

InstallShield 2010 User Guide

ISP-1600-UG00

1239

Chapter 34: Using the InstallShield Tools InstallShield MSI Query

Determining the Differences Between Two .msi Packages


You can use InstallShield MSI Diff to determine the differences between two .msi packages.

Task

To determine the differences between two .msi packages: 1. 2. 3. 4. 5.

Open InstallShield MSI Diff. On the File menu, click Open. The Open dialog box opens. Select the base .msi package, and then click Open. InstallShield MSI Diff opens the .msi database. On the File menu, click Compare To. The Open dialog box opens. Select the second .msi package, and then click Open.

InstallShield MSI Diff compares the data from the second .msi package with the data in the base .msi package, and displays the results.

Determining the Differences Between Two InstallShield Projects


You can use InstallShield MSI Diff to determine the differences between two InstallShield projects (.ism or .ise files) that are saved in binary format.

Task

To determine the differences between two InstallShield projects: 1. 2. 3. 4. 5.

Open InstallShield MSI Diff. On the File menu, click Open. The Open dialog box opens. Select one of the InstallShield project files, and then click Open. InstallShield MSI Diff opens the project file. On the File menu, click Compare To. The Open dialog box opens. Select the second InstallShield project file, and then click Open.

InstallShield MSI Diff compares the data from the second project with the data in the first project, and displays the results.

InstallShield MSI Query


InstallShield MSI Query lets you test SQL statements using the Windows Installer version of SQL before you run them in your build script. You can quickly see if a SQL statement is formatted correctly and view the results that it generates. You can launch InstallShield MSI Query from the InstallShield Tools subfolder on the Windows Start menu.
1240 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 34: Using the InstallShield Tools InstallShield MSI Sleuth

To learn about valid SQL query strings for Windows Installer, see SQL Syntax in the Windows Installer Help Library.

Running a SQL Query for a Specific Windows Installer Database


You can use InstallShield MSI Query to test SQL statements using the Windows Installer version of SQL before you run them in your build script. You can quickly see if a SQL statement is formatted correctly and view the results that it generates.

Task

To run a query: 1. 2. 3. 4.

Open InstallShield MSI Query. On the File menu, click Open. The Open dialog box opens. Select the database (.msi or .msm file) that you want to use for your test, and then click OK. InstallShield MSI Query lists the name of the file in its title bar. In the Query box, enter the query that you want to run. InstallShield MSI Query lets you enter one or more parameter values as question marks (?). If you include question marks in your query, InstallShield MSI Query displays an Arguments row below the Query box. Each question mark corresponds with a different Arguments box. Use the Arguments boxes to specify the replacement values. To learn about valid SQL query strings for Windows Installer, see SQL Syntax in the Windows Installer Help Library.

5.

Click the Execute button.

InstallShield MSI Query runs the specified query for the selected database. If you would like to save any changes that occurred as a result of the query, click Save on the File menu.

InstallShield MSI Sleuth


InstallShield MSI Sleuth is a diagnostic tool that lets you view the current installed state of a target system. InstallShield MSI Sleuth displays a list of all of the .msi packages that are installed. You can click any .msi package in the list to see the tables in that database and all of the streamed files that are embedded within the database. This tool also helps you identify the installed product or products whose packages contain a specific component code. You can launch InstallShield MSI Sleuth from the InstallShield Tools subfolder on the Windows Start menu.

InstallShield 2010 User Guide

ISP-1600-UG00

1241

Chapter 34: Using the InstallShield Tools InstallShield MSI Sleuth

Viewing Details about an .msi Package that Was Run on a Target System
You can use InstallShield MSI Sleuth to view details about an .msi package that was run a target system.

Task

To view details about an .msi package: 1. 2. 3.

Open InstallShield MSI Sleuth. On the File menu, click Open Package. The Installed Packages dialog box opens. It contains a list of all of the packages that have been installed on the target system. Select the package that you want to analyze, and then click OK.

InstallShield MSI Sleuth displays details about the selected .msi package

Tip: You can save the details in a .sleuth.xml and then reopen the file within MSI Sleuth. To save the details: On the File menu, click Save Package Details, and then specify a file name. To later open the .sleuth.xml file: On the File menu, click Open Package Summary. Select the file that you want to open.

Searching for All Installed Packages that Include a Specific Component


You can use InstallShield MSI Sleuth to identify all of the packages that have installed a component with a specified component code to resolve issues with files not being uninstalled. You can also determine whether a component was installed by multiple products.

Task

To search for all installed packages that include a specific component: 1. 2. 3.

Open InstallShield MSI Sleuth. On the File menu, point to Open by Component Code, and then point to Component Code. InstallShield MSI Sleuth changes this menu command to an edit field. Enter the component code, and then press ENTER. Note that if you have the component code saved in the clipboard, you can press CTRL+V to paste it in the menu command field. The Installed Packages dialog box opens.

The Installed Packages dialog box lists all of the installed packages that contain the specified component code. If you want to view a package, select it, and then click OK.

1242

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 34: Using the InstallShield Tools InstallShield MSI Grep

InstallShield MSI Grep


InstallShield MSI Grep searches a collection of .msi and .msm packages for specific text. You can narrow the search to show results for only certain tables or columns. You can launch InstallShield MSI Grep from the InstallShield Tools subfolder on the Windows Start menu.

Searching .msi Packages for Specific Text


You can use InstallShield MSI Grep to search a collection of .msi and .msm packages for specific text. You can narrow the search to show results for only certain tables or columns.

Task

To search one or more .msi and .msm packages for specific text: 1. 2. 3.

Open InstallShield MSI Grep. In the Find box, enter the string for which you want to search. To narrow your search, do one or more of the following:

In the Table box, specify the name of the database table that you want InstallShield MSI Grep to search through. In the Column box, specify the name of the database column that you want InstallShield MSI Grep to search through. To modify the list of folders that InstallShield MSI Grep should search, click the ellipsis button, and then select one or more folders. To search in all of the subfolders of the specified directories, select the Recurse check box. To limit the search to certain database types or file names, enter the file names in the Files box. Use an asterisk (*) as a wild-card character. If you specify multiple file names or patterns, separate each with a semicolon (;).

4.

Click the Search button.

InstallShield MSI Grep displays the search results. You can click a search result, and then click a table from that search results to see details.

InstallShield 2010 User Guide

ISP-1600-UG00

1243

Chapter 34: Using the InstallShield Tools InstallShield MSI Grep

1244

ISP-1600-UG00

InstallShield 2010 User Guide

35
Working with Windows Installer Properties

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Windows Installer properties allow you to set project-wide values for use in your project. To add a property or change an existing one, use Property Manager view. The built-in InstallShield properties are outlined in the Windows Installer Property Reference.

Property Types
There are four general types of Windows Installer properties:

Public Private Restricted public Required

Note: Some of these categories overlap. For example, the ProductCode property is a required private property.

InstallShield 2010 User Guide

ISP-1600-UG00

1245

Chapter 35: Working with Windows Installer Properties

Public Properties Public properties have names that contain only uppercase letters. For example, INSTALLDIR is a public property. Public properties can be specified at the command line used to launch the installation or chosen by using an authored user interface. If you are creating your own properties, use all uppercase letters if you want end users to have access to these properties. In order to allow the end user or administrator to change the destination via the user interface or from the command line, the Directory Identifier for the components destination must be a public property.

Note: Only public properties have their values preserved from an installations user interface to the point where the installation is changing the target system. If you set the value of a property in a dialog box displayed to the end user, use a public property (for example, MY_PUBLIC_PROPERTY) if you want its value written to a file or to the registry.

Private Properties Private properties have at least one lowercase letter in their name and cannot be changed from the user interface. For example, ProgramFilesFolder is a private property. End users have no control over the values of private properties, as they cannot be set from the command line. Restricted Public Properties Restricted public properties allow network administrators to define public properties that can be changed only by a system administrator. This way, the administrator can change settings quickly without having to worry that other users on the network may tamper with the setup. Refer to Specifying that a Public Property Should Be a Restricted Public Property for more information. Required Properties The Windows Installer service relies on five properties that are required in every Windows Installer setup. By default, these properties are included in every installation you create using InstallShield. If you delete any of the following properties from your project, you need to reinsert them for your installation to function correctly.

ProductCode ProductLanguage Manufacturer ProductVersion ProductName

Conditions
Many properties are not set until the installation is launched. These properties are populated with information from the target system. For example, the VersionNT property is not set until the installation is launched. This property is set to the version of Windows that the target machine is running, if the operating system is a Windows NTbased system. For example, the value of VersionNT is 600 on a Windows Vista system. Properties set at run time can be used to create conditional installations. If you want your product to be installed only on Windows Vista, you can use conditional logic to check the end users system, and install the product if all conditions are met.

1246

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Windows Installer Property Reference


There are many properties that can be set during an installation. The following tables list most of them with their functions and, in many cases, the syntax needed to put these properties into action. Many of the properties can be set from within InstallShield, while others are initialized by the Windows Installer service at run time.

Note: By default, Windows Installer writes the final value of every Windows Installer property contained in your project to a log file generated by launching MsiExec with the /L argument. Starting with Windows Installer version 2.0, you can prevent certain properties (such as those containing passwords) from being written to the log file by creating a property called MsiHiddenProperties in the Property Manager and setting its value to a semicolon-delimited list of property names. For more information about this property, see MsiHiddenProperties in the Windows Installer Help Library.

Any of the properties that are with all-uppercase names can be set at the command line. Properties with all-uppercase names are called public properties. The following lists are organized according to the functions of the properties. Each table has a brief description of the kinds of properties it contains. The following categories of Windows Installer properties are described in this topic. Click a link to go directly to a category.

Special Folder Properties Feature Installation Properties Other Configurable Properties User-Supplied Information Product-Specific Properties System Folders Set by the Installer Operating System Properties Set by the Installer Hardware Properties Set by the Installer Virtual Machine Properties Status Properties Updated by the Installer Date and Time Properties InstallScript Engine-Related Properties MDAC Properties

Note: Do not confuse installer properties with path variables, which are surrounded by angle brackets (<>). While they both represent directories, you can use Windows Installer properties at run time, but path variables are used to point to source files only during setup design and at build time.

InstallShield 2010 User Guide

ISP-1600-UG00

1247

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Special Folder Properties


Special folder properties are those properties that define where files are stored or installed on the target system. To use a folder property in your setup, enclose it in square brackets: []. For example, to install a component to a Bin folder under the default destination folder, enter [INSTALLDIR]Bin in the components Destination Folder property.
Table 35-1: Folder Properties Property Name INSTALLDIR Description This property contains the default destination folder for the files in your features and components. See Setting the Default Product Destination Folder (INSTALLDIR) for more information. INSTALLDIR is available directly as a variable in your InstallScript code. SETUPEXEDIR This property stores the path to Setup.exe. For example, if the path to Setup.exe is C:\MySetups\MyApp\Setup.exe, the value of SETUPEXEDIR is C:\MySetups\MyApp. This property stores the folder where the running .msi file is located. The TARGETDIR property is the location where the Windows Installer package is copied (and its data files uncompressed) during an Administrative installation. In an InstallScript MSI project, this value is represented by the InstallScript MSI_TARGETDIR variable.

SOURCEDIR TARGETDIR

Feature Installation Properties


The following section provides information on feature installation properties, with which the end user can specify how features should be installed.
Table 35-2: Feature Installation Properties Property Name ADDDEFAULT Description The ADDDEFAULT property stores a list of features, separated by commas, that are to be installed in their default configuration. Users can install all features in their default configuration by setting the value of this property to ALL. This property stores a list of features, separated by commas, that are to be installed locally. Each feature has a Remote Installation property that determines whether features selected for installation are to be installed locally or run from the source medium. This property stores a list of features, separated by commas, that are to be run from the source medium. If this property is set to ALL, all the features will run from the source medium.

ADDLOCAL

ADDSOURCE

1248

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-2: Feature Installation Properties (cont.) Property Name ADVERTISE Description This property stores a list of features, separated by commas, that are to be advertised. This property stores a list of features, separated by commas, that are to be reinstalled. If REINSTALL is set to ALL, all of the features that are already installed on the users system will be reinstalled. This property contains a string of letters that specify the reinstall type. These options correspond to the values available for the Msiexec.exe / f command-line parameter. For more information on this property, see REINSTALLMODE Property in the Windows Installer Help Library. REINSTALLMODE is always set in conjunction with REINSTALL. ReinstallModeText This property contains the reinstallation options that will be set when the user selects Repair in the MaintenanceType dialog. The value of ReinstallModeText is passed as an argument to the control event ReinstallMode, which accepts the same options that are available for the REINSTALLMODE property. ReinstallModeText is not a predefined Windows Installer property. Nonetheless, it is provided in the Property Manager for every new project, with a default value of omus, for use in the control event described above. REMOVE This property stores a list of features, separated by commas, that will be removed. If REMOVE is set to ALL, all features will be removed. This property stores a list of component IDs, separated by commas, that are to be installed locally. The feature for the component that takes up the least amount of disk space will be installed. This property stores a list of component IDs, separated by commas, that are to be run from the source medium. The feature for the component that takes up the least amount of disk space will be installed. When installing a patch, this property contains the full path to the patch package.

REINSTALL

REINSTALLMODE

COMPADDLOCAL

COMPADDSOURCE

PATCH

Other Configurable Properties


The following section contains information on various other configurable properties.
Table 35-3: Additional Configurable Properties Property Name ACTION Description This property specifies which sequence to perform (installation, advertisement, or administration). Possible values are INSTALL, ADVERTISE, and ADMIN. The ACTION property is automatically set based on the command line used to launch the installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1249

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-3: Additional Configurable Properties (cont.) Property Name ALLUSERS Description Specifies whether Windows Installer should attempt to perform a permachine or per-user installation. If the value of ALLUSERS is set to 1, Windows Installer attempts a permachine installation. For per-machine installations, configuration information such as shortcuts and registry entries are stored in the All Users profile:

On Windows Vista systems, if User Account Control is enabled and the user does not have administrative privileges, the user must be able to provide administrative credentials in order to install the product. On other systems, if the user does not have administrative privileges, the installation displays an error message and exits.

Project: This property is set to 1 by default in Basic MSI and InstallScript MSI projects. To learn more, see Per-User vs. Per-Machine Installations. If the value of ALLUSERS is not set or it is an empty string (), Windows Installer performs a per-user installation, and the configuration information is stored in the users personal profile. If the value of ALLUSERS is set to 2, Windows Installer attempts to perform a per-machine installation on Windows Vista systems. On earlier platforms, if the user has administrative privileges, Windows Installer attempts to perform a per-machine installation; otherwise, Windows Installer performs a per-user installation.

Project: This property is set to 1 in InstallScript MSI projects to help avoid ALLUSERS-related issues when the installation is run silently. The property can be overridden with the SdCustomerInformation or SdCustomerInformationEx dialog functions in InstallScript MSI projects.

Note: ALLUSERS has no effect on InstallScript variables like FOLDER_PROGRAMS. ALLUSERS has no effect until the Execute sequence runs. ARPAUTHORIZEDCDFPREFIX ARPCOMMENTS This property stores the URL for the update channel of the application. This property contains the comments about this product that are displayed in Add or Remove Programs. This value is set in the ARP Comments setting in the General Information view. You should provide a string entry to facilitate globalizing your installation.

1250

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-3: Additional Configurable Properties (cont.) Property Name ARPCONTACT Description This property contains support contact information, such as an email address or a telephone number. This value is set in the Support Contact setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ARPINSTALLLOCATION This property stores the fully qualified path to the applications primary folder. You can set ARPINSTALLLOCATION to the value of INSTALLDIR with a custom action of type Set a property. If this property is set to 1, no Repair button will be displayed in the Programs Wizard. Holds the fully qualified path or the URL for the products Readme file. This value is set in the Read Me setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ARPSIZE ARPSYSTEMCOMPONENT This property stores the estimated size, in kilobytes, of the application. Set this property to 1 to keep your program from appearing in Add or Remove Programs. This property stores the URL for the applications home page or the publishers home page. This value is set in the Publisher/Product URL setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ARPURLUPDATEINFO This property stores the URL for update information on your application. This value is set in the Product Update URL setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ARPNOMODIFY Setting this property prevents the product from being modified from Add or Remove Programs. Setting this property prevents the product from being removed through Add or Remove Programs. This property allows you to set the amount of additional free registry space, in kilobytes, required by your application. This property holds the root path on the installation disk for any of the qualifying products for a competitive upgrade. Setting this property disables the creation of advertised shortcuts. This setting prevents the installer from adding media information to the source list.

ARPNOREPAIR

ARPREADME

ARPURLINFOABOUT

ARPNOREMOVE

AVAILABLEFREEREG

CCP_DRIVE

DISABLEADVTSHORTCUTS DISABLEMEDIA

InstallShield 2010 User Guide

ISP-1600-UG00

1251

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-3: Additional Configurable Properties (cont.) Property Name DISABLEROLLBACK Description Set this property to 1 to stop the installer from creating a rollback script that will save copies of changed or deleted files during the installation process. This property sets the top-level action initiated by the ExecuteAction action. This property sets the mode of execution performed by the installer. The value None means that no changes are made to the system. The default value, Script, means that all changes made to the system are run through a script execution. This property holds a value that corresponds to the values of the features. If the level of features to be installed is less than or equal to the INSTALLLEVEL property, then a feature is installed. This is primarily used for different setup types, such as Typical or Custom. List of action names, separated by semicolons, that will be logged. This property indicates that the Windows Installer should install the package for only the current user:

EXECUTEACTION

EXECUTEMODE

INSTALLLEVEL

LOGACTION MSIINSTALLPERUSER

If the ALLUSERS property is set to 2 and MSIINSTALLPERUSER is set to an empty string (""), the Windows Installer performs a permachine installation. If the ALLUSERS property is set to 2 and MSIINSTALLPERUSER is set to 1, the Windows Installer performs a per-user installation.

This property is available with Windows Installer 5 and on Windows 7 or Windows Server 2008 R2. Earlier versions of Windows Installer and Windows ignore this property. For more information, see the following:


Privileged

Per-User vs. Per-Machine Installations MSIINSTALLPERUSER Property on the MSDN Web site

This property will run an installation with elevated privileges if the user is an administrator or if the application is an administrator-assigned application. This property specifies what will happen if there is insufficient disk space to continue the installation. Depending on the user interface level, the rollback could happen automatically, without any input from the user, or it could ask the user to continue with rollback disabled. The folder that you specify with this property will be the primary folder for the installation. The path to this folder will be used to determine the values for the PrimaryVolumePath property, the PrimaryVolumeSpaceAvailable property, the PrimaryVolumeSpaceRequired property, and the PrimaryVolumeSpaceRemaining property.

PROMPTROLLBACKCOST

PRIMARYFOLDER

1252

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-3: Additional Configurable Properties (cont.) Property Name REBOOT Description This property allows you to force or suppress a reboot after the installation completes. Possible values are:


ROOTDRIVE

FTo force a reboot when your installation is complete. STo suppress any reboot except one caused by the ForceReboot action. RTo suppress any reboot caused by Windows Installer actions.

In Administration mode this property sets the default drive to the first writable network drive found. In all other modes, this property sets the default drive to the writable local drive with the most disk space available. This property defines the location of the script file that contains all operations executed during the installation. This property specifies an .msi database table that lists the order in which the actions in the table will run. In Administration mode, this property may be set to indicate that only short file names should be used. This property stores a list of transforms to be applied to an MSI database. These transforms can be set only in Installation and Advertisement mode. The syntax for this property, if you are applying a transform to two tables, is as follows: c:\transforms\trans1;:trans2. Note that transforms are applied in the order that they appear in the string. By setting this property to 1, you are specifying the installer to look for the transforms at the installation source. Setting this property limits the user interface level at basic. This is useful if you do not create a custom user interface to interact with the installers built-in UI. This property should be set to one of the predefined styles found in the TextStyle table in order to specify your default font. If this property is not set, the installer will use the system font, which may disrupt your formatting.

SCRIPTFILE

SEQUENCE

SHORTFILENAMES

TRANSFORMS

TRANSFORMSATSOURCE

LIMITUI

DefaultUIFont

InstallShield 2010 User Guide

ISP-1600-UG00

1253

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

User-Supplied Information
The following section contains information about input taken from the end user. Such input can include the end users name, company, or language.
Table 35-4: User-Supplied Information Property Name AdminProperties Description AdminProperties holds a list of properties set during an administration installation. These properties can be external (user name) or they can be internal (other properties on this page). This property stores the organization name for the end user performing the installation. This information is taken from the Customer Information dialog box (for Basic MSI projects), or from the SdCustomerInformation or SdCustomerInformationEx dialogs (for InstallScript MSI projects). This property retains the default language identifier for the end user. This property stores the name of the end user performing the installation, which is taken from the Customer Information dialog (for Basic MSI projects), or from the SdCustomerInformation or SdCustomerInformationEx dialogs (for InstallScript MSI projects). This property stores the numeric language ID for the product.

COMPANYNAME

UserLanguageID USERNAME

ProductLanguage

Product-Specific Properties
Information on product-specific properties that can be set in the Property table is listed below. Examples of these types of properties include technical support numbers, product name, and serial number.
Table 35-5: Product-Specific Properties Property Name ARPHELPLINK Description This property retains the Internet address for technical support. This value is set in the Support URL setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ARPHELPTELEPHONE This property retains your technical support telephone numbers. This value is set in the Support Phone Number setting in the General Information view. You should provide a string entry to facilitate globalizing your installation. ProductCode The ProductCode is the GUID for this particular version of the product. This ID must be different for different language versions and different release versions. This property is set in the General Information view. This property stores the name of the productfor example, InstallShield. This property is set in the General Information view.

ProductName

1254

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-5: Product-Specific Properties (cont.) Property Name ProductState Description The installer sets this property to the installed state of the product. This property can hold one of four numeric values: -1The product has not been installed or advertised. 1The product has been advertised, but not installed. 2The product has been installed for another user. 5The product has been installed and is available to the current user. ProductVersion The ProductVersion property stores the major, minor, and build version numbers in the format AA.BB.CCCC. This property is set in the General Information view. Stores the name of the product manufacturer. This value is set in the Publisher setting in the General Information view. You should provide a string entry to facilitate globalizing your project. DiskPrompt This property holds a string which is displayed by a message box prompting for a disk. You should also include empty text for additional information printed on the disk label, as in Disk 1. The DiskSerial property should be set to the internal serial number for this release. This property retains the URL for downloading a product by its string identifier (GUID). This property places units to the left of the number. This is necessary for languages that require this structure. This is a GUID used to search for a related set of products that are already installed. This property is set to 1 if the current installation package was created through an administrative installation. You can use this property to detect post-administrative installations.

Manufacturer

DiskSerial

ComponentDownload

LeftUnit

UpgradeCode

IsAdminPackage

System Folders Set by the Installer


The following properties hold the fully qualified path to many of the folders on the end users system. Many of these properties can be used directly in your script, without having to call MsiGetProperty.
Table 35-6: System Folder Properties Property Name AppDataFolder Description This property holds the full path to the current users Application Data folder. This property holds the full path to the All Users Application Data folder.

CommonAppDataFolder

InstallShield 2010 User Guide

ISP-1600-UG00

1255

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-6: System Folder Properties (cont.) Property Name CommonFilesFolder Description The value of this property is the full path to the 32-bit Common Files folder. The value of this property is the full path to the 64-bit Common Files folder. This property requires Windows Installer version 2.0. This property is used to hold the full path to the Desktop folder for the current user. If the setup is being run under Windows NT or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the DesktopFolder property should hold the full path to the All Users desktop folder. The FavoritesFolder property retains the full path to the Favorites folder for the current user. This property holds the full path to the Fonts folder. This property holds the full path to the current users Personal folder. This property holds the full path to the current users Program Files folder. This property holds the full path to the current users 64-bit Program Files folder. This property requires Windows Installer version 2.0. This property is used to hold the full path to the Program menu for the current user. If the setup is being run under Windows NT or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the ProgramMenuFolder property should hold the full path to the All Users Programs menu. This property holds the full path to the current users SendTo folder. This property is used to hold the full path to the Start menu folder for the current user. If the setup is being run under Windows NT or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the StartMenuFolder property should hold the full path to the All Users Start Menu folder. This property is used to hold the full path to the Startup folder for the current user. If the setup is being run under Windows NT or Windows 2000 or later for All Users, and the ALLUSERS property is set, then the StartupFolder property should hold the full path to the All Users Startup menu. This property holds the full path to the 32-bit System folder. This property holds the full path to the 64-bit System folder. This property requires Windows Installer version 2.0. This property holds the full path to the Temp folder. This property holds the full path to the current users Template folder.

CommonFiles64Folder

DesktopFolder

FavoritesFolder

FontsFolder PersonalFolder ProgramFilesFolder

ProgramFiles64Folder

ProgramMenuFolder

SendToFolder StartMenuFolder

StartupFolder

SystemFolder System64Folder

TempFolder TemplateFolder

1256

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-6: System Folder Properties (cont.) Property Name WindowsFolder WindowsVolume Description This property holds the full path to the users Windows folder. This property is set to the drive where Windows is installed.

Operating System Properties Set by the Installer


The following properties are set by the installer at run time. They refer to environment variables on the target system.
Table 35-7: Operating System Properties Property Name AdminUser Description This property is set by the installer at installation and is only set on Windows NT or Windows 2000 or later if the user has administrative privileges. AdminUser is always set on Windows 9x. This property stores the name of the computer that the installation is running on. It is set by a call to the Windows API GetComputerName at the initialization of the installer. This property stores the name of the user performing the installation. It is set by a call to the Windows API GetUserName. This property is set by the installer during initialization if the target system supports install-on-demand through COM (supported by Windows 2000 and later). If an operating system service pack is installed, this property stores the numeric value for that update. This property is set when Shared Windows is being used on the target system. This property is set by the installer during initialization if the target system supports feature advertisement. This property is automatically set on Windows 98 or later, or on earlier systems if Internet Explorer 4.01 is installed. This property stores the default language identifier for the target system. The value is defined by the installer by calling GetSystemDefaultLangID at initialization. This property is set by the installer at initialization if the target system is a server with Windows Terminal Server. This property is set by the installer at initialization if the target system supports true type font collections (TTC). The following systems support TTC: Windows 2000 or later, JPN - 932, Taiwan - 950, China - 936, Korea - 949, Hong Kong - 950.

ComputerName

LogonUser

OLEAdvtSupport

ServicePackLevel

SharedWindows

ShellAdvtSupport

SystemLanguageID

TerminalServer

TTCSupport

InstallShield 2010 User Guide

ISP-1600-UG00

1257

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-7: Operating System Properties (cont.) Property Name Version9X Description This property stores the version number of Windows 95 and 98 operating systems as an integer. The following formula is used to determine this integer: (MajorVersion * 100) + MinorVersion. On Windows 95, Version9X is set to 400, on Windows 98 it is set to 410, and on Windows Millennium Edition it is set to 490. Version9X is not set on Windows NT-based systems. This property stores a version number of the database used during the installation. This property stores the version number of Windows NT-based operating systems as an integer. The following formula is used to determine this integer: (MajorVersion * 100) + MinorVersion. Refer to the Windows Installer Help Library to learn the VersionNT property for a specific operating system. This property stores the version number of a Windows NT-based operating system as an integer on 64-bit systems only. The following formula is used to determine this integer: (MajorVersion * 100) + MinorVersion. This property requires Windows Installer version 2.0. This property stores the build number for the operating system being run. This property stores the type of NT operating system being run on the target machine. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Microsoft BackOffice components are installed. In all other cases this property is not set. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Windows 2000 Datacenter Server is installed. In all other cases this property is not set. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Windows 2000 Advanced Server is installed. In all other cases this property is not set. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Windows 2000 Advanced Server is installed. In all other cases this property is not set. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Microsoft Small Business Server is installed. In all other cases this property is not set. This property requires Windows Installer version 2.0. On Windows 2000 and later, this property is set to 1 if Microsoft Small Business Server is installed with the restrictive client license. In all other cases this property is not set. This property requires Windows Installer version 2.0.

VersionDatabase

VersionNT

VersionNT64

WindowsBuild

MsiNTProductType

MsiNTSuiteBackOffice

MsiNTSuiteDataCenter

MsiNTSuiteEnterprise

MsiNTSuiteEnterprise

MsiNTSuiteSmallBusiness

MsiNTSuiteSmallBusinessRestricted

1258

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-7: Operating System Properties (cont.) Property Name MsiNTSuitePersonal Description On Windows 2000 and later, this property is set to 1 if the operating system is Workstation Personal. In all other cases this property is not set. This property requires Windows Installer version 2.0. This property is set if the operating system supports .NET Framework assemblies. In all other cases this property is not set. This property requires Windows Installer version 2.0. This property is set if the operating system supports Win32 assemblies. In all other cases this property is not set. This property requires Windows Installer version 2.0.

MsiNetAssemblySupport

MsiWin32AssemblySupport

Hardware Properties Set by the Installer


The following properties are set by the installer at run time and store settings on certain hardware profiles for the end users system.
Table 35-8: Hardware Properties Property Name Alpha Description This property stores the numeric value of the processor level, and it is only defined if the setup is running on an Alpha processor. (This property is supported only with Windows Installer version 1.0.) This property sets the pixel width of the side window borders. This property sets the pixel width of the top window border. This property sets the pixel height of the caption area. This property stores the number of adjacent color bits for each pixel (that is, the color depth of the users monitor). For example, if the users monitor is using 256 colors, ColorBits is set to 8. This property stores the numeric value of the processor level, and it is defined only if the setup is running on an Intel 32-bit processor. This property stores the numeric value of the processor level, and it is defined only if the setup is running on an Intel 64-bit processor. This property requires Windows Installer version 2.0. This property stores the installed amount of physical memory, in megabytes. This property defines the width of the screen, in pixels. This property defines the height of the screen, in pixels. This property sets the height of text characters.

BorderSide BorderTop CaptionHeight ColorBits

Intel

Intel64

PhysicalMemory

ScreenX ScreenY TextHeight

InstallShield 2010 User Guide

ISP-1600-UG00

1259

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-8: Hardware Properties (cont.) Property Name VirtualMemory Description The amount of available page file space, in megabytes, is stored in this property.

Virtual Machine Properties


To use Windows Installer properties to detect the presence of a virtual machine and determine the type of virtual machine, you first need to create a custom action that calls the ISDetectVM function in the SetAllUsers.dll file. For instructions, see Detecting Whether the Installation Is Being Run on a Virtual Machine. The custom action sets the following Windows Installer properties at run time:
Table 35-9: Virtual Machine Properties Property Name IS_VM_DETECTED Description If the value of this property is 1, one of the following virtual machine environments is present:

Microsoft Hyper-V A VMware product such as VMware Player, VMware Workstation, or VMware Server Microsoft Virtual PC

If the value is not set, no virtual machine has been detected. IS_VM_TYPE This property indicates the type of virtual machine that is present on a target system. Available values are:

0No virtual machine has been detected. 1The installation is running on a VMware product such as VMware Player, VMware Workstation, or VMware Server. 2The installation is running on a Microsoft Hyper-V machine. 3The installation is running on a Microsoft Virtual PC machine. 4The type of virtual machine is not known.

Status Properties Updated by the Installer


The following properties are set by the installer at run time. The values of these properties have to do with the status of the installation.
Table 35-10: Status Properties Property Name AFTERREBOOT Description This property is set to 1 by the installer after a reboot triggered by the ForceReboot action.

1260

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Table 35-10: Status Properties (cont.) Property Name CostingComplete Description This property is set to 1 as soon as costing has begun and is set to 0 when costing is complete. The installer sets the RollbackDisabled property whenever rollback has been disabled. This property is not set by default. This property determines if the product is already installed. This property is set to True if any of the drives that are targets for the install do not have enough disk space. Otherwise, it is set to False. This property is set to True if any disk targeted during an installation does not have enough free disk space and if rollback capability is turned off. It is set to False if all of the target disks have sufficient space. This property determines if features have been preselected, and if so, does not display the selection dialog. The installer sets this property to the path specified in the PRIMARYFOLDER property. This installer sets this property to a string representing the total number of bytes, in units of 512, available on the volume specified by the PRIMARYFOLDER property. This property stores a string representing the total amount of disk space required, in bytes (expressed in units of 512 bytes), by the currently selected features. The installer sets this property to a string representing the number of remaining bytes available on the system, in units of 512, if all selected features were to be installed. This property stores the text string displayed to the user when an installation is resumed from a suspended setup. This property is set once changes to the system have taken place as a result of the installation process. This property is set if a file that is currently in use is overwritten. Custom actions that check to see if a reboot is required will use this property. Setting this property to 1 stops the installer from setting the USERNAME property. By default, this property is not set and the USERNAME property is set from the registry. Setting this property to 1 stops the installer from setting the COMPANYNAME property. By default, this property is not set and the COMPANYNAME property is set from the registry.

RollbackDisabled

Installed OutOfDiskSpace

OutOfNoRbDiskSpace

Preselected

PrimaryVolumePath

PrimaryVolumeSpaceAvailable

PrimaryVolumeSpaceRequired

PrimaryVolumeSpaceRemaining

Resume

UpdateStarted

ReplacedInUseFiles

NOUSERNAME

NOCOMPANYNAME

InstallShield 2010 User Guide

ISP-1600-UG00

1261

Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference

Date and Time Properties


Table 35-11: Date and Time Properties Property Name Date Time Description This property holds the current date. This property holds the current time.

InstallScript Engine-Related Properties


These properties contain data related to the InstallScript engine.
Table 35-12: InstallScript Engine-Related Properties Property Name STANDARD_USE_SETUPEXE Project: This property applies to InstallScript MSI projects. InstallScript MSI projects must be run by launching Setup.exe. This localizable property holds the message that is displayed to an end user who launches your .msi database directly, instead of launching Setup.exe. Description

MDAC Properties
These properties apply to version checking for MDAC.
Table 35-13: MDAC Properties Property Name ISINSTALL_MDAC_BYVERSION Description Create and set this property to Yes if you want InstallShield to perform default version checking. Create and set this property in the Project Manager if you are performing your own version checking and do not want InstallShield to install MDAC.

ISINSTALL_MDAC_SKIP

SETUPEXEDIR
Project: The following project types support the SETUPEXEDIR property:

InstallScript MSI Basic MSI

To determine the location from which an InstallScript installation was run, use SRCDIR or PACKAGE_LOCATION.

1262

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Creating Properties

SETUPEXEDIR is a property that contains the path to Setup.exe. For example, if the path to Setup.exe is C:\MySetups\MyApp\Setup.exe, the value of SETUPEXEDIR is C:\MySetups\MyApp.

Using SETUPEXEDIR
SETUPEXEDIR is an alternative to the directory identifier SourceDir. A potential problem with using SourceDir is that it points to the location of the running MSI package. In the case of a compressed setup, the MSI package is streamed to a temporary location and run from there. Because of this, SourceDirs value will be some temporary location on the end users machine, which might not be the value you want.

Limitations of SETUPEXEDIR
There are two limitations to using SETUPEXEDIR:

SETUPEXEDIR is set by Setup.exe. If the end user runs the MSI package directly, SETUPEXEDIR is not set. To account for this, you could have a dual implementation in your setupone that uses SETUPEXEDIR and one that uses SourceDir. You could test for the existence of SETUPEXEDIR and, if it does not exist, you could conditionally use your SourceDir implementation. SETUPEXEDIR might not be set on uninstall. If the end user triggers the uninstallation by running Setup.exe, SETUPEXEDIR is set. If they run the uninstallation from Add or Remove Programs, SETUPEXEDIR is not set.

Note: In an uncompressed setup, SourceDir and SETUPEXEDIR have the same value.

Creating Properties
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

You can create your own project-wide properties through the Property Manager. These properties allow you to set a value in one place and use it throughout your project.

Task

To create a property: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Click the New Property button. InstallShield adds a new row at the bottom of the view.
ISP-1600-UG00 1263

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Changing an Existing Property

3. 4. 5.

In the Name column, enter a name for the new property. In the Value column, enter a value for the property. In the Comments column, optionally enter comments about the property.

Tip: Use the following guidelines when entering values in the Property Manager view:

To overwrite all of the text in a table cell, click the table cell and then type your new property name, value, or comments. To place the cursor at a particular place within a table cell, double-click that place. Then type your change.

Note: If you want to create a property that can be changed at the command line, use all uppercase letters in the propertys name. For example, INSTALLDIR is a property that can be set or changed from the command line.

Windows Logo Guideline: InstallShield does not verify whether the information that you enter in the Property Manager view is valid. For example, if you change the value of the ARPHELPLINK property to MyCompany instead of http:// www.mycompany.com, the link fails when an end user clicks it. InstallShield does not display an error message when you enter the data in the Property Manager or at build time. To check whether you have the correct information and syntax for a built-in Windows Installer property, see the Windows Installer Property Reference.

Changing an Existing Property


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Task

To change an existing property in your project: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Do one of the following:

To overwrite all of the text in a table cell, click the table cell and then type your new property name, value, or comments. To place the cursor at a particular place within a table cell, double-click that place. Then type your change.
ISP-1600-UG00 InstallShield 2010 User Guide

1264

Chapter 35: Working with Windows Installer Properties Creating a Localizable Property

Creating a Localizable Property


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

If you want a property that can have different values based on the language that your installation uses, you can create a localizable property.

Task

To create a localizable property: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Click the arrow next to the New Property button, and then click Localizable Property. InstallShield adds a new row at the bottom of the view. A new string identifier is listed in the Value column for that property. In the Name column, enter a name for the new property.

3.

Tip: You can use the String Editor view to set a different property value for each language that your project supports. To learn how string identifiers and values are used in projects, see Using String Entries in InstallShield.

Making an Existing Property Localizable


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

If you want a property that can have different values based on the language that your installation uses, you can make that property localizable.

Task

To make a property localizable: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Select one or more properties that you want to localize.

InstallShield 2010 User Guide

ISP-1600-UG00

1265

Chapter 35: Working with Windows Installer Properties Preventing a Property Value from Being Written in Log Files

To select multiple consecutive properties, select the first property, press and hold SHIFT, and select the last property. To select multiple nonconsecutive properties, select the first property, press and hold CTRL, and select each additional property.
3.

Click the Make Selected Properties Localizable button.

InstallShield adds a new string identifier in the Value column for that property.

Tip: You can use the String Editor view to set a different property value for each language that your project supports. To learn how string identifiers and values are used in projects, see Using String Entries in InstallShield.

Preventing a Property Value from Being Written in Log Files


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

By default, Windows Installer writes the final value of every Windows Installer property contained in your installation to a log file generated by launching MsiExec with the /L argument. Starting with Windows Installer version 2.0, you can prevent certain properties (such as those containing passwords) from being written in the log file.

Task

To prevent a property from being written in the log file: 1. 2.

In the View List under Behavior and Logic, click Property Manager. In the Name column, find the MsiHiddenProperties property. If this property is not listed, click the New Property button to create this property, and in the Name column, enter MsiHiddenProperties.

3.

In the Value column, enter the name of the property that you want to be hidden. To list more than one property, separate each with a semicolon (;).

For more information about this property, see MsiHiddenProperties in the Windows Installer Help Library.

1266

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Specifying that a Public Property Should Be a Restricted Public Property

Specifying that a Public Property Should Be a Restricted Public Property


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

Restricted public properties allow network administrators to define public properties that can be changed only by a system administrator or by someone who has elevated privileges. This way, the administrator can change settings quickly without having to worry that unauthorized users on the network may tamper with the installation. Windows Installer considers a number of public properties to be restricted public properties. For the full list of restricted public properties, see Restricted Public Properties in the Windows Installer Help Library. To include additional public properties, add them to the SecureCustomProperties property. If you perform tasks such as the following ones, InstallShield automatically adds the applicable property to the SecureCustomProperties property:

When you use a public property in a system search, InstallShield adds the public property to the SecureCustomProperties property. When you add or import a dialog to a Basic MSI or Merge Module project, and the dialog contains a control that is set through a property, InstallShield adds that property to the SecureCustomProperties property. When you add a major upgrade item to your project, InstallShield adds the value of the Detect Property setting on the Advanced tab for that upgrade item to the SecureCustomProperties property.

This enables the custom public properties to be set in the user interface sequence and then be passed to the execute sequence.

Task

To manually specify that a custom public property should be a restricted property: 1. 2.

In the View List under Behavior and Logic, click Property Manager. In the Name column, find the SecureCustomProperties property. If this property is not listed, click the New Property button to create this property, and in the Name column, enter SecureCustomProperties.

3.

In the Value column, enter the public properties that you would like to restrict. Separate multiple entries with a semicolon (;).

InstallShield 2010 User Guide

ISP-1600-UG00

1267

Chapter 35: Working with Windows Installer Properties Getting or Setting Windows Installer Properties in InstallScript

Getting or Setting Windows Installer Properties in InstallScript


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The MsiGetProperty and MsiSetProperty functions get and set Windows Installer properties. For an example, see Getting and Setting Properties. You must include the statement #include "iswi.h" or #include "ifx.h" in order for the Windows Installer APIs to be available to your script.

Removing a Value from a Property


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

You can clear a propertys value without deleting the property from the Property Manager. This functionality works for localizable and non-localizable properties. For example, you might want to clear a localizable property such as ARPCOMMENTS.

Task

To clear a property value: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Select one or more properties whose values you want to clear. To select multiple consecutive properties, select the first property, press and hold SHIFT, and select the last property. To select multiple nonconsecutive properties, select the first property, press and hold CTRL, and select each additional property.

3.

Click the Clear Selected Properties button.

Note: Clearing a property makes the property non-localizable because it does not have a string identifier.
1268 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 35: Working with Windows Installer Properties Deleting a Property

Deleting a Property
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

If you no longer need a property in your project, you can delete it from the Property Manager view.

Task

To delete a property from your project: 1. 2.

In the View List under Behavior and Logic, click Property Manager. Select one or more properties that you want to delete. To select multiple consecutive properties, select the first property, press and hold SHIFT, and select the last property. To select multiple nonconsecutive properties, select the first property, press and hold CTRL, and select each additional property.

3.

Click the Delete Selected Properties button.

InstallShield displays a message box that lets you specify whether you want to delete just the selected properties, or the selected properties plus any associated string entries.

InstallShield 2010 User Guide

ISP-1600-UG00

1269

Chapter 35: Working with Windows Installer Properties Deleting a Property

1270

ISP-1600-UG00

InstallShield 2010 User Guide

36
Directly Editing .msi and .msm Databases
The MSI Database and MSM Database project types let you edit Windows Installer installation databases and merge module databases directly, rather than working through an intermediate project format (.ism file). These project types extend the Direct Editor functionality to include different views that are supported in standard installation projects. The views that are supported in these project types are intended to function as they do for an .ism project.

Project: There is no string entry or path variable support in an MSI Database or MSM Database project.

You can directly edit an existing .msi file or .msm file, or directly create a new database by opening a new MSI Database or MSM Database project.

Opening Windows Installer Packages


InstallShield provides the option to either edit .msi packages directly in InstallShield by using direct edit mode or convert it to an InstallShield project (.ism), and then edit it as a Basic MSI project in InstallShield.

Note: Some functionality is limited when editing an .msi package in direct edit mode.

Task

To open an .msi package in direct edit mode of InstallShield: 1. 2. 3. 4.

On the File menu, click Open. The Open dialog box opens. In the Files of Type list, select Windows Installer Packages (*.msi). Select the .msi package that you want to open. In the Open as box, ensure that Auto is selected.

InstallShield 2010 User Guide

ISP-1600-UG00

1271

Chapter 36: Directly Editing .msi and .msm Databases Editing .msi and .msm Databases in Direct Edit Mode

5.

Click Open.

Note: By default, InstallShield opens an .msi package in direct edit mode.

The Open MSI/MSM Wizard can convert an existing Windows installer (.msi) package to an InstallShield project (.ism) file, and open the new project to modify in InstallShield.

Note: You can also open patch creation project files (.pcp files) in InstallShield and edit them in the Direct Editor.

Editing .msi and .msm Databases in Direct Edit Mode


If you want to directly edit a Windows Installer package (.msi file) or merge module (.msm file), you can open it in InstallShield in direct edit mode and then make the required changes.

Task

To open an .msi or .msm file: 1. 2. 3. 4.

On the File menu, click Open. In the Files of Type list, select Windows Installer Packages (*.msi) or Windows Installer Modules (*.msm). Browse to the Windows Installer package or merge module that you want to open. Click Open.

The selected package or merge module opens in a limited view of the InstallShield interface. Any changes made in the direct edit mode are made directly to the .msi or .msm file when you save your changes.

Adding Files in Direct Edit Mode


When adding files in direct edit mode, you have the option to add files to the media in an uncompressed, a compressed, or a compressed and streamed state into the MSI format (MSI package or MSI database). These options appear in the Select Media Location dialog box when you drag and drop new files in the Files and Folders view in direct edit mode. You also have the option to extract COM information in that dialog box. However, this option is enabled only when dragging files to a folder or when adding a single file to a component that does not already have any existing files. As a result, the COM file is the only file in that particular component. Deleting files removes the entry from the File table. Files on the media are not deleted, and files that have yet to be added to the media are not added until you save.

1272

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 36: Directly Editing .msi and .msm Databases Adding Merge Modules in Direct Edit Mode

Note: In direct edit mode, file and media tables are updated during the save process.

When a file is added, a record is created with a default sequence value. No Media table entry is made at this time. When the media or project is saved, the sequence for the newly added files is updated to correctly reflect the media, and media entries are created in the Media table.

Adding Merge Modules in Direct Edit Mode


When you add a configurable merge module or object in the Redistributables view to an .msi database in direct edit mode, the Merge Module Properties dialog box opens. You can review or configure the merge modules properties through that dialog box. However, you can do this only when the merge module is initially merged with your installation database. That is when this dialog box is first opened. You should also note that a merge occurs as soon as you select a merge module in direct edit mode.

You cannot configure or set the destination of dependent merge modules. You cannot un-merge modules that are not found in the merge module catalog. For example, a file is not found in the Modules\i386 folder. In that case, the check box next to the respective merge module is selected but disabled.

Once you add, configure, and merge the merge modules, any files included in the merged modules will be copied to the source media upon saving the database in InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

1273

Chapter 36: Directly Editing .msi and .msm Databases Adding Merge Modules in Direct Edit Mode

1274

ISP-1600-UG00

InstallShield 2010 User Guide

37
Integrating InstallShield with External Applications
An important aspect of InstallShield is how it coexists and integrates with other software development tools such as Visual Studio as well as source code control software that complies with the Microsoft Source Control Interface. Consult the help topics in this section for specific details on the extent of external application support in InstallShield.

Using Source Code Control


InstallShield enables you to manage different versions of your project file in source code control software. InstallShield is capable of interacting with any source control system that complies with the Microsoft Source Control Interface and uses the default program on the development system. If none is installed, the source control options are not available. When you add an installation project to source control, InstallShield automatically converts the project file format to text (XML format) and maintains it in the source control system by default. If you choose not to check in your file in XML format, then the file will be checked in as a binary file.

Note: When a project file format is converted to either XML or binary format, the project file extension remains .ism.

Script File Support


InstallShield also supports the addition of any script (.rul) files to the InstallScript explorer in the InstallScript view, regardless of whether you insert, import, or add new files. It also supports all path variable types you define in the Path Variables view to define the location of these script files. However, it is important to be aware that a corresponding folder structure exists in your source code database so that your source code control software can resolve paths.

Note: The .isv file format has been deprecated to version 2.x of InstallShield for Windows Installer and versions of InstallShield Developer prior to 8.x.
InstallShield 2010 User Guide ISP-1600-UG00 1275

Chapter 37: Integrating InstallShield with External Applications Using Source Code Control

Using Source Code Control Integration


Task A typical scenario for using InstallShields source code control integration is outlined below: 1. 2. 3. 4. 5. 6.

Create an InstallShield installation project. Add the setup project to your source control program. Check the project out of source control. Edit the project. Save the project. Check the project back in to source control.

Tip: You can streamline this process by having InstallShield automatically add new projects to source control or check out edited projects. For more information, see the Source Control tab of the Tools | Options dialog.

Adding Projects to Source Control


Follow the steps below to add a project to your source control program through the InstallShield IDE. You can omit steps 1 and 2 if you selected Add new projects to source control in the Source Control tab of the Tools | Options dialog. As soon as you create the project, InstallShield initiates adding it to your source control program.

Task

To add a project to your source control program: 1. 2. 3. 4. 5.

Open the project in the InstallShield interface. On the Project menu, point to Source Control, and select Add to Source Control. The Add to Source Control dialog box appears. Add comments (if applicable) and indicate whether you want to keep the project checked out. Click OK to close the dialog. Your source control program prompts for logon information. Enter the correct information for your enterprise at the prompt. Browse to the location in your source control database where you want to add the project file.

Note: Linked files are not added to source control.

When you add a file to source control, most programs make the local copy read only. If this is the case with your source control program, you need to check out the project file before making any changes.

1276

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 37: Integrating InstallShield with External Applications Using Source Code Control

Checking Projects out of Source Control


Follow the steps below to check a project out of your source control program through the InstallShield IDE. You can omit steps 1 and 2 if you selected Check out project when edited in the Source Control tab of the Tools | Options dialog. As soon as you make a change to the project (anything that enables the Save button on the toolbar), InstallShield automatically checks it out of your source control program.

Task

To check a project out of your source code control program: 1. 2. 3.

Open the project in the InstallShield interface. On the Project menu, point to Source Control, and select Check Out. If you selected Use dialog for checkout in the Source Control tab of the Tools | Options dialog, you are prompted for your comments in the Check Out Dialog Box. Click OK after entering any comments.

Your project is now checked out of your source control program, and you can edit the local copy before checking it in.

Note: The project is not automatically checked in to source control when you close the project in the IDE. Check your project in (from the IDE) before closing it.

Checking Projects into Source Control


Task Follow the steps below to check a project into your source control program through the InstallShield IDE: 1. 2. 3.

Open the project in the InstallShield interface. On the Project menu, point to Source Control, and select Check In. The Check In Dialog Box prompts you for options for checking in the file. Click OK.

Your project is now checked into your source control program, which typically means that your project file is set to read only until you check it out of source control.

Note: The project is not automatically checked into source control when you close the project in the IDE. Check your project in (from the IDE) before closing it.

InstallShield 2010 User Guide

ISP-1600-UG00

1277

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Unlinking Projects from Source Control


Task To break the link between the project on your local machine and the one in your source control application:

On the Project menu, select Source Control, and point to Unlink from Source Control.

Integrating with Microsoft Visual Studio


With this version of InstallShield, you can create your installation projects directly in Microsoft Visual Studio. InstallShield enables you to create, modify, or build your installation from within Microsoft Visual Studio.

Integration Features
InstallShield is fully integrated within the Visual Studio shell. Some of the unique features of the integration include: All InstallShield navigation is presented within the Solution Explorer. Each InstallShield view is presented in a separate window so no scrolling is necessary and side-byside viewing options are available. You can run InstallShield external to Visual Studio. InstallShield dynamically links your installation project to other Visual Studio project outputs, automatically updating your installation with your latest source files every time your product is built. Items identified by the InstallShield debugger can be moved directly into the Visual Studio task list.

Integration Benefits
Some additional benefits of using InstallShields integrated installation authoring solution are: You can create and customize your installation without leaving the Visual Studio user interface, enabling use of familiar navigation and layout options. Your installation is automatically updated with your latest source files every time your solution is built, always staying current. The installation reflects the Build Configuration for the solution, e.g., Debug, Release, automatically included source files from the proper build directory. .NET properties and dependencies can be scanned and included in an installation automatically.

Creating InstallShield Projects in Microsoft Visual Studio


InstallShield is integrated with Microsoft Visual Studio. From within the Visual Studio workspace, you can create InstallShield installations for solutions.

1278

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Task

To create an InstallShield project from within Microsoft Visual Studio: 1. 2. 3. 4. 5.

On the File menu, point to New, and click Project. The New Project dialog box opens. In the project types list, select InstallShield 2010 Projects. Select a template. Enter a name and location for the new project. Click OK when you are finished.

Table 37-1: Project Type Description Project Type Basic MSI Icon Description A Basic MSI project uses Windows Installer to provide the user interface for the installation. When you choose this project type, you need to create features and components, and specify all application files and other distributable data. Select this option to create your own merge modules. You need to create any components and file associations. The Smart Device Setup Wizard guides you through the process of creating installations for smart devices. The InstallScript installation project provides the flexibility afforded by the InstallScript language. It is driven by the proven InstallScript engine. Using the InstallScript Object project, you can create an InstallShield merge module that uses InstallScript. This type of merge module, however, can be consumed only by InstallShield. This project type is recommended for installation authors who want to ship small, single updates to their end users. QuickPatch authoring provides an alternative to creating a patch configuration in the Patch Design view even though it provides less customization. Creation of a QuickPatch begins with the Create New QuickPatch Wizard. Select MSI Database to edit your installation project in Direct Edit mode. This means that you can directly edit the Windows Installer tables within InstallShield to configure your installation. Select MSM Database to edit your merge module in Direct Edit mode. This means that you can directly edit the Windows Installer tables within InstallShield to configure your merge module. A transform (.mst file) is a simplified Windows Installer database that contains the differences between two Windows Installer databases. Creating a new transform project launches the Open Transform Wizard. An InstallScript MSI project uses both InstallScript and Windows Installer tables. With this project type, you need to create features and components, and specify all application files and other distributable data.

Merge Module Project Smart Device Setup Project InstallScript Project

InstallScript Object Project

QuickPatch

MSI Database

MSM Database

Transform

InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1279

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Table 37-1: Project Type Description (cont.) Project Type Compact Project Icon Description A Compact project uses a special small installer engine to provide the user interface for an installation. Although Compact installation projects have some limitationsfor example, English is the only language available for the end-user interfacethey enable you to create a very small executable file (Setup.exe) that you can distribute to end users. This Setup.exe file is a compressed, selfextracting file that contains all of the application files, as well as the Compact installer engine. A ClickOnce Deployment project is a lightweight application deployment mechanism that is easy to use. It includes support for security sandboxed execution of an application with virtually no installation footprint, as well as full installation and upgrade manageability. Note that in order to build ClickOnce installations with InstallShield from within Visual Studio, you must be using Visual Studio 2005. If you do not have that version of Visual Studio, you can build ClickOnce installations directly from within InstallShield with just the .NET Framework 2.0 redistributable installed.

ClickOnce Deployment Project

Opening InstallShield Projects in Microsoft Visual Studio


InstallShield is integrated with Microsoft Visual Studio. From within the Visual Studio workspace, you can open InstallShield installations for solutions.

Task

To open an InstallShield project from within Microsoft Visual Studio: 1. 2. 3.

On the File menu, point to Open, and choose Project to display the Open Project dialog. Browse to the InstallShield file you want to open, and select it. Click Open.

Note: From within Microsoft Visual Studio, you can open only .ism files created with InstallShield X or later, InstallShield DevStudio, InstallShield Developer, InstallShieldWindows Installer Edition, or InstallShield Express, version 3.x or later. Files created in InstallShield Professional or pre-3.x versions of InstallShield Express cannot be opened.

Adding References to Visual Studio Solutions


Use the Files and Folders View to add Visual Studio references to your installation project.

1280

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Task

To add a reference: 1.

The Visual Studio Solution node in the Source computers folders pane contains sub-nodes for all projects contained in the current solution. Click a project to display the output groups for the project. The output groups are displayed in the Source computers files pane. To add a reference to an output to your installation project, drag and drop the output to the target folder in the Destination computers folders pane.

2.

Note: To view a reference for a project, right-click the project and select Resolve Project Output. The Outputs dialog is displayed to show what files the output group resolves to.

Using the Toolbox to Add Dialog Controls


To add dialog controls when your setup project is open in Microsoft Visual Studio, use the Toolbox.

Accessing the Toolbox

Task

To access the InstallShield Dialogs Toolbox: 1.

Do one of the following:


2.

On the View menu, click Toolbox. Press CTRL+ALT+X.

Click the InstallShield Dialogs tab, if it is not already expanded.

Adding Controls

Task

To add controls to a dialog: 1. 2.

Click on the type of control you want to add to the dialog. Click on the dialog, hold the mouse button down, and drag the mouse to draw the dimensions of the control. You can adjust the controls size by setting the height and width properties. As soon as you release the mouse button, the cursor changes to the Select Tool, which you can use to resize the new control.

3.

Set the controls properties. For more information, see Editing Dialog Layout in Basic MSI Projects or Editing the Layout of a Dialog in an InstallScript or InstallScript MSI Project.

InstallShield 2010 User Guide

ISP-1600-UG00

1281

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Using Sticky-State Mode


The toolbox control also has a sticky-state mode that allows you to create additional controls of the same type without returning to the Toolbox. To enable sticky-state mode, press the CTRL key while you drag the cursor from the toolbox to the dialog.

Using Auto Hide


The Dialog Toolbox has an auto-hide feature that allows you to hide the toolbox when it is not in use. To enable Auto Hide, click the Auto Hide button in the top-right corner of the toolbox. The toolbox is hidden on the side of the screen when you are not using it.

Adding InstallShield Toolbars or Commands to the Visual Studio Toolbar


You can add InstallShield toolbars and individual toolbar command buttons to the Microsoft Visual Studio workspace.

Adding InstallShield Toolbars

Task

To add an InstallShield toolbar: 1. 2.

Right-click anywhere in the toolbar to display the toolbar options. Select a toolbar to add it to the top of the Visual Studio workspace. The available InstallShield toolbars are InstallShield, InstallScript, InstallShield Layout, and MSI Debugger.

Adding InstallShield Toolbar Command Buttons

Task

To add an individual command button to the toolbar: 1. 2. 3. 4. 5.

Right-click anywhere in the toolbar to display the toolbar options. Select Customize from the bottom of the list. The Customize dialog is displayed. Click the Commands tab. Select a category from the Categories list to display the commands available within that particular category. From the Commands list, click a command button and drag it to the toolbar.

Note: InstallShield Layout and MSI Debugger toolbar commands are not available as individual toolbar buttons.

1282

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Building and Uninstalling Releases in Microsoft Visual Studio


Project: This information applies to Basic MSI projects.

Building a release in Microsoft Visual Studio is different than building a release in the InstallShield user interface. By default, when you create an InstallShield installation project in Visual Studio, the project has a default product configuration with two default releasesDebug and Release.

Building a Release

Task

To build a release in Visual Studio: 1. 2. 3.

Ensure that the project configuration is the default configuration. Use the Configuration Manager to map the correct project configurations to the solution configurations. Select the appropriate option from the Build menu:

Table 37-2: Build Menu Options Option Build Solution Description Builds the entire solution, according to what is mapped in the Configuration Manager for each project included in the solution. Build only the setup project, according to the release specified in the Project Configuration column of the Configuration Manager.

Build Setup Name

Setting the Default Configuration


In order to build a release, it must be under the default or active product configuration. This is indicated by a red arrow icon .

Task

To make a configuration the default configuration:

Right-click the product configuration and select Default Configuration.

Using the Configuration Manager


The Configuration Manager maps a solution configuration to the different project configurations contained in your solution.

InstallShield 2010 User Guide

ISP-1600-UG00

1283

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Task

To launch the Configuration Manager: 1. 2.

Select Configuration Manager from the Build menu or select Configuration Manager from the Solution Configurations drop-down menu in the toolbar. Select a configuration from the Active Solution Configuration menu and then select the appropriate project configurations to map to the selected solution configuration.

Note: If the Build check box is deselected and you build the solution, the deselected project configuration is not built.

Uninstalling the Current Release


You can easily uninstall a release that you have run.

Task

To uninstall the current release:

Right-click the tree node for your InstallShield project in the Solution Explorer and select Uninstall.

Adding .NET Assemblies to Installation Projects


InstallShield allows you to add a .NET assembly to your installation project by adding the .NET assembly file to a component.

Task

The recommended way to add a .NET assembly to your installation project is as follows: 1. 2. 3.

In the Setup Design view, create a component to hold the .NET assembly. (Windows Installer based projects only) Make the file the key file of a component by right-clicking on the file and selecting Set Key File from the context menu. Set the project to scan for dependencies by doing one of the following:

Set the .NET Scan at Build component property to Dependencies and Properties. In this case, the .NET assemblys Manifest, Application, and related entries are not populated in your project file. Instead, they are added to the .msi file at build time. Run the Static Scanning Wizard. In this case, the .NET assemblys values are added during the scan. You can edit these values in the Assembly node under the components Advanced Settings.

1284

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

Adding Project Output from a Web Service or Web Application Project


InstallShield provides enhanced Web services support. If you add a project output (any project output) from a Web Service or Web Application project, InstallShield will prompt you to add the project as a Web Service. If you choose No, the project output that you have selected is added normally. If you select Yes, InstallShield performs the following:
1. 2.

Creates a Destination Folder called IISROOTFOLDER. Deploys the following Visual Studio Project Outputs into the IISROOTFOLDER: [Content Files] goes to the [IISROOTFOLDER]{VSIPProjectName} [Primary Output] goes to the [IISROOTFOLDER]{VSIPProjectName}\bin" Creates an IISVirtualDirectory with a target of [IISROOTFOLDER]{VSIPProjectName}.

3.

InstallShield 2010 User Guide

ISP-1600-UG00

1285

Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio

1286

ISP-1600-UG00

InstallShield 2010 User Guide

38
Automating Build Processes
An automation interface is loosely defined as a programming interface that can be accessed by any programming language that supports COMmost importantly, usability from the late binding scripting languages like VBScript and JScript. In InstallShield, the automation interface is an automation interface to the InstallShield project file. InstallShield enables you to automate build processes through the automation interface without having to directly open the InstallShield interface and make changes in different views. By calling methods, setting properties, accessing collections, and so on, through the automation interface, you can open a project and modify its features and component data in many of the same ways that you would in the InstallShield interface. In addition, you can build a release using the Build method of the InstallShield automation interface. Read more about the automation interface as well as other aspects of automating build processes in this section of the documentation.

Linking Subfolders to Features Using VBScript


The VBScript example simulates dynamically linking to subfolders. By editing .ini files, you tell the script which folders and subfolders to link to, how to create the components for the files, and with which features to associate the new components. The following are requirements for using the VBScript example:

You must have Windows Scripting Host to run a .vbs file. InstallShield must be installed on the system before you can use the automation interface and .ini file reader. The script expects two command-line arguments:

The fully qualified path to an existing setup project (.ism file). The fully qualified path to an .ini file (Links.ini in this example) that describes each feature that you want a given folders files and subfolders added to. Furthermore, each feature can point to a

InstallShield 2010 User Guide

ISP-1600-UG00

1287

Chapter 38: Automating Build Processes Linking Subfolders to Features Using VBScript

different .ini file (Template.ini) that describes the properties of the components that will be created for the files in each folder and subfolder. The source files for this example are found in the following directory:
InstallShield Program Files Folder\Samples\WindowsInstaller\Automation Interface\Add Files and Components

Each of the files is described below.

LinkToFeature.vbs
The script in the LinkToFeature.vbs file is designed to read the associated Links.ini file and add the files from the specified folders and subfolders to the specified features. It organizes them into components based on the model you construct in Template.ini. To start the script, pass it the path to your setup project and the path to Links.ini, respectively, at the command line:
LinkToFeature.vbs "C:\MySetups\Malaprop.ism" "C:\Automation Interface\Links.ini"

You can examine some of the relevant sections of LinkToFeature.vbs to see exactly how it works. After opening the .ism file specified at the command line, the script creates a collection of every feature in the project starting at line 53. This collection is later used to make sure that the features listed in Links.ini are present in the project.
' The scripting dictionary is defined in Scrrun.dll Dim pFeatCol Set pFeatCol = CreateObject("Scripting.Dictionary") ' Create a collection of all of the feature names in the project For Each ISWIFeature In ISWIProject.ISWIFeatures pFeatCol.Add ISWIFeature, ISWIFeature.Name DoSubFeature ISWIFeature, pFeatCol Next

Next, LinkToFeature.vbs opens Links.ini using the InstallShield IniReader. As the comment on line 70 explains, you can use this utility if it serves your needs or otherwise substitute your own. Once Links.ini is open, the rest of the script is controlled by the For loop beginning at line 80 and ending at line 202:
For Each pLinksSection In LinksIniFile.Sections

The purpose of this loop is to read each section in Links.ini. Each section contains the name of a feature that you want to add the new components to and the folder where the files and subfolders can be found. After getting each keys value, there is a nested For loop, stretching from line 102 to 201, which loops through every feature in the collection pFeatCol and compares it to the name of the feature in Links.ini:
For Each ISWIFeature In pFeatCol ' See if the feature in Links.ini matches one in the setup project. If (ISWIFeature.Name = linksFeature) Then

Since this loop is used for almost the remainder of the script, you can assume that everything that is done acts on the current feature. Next, it checks if the Action key in this Links.ini section is set to Delete and deletes all of the features components if so:
If (linksAction = "Delete") Then For Each ISWIComponent In ISWIFeature.ISWiComponents ISWIProject.DeleteComponent ISWIComponent Next End If

At line 27, the script creates a collection of the specified folder and each subfolder:

1288

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 38: Automating Build Processes Linking Subfolders to Features Using VBScript

Set pFolders = CreateObject("Scripting.Dictionary") pFolders.Add folder, folder.Path GetSubFolders pFolders, folder

From line 136 to 163, the script opens the Template.ini file that contains the template for all of the components that will be added to the current feature:
Set iniFile = CreateObject("IniReader.IniFile") iniFile.Load (linksTemplateFile) LinkToFeature.vbs does

its real work in the For loop that begins on line 169 and ends on 199:

' Create a component for the root folder and all of its subfolders. For Each folder In pFolders

Based on the description in Template.ini, it forms the components name, adds it to the project, associates it with the current feature, sets the components properties, and then adds the files in the current folder to the component. Finally, the .vbs file saves and closes the setup project.

Links.ini
Each section of this .ini file contains the following keys, which LinkToFeature.vbs reads to determine which folders and subfolders to add to each feature in your project:
Table 38-1: .ini File Keys in Sample File Key [LinkN] Feature=FeatureName Source=C:\Data Files\Executables TemplateFile=Template.ini ComponentTemplate=Template1 Action=Delete Description
;Unique section name ;Name of existing feature in the project ;Path to the root folder ;Path to the component template .ini file ;Section name in Template.ini for this feature's components ;Delete tells LinkToFeature.vbs to permanently delete all of this feature's components before recreating them. Leave this value blank if you do not want the components destroyed.

Template.ini
Each section in Template.ini contains information for creating all of the components that will be associated with a feature. Each section in Links.ini must point to a specific component template file and section. The template file and sections are described below:
Table 38-2: Template.ini File Sections Section [TemplateName] Name=DefaultName Description
;Unique section name that identifies a particular template ;This value is used to build the component's name in the format DLS_DefaultName_N

InstallShield 2010 User Guide

ISP-1600-UG00

1289

Chapter 38: Automating Build Processes Exporting and Importing String Entries Using the Automation Interface

Table 38-2: Template.ini File Sections (cont.) Section Destination=[ProgramFilesFolder] Description


;This is the root destination folder for the components. The names of the subfolders are then added to the root so that the files are installed to the correct relative folders. ;List the decimal value of all of the component's languages, separated by a comma ;Author any condition you want to attach to each component

Languages=1033 Condition=VersionNT

Exporting and Importing String Entries Using the Automation Interface


InstallShield stores string entries in the ISString table of the main project file (.ism file). InstallShield lets you export the string entries of a language to a text file, which you can send out for translation. After the strings have been translated, you can import the text files into the InstallShield project file. The String Editor view in InstallShield enables you to manually export and import string entries for a particular language. To automate this process, you can use the InstallShield automation interface. One of the functions of the automation interface is to provide you with a mechanism for exporting string entries from and importing string entries into a project. What follows is an example of how to achieve this.

Running the Sample VBScript File


To run this sample, you must first copy the sample code shown below into a file called ImportExportStrings.vbs. Then use the command line to export or import the string entries. Exporting a Languages String Entries To export string entries using the code sample, type the following at the command line.
wscript.exe ImportExportStrings.vbs "C:\MyProject.ism" "C:\1033.txt" "1033" "E"

Importing a Languages String Entries To import string entries using the code sample, type the following at the command line.
wscript.exe ImportExportStrings.vbs "C:\MyProject.ism" "C:\1033.txt" "1033" "I"

Sample ImportExportStrings.vbs Code


'///////////////////////////////////////////////////////////////////////////// 'BEGIN ImportExportStrings.vbs ' ' InstallShield (R) ' (c) 2001 - 2008 Acresso Software Inc. and/or InstallShield Co. Inc. ' All Rights Reserved. ' ' ' This utility was designed to assist in the exporting and importing of string entries ' '
1290 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 38: Automating Build Processes Exporting and Importing String Entries Using the Automation Interface

' File Name: ImportExportStrings.vbs ' ' Description: Sample VBScript file exports or imports string entries in a text file ' ' Usage: To use the objects in this script, make sure you have the ' following items in place on your system: ' 1. InstallShield must be installed so that ' the end-user automation is available. ' 2. You must have Windows Scripting Host (Wscript.exe) installed. ' 3. The script expects the following command-line arguments, ' in this order: ' a. The fully qualified path to an existing .ism file. ' b. The fully qualified path to a text file that contains the string entries ' c. Decimal language identifier ' d. Import or Export ' '/////////////////////////////////////////////////////////////////////////////

If Wscript.Arguments.Count < 1 Then Wscript.Echo "InstallShield Subfolder Utility" & _ vbNewLine & "1st argument is the full path to the .ism file" & _ vbNewLine & "2nd argument is the full path to the string text file" & _ vbNewLine & "3rd argument is the decimal language identifier" & _ vbNewLine & "4th argument is either E or I for Export or Import" Wscript.Quit 1 End If ' Create the end-user automation object Dim ISWIProject Set ISWIProject = CreateObject("IswiAuto16.ISWiProject"): CheckError ' Open the project specified at the command line ISWIProject.OpenProject Wscript.Arguments(0): CheckError if(Wscript.Arguments(3)="E")then StringsExport ISWIProject,Wscript.Arguments(1),Wscript.Arguments(2) elseif(Wscript.Arguments(3)="I")then StringsImport ISWIProject,Wscript.Arguments(1),Wscript.Arguments(2) end if ' Save and close the project ISWIProject.SaveProject: CheckError ISWIProject.CloseProject: CheckError '///////////////////////////////////////////////////////////////////////////// ' Export the languages string entries Sub StringsExport(byref p,byval path, byval language) p.ExportStrings path, Date , language Wscript.Echo "Exported String entries for language " & language & " to " & path End Sub '///////////////////////////////////////////////////////////////////////////// ' Import the string entries Sub StringsImport(byref p,byval path, byval language) p.ImportStrings path, language Wscript.Echo "Imported string entries for language " & language & " from " & path End Sub '///////////////////////////////////////////////////////////////////////////// Sub CheckError() Dim message, errRec
InstallShield 2010 User Guide ISP-1600-UG00 1291

Chapter 38: Automating Build Processes Running Project Reports Using the Automation Interface

If Err = 0 Then Exit Sub message = Err.Source & " " & Hex(Err) & ": " & Err.Description Wscript.Echo message Wscript.Quit 2 End Sub 'END ImportExportStrings.vbs

Running Project Reports Using the Automation Interface


This VBScript example below accesses objects in a setup project to display a report of the total number of features, components, files, and various types of files. The output is displayed in a message box, but you could also write this information to a text file.

Requirements
The following requirements should be met:

You must have Windows Scripting Host to run a .vbs file. (It would be very simple to modify this script to run in a Visual Basic program.) InstallShield must be installed on the system before you can use the automation interface. Before running the script, assign the fully qualified path of an existing setup project (.ism file) to the string variable sProj.

Example Script
Option Explicit ' Create automation object Dim pProj Set pProj = CreateObject("IswiAuto16.ISWiProject") ' Open a setup project--make sure it is not already open in the IDE Dim sProj sProj = "C:\MySetups\TestProject.ism" pProj.OpenProject sProj ' Start building string that lists features, components, and files Dim sItems sItems = "Project Report" & vbNewLine sItems = sItems & "For project: " & sProj & vbNewLine sItems = sItems & "Number of features: " & pProj.ISWiFeatures.Count & vbNewLine sItems = sItems & "Number of components: " & pProj.ISWiComponents.Count & vbNewLine ' Declare and initialize counters for files and file types Dim i, nEXE, nDLL, nOCX i = 0 nEXE = 0: nDLL = 0: nOCX = 0 ' Loop through components to get the number of files and individual file names Dim sFileName Dim pComp, pFile For Each pComp In pProj.ISWiComponents For Each pFile In pComp.ISWiFiles
1292 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 38: Automating Build Processes Source Code Control at the Command Line

i = i + 1 sFileName = pFile.DisplayName If Instr (1, sFileName, ".exe", vbTextCompare) > 0 Then nEXE = nEXE + 1 ElseIf Instr (1, sFileName, ".dll", vbTextCompare) > 0 Then nDLL = nDLL + 1 ElseIf Instr (1, sFileName, ".ocx", vbTextCompare) > 0 Then nOCX = nOCX + 1 End If Next Next sItems sItems sItems sItems = = = = sItems sItems sItems sItems & & & & "Number vbTab & vbTab & vbTab & of files: " & i "EXEs: " & nEXE "DLLs: " & nDLL "OCXs: " & nOCX & & & & vbNewLine vbNewLine vbNewLine vbNewLine

' Display report Wscript.Echo sItems ' Close project pProj.CloseProject

Source Code Control at the Command Line


Access to installation projects stored in a source control system can be achieved through a combination of command-line calls to your source control application and limited use of the InstallShield Automation Interfacewhich gives you command-line-type access to much of InstallShields functionality. Checking in, checking out, and getting the latest version of the project is handled through your source controls command-line support, if any. Below are two examples of how you might use this functionality. Both examples use Microsoft Visual SourceSafe as the source control application and are written using VBScript. You can copy and paste either example into a .vbs file, change the paths so that they are valid for your environment, and run them.

Note: With earlier versions of InstallShield products, you were required to convert the source control (.isv) files to InstallShield project (.ism) files, and then back to .isv files. However, with the latest versions of InstallShield products, this is no longer necessary because you can save .ism files as text files for your source control application.

Getting the Latest Version and Building Your Installation


Const VSSFLAG_USERRONO = 1 Const VSSFLAG_TIMEMOD = 8 Const VSSFLAG_REPREPLACE = 128 Const Const Const Const PROJECT_SCC_INI_LOC = "\\Server\srcsafe.ini" PROJECT_SCC_FOLDER = "$/MyFiles/" PROJECT_SCC_BASE_NAME = "MyProject" PROJECT_SCC_LOCAL_FOLDER = "C:\Project"

' Create a ref to Microsoft Visual SourceSafe Set VSS = CreateObject("SourceSafe") ' Point to the VSS database

InstallShield 2010 User Guide

ISP-1600-UG00

1293

Chapter 38: Automating Build Processes Source Code Control at the Command Line

VSS.open PROJECT_SCC_INI_LOC ' Get the project file Set VSSISVFile = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME + ".ism") VSSISVFile.Get PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME + ".ism", SSFLAG_TIMEMOD + VSSFLAG_USERRONO + VSSFLAG_REPREPLACE 'Get all remaining files Set VSSIDTFolder = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME) VSSIDTFolder.LocalSpec = PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME For Each VSSObj In VSSIDTFolder.Items(False) VSSObj.Get , VSSFLAG_TIMEMOD + VSSFLAG_USERRONO + VSSFLAG_REPREPLACE Next strFileBasePath = PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME + ".ism" strCmdLine = "ISCmdBld.exe -p """ + strFileBasePath + ".ism""" ' Build your installation Set wshshell = CreateObject("Wscript.Shell") RunCmdLine = wshshell.Run(strCmdLine, 1, True)

Checking Out, Making Changes, and Checking In


Const VSSFLAG_USERRONO = 1 Const VSSITEM_FILE = 1 Const Const Const Const PROJECT_SCC_INI_LOC = "\\Server\srcsafe.ini" PROJECT_SCC_FOLDER = "$/MyFiles/" PROJECT_SCC_BASE_NAME = "MyProject" PROJECT_SCC_LOCAL_FOLDER = "C:\Project"

' Create a ref to Microsoft Visual SourceSafe Set VSS = CreateObject("SourceSafe") ' Point to the VSS database VSS.open PROJECT_SCC_INI_LOC ' Check out the project file Set VSSISVFile = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME + ".ism") VSSISVFile.CheckOut , PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME + ".ism", VSSFLAG_USERRONO 'Check out all remaining files Set VSSIDTFolder = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME) VSSIDTFolder.LocalSpec = PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME For Each VSSObj In VSSIDTFolder.Items(False) If VSSObj.Type = VSSITEM_FILE Then VSSObj.CheckOut , , VSSFLAG_USERRONO End If Next ' Create a reference to the InstallShield Automation Interface Set m_ISWiProject = CreateObject("IswiAuto16.ISWiProject") strFileBasePath = PROJECT_SCC_LOCAL_FOLDER + PROJECT_SCC_BASE_NAME + ".ism" ' Open your project m_ISWiProject.OpenProject strFileBasePath ' Add a feature m_ISWiProject.AddFeature "Robofeature1" ' Save the project m_ISWiProject.SaveProject ' Close the project m_ISWiProject.CloseProject ' Check in the project file
1294 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 38: Automating Build Processes Using the Automation Interface on a 64-Bit System

Set VSSISVFile = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME + ".ism") VSSISVFile.CheckIn 'Check in all remaining files Set VSSIDTFolder = VSS.VSSItem (PROJECT_SCC_FOLDER + PROJECT_SCC_BASE_NAME) For Each VSSObj In VSSIDTFolder.Items(False) If VSSObj.Type = VSSITEM_FILE Then VSSObj.CheckIn "Check In Comment" End If Next

Using the Automation Interface on a 64-Bit System


The automation interface is a 32-bit interface; therefore, it must be loaded from a 32-bit process. If you are using the automation interface on a 64-bit machine, you may need to load the automation interface through a 32-bit executable file. For example, if you are using VBScript with the automation interface, you may need to launch cscript.exe from the 32-bit system folder (SysWow64). Otherwise, the 64-bit scripting host may encounter an error when creating the automation object.

InstallShield 2010 User Guide

ISP-1600-UG00

1295

Chapter 38: Automating Build Processes Using the Automation Interface on a 64-Bit System

1296

ISP-1600-UG00

InstallShield 2010 User Guide

39
Reference
Reference information for InstallShield is organized into the following sections:
Table 39-1: Reference Selections Section Menu, Toolbar, and Window Reference Dialog Box Reference Description Describes the various components of the InstallShield user interface, including menus, toolbars, and windows. Contains reference information on each of the dialog boxes that are displayed in InstallShield. Provides details about each of the wizards that are available in InstallShield. Describes each of the views that are displayed in InstallShield. Introduces you to the InstallShield Prerequisite Editor, which is available with InstallShield. Use this tool to create InstallShield prerequisites that you can include in your projects, or to edit existing ones. Provides information about error codes and warnings that might occur when you create, compile, build, or run your installation. This section also includes reference information about errors and warnings that may occur when you migrate a project from an earlier version of an InstallShield product to the latest version. Contains reference material that describes the objects, methods, properties, and collections used to modify an installation project through the automation interface. Explains each of the custom actions that are available in InstallShield.

Wizard Reference View Reference InstallShield Prerequisite Editor Reference

Errors and Warnings

Automation Interface

InstallShield Custom Action Reference Command-Line Tools

Introduces tools that you can use from the command line to perform tasks such as building a release and running an installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1297

Chapter 39: Reference

Table 39-1: Reference Selections (cont.) Section InstallScript Language Reference Description Provides in-depth information about functions, data types, event handlers, operators, and other aspects of InstallScript, a simple but powerful programming language that you can use to design your installations. This section also contains sample code that you can use in your script file.

1298

ISP-1600-UG00

InstallShield 2010 User Guide

40
Menu, Toolbar, and Window Reference
This section describes the various components of the InstallShield user interface, including menus, toolbars, and windows.

Menus
The menus in InstallShield are located on the menu bar, which is at the top of the InstallShield user interface. Each menu contains a list of commands. Some of these commands have icons next to them so that you can quickly associate the command with the icon. Each of the menus in InstallShield is described in this section:

File Edit View Go Project Build Tools Window Help

InstallShield 2010 User Guide

ISP-1600-UG00

1299

Chapter 40: Menu, Toolbar, and Window Reference Menus

File Menu
The following table lists the File menu commands, as well as associated keyboard shortcuts and icons.
Table 40-1: File Menu Commands Command New Open Close Save Save As Ctrl+S Shortcut Ctrl+N Ctrl+O Icon Description Creates a new installation project. Opens an existing installation project. Closes the current project. Saves the current project. Enables you to save the current project file with a new name and location, or as an earlier version of an InstallShield product. Ctrl+P Prints the script file that is displayed in the active script window. Opens one of the most recently accessed projects. Closes the current project and closes InstallShield.

Print 1, 2, 3, 4 Exit

Edit Menu
The following table lists the Edit menu commands, as well as associated keyboard shortcuts and icons.
Table 40-2: Edit Menu Commands Command Undo Redo Cut Copy Paste Shortcut Ctrl+Z Ctrl+Y Ctrl+X Ctrl+C Ctrl+V Icon Description Undoes the last action performed. Reverses the last action that was performed with the Undo command. Removes the currently selected text and places it on the Clipboard. Copies the currently selected text to the Clipboard. Inserts the contents of the Clipboard at the insertion point, and replaces any selected text. Searches for the specified text, file, or folder. Searches for and replaces the specified text. Searches for the next occurrence of the specified text. Moves the insertion point to the specified line number in the active script window.

Find Replace Find Next Go To

Ctrl+F Ctrl+H F3 Ctrl+G

1300

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-2: Edit Menu Commands (cont.) Command Find String ID in Project Repeat Shortcut Icon Description Searches the entire installation project for occurrences of a specified string entry. Opens the Set Repeat Count dialog box, where you can specify the total number of times that the next character you type should be inserted. Provides two commands:

Insert

InstallScript Function Opens the Function Wizard, which automates the process of adding a function call to the active script displayed in the InstallScript view. String Entry Opens the Select String Dialog Box, which lets you select a string entry that you want to add to the active script displayed in the InstallScript view.

View Menu
The following table lists the View menu commands, as well as associated keyboard shortcuts and icons.
Table 40-3: View Menu Commands Command Output Window View List View Bar Header Bar F4 Shortcut Icon Description Shows or hides the Output window. Shows or hides the View List. Shows or hides the View Bar. Shows or hides the header bar, which has the tabs for the Start Page, the Project Assistant, and the Installation Designer. Shows or hides the Standard toolbar. Shows or hides the MSI Debugger toolbar. Shows or hides the Layout toolbar. Shows or hides the Controls toolbar. Shows or hides the status bar. Shows or hides the Watch window in the InstallScript Debugger. Shows or hides the Variable window in the InstallScript Debugger. Ctrl+M Changes the width of the script or dialog editor window that is currently open. Displays the Project Assistant.

Standard MSI Debugger Layout Controls Status Bar Watch Variable Maximize

Project Assistant

InstallShield 2010 User Guide

ISP-1600-UG00

1301

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-3: View Menu Commands (cont.) Command Microsoft App-V VMware ThinApp Shortcut Icon Description Displays the Microsoft App-V tab. Displays the VMware ThinApp tab.

Go Menu
The following table lists the Go menu commands, as well as associated keyboard shortcuts and icons. Some of the view-related commands are not available from the Go menu, depending on which project type you have open in InstallShield.
Table 40-4: Go Menu Commands Command Previous View Shortcut ALT+UP ARROW Icon Description Takes you to the view directly above the current view as shown in the View List. Takes you to the view directly below the current view as shown in the View List. Takes you to the view that you last visited in the history of your view selections. You can use this multiple times, as long as there are multiple entries in your view history. Takes you to the next view in the history of your view selections. You can continue until you reach the view you were at when you first clicked Back. Takes you to the Start Page. Takes you to the Help view. Displays the Project Assistant. Displays the Microsoft App-V tab. Displays the VMware ThinApp tab. Enables you to open the General Information view. In Basic MSI and InstallScript MSI projects, this menu also enables you to open the Update Notifications view. Enables you to display the Setup Design, Features, Components, Setup Types, and DIM References views. Enables you to display the Files and Folders, Redistributables (or Objects in InstallScript projects), Prerequisites, and Mobile Devices views.

Next View

ALT+DOWN ARROW

Back

ALT+LEFT ARROW

Forward

ALT+RIGHT ARROW

Start Page Help Project Assistant Microsoft App-V VMware ThinApp Installation Information

Organization

Application Data

1302

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-4: Go Menu Commands (cont.) Command System Configuration Shortcut Icon Description Enables you to display the Shortcuts, Registry, ODBC Resources, INI File Changes, Environment Variables, XML File Changes, and Text File Changes views. Enables you to display the Internet Information Services, Component Services, and SQL Scripts views. Enables you to display the InstallScript, Custom Actions and Sequences (or Custom Actions), Support Files (or Support Files/Billboards in InstallScript and InstallScript MSI projects), System Search, and Property Manager views. Enables you to display the Dialogs, Billboards, and String Editor views. Enables you to display the Path Variables, Upgrades, Releases, and Patch Design views. Enables you to display the Dependency Scanners, MSI Debugger, and Direct Editor views. Enables you to display the General Information, Files, Registry, and Patch Variables views.

Server Configuration Behavior and Logic

User Interface

Media

Additional Tools

Patch Settings

Project Menu
The following table lists the Project menu commands, as well as associated icons.
Table 40-5: Project Menu Commands Command Visual Basic 6.0 Wizard Export Components Wizard Device Driver Wizard Icon Description Opens the Visual Basic 6.0 Wizard. Opens the Export Components Wizard, which simplifies the process of exporting a component from a file to a new or existing project. Opens the Device Driver Wizard, which guides you through the process of adding a device driver to your installation. Opens the Reg-Free COM Wizard, which guides you through the process of adding a COM manifest file to your project or configuring an existing manifest file. Opens the Static Scanning Wizard, which scans the files already added to your project for any dependencies that they require. Opens the Dynamic Scanning Wizard, which monitors a running executable for all .dll and .ocx dependencies files and automatically adds them to your project.

Reg-Free COM Wizard

Perform Static Scan

Perform Dynamic Scan

InstallShield 2010 User Guide

ISP-1600-UG00

1303

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-5: Project Menu Commands (cont.) Command Convert Source Paths Icon Description Opens the Convert Source Paths Wizard, which lets you convert existing hard-coded paths with path variables, thereby enhancing the portability of your installation project. Provides several commands:

Project Converters

Convert to InstallScript MSI ProjectConverts your Basic MSI project to an InstallScript MSI project. For more information, see Converting a Basic MSI Project to an InstallScript MSI Project. Convert to InstallScript ProjectOpens the Convert InstallScript MSI Dialog Box to help you convert your InstallScript MSI project to an InstallScript project. Convert Compact Project to Basic MSI ProjectConverts your Compact project to a Basic MSI project. For more information, see Converting Compact Projects to Basic MSI Projects.

Source Control

Provides several commands:

Get Latest Version Copies the most recent version of the current project into your project folder. The project placed in your project folder is read-only. Check Out Places a writable copy of the project into your project folder, enabling you to modify it. Check In Stores your changes to the current project in your source control application. Undo Check Out Undoes your checkout, canceling your changes both in the source control application and in your project folder. Your project reverts to the way it was before you checked it out. Add to Source Control control application. Adds the current project to your source

Unlink from Source Control Breaks the link between the current project and your source control application. Show History Displays a record of changes to your project since it was initially added to your source control application. While viewing the history, you can return to any point in your projects history and recover the file as it existed at that point. Show Differences differences, if any. Refresh Status Compares two files, then shows you the Refreshes the source control status. Opens your source code


Settings

Launch Source Control Program control application.

Opens the Project Settings Dialog Box.

1304

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Menus

Build Menu
The following table lists the Build menu commands, as well as associated keyboard shortcuts and icons.
Table 40-6: Build Menu Commands Command Release Wizard Compile Build Ctrl+F7 F7 Shortcut Icon Description Opens the Release Wizard, which lets you specify the settings for a release and build it. Compiles your script file. Builds your release with default settings, orif you have already built your releaserebuilds your release with your most recently saved settings. Rebuilds only the .msi file tables of your installation to enable you to see your changes take effect more quickly than with a complete rebuild. Rebuilds only the .msi file tables and updates only the modified files of your installation. This type of build works only when the media is an uncompressed network image. This command is available for Windows Installerbased projects only. Rebuilds the active media. This command regenerates only those items that you changed since the media was last built. This command is available for InstallScript projects only. Lets you rebuild multiple releases with different configurations simultaneously. Ctrl+Break Ctrl+T Cancels the current build process. Enables you to run through the user interface portion of your installation without making any changes to your system. All custom actions are executed. Starts debugging. Enables you to run your completed installation without leaving InstallShield. Uninstalls the most recently run release.

Build Tables Only Build Tables & Refresh Files

SHIFT+F7

ALT+F7

Refresh Build ALT+F7

Batch Build Stop Build Test

Debug Run Uninstall

F5 Ctrl+F5

Project: This command is available for the following project types: Run Package Basic MSI InstallScript MSI

Enables you to run the installation package. This command is available only for InstallScript projects with the Network Image media type and with all files compressed into an .exe file. Enables you to debug the installation package. This command is available only for InstallScript projects with the Network Image media type and with all files compressed into an .exe file.

Debug Package

InstallShield 2010 User Guide

ISP-1600-UG00

1305

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-6: Build Menu Commands (cont.) Command Run from Web MSI Debugger Shortcut Icon Description Displays the One-Click Install Web page, which lets you run your completed installation without leaving InstallShield. Provides several commands:

Start MSI Debugging

Starts debugging in the MSI Debugger view.

Toggle BreakpointF9 or Sets or removes the breakpoint in the line that has the insertion point. Remove All BreakpointsSHIFT+F9 or set in the debugger. Removes all breakpoints

Step OverF10 or Steps through the current action or dialog and continues the execution in the debugger. Step IntoF11 or debugger. Steps into the current custom action in the Stops debugging in the MSI

Stop MSI DebuggingSHIFT+F5 or Debugger view.

Validate

Provides several commands:

Upgrade Validation WizardOpens the Upgrade Validation Wizard, which performs a set of tests to determine if your Basic MSI or InstallScript MSI installation will properly upgrade earlier versions of your product. Browse for a New Validation Module (.cub)Lets you browse to select a new or custom validation (.cub) file. InstallShield Validation Suite for Windows 7This suite consists of a number of InstallShield internal consistency evaluators (ISICEs) that help you identify issues that may make your installation behave unexpectedly on Windows 7 systems. This suite checks for issues that may not be revealed in the Full MSI Validation Suite. InstallShield Merge Module Validation Suite for Windows 7This suite consists of a number of InstallShield internal consistency evaluators (ISICEs) that help you identify issues that may make your merge module behave unexpectedly on Windows 7 systems. This suite checks for issues that may not be revealed in the Merge Module Validation Suite. InstallShield Certified for Windows Vista Validation SuiteThis suite consists of a number of InstallShield internal consistency evaluators (ISICEs) that help you identify issues that may make your installation behave unexpectedly on Windows Vista systems. This suite checks for issues that may not be revealed in the Full MSI Validation Suite. InstallShield Certified for Windows Vista Merge Module Validation SuiteThis suite consists of a number of InstallShield internal consistency evaluators (ISICEs) that help you identify issues that may make your merge module behave unexpectedly on Windows Vista systems. This suite checks for issues that may not be revealed in the Merge Module Validation Suite.

1306

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-6: Build Menu Commands (cont.) Command Validate (cont.) Shortcut Icon Description

InstallShield Best Practice Suite Scans your Basic MSI or InstallScript MSI installation to determine whether it meets best-practice guidelines.

Edition: The InstallShield Best Practice Suite is available in the Premier edition of InstallShield.

Full MSI Validation Suite Scans your Basic MSI or InstallScript MSI installation to determine whether it is valid. Your built .msi package is compared against the ICE rules. Windows 2000 Logo Validation Suite Scans your Basic MSI or InstallScript MSI installation to determine whether it meets the Designed for Windows 2000 logo requirements. Windows XP Logo Validation Suite Scans your Basic MSI or InstallScript MSI installation to determine whether it meets the Designed for Windows XP logo requirements. Windows Vista Logo Validation Suite Scans your Basic MSI or InstallScript MSI installation to determine whether it meets the Certified for Windows Vista logo requirements. Merge Module Validation Suite Scans your merge module package. The Merge Module Validation tool is the merge module version of the Full MSI Validation Suite. Your built merge module is compared against ICE rules to help you determine whether it will function properly. Recent Validation ModulesDisplays a list of recently used validation (.cub) files.

To learn more, see Validating Projects. Settings ALT+F6 Opens the Settings dialog box, which enables you to set preferences for how InstallShield builds your installation.

Tools Menu
The following table lists the Tools menu commands, as well as associated icons.
Table 40-7: Tools Menu Commands Command Open Release Folder Icon Description Launches Windows Explorer, open in the DISK1 folder of the current release. If there is no release or if a release has not been built, Windows Explorer opens to your default project location. Opens the New Language Wizard, which enables you to add support for almost any language to one or more projects.

Add New Language

InstallShield 2010 User Guide

ISP-1600-UG00

1307

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-7: Tools Menu Commands (cont.) Command Create/Apply Transform MSI Log Analyzer Icon Description Opens the Transform Wizard, which walks you through the steps of creating and applying transforms for your installation projects. Launches the InstallShield MSI Log Analyzer, which enables you to generate easy-to-use reports based on Windows Installer log files. Launches the InstallShield MSI Command-Line Builder. This tool enables you to quickly build complex command-line strings for executing Windows Installer related tasks. Provides several commands:

MSI Command-Line Builder

Difference

Compare to FileOpens a dialog box that lets you specify which project should be compared with the currently open project. End CompareEnds the previously started compare session. InstallShield MSI DiffOpens InstallShield MSI Diff, a tool that enables you to compare Windows Installer tables in two different Windows Installer databases. It also enables you to apply transforms and patches to Windows Installer packages and then see how the database tables are affected. To learn more, see InstallShield MSI Diff.

InstallScript

Provides several commands:

Standard Dialog Sampler Opens the Standard Dialog Sampler, which enables you to view examples of end-user dialogs. The sample dialogs are displayed without a skin. Skinned Dialog Sampler Opens the Skinned Dialog Sampler, which enables you to view examples of end-user dialogs. The sample dialogs are displayed with the skin that is selected in the Dialogs view. Cabinet File Viewer Opens the Cabinet File Viewer, a tool that lets you select a cabinet (.cab) file and view its compressed files, file groups, components, and setup types, as well as the properties of those items. It also lets you extract files from the cabinet file. Log File Viewer Opens the Log File Viewer, a tool that enables you to view the installation log file. The log file is created when your installation is first run and it is maintained when your installation is running in maintenance mode. You can use the log file to determine the current state of each component in the installation.

Check for Updates

Checks for service packs and other updates to InstallShield. If updates are available, you can select which ones you would like to download and install. Launches the Redistributable Downloader Wizard to quickly download thirdparty redistributables, merge modules, and other files to your local machine. Opens the InstallShield Prerequisite Editor, which enables you to create or modify InstallShield prerequisites that you can include in your installation project.

Redistributable Downloader Prerequisite Editor

1308

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Menus

Table 40-7: Tools Menu Commands (cont.) Command Convert ClickOnce to DIM Icon Description Opens the Convert ClickOnce to DIM Wizard, which enables you to convert Microsofts ClickOnce manifest file to the Developer Installation Manifest (.dim) format and a Basic MSI project. Displays the Customize dialog box, which enables you to customize the toolbars displayed in the InstallShield user interface. Displays the Options dialog box, which enables you to specify preferences for creating projects and working in InstallShield.

Customize

Options

Window Menu
The following table lists the Window menu commands, as well as associated keyboard shortcuts and icons.
Table 40-8: Window Menu Commands Command Next Shortcut Ctrl+Tab Icon Description Opens the InstallScript view and displays the next script file in your project as shown at the bottom of the Window menu. Opens the InstallScript view and displays the next script file in your project as shown at the bottom of the Window menu. Opens the InstallScript view and displays one of the script files included your project.

Previous

Ctrl+Shift+Tab

1, 2, 3

Help Menu
The following table lists the Help menu commands, as well as associated icons.
Table 40-9: Help Menu Commands Command Contents Index Search Support Central InstallShield Community Release Notes Icon Description Displays the Contents tab of the online help library. Displays the Index tab of the online help library. Displays the Search tab of the online help library. Displays Support Central on the Web. Displays the Community on the Web. Displays InstallShield release notes.

InstallShield 2010 User Guide

ISP-1600-UG00

1309

Chapter 40: Menu, Toolbar, and Window Reference Toolbars

Table 40-9: Help Menu Commands (cont.) Command Acresso on the Web Help View About InstallShield Icon Description Connects to the Acresso Web site. Displays the Help view. Displays the About InstallShield dialog box, where you can find version information and register InstallShield.

Toolbars
The InstallShield user interface offers several toolbars that give you quick access to frequently used menu items and provide graphical tools for use in the Dialog Editor.

Built-in Toolbars
The following toolbars are available in the InstallShield interface. When you open InstallShield, only the Standard toolbar is displayed near the top of the user interface. The Control and Dialog Layout toolbars open when you work in the Dialogs view and disappear when you leave that view. All toolbars can be resized and repositioned, and docked and undocked.

Standard Toolbar Controls Toolbar Layout Toolbar MSI Debugger Toolbar

Standard Toolbar
Below is a description of all the buttons on the Standard toolbar.
Table 40-10: Standard Toolbar Buttons Button Name New Project Description Launches the New Project dialog box, which enables you to select a project type and begin a new project. Enables you to open project files or convert installation package (.msi) files to an InstallShield installation project (.ism) file. Saves changes to the project file. Click the Undo button in the Dialog Editor or the Script Editor to reverse the last change you made. Click the Redo button in the Dialog Editor or the Script Editor to restore the last action you reversed by clicking the Undo button.

Open

Save Undo

Redo

1310

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Toolbars

Table 40-10: Standard Toolbar Buttons (cont.) Button Name Viewbar View List Description Hides or shows the viewbar, which appears on the left side of the interface. Hides or shows the View List, which shows all the views available in the InstallShield interface.

Note: You can also press F4 to hide or show the View List. Previous View Next View Back Displays the view directly above the current view, as shown in the View List. Displays the view directly below the current view, as shown in the View List. Displays the view that you last visited in the history of your view selections. You can click this button multiple times, if there are multiple entries in your view history. Displays the next view in the history of your view selections. You can continue clicking this button until you reach the view in which you first clicked the Back button. Launches the Function Wizard, which eases the process of writing built-in InstallScript functions. Launches the Release Wizard, which turns a project into either a shippable Windows Installer setup package or completed merge module. The options you select in the wizard determine the layout and contents of your release. Compiles the InstallScript files in your project without building the entire setup. Builds your release with default settings, orif you have already built your release rebuilds your release with your most recently saved settings. Cancels the current build process. Runs through the user interface portion of your installation project without making any changes to your system. All custom actions are executed.

Forward

Insert InstallScript Function Release Wizard

Compile Build

Stop Build Test User Interface

Project: The Test button is available for the following project types:


Run

Basic MSI InstallScript MSI

Runs your completed installation project.

Note: If you selected the Uninstall before installing check box, any previously run release is uninstalled before the current release is run. This check box is available on the Preferences tab of the Options dialog box.

InstallShield 2010 User Guide

ISP-1600-UG00

1311

Chapter 40: Menu, Toolbar, and Window Reference Toolbars

Table 40-10: Standard Toolbar Buttons (cont.) Button Name Uninstall Description Uninstalls the most recently run release.

Project: This button is available for the following project types: Debug Basic MSI InstallScript MSI

Runs the appropriate debugger, depending on the type of installation you are creating. If your project is InstallScript or InstallScript MSI, clicking Debug launches the InstallScript Debugger. If your project is Basic MSI or a Transform, clicking Debug launches the MSI Debugger. Launches Windows Explorer, open in the DISK1 folder of the current release. If there is no release or if a release has not been built, Windows Explorer opens to your default project location. Displays the IDE Help view where you can find answers to many of your questions regarding InstallShield.

Open Release Folder

Help View

Controls Toolbar
The Controls toolbar provides every standard control that is available in a run-time dialog. This toolbar is displayed when you edit a dialogs layout in the Dialog Editor.

Task

To draw a control on a dialog:

Click the controls button, click anywhere on the face of the dialog, drag the mouse pointer while continuing to press the mouse button, and then release the button when you have reached the intended dimensions of the control.
Table 40-11: Controls Toolbar Buttons Button Name Select Tool Description Allows you to give focus to a control on a dialog. You can then move, resize, delete, or align the control. Allows you to draw a Check Box control on the dialog. Allows you to draw a Push Button control on the dialog. Allows you to draw an Edit Field control on the dialog. Allows you to draw a Combo Box control on the dialog. Allows you to draw a Text Area control on the dialog.

Check Box Push Button Edit Field Combo Box Text Area

1312

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Toolbars

Table 40-11: Controls Toolbar Buttons (cont.) Button Name List Box Radio Button Description Allows you to draw a List Box control on the dialog. Allows you to draw a Radio Button control on the dialog. A radio button must be added to a radio button group, below. Allows you to draw a Bitmap control on the dialog. Allows you to draw a Group Box control on the dialog. Allows you to draw a Billboard control on the dialog. Allows you to draw a Line control on the dialog. Allows you to draw a Radio Button Group control on the dialog.

Bitmap Group Box Billboard Line Radio Button Group Selection Tree Progress Bar List View Scrollable Text Icon Directory List Directory Combo Volume Cost List Volume Select Combo Masked Edit Path Edit Custom

Allows you to draw a Selection Tree control on the dialog. Allows you to draw a Progress Bar control on the dialog. Allows you to draw a List View control on the dialog. Allows you to draw a Scrollable Text control on the dialog. Allows you to draw an Icon control on the dialog. Allows you to draw a Directory List control on the dialog. Allows you to draw a Directory Combo control on the dialog. Allows you to draw a Volume Cost List control on the dialog. Allows you to draw a Volume Select Combo control on the dialog.

Allows you to draw a Masked Edit control on the dialog. Allows you to draw a Path Edit control on the dialog. Allows you to add a custom controlfor example, a Win32 control.

Layout Toolbar
The Layout toolbar provides several tools for aligning and resizing controls in a dialog. This toolbar is displayed when you edit a dialogs layout in the Dialog Editor.

InstallShield 2010 User Guide

ISP-1600-UG00

1313

Chapter 40: Menu, Toolbar, and Window Reference Toolbars

Most buttons on this toolbar are enabled only when you have selected more than one control. To select multiple controls, select one, press the SHIFT key, and select the other; or hold the mouse button down and drag the cursor across several controls. The Layout toolbar contains the following buttons:
Table 40-12: Layout Toolbar Buttons Button Name Align Left Description Select two or more controls and click the Align Left button to align all of the selected controls with the left edge of the leftmost control. Select two or more controls and click the Align Right button to align all of the selected controls with the right edge of the rightmost control. Select two or more controls and click the Align Top button to align all of the selected controls with the top edge of the uppermost control. Select two or more controls and click the Align Bottom button to align all of the selected controls with the bottom edge of the lowermost control. Select a control and click the Center Vertical button to reposition the element in the vertical (x-axis) center of the dialog. Select a control and click the Center Horizontal button to reposition the element in the horizontal (y-axis) center of the dialog. Select three or more controls on the dialog and click the Space Across button to have them evenly distributed horizontally across the dialog. Select three or more controls on the dialog and click the Space Down button to have them evenly distributed vertically along the dialog. Select two or more controls and click the Make Same Width button to resize the width of the smaller controls to the width of the largest control. Select two or more controls and click the Make Same Height button to resize the height of the smaller controls to the height of the largest control. Select two or more controls and click the Make Same Size button to make the smaller controls the exact size of the largest control. Select a control and click the Bring to Front button to place it on top of any overlapping controls. See note below. Select a control and click the Send to Back button to place it behind any overlapping controls. See note below. Click the Show Grid button to place design-time grid lines on the dialog, or to remove the grid if it is present.

Align Right

Align Top

Align Bottom

Center Vertical

Center Horizontal Space Across

Space Down

Make Same Width Make Same Height Make Same Size

Bring to Front

Send to Back

Show Grid

Note: The Bring to Front and Send to Back actions are not saved when you close and reopen your project. These actions are for use during design only. For example, you might have a dialog that displays different controls based on a condition.

1314

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 40: Menu, Toolbar, and Window Reference Output Window

You can use the Bring to Front and Send to Back actions to work on these different controls while you are designing your dialog.

MSI Debugger Toolbar


Below is a description of all the buttons in the MSI Debugger toolbar.
Table 40-13: MSI Debugger Toolbar Buttons Button Name Toggle Breakpoint MSI Debugging Description Click this button to set a breakpoint on an action or dialog. Click this button to start debugging or, while debugging, to continue stepping through the setup. Click this button to step over the current action or dialog. Click this button to step into the current action and launch your registered debugger. Click this button to clear all breakpoints you have set in the MSI Debugger. Click this button to stop debugging.

Step Over Step Into

Remove All Breakpoints Stop MSI Debugger

Output Window
When you build a release for your project, the Output window opens if it is not already open, and it displays build information. It also provides other task-specific information. For example, if you validate your project, InstallShield displays validation results in the Output window. If you open a project that was created with an earlier version of InstallShield, the Output window shows upgrade information.

InstallShield 2010 User Guide

ISP-1600-UG00

1315

Chapter 40: Menu, Toolbar, and Window Reference Output Window

The following tabs appear in the Output window:


Table 40-14: Output Window Tabs Tab Build Description Stores distribution output information and displays build output; a link to the output file saved as a text file is included. Displays validation results. Displays project conversion information or details about testing changes to XML files. Displays InstallScript information when you click Compile on the Build menu. Provides descriptions of error and warning codes when you build, compile, or validate your project; each error or warning code is a link to a Knowledge Base article.

Validate Results Compile Tasks

Tip: You can right-click a code for an error or warning and select Direct Editor. The affected area associated with the error or warning will be highlighted in the Direct Editor.

1316

ISP-1600-UG00

InstallShield 2010 User Guide

41
Dialog Box Reference
Each of the dialog boxes available in the user interface of InstallShield is described in this section:

.NET Installer Class Arguments Dialog Box Add an Argument/Value Pair Dialog Box Add Existing Media Dialog Box Add New Method Dialog Box Add New Property Dialog Box Add Predefined Search Dialog Box Add to Source Control Dialog Box Application Extension Mapping Dialog Box Application Mappings Dialog Box Associate Components Dialog Box Batch Build Dialog Box Browse for Directory Dialog Box Browse for File Dialog Box Check In Dialog Box Check Out Dialog Box Component Properties Dialog Box Condition Builder Dialog Box Content Source Path Dialog Box Convert InstallScript MSI Dialog Box

InstallShield 2010 User Guide

ISP-1600-UG00

1317

Chapter 41: Dialog Box Reference


1318

Create a New Component Dialog Box Create a New Feature Dialog Box Custom Error Handling Dialog Box Custom Errors Dialog Box Customize Validation Settings Dialog Box Delete Property Dialog Box Dependencies Dialog Box Destination Folder Dialog Box Device Files Dialog Box Dialog Images Dialog Box Digitally Sign Setup Dialog Box Differences Dialog Box Dynamic File Link Settings Dialog Box Edit Binary Value Dialog Box Edit Data Dialog Box Edit DWORD Value Dialog Box Edit Registry Data Dialog Box Edit String Value Dialog Box Error Mapping Properties Dialog Box Exclusion Languages Dialog Box Export Tables Dialog Box Feature Condition Builder Dialog Box File Association Properties Dialog Box File Details Dialog Box File Properties Dialog Box File Properties Dialog Box (InstallScript Installation Projects) Find and Replace Dialog Find String ID in Project Dialog Box Folder Properties Dialog Box Function Signature Dialog Box General Options - Advanced Dialog Box
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference

General Options - Other Disk Files Dialog Box History Dialog Box Import Dialog Dialog Box Import InstallScript Files Dialog Box Import SQL Script Files Dialog Box Insert Action Dialog Box InstallShield Prerequisite Properties Dialog Box Languages Dialog Box Link Type Dialog Box Logging Options for Windows Installer 4.0 and Later Dialog Box Lowercase Component Directory Warning Media File Properties Dialog Box Merge Module Configurable Values Dialog Box Merge Module Properties Dialog Box Method Browser Dialog Box Method Signature Dialog Box Modify Dynamic Links Dialog Box Modify Property Dialog Box/Release WizardPlatforms Panel Module Dependencies Dialog Box Module Exclusions Dialog Box MSI Log File Tab MSI Value Dialog Box MST SIS Settings Dialog Box Multi-Line String Value Dialog Box New Dependency Dialog Box New File Dialog Box New Project Dialog Box Operating Systems Dialog Box Options Dialog Box Other IIS Properties Dialog Box Other Window Styles Dialog Box
ISP-1600-UG00 1319

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference


1320

Outputs Dialog Box Overwrite Dialog Box Patch Sequence Dialog Box Path Variable Recommendation Dialog Box Permissions Dialog Boxes for Files and Directories Permissions Dialog Boxes for Registry Keys Platform Suites Dialog Box Platforms Dialog Box Prerequisite Condition Dialog Box Privileges Dialog Box Product Condition Builder Dialog Box Project Settings Dialog Box Rename Key Dialog Box Required Features Dialog Box Resolve Conflict Dialog Box Save As Dialog Box Script Conversion Dialog Box SCM Pre-shutdown Delay Dialog Box Select File Dialog Box Select Icon Dialog Box Select Media Location Dialog Box Select String Dialog Box Serial Number Violation Dialog Box Server Locations Dialog Box Service Options Dialog Box for a Time Delay of an Auto-Start Service Service Options Dialog Box for Running Recovery Actions Service SID Dialog Box Set File(s) URL Dialog Box Settings Dialog Box Setup DLL Properties Dialog Box Setup Languages Dialog Box
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference .NET Installer Class Arguments Dialog Box

Shortcut Properties Dialog Box SQL Server Requirement Dialog Box Update Merge Module Search Path Dialog Box Window Properties Dialog Box

.NET Installer Class Arguments Dialog Box


This dialog displays the arguments that you want to pass to the .NET Installer class. To launch the dialog, click the ellipsis button for the .NET Installer Class Arguments component property. Click the Add Argument button beneath the argument that you want to add to launch the Add an Argument/Value Pair dialog box. There are four methods on the Installer class that are called at various points during the installation: Install, Commit, Uninstall, and Rollback. You use this dialog to specify additional argument lists for the Installer class for each of the execution contexts.

Note: Install custom actions are run when the component containing the Installer class custom action is installed. Uninstall custom actions are run when the component containing the Installer class custom action is uninstalled. These two types are run in the Execute sequence, right after StartServices and before RegisterUser.

Using Arguments
For all methods, /LogFile= is the default argument. This results in no log being generated when these methods are run. You can complete this argument by using Windows Installer properties in [brackets]. To add arguments, type in the appropriate edit field or use the Add Argument button.

Syntax Rules
When you click OK, InstallShield validates what is in the edit fields and displays a warning if the syntax is incorrect. The syntax rules include the following:

All quotes must be matched. Escape characters are valid. If you use \" in your argument, it is not counted it when checking the quote matching. Every space-separated argument token must consist of a name preceded by a slash and followed by an equal sign (=). A value to the right of the equal sign is optional. Spaces inside quotes do not count when determining what is and is not part of an argument token. For example, in the argument /arg=hi there, hi there is all part of the argument token beginning with /arg. In the argument /arg=hi there, there is its own argument token and an invalid one.

Add an Argument/Value Pair Dialog Box


This dialog is displayed when you click one of the Add Argument buttons in the .NET Installer Class Arguments dialog box. When you are finished creating an argument, click OK to add the argument.
InstallShield 2010 User Guide ISP-1600-UG00 1321

Chapter 41: Dialog Box Reference Add Existing Media Dialog Box

Dialog Options
Argument Name Provide a name for the argument in the edit field. Argument Value Select one of the values from the option button list to create an argument. To create a custom argument, select the Custom option.
Property

Select a property from the menu to reference a property that exists in your installation project.
Directory

Use the drop-down menu to add a reference to a directory that exists in your installation project.
Custom

To create a custom argument, type an argument value in the edit field.

Add Existing Media Dialog Box


This dialog box opens when you click the Add button in the Release Wizards Update panel. This dialog box lets you select a release that is in the current project from a list of releases (excluding the current release).

Add New Method Dialog Box


Project: This information applies to InstallScript Object projects.

This dialog box lets you specify the name, return type, and parameter types of a new method and automatically paste corresponding code into your object script. This dialog box opens when you rightclick the InstallScript views Methods folder and select Add New Method.

1322

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Add New Property Dialog Box

Properties
Table 41-1: Methods Properties Property Name Return Type Description Enter the name for your method. Select the data type that your method returns. You can choose from String, Number, and Boolean. Enter the parameter types that can be passed to your method.

Parameter List

Add New Property Dialog Box


Project: This information applies to the following project types:

InstallScript InstallScript Object

The Add New Property dialog box lets you specify the name and attributes of a new property and automatically paste corresponding code into your script. This dialog box opens when you right-click the InstallScript views Properties folder and then click Add New Property.
Table 41-2: Add New Property Dialog Box Settings Setting Property Name Description This is the global name of this property. Therefore, when trying to read from or write to this property from script, you will need to use this name. The name you enter in this box will be appended to the local variable name property. Select String, Number, or Boolean, depending on the type of data that your property requires. The local variable name will change depending on the selection that you make. Select the appropriate level of access for the property. Available options are Read/Write, Read Only, and Write Only. If your property is an array, select this check box.

Data Type

Access Method

Array

Note: If you plan on using the InstallShield stock wizard for your objects design-time interface, you cannot use array properties. You can create a custom wizard that accepts array properties or you can redesign the property without using an array. Local Variable Name You can accept the default name or create your own variable name. This variable name is used when calling your variable from within the script.

InstallShield 2010 User Guide

ISP-1600-UG00

1323

Chapter 41: Dialog Box Reference Add Predefined Search Dialog Box

Table 41-2: Add New Property Dialog Box Settings Setting Default Value Description Enter the starting value for your property. Be sure to match the value to the data type that you chose. When you are specifying a string value, type it exactly as you would in the script; enclose the string value in quotation marks and use the appropriate escape sequences for special characters (for example, enter a backslash as \\). Do not enter a string identifier or a system variable in an InstallScript Object project; the initialization of the propertys value is performed when the object is added to a project, at which time string identifiers and system variables are not yet initialized.

Add Predefined Search Dialog Box


The Add Predefined Search dialog box opens when you right-click the grid in the System Search view and then click Add predefined search. Select a predefined value from the list in this dialog box and then click OK to add the search to the grid in the System Search view. If you want system searches that have been published to a repository to be displayed in this dialog box, select the Show Searches in Repository check box.

Add to Source Control Dialog Box


This dialog is displayed when you add a project to your source control program through InstallShield.

Dialog Options
Comments Enter the comments describing the file. These comments are stored in your source control program. Keep checked out Select this option to add the .ism file (in text format), but keep it checked out in your working directory. Convert to XML This option causes the .ism file to use the XML representation, which is better suited for source control. If you add a project in Binary format to source control, this option is available and is selected by default. It is recommended that you leave this option selected.

Note: When a project file format is converted to either XML or binary format, the project file extension remains *.ism.

1324

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Application Extension Mapping Dialog Box

Application Extension Mapping Dialog Box


Use the Application Extension Mapping dialog box to add or modify the mapping between a file extension and the program or interpreter that processes those files. This dialog box is launched when you click Add on the Application Mappings dialog box.
Table 41-3: Application Extension Mapping Dialog Box Settings Setting Extension Description Type the file name extension that is associated with your application (for example, .abc). To use a wild-card application mapping for an executable file, enter an asterisk (*). Executable Type the path, or click Browse to launch the Select Executable dialog box. This enables you to specify the executable in your project to which you want to map. Type the name of the executable file (.exe or .dll) or use the Browse button to search for the file. The executable file must be located on your Web servers local hard drive. The Verbs section enables you to specify which HTTP verbs should be passed to the application.

Verbs


Script Engine (IIS 6 and earlier only)

All verbsSelect this option to include all verbs. This option passes all requests to an application. Limit toSelect this option to specify the HTTP verbs that should be passed to an application. Separate verbs with a comma.

If you want the application to run in a directory without Execute permissions, select this check box. This setting is intended primarily for script-based applications, such as ASP and IDC, that are mapped to an interpreter. For a script-mapped application to run, either the Scripts Only or Scripts and Executables option must be selected for the Execute Permissions property. To allow only scriptmapped applications to run, select the Scripts Only option. To allow both script-mapped applications and executable files (.exe and .dll) to run, select Scripts and Executables. This setting applies to IIS 6 and earlier. IIS 7 ignores this setting.

Check that file exists (IIS 6 and earlier only)

To instruct the Web server to verify the existence of the requested script file and to specify that the requesting user should have access permission for that script file, select this check box. If the script does not exist or the end user does not have permission, the appropriate warning message is returned to the browser and the script engine is not invoked. This option can be useful for scripts mapped to non-CGI executable files like the Perl interpreter that do not send a CGI response if the script is not accessible.

Note: Because the script is opened twiceonce by the server and once by the script enginethere is some performance cost when this check box is selected. This setting applies to IIS 6 and earlier. IIS 7 ignores this setting.

InstallShield 2010 User Guide

ISP-1600-UG00

1325

Chapter 41: Dialog Box Reference Application Mappings Dialog Box

Application Mappings Dialog Box


The Application Mappings dialog box lets you add, edit, and delete a mapping between a file name extension and the application that processes those files. The Application Mappings dialog box is available from within the Internet Information Services view. To open this dialog box, click a Web site, application, or virtual directory in the explorer. Then click the ellipsis button (...) in the Application Mappings setting.

Note: If an asterisk (*) appears in the Verbs column, all verbs will be used for the specified extension. Table 41-4: Application Mappings Dialog Box Settings Setting Add Description To add an entry for mapping a file name extension and the program or interpreter that processes those files, click this button. This opens the Application Extension Mapping dialog box. To edit an existing application mapping, select the mapping and click this button. To delete an existing application mapping, select the extension and click this button.

Edit Remove

Associate Components Dialog Box


The Associate Components dialog box enables you to associate components with features in the Setup Design view. Select the component or components that you want to associate with the current feature and click OK.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

For more information on component-feature relationships, see Associating New Components with Features.

Batch Build Dialog Box


This dialog displays a tree control containing all the product configurations and releases you have defined in the current project. Select the releases that you want to include in your batch build.

Dialog Options
Tree Control Select the releases that you would like to build by checking the appropriate boxes. Selecting a product configuration icon selects all the releases associated with that product configuration.

1326

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Browse for Directory Dialog Box

Select All Click this button to select all the releases in the tree. Unselect All Click this button to deselect all the releases in the tree. Build Click this button to build all the selected releases.

Browse for Directory Dialog Box


Use the Browse for Directory dialog box to browse to a directory, create a new directory, rename a directory, or delete a directory.

Dialog Box Options


Destination Directories This field lists all of the currently available destination directories. You can select, create, rename, or delete directories in this field.
Selecting a Directory

Task

To select a directory: 1. 2.

Click on a directory to select it. Click OK.

Creating a New Directory

Task

To create a new directory: 1.

Select a directory or the Destination Computer and press the Insert key, or right-click and select New from the context menu. This creates a directory beneath the selected folder or beneath the Destination Computer. Type the directory name. Provide a directory identifier, if necessary.

2. 3.

InstallShield 2010 User Guide

ISP-1600-UG00

1327

Chapter 41: Dialog Box Reference Browse for Directory/Shortcut Target Dialog Box

Renaming a Directory

Task

To rename a directory: 1. 2. 3.

Select a directory or the Destination Computer and press F2, or right-click and select Rename from the context menu. Type the new directory name. Note that you cannot rename predefined directories. Rename the directory identifier, if necessary, to be consistent with the directorys new name.

Deleting a Directory

Task

To delete a directory:

Select a directory and press the Delete key, or right-click and select Delete from the context menu. Note that you cannot delete predefined directories.

Note: When you delete a directory, any subdirectories beneath the selected directory are also deleted.

Directory Identifier You can use the Directory Identifier field to provide a user-friendly name for a directory. For example, if you have a directoryProgramFilesFolder\MyProgram\Graphics\Jpgyou can use just JPG to identify the directory path. The Component Destination field in the IDE displays the path as {JPG} [ProgramFilesFolder]MyProgram\Graphics\Jpg.

Note: The directory identifier must be a valid Windows Installer identifier. For features, the directory identifier must contain all capital letters.

Browse for Directory/Shortcut Target Dialog Box


Use the Browse for Directory dialog box to browse to a directory, create a new directory, rename a directory, or delete a directory. Use the Browse for Shortcut Target dialog box to browse to a directory or file, create a new directory, rename a directory, delete a directory.

Dialog Box Options


Destination Directories This field lists all of the currently available destination directories. You can select, create, rename, or delete directories in this field.

1328

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Browse for Directory/Shortcut Target Dialog Box

Selecting a Directory

Task

To select a directory: 1. 2.

Click on a directory to select it. Click OK.

Creating a New Directory

Task

To create a new directory: 1.

Select a directory or the Destination Computer and press the Insert key, or right-click and select New from the context menu. This creates a directory beneath the selected folder or beneath the Destination Computer. Type the directory name. Provide a directory identifier, if necessary.

2. 3.

Renaming a Directory

Task

To rename a directory: 1. 2. 3.

Select a directory or the Destination Computer and press F2, or right-click and select Rename from the context menu. Type the new directory name. Note that you cannot rename predefined directories. Rename the directory identifier, if necessary, to be consistent with the directorys new name.

Deleting a Directory

Task

To delete a directory:

Select a directory and press the Delete key, or right-click and select Delete from the context menu. Note that you cannot delete predefined directories.

Note: When you delete a directory, any subdirectories beneath the selected directory are also deleted.

InstallShield 2010 User Guide

ISP-1600-UG00

1329

Chapter 41: Dialog Box Reference Browse for File Dialog Box

Hard-Coding a Shortcut

Task

To hard code a shortcut to a path such as C:\Winnt\Notepad.exe:

First create two folders "C:" and "Winnt." Then enter "Notepad.exe" in the filename field of the Browse for Directory dialog or select the root node, and enter "C:\Winnt\Notepad.exe" in the filename field. Directory Identifier You can use the Directory Identifier field to provide a user-friendly name for a directory. For example, if you have a directoryProgramFilesFolder\MyProgram\Graphics\Jpgyou can use just JPG to identify the directory path. The Component Destination field in the InstallShield interface displays the path as {JPG} [ProgramFilesFolder]MyProgram\Graphics\Jpg.

Note: The directory identifier must be a valid MSI identifier. For features, the directory identifier must contain all uppercase letters.

You can enter the file name in the File name edit box, which means that you are entering the selected directory\filename as the target of the shortcut.

Browse for File Dialog Box


The Browse for File dialog box is displayed when you click either Files buttonthe one next to the Include patterns and files box or the one next to the Exclude patterns and files boxon the Signing tab in the Releases view. This dialog box lets you specify which static files in your project should or should not be signed. It also lets you use an asterisk (*) as a wild-card character. This is especially helpful if you include dynamically linked files in your project and you want to sign all files that match a certain pattern.
Table 41-5: Settings on the Browse for File Dialog Box Setting Select files to sign Description This box is displayed if you click the Files button next to the Include patterns and files box on the Signing tab. This box lists all of the statically included files in your project that match the file types that are selected in the Show files of type list. It also lists some default file patterns, such as *.dll. Select the check boxes for the files and file patterns that correspond with the types of files in your project that you want InstallShield to sign at build time.

1330

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Check In Dialog Box

Table 41-5: Settings on the Browse for File Dialog Box (cont.) Setting Select files to skip signing Description This box is displayed if you click the Files button next to the Exclude patterns and files box on the Signing tab. This box lists all of the statically included files in your project that match the file types that are selected in the Show files of type list. It also lists some default file patterns, such as *.dll. If you want to prevent certain files or file patterns from being signed by InstallShield at build time, select the check boxes for the appropriate files and file patterns. Show files of type Use this list to filter the types of files that are displayed in the Select files to sign box or the Select files to skip signing box.

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

When you click OK on this dialog box, InstallShield adds the appropriate files and file patterns to the Include patterns and files box or the Exclude patterns and files box on the Signing tab. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

Check In Dialog Box


This dialog is displayed when you check a project in to your source control program through the interface.

Dialog Options
Comments Enter comments describing the changes you have made to the file. These comments are stored in your source control program. Keep checked out Select this option to check in the changed version of the .isv file, but keep it checked out in your working directory. Differences Click the Differences button to view a line-by-line comparison between the .ism file (in text format) being checked in and the previous version.

InstallShield 2010 User Guide

ISP-1600-UG00

1331

Chapter 41: Dialog Box Reference Check Out Dialog Box

Check Out Dialog Box


If you select the Use dialog for checkout check box on the Source Control tab of the Options dialog box, the Check Out dialog box is displayed when you check out a project from your source control program through InstallShield.

Dialog Box Options


Table 41-6: Check Out Dialog Box Options Option Comments Description Type comments about your reasons for checking out the .ism file. Click the Advanced button to specify your source control programs complete options for checking out the project file.

Advanced

Component Properties Dialog Box


The Component Properties dialog box lets you set some component propertiesincluding dynamic file link settings and associated featuresfrom the Files and Folders view.

Task

To launch the dialog box: 1. 2.

In the View List under Application Data, click Files and Folders. Ensure that components are displayed in the Destination computers folders pane. If components are not displayed: In the Destination computers folders pane, right-click Destination Computer and click Show Components (in Windows Installerbased projects) or Show Components and Subfolders (in InstallScript projects).

3.

Right-click a component and then click Properties. The Component Properties dialog box opens.

The following tabs are available on this dialog box:

General tab File Linking tab Features tab

1332

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Component Properties Dialog Box

General Tab
The General tab on the Component Properties dialog box is where you set the properties for the selected component.
Table 41-7: Settings on the General Tab of the Component Properties Dialog Box Setting Shared Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Description If the files that are contained within this component are shared files, select this check box. To learn more, see Managing Reference Counts for Shared Files.

Never Overwrite

If you do not want to replace an existing version of the same file that is already present on the target machine, select this check box. To learn more, see Checking File Versions Before Installing. If the files in this component should not be removed from the system during uninstallation, select this check box. For example, validation rule ICE09 requires any component with a destination of [SystemFolder] to be marked as Permanent. To learn more, see Specifying Whether a Components Files and Other Associated Data Are Uninstalled During Uninstallation.

Permanent

Uninstall

InstallScript, InstallScript Object

If the files in this component should be removed when the application is uninstalled, select this check box. To learn more, see Specifying Whether a Components Files and Other Associated Data Are Uninstalled During Uninstallation.

64-bit

Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module

To mark this component as 64 bit, select this check box. If a 64-bit component is included in your installation, the installation cannot be run on 32-bit machines. If you want InstallShield to extract the COM information each time you build a release, select this check box. If your COM interfaces are subject to change, this option is preferable to maintaining statically acquired or provided data in the COM Registration advanced setting. If you have marked the components COM server file as SelfRegistering, you should not select this check box.

Extract COM Info At Build

InstallShield 2010 User Guide

ISP-1600-UG00

1333

Chapter 41: Dialog Box Reference Component Properties Dialog Box

Table 41-7: Settings on the General Tab of the Component Properties Dialog Box (cont.) Setting Self-register Project Type InstallScript, InstallScript Object Description If the components files are self-registering, select this check box. A self-registering file is an OLE server that can place information about itself in the registry so that it is seen by other OLE applications. Such a file can also remove this information from the registry when it is uninstalled.

Project: InstallScript and InstallScript Object projects support selfregistration of .dll files, .exe files, and type libraries; that is, .tlb and .olb files. In Windows Installerbased projects, self-registration is set at the file level, rather than the component level.

File Linking Tab


Project: The File Linking tab is displayed on the Component Properties dialog box for the following project types:

Basic MSI InstallScript MSI Merge Module

The File Linking tab on the Component Properties dialog box shows all of the settings for your dynamic link.
Table 41-8: Settings on the File Linking Tab of the Component Properties Dialog Box Setting Source Include Subfolders Description This column shows where the source files are stored. A path variable is typically used. This column indicates whether InstallShield should dynamically link the files in each subfolder. For information on how InstallShield creates components for the dynamically linked files in subfolders, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. Self-Register This column indicates whether you want InstallShield to self-register every file in the dynamic link. If the file are part of a 64-bit component and the Self-Register column indicates Yes for a dynamic link, the installation performs 64-bit self-registration on the target system. For more information, see Targeting 64-Bit Operating Systems.

1334

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Condition Builder Dialog Box

Table 41-8: Settings on the File Linking Tab of the Component Properties Dialog Box (cont.) Setting Create Components Description This column indicates how you want InstallShield to create the components when it adds the dynamic files to your release at build time. The valid options are:

Best PracticeInstallShield adheres to best practices when creating components for the dynamically linked files. By DirectoryInstallShield creates one component for each folder and subfolder.

To learn about these two methods, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. Details This column indicates the filter criteria for including files in and excluding files from the dynamic link.

Tip: Note the following guidelines for working with the File Linking tab:

To add a new dynamic link, click the New Link button. InstallShield displays the Dynamic File Link Settings dialog box. To modify the settings for an existing link, select the link and then click the Modify button. InstallShield displays the Dynamic File Link Settings dialog box. To remove a link and its associated dynamically linked files, select the link and then click the Delete button.

Features Tab
The Features tab on the Component Properties dialog box is where you specify the features with which the component is associated. Select the check box next to the feature or features with which you want the component to be associated.

Condition Builder Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Condition Builder dialog box simplifies the process of creating a condition for a component, a dialog, a custom action, a SQL script, or a system search by providing a selection of valid Windows Installer properties and conditional expression operators.

InstallShield 2010 User Guide

ISP-1600-UG00

1335

Chapter 41: Dialog Box Reference Content Source Path Dialog Box

The Condition Builder dialog box contains the following settings.


Table 41-9: Condition Builder Dialog Box Settings Setting Conditions Description This box is where you define the condition for your component, dialog, custom action, or other installation element. You can type a condition directly in this box, or you can use the Properties list, the Operators list, and the Add buttons to build a condition statement.

Important: When you click the OK button on this dialog box, InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements. Properties This list contains common Windows Installer properties, as well as any properties that have been added in the Property Manager view. Select the property that you want to evaluate, and then click the Add button next to this list. If the list does not contain the property that you want to evaluate, you can type the appropriate property name in the Conditions box. Operators This list contains all of the valid operators that are recognized by the Windows Installer. If your conditional statement should contain an operator, select the operator that you want to use and then click the Add button. InstallShield adds the operator to the conditional statement. If you add an operator, type the appropriate value after the operator.

Content Source Path Dialog Box


The Content Source Path dialog box opens when you click the UNC button in the Content Source Path (Local or UNC) setting for a Web site in the Internet Information Services view. This dialog box contains the following setting.
Table 41-10: Content Source Path Dialog Box Setting Setting Universal Naming Convention content source path Description Specify the UNC path for the IIS Web sites files. For example:
\\server\share

Convert InstallScript MSI Dialog Box


This dialog box lets you convert an InstallScript MSI project to an InstallScript project. An InstallScript project offers the advantages of InstallScript MSIsuch as dialog box skins, a flexible end-user interface, and a powerful scripting modelwithout any of the limitations or overhead of Windows Installer. This dialog box is displayed when you select the Project menus Convert to InstallScript Project command.
1336 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Convert InstallScript MSI Dialog Box

If you click Yes, most project elements are converted, many with no change. The following changes take place (the conversion process issues many messages to let you know what is happening):

INSTALLDIR is changed to TARGETDIR in the following IDE elements: Component destinations Path specifications in the Files and Folders view Target specifications in the Shortcuts view Note that the value of TARGETDIR must be set in your script, as it is in the following default code in the OnFirstUIBefore event handler function:
if ( ALLUSERS ) then TARGETDIR = PROGRAMFILES ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME; else TARGETDIR = FOLDER_APPDATA ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME; endif;

A new product GUID is generated. A registry set is created for each component that had registry data associated with it. Each component with multiple dynamic file links is split into multiple components with one dynamic file link in each. The script file Setup.rul is renamed OldSetup.rul and is displayed in the InstallScript view. Note that no changes are made to this script file. Warnings are issued for the following unsupported items: Unsupported folder specifiers in path specifications in the Files and Folders view, or destinations or target specifications in the Shortcuts view Win32 assemblies that are associated with components Global assembly caches that are associated with components Registry value names that contain a hyphen (-) or asterisk (*) Advertised shortcuts Folders under the Support Files views Disk1 folder Merge modules (you can re-include these in the converted project from the Objects view) Unsupported MSI tables that contain data

Releases and your scripts are not converted. At a minimum, you need to modify your scripts to set TARGETDIR, as mentioned above, change all INSTALLDIR references to TARGETDIR, and remove calls to Windows Installer API functions (whose names begin with Msi). Furthermore, the obsolete string entry PRODUCT_NAME is not converted; IFX_PRODUCT_NAME can be used instead. Note that setting SHELL_OBJECT_FOLDER in OnFirstUIBefore is not necessary and the default script line SHELL_OBJECT_FOLDER = @PRODUCT_NAME; should be deleted. The following Windows Installer folder specifiers are not supported in InstallScript projects:

ALLUSERSPROFILE AdminToolsFolder

InstallShield 2010 User Guide

ISP-1600-UG00

1337

Chapter 41: Dialog Box Reference Create a New Component Dialog Box

AppDataFolder CommonAppDataFolder CommonFiles64Folder FavoritesFolder FontsFolder GlobalAssemblyCache LocalAppDataFolder MyPicturesFolder PersonalFolder PrimaryVolumePath ProgramFiles64Folder SendToFolder System16Folder System64Folder TempFolder TemplateFolder USERPROFILE WindowsVolume

In addition, the following folder specifiers are not supported for shortcut destinations: ProgramFilesFolder CommonFilesFolder WindowsFolder SystemFolder

Create a New Component Dialog Box


Some aspects of your installation project must be associated with a component. For example, if no component exists when a shortcut or an .ini file change is created, InstallShield prompts you to create a new component.

Dialog Options
New component name InstallShield provides a default name for the component. Type a meaningful name into this field. The name you provide is for your reference only and is never displayed to end users.
1338 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Create a New Feature Dialog Box

Select the features to associate this component with

Project: This property applies to the following project types:

InstallScript Smart Device Basic MSI

Select from the list the feature or features with which you want to associate the new component. If no features appear in this field, you can add one by clicking New Feature. You are not required to associate your new component with a feature; however, if you do not, this component will not be installed. New Feature

Project: This property applies to the following project types:

InstallScript Smart Device Basic MSI

Click New Feature to add a feature to your setup project. When you have created a feature, you can associate your new component with it by clicking the box next to the feature name. Do not show this dialog again Select this option if you want InstallShield to automatically create any necessary components in the future.

Create a New Feature Dialog Box


Some aspects of your installation project must be associated with a feature. For example, if no feature exists when a merge module is added, or an ODBC resource is configured, InstallShield prompts you to create a feature.

Dialog Options
New feature name InstallShield creates a default feature name for you. Provide a meaningful name for the feature. The name you enter here is for your reference only and is never displayed to end users. Do not show this dialog again Select this check box if you want InstallShield to automatically create components and features when required.

InstallShield 2010 User Guide

ISP-1600-UG00

1339

Chapter 41: Dialog Box Reference Custom Error Handling Dialog Box

Custom Error Handling Dialog Box


Specify how to handle specific SQL errors in the Custom Error Handling dialog box. Any error you define will override the scripts default error handling. You can define how to handle an error for all scripts in your project or simply for this script.

Error Number
Enter the SQL error number for which you want to customize error handling.

Behavior
Override the default behavior by choosing one of the following options:

On Error, Abort Installation On Error, Go to Next Script On Error, Go to Next Statement

Project Wide
To apply the customized error handling to all scripts in your project, select Yes. To apply it to only this script, select No.

Custom Errors Dialog Box


The Custom Errors dialog box lists all of the HTTP errors that can be customized for a Web site, application, or virtual directory. A custom error can be a URL or a pointer to a file on the server.

Task

To configure error messages: 1. 2. 3. 4.

In the Custom Errors dialog box, select one or more errors. Click Edit. The Error Mapping Properties dialog box opens. Select a message type and specify a file or URL as appropriate. Click OK.

You can click the Set to Default button to restore default settings for the selected error.

Customize Validation Settings Dialog Box


The Customize Validation Settings dialog box lets you specify which internal consistency evaluators (ICEs) should be used for a specific validation suite. This dialog box opens when you click Customize on the Validation tab of the Options dialog box.

1340

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Delete Property Dialog Box

To customize the list of ICEs that are performed during a particular type of validation, select the validation suite in the CUB file list. Then select the check boxes for each of the ICEs that should be performed, and clear the check boxes for each of the ICEs that should be ignored. To learn about specific ICEs, see ICE Reference in the Windows Installer Help Library. For information about each of the InstallShield ICEs that were added to the Certified for Windows Vista Validation Suite, see ISICEs.

Delete Property Dialog Box


The Delete Property dialog box is displayed when you delete a system search associated with a property in your installation project. The goal of the dialog box is to determine whether or not you want to delete that property along with the search.

Note: Deleting the property may affect other areas of your setup.

Select Yes if you are certain that your project will not be affected in the absence of that property. Select No if you are uncertain whether it will affect your installation.

Dependencies Dialog Box


The Dependencies dialog box displays the list of dependencies for a selected file. To access this dialog box, right-click a file in the Destination computers files pane of the Files and Folders view, and then click Dependencies from scan at build. The dialog box provides results for assembly DLLs. If you launch the dialog box from Microsoft Visual Studio, the dialog box shows results for project outputs. If launched from InstallShield outside of Visual Studio, scan at build dependencies is disabled for project outputs.

Note: This is enabled only for key files and when the .NET Scan at Build property is set to Dependencies and Properties. If the dependency or one of its dependencies cannot be located, a red icon is displayed.

Dialog Box Options


Dependency This section lists all of the dependencies with a check box next to each. To exclude a dependency from the build, clear the check box next to the dependency. To close the dialog, click OK.

Note: Any new dependencies detected at build timefor files added after closing the Dependencies dialog boxare added to the build.

InstallShield 2010 User Guide

ISP-1600-UG00

1341

Chapter 41: Dialog Box Reference Destination Folder Dialog Box

Destination Folder Dialog Box


The Destination Folder dialog box opens when you click the Browse button next to the Destination folder box on the Devices Files dialog box. The Destination Folder dialog box enables you to specify the folder on the mobile device into which a file should be installed. You can select a folder predefined by the Windows Mobile operating system or the folder specified on the Destination Folder panel (the default) of the Windows Mobile Wizard or the Smart Device Setup Wizard. You can also create a new folder.

Adding Folders

Task

To add a new folder to be used as the default destination: 1. 2. 3.

Click the folder under which you want to add a new folder. Click the New button. A new folder is created directly beneath the existing folder. Type a name for the new folder.

You can also add a new folder by right-clicking an existing folder and clicking New Folder.

Renaming Folders

Task

To rename a folder: 1. 2.

Select the folder and click Rename. Type the new name.

You can also rename a folder by right-clicking it and clicking Rename.

Removing Folders

Task

To remove a folder:

Select the folder and click Delete. As an alternative, you can right-click the folder and click Delete.

Note: Some folders are predefined by the Windows Mobile operating system and cannot be renamed or removed. Only user-defined folders can be renamed or removed.

1342

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Device Files Dialog Box

Device Files Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Device Files dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you add a new file or change the properties of an existing file on the Device Files panel. Use the Device Files dialog box to view and edit the properties of files being installed onto the Windows Mobile device or smart device. The following tabs are available on this dialog box:

General Processor/Platform

General Tab
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The General tab on the Device Files dialog box is where you specify general settings for the mobile device file.
Table 41-11: Device Files Dialog Box Settings Setting File Description The full path and file name of the original file on the desktop computer that is to be built into the installation package. The path to the folder on the Windows Mobile device or smart device into which the file should be installed. When you first add a file to your project, the destination path that is used as the default is the one selected on the Destination Folder panel of the Windows Mobile Wizard or the Smart Device Setup Wizard. To change the destination, click the Browse button next to the Destination folder box. The Destination Folder dialog box opens. Shared file Select this check box if the file is a shared .dll file or system file. If you select this check box, a reference count is maintained on the file so that it is removed only when all applications that depend on it have been uninstalled.

Destination folder

InstallShield 2010 User Guide

ISP-1600-UG00

1343

Chapter 41: Dialog Box Reference Device Files Dialog Box

Table 41-11: Device Files Dialog Box Settings (cont.) Setting Self-register Description Select this check box if the file is a self-registering .dll file or ActiveX control that exports the DllRegisterServer and DllUnregisterServer Component Object Model (COM) functions. These options regulate the terms under which the files are installed onto the Windows Mobile device or smart device. Select one of the following options:

Copy options


Warn user if file is not copied

Always copy file to targetThe source file is always copied onto the device. If a file by the same name already exists, it is overwritten. This is the default behavior. Always update older file on targetIf a file by the same name already exists on the device, it is overwritten only if the source file has a more recent date. If no file by the same name already exists, the source file always is installed. Copy only if file exists on targetThe source file is installed only if a file by the same name already exists on the device. The original file is overwritten. No date check is performed. Copy only if file does not exist on targetThe source file is copied onto the device only if there is not already a file by the same name on the device.

This check box is used in combination with the Allow user to skip file on error check box. If you select both of these check boxes and an error occurs during installation, the end user can skip the file and continue after a warning message is displayed. If you clear this check box, no warning message is displayed. If you select this check box and an error occurs while the file is being installed to the Windows Mobile device or smart device, the end user is asked if they want to skip the file and proceed with the installation. If you clear this check box, the user is not allowed to skip the file, and installation aborts.

Allow user to skip file on error

Processor/Platform Tab
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

1344

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Dialog Images Dialog Box

The Processor/Platform tab of the Device Files dialog box lets you specify the processor and platform requirements for the files being installed onto the Windows Mobile or smart device.
Table 41-12: Platform and Processor Settings for the Included File Setting Platform/processor independent Description If the file is platform and processor independent, select this check box. Only these files can be installed to the Global Assembly Cache (GAC).

Note: Select this option for .NET managed code. Specific platform/ processor If the file is platform or processor dependent, select this option and then specify the appropriate requirements:

PlatformSelect the check box of each Windows Mobile device on which this file can be installed. The default is to support all platforms, enabling your installation to distribute this file to the largest number of users. If you select the latest platform, the installation installs the file to that version of the platform, as well as the next version of the platform.

ProcessorSelect the processor that this file requires on the target device. If the file does not depend on a particular processor type, select (all).

Tip: To modify the list of platforms that are included in the Platform box, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings.

Caution: Because of the algorithm used to name .cab files in the installation, targeting a large number of platforms (in combination with using long application and company names) may cause build warning -7016.

Dialog Images Dialog Box


Use the Dialog Images dialog box to add to a bitmap graphic (.bmp file) that you want to display on your installations dialogs.

Full Screen Image


Browse to a graphic file that will serve as the full-screen background for your exterior dialogs. Exterior dialogs are dialogs that appear at the beginning or end of the installation, including InstallWelcome and SetupCompleteSuccess (the final dialog upon successful installation). The full screen .bmp graphic should measure 499 by 312 pixels.

Banner Image
Browse to a graphic file that will run across the top of interior dialogs. Interior dialogs, which appear between the first and last installation dialogs, include the LicenseAgreement and CustomSetup dialogs. The banner .bmp graphic should be 499 by 58 pixels.
InstallShield 2010 User Guide ISP-1600-UG00 1345

Chapter 41: Dialog Box Reference Digitally Sign Setup Dialog Box

Digitally Sign Setup Dialog Box


The Digitally Sign Setup dialog box is displayed when you click Digitally Sign Setup on the Build Installation page of the Project Assistant. This dialog box enables you to assure your end users that the code within your application has not been modified or corrupted since publication.

Note: If you are building a release on a Windows 2000 machine, SP4 must be installed in order for you to digitally sign the application. Table 41-13: Digitally Sign Setup Dialog Box Settings Setting Digitally sign setup Description Select this check box to digitally sign your installation. The other settings on this dialog box are enabled when you select this check box. Certificate URL Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company. Specify the location of your digital certificate file (.spc or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file. Private key file (PVK) If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you would like to pass the password for the .pvk file or the .pfx file to ISCmdBld.exe to digitally sign your application while building the release from the command line, type the password in this box. InstallShield encrypts this password and stores it in your project (.ism) file. If you do not specify a password in this box but you are digitally signing the release while building it from the command line, you will need to manually enter the password when you are prompted each time that you build the release from the command line.

Digital certificate file (SPC or PFX)

Certificate password

Tip: The Signing tab in the Releases view lets you specify which portions of your installation should be digitally signed at build time. InstallShield enables you to sign any and all of the following files in a release, depending on what type of project you are using:

Windows Installer package (.msi file) for Basic MSI, InstallScript MSI, and Merge Module projects
Setup.exe file for Basic MSI and InstallScript MSI projects

Media header file for InstallScript projects Package (self-extracting single-executable file) for InstallScript projects Any files in your release, including your application files

To learn more, see Digitally Signing a Release and Its Files at Build Time.
1346 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Differences Dialog Box

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

Differences Dialog Box


The Differences dialog box is displayed when you click the Show Differences command, which is available from the Project menus Source Control menu. The dialog box has a list that contains all of the Windows Installer tables in your installation project.

Task

To view the tables differences in your source control program:

Select a table from the list and click OK.

Dynamic File Link Settings Dialog Box


The Dynamic File Link Settings dialog box enables you to specify the source folder for your dynamic link. You can then choose to include all the files in that folder or only specified file types. The Dynamic Link Settings dialog box is available from the File Linking tab of the Component Properties dialog box, as well as the Modify Dynamic Links dialog box.
Table 41-14: Settings on the Dynamic File Link Settings Dialog Box Setting Source folder Description Enter the full path to the folder that you want to have dynamically linked, or click the Browse button to navigate to it. You can identify the source folder with any of the following methods:


Include subfolders

Enter an absolute path to the folder, such as C:\Build\MySourceFolder\Bitmaps. Enter a path variable. Follow the path variable with a backslash to specify a subfolderfor example, <CommonFilesFolder>\InstallShield\IScript. Click the Browse button to navigate to a folder.

To dynamically link the files in each subfolder, select this check box. For information on how InstallShield creates components for the dynamically linked files in subfolders, see Determining the Appropriate Component Creation Method for Dynamically Linked Files.

Self-register all files

To self-register every file in the dynamic link, select this check box. If the files are part of a 64-bit component and you select this check box, the installation performs 64-bit self-registration on the target system. For more information, see Targeting 64-Bit Operating Systems.

InstallShield 2010 User Guide

ISP-1600-UG00

1347

Chapter 41: Dialog Box Reference Dynamic File Link Settings Dialog Box

Table 41-14: Settings on the Dynamic File Link Settings Dialog Box (cont.) Setting Create best practice components Description To specify that InstallShield should adhere to best practices when creating the components for dynamically linked files, select this check box. When best practices for component creation are followed, InstallShield performs the following tasks at build time for all of the files that meet the include and exclude filter criteria:

InstallShield creates a separate component for each portable executable (PE) file in the dynamically linked folder. Each PE file is the key file of its component. InstallShield adds all non-PE files at the root level of the dynamic link to the component that contains the link. If the dynamic link includes a subfolder, InstallShield creates a new component for all of the non-PE files in that subfolder. If the dynamic link includes more than one subfolder, InstallShield creates a separate component for all of the non-PE files in each subfolder.

To specify that InstallShield should not follow best practices when creating the components for dynamically linked files, clear this check box. For this component creation method, InstallShield performs the following tasks at build time for all of the files that meet the include and exclude filter criteria:

InstallShield creates one component for all of the files that are in the root-level dynamically linked folder, regardless of the file types. If the dynamic link includes one or more subfolders, InstallShield creates a separate component for all of the files in each subfolder, regardless of the file types. The first dynamically linked file in a subfolders component is the key file of that component.

This check box is selected by default for all new dynamic links. For more information, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. Include all files To include the entire contents of your linked directory in your installation, select this option. To include or exclude file types, select this option. Enter the file extension in the include or exclude field, preceded by an asterisk (*). Separate multiple entries with a comma. For example, if all of your image files are in one folder along with sound files and you want to dynamically link only the image files, you could specify that you would like to include only .bmp and .ico files in the dynamically linked folder. To do so, you would use an asterisk (*) in your include pattern, as in the following example:
*.bmp, *.ico

Include/exclude files based on the following wild-card patterns

To include or exclude a specific file, you would enter the full file name in the include or exclude pattern box.

1348

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Edit Binary Value Dialog Box

Edit Binary Value Dialog Box


The Edit Binary Value dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you add a new binary registry value or change the properties of an existing binary registry value on the Registry Information panel. The Edit Binary Value dialog box enables you to enter the data to be stored in a binary registry value, and to indicate which types of Windows Mobile devices or smart devices on which the value should be created.

Dialog Box Settings


Table 41-15: Binary Value Dialog Box Options Option Value name Description Specifies the name of the value being modified. This is a read-only property. To rename the value, use the Registry Information panel. The binary data that should be stored in the registry value. If a registry value by the same name already exists on the device, it is overwritten only if this check box is selected. If this check box is cleared, the existing value is not changed. A list of platform types (Palm-size PC, Handheld PC, Pocket PC, Smartphone, etc.) on which the registry value can be created.

Value data Overwrite existing value

Platform

Note: This option is available for Windows Mobile devices only. Processor The type of processor on which the registry value can be created.

Note: This option is available for Windows Mobile devices only.

Edit Data Dialog Box


The Edit Data dialog is available from within the Application Registry panel in the Project Assistant. To access the dialog, double-click on a registry value in the Destination computers registry data pane. The Multi-Line String Value dialog box is displayed for multi-string values.

Dialog Options
Value name The name of the registry value as it appears in the Destination computers registry data pane. To change the value name, right-click on the value and select Rename.

InstallShield 2010 User Guide

ISP-1600-UG00

1349

Chapter 41: Dialog Box Reference Edit DWORD Value Dialog Box

Value data Contains the information that should be stored in the registry value. To change or edit the data, type in the edit field.

Edit DWORD Value Dialog Box


The Edit DWORD Value dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you add a new DWORD registry value or change the properties of an existing DWORD registry value on the Registry Information panel. The Edit DWORD Registry dialog box enables you to enter the data to be stored in a DWORD registry value, and to indicate which types of Windows Mobile devices or smart devices on which the value should be created.

Dialog Box Settings


Table 41-16: Edit DWORD Value Dialog Box Settings Option Value name Description Specifies the name of the value being modified. This is a read-only property. To rename the value, use the Registry Information panel. The DWORD data that should be stored in the registry value. Specifies whether the value to be stored is represented as a hexadecimal or decimal number. Whenever this selection is changed, the value is automatically converted to the appropriate type. If a registry value by the same name already exists on the device, it is overwritten only if this check box is selected. If this check box is cleared, the existing value is not changed. A list of platform types (Palm-size PC, Handheld PC, Pocket PC, Smartphone, etc.) on which the registry value can be created.

Value data Base

Overwrite existing value

Platform

Note: This option is available for Windows Mobile devices only. Processor The type of processor on which the registry value can be created.

Note: This option is available for Windows Mobile devices only.

Edit IIS Metabase Value Dialog Box


InstallShield displays the Edit IIS Metabase Value dialog box if you click the Change Value button on the Other IIS Properties dialog box. The Other IIS Properties dialog box is displayed if you click the ellipsis button (...) in the Other IIS Properties setting for a selected Web site, application, or virtual directory in the Internet Information Services view.
1350 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Edit Registry Data Dialog Box

The Edit IIS Metabase Value dialog box is where you specify the value for an IIS setting that is not displayed in the other areas of the Internet Information Services view. If you change the default value for any advanced property, InstallShield adds the property, the value that you specify, and the additional required information to the ISIISProperty table.
Table 41-17: Edit IIS Metabase Value Dialog Box Settings Setting Property Name Value Description This read-only setting shows the property that you selected to configure. Specify the value that you want to use for the selected IIS property.

Edit Registry Data Dialog Box


The Edit Registry dialog box allows you to edit the registry data within your setup project. To launch this dialog box, right-click a value in the Registry view and select Modify.

Dialog Options
Value Name The value name is read-only in this dialog box.

Task

To change the name of a value: 1. 2. 3.

Exit the Edit Registry Data dialog box. Select the value you want to rename, and press F2. Type the new name.

Value Data Enter the data for this registry value as you would like it to appear on the target machine.

Tip: To write the value of a Windows Installer property called PropertyName to the registry, use the expression [PropertyName] in the value data.

Edit String Value Dialog Box


The Edit String Value dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you add a new string registry value or change the properties of an existing string registry value on the Registry Information panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1351

Chapter 41: Dialog Box Reference Error Mapping Properties Dialog Box

The Edit String Value dialog box enables you to enter the data to be stored in a string registry value, and to indicate which types of Windows Mobile devices or smart devices on which the value should be created.

Dialog Box Settings


Table 41-18: Edit String Value Dialog Box Options Option Value name Description Specifies the name of the value being modified. This is a read-only property. If you want to rename the value, you can do so from the Registry Information panel. The text that should be stored in the registry value.

Value data

Note: When you are working with string registry values, note the following: To use a percent sign in an entry, type two percent signs (%%)for example, SomeApp.exe %%1 instead of SomeApp.exe %1. To use a comma (,) in an entry, enclose the entry within quotation marks ("")for example, "1,2,3" instead of 1,2,3. To use quotation marks in an entry, enclose the entry within quotation marksfor example, ""This is quoted."" instead of "This is quoted." To create an entry that specifies where the application was installed on the Windows Mobile device, include %InstallDir%. To create an entry that specifies a file in the installation directory, include %InstallDir% with the file namefor example, type %InstallDir%\File.exe. The default installation directory is specified on the Destination Folder panel.

Overwrite existing value Platform

If a registry value by the same name already exists on the device, it is overwritten only if this option is selected. If this check box is cleared, the existing value is not changed. A list of the platform types (Palm-size PC, Handheld PC, Pocket PC, Smartphone, etc.) on which the registry value can be created.

Note: This option is available for Windows Mobile devices only. Processor The type of processor on which the registry value can be created.

Note: This option is available for Windows Mobile devices only.

Error Mapping Properties Dialog Box


The Error Mapping Properties dialog box displays an IIS error code and its default properties. Use the Message Type list to set the message to a URL or a pointer to a file on the server. When you set the error message to a URL, you must specify the full URL. When you set the error message to a file pointer, you can browse for the file that you want to use as the error message or you can type the full path of the file to be used. This can include files that are not in your project but are pre-existing on the system.

1352

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Exclusion Languages Dialog Box

Exclusion Languages Dialog Box


Project: This information applies to the following project types:

Merge Module MSM Database

The Exclusion Languages dialog box opens when you click the ellipsis button (...) in the Language setting for a merge module exclusion in the General Information view. This dialog box lets you specify the language requirements for the merge module that is not compatible with the merge module that you are creating. To specify language requirements for the merge module exclusion, do one of the following:

To exclude a merge module if its language is a particular language, select the language in the language list, and then select the matches option. To exclude a merge module if its language is not a particular language, select the language in the language list, and then select the does not match option. If the language should not be used to exclude a merge module, select Language Independent in the language list.

Export Tables Dialog Box


The Export Tables dialog box provides a way to export one or more tables through the Direct Editor as .idt files.
Table 41-19: Export Tables Dialog Box Settings Setting Output Directory Description Specify the directory where the tables are to be exported. You can also click Browse to navigate to the directory. This box lists check boxes for all of the tables in your project. Select the check boxes of the tables that you want to export. Selects all tables for export. Deselects all tables. Simultaneously deselects any selected tables and selects any deselected tables.

Tables

Select All Clear All Invert

Feature Condition Builder Dialog Box


The Feature Condition Builder dialog box simplifies the process of creating feature conditions by providing a selection of valid Windows Installer properties and conditional expression operators.

InstallShield 2010 User Guide

ISP-1600-UG00

1353

Chapter 41: Dialog Box Reference File Association Properties Dialog Box

You can create as many conditions as required for a feature. For information on creating the conditions, see Setting Feature Conditions. The Feature Condition Builder dialog box contains the following settings.
Table 41-20: Feature Condition Builder Dialog Box Settings Setting Conditions Description This box displays a grid with the following columns:

LevelThis column is where you assign the install level that should be used for the feature if the condition evaluates as true. ConditionThis column is where you define the condition. You can type a condition directly in this column, or you can use the Properties list, the Operators list, and the Add buttons to build a condition statement.

To add a new condition to this box, click the New Condition button, and then enter the appropriate information in the Level and Condition columns. To delete a condition in this box, select the condition, and then click the Delete Conditions button.

Important: When you click the OK button on this dialog box, InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements. Properties This list contains common Windows Installer properties, as well as any properties that have been added in the Property Manager view. Select the property that you want to evaluate, and then click the Add button next to this list. If the list does not contain the property that you want to evaluate, you can type the appropriate property name in the Condition column. Operators This list contains all of the valid operators that are recognized by the Windows Installer. If your conditional statement should contain an operator, select the operator that you want to use and then click the Add button. InstallShield adds the operator to the conditional statement.

File Association Properties Dialog Box


The File Association Properties dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you add a new file association or change the properties of an existing file association on the Files Associations panel. Use the File Association Properties dialog box to view and edit the properties of files associations to be registered on the Windows Mobile device. It displays information about the file type, and about the application used to open files of that type.

1354

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference File Details Dialog Box

Dialog Box Settings


Table 41-21: File Association Properties Dialog Box Option Description Description This property specifies a short description of the document type, which will be displayed when the user views the properties of a document file in Windows Explorer. The file name extension used by the document type. When the user opens a file with this extension, the application associated with it is automatically launched to view it. The extension is not case-sensitive, and it does not need to begin with a leading period (.). This property contains a list of all of the executables being installed into the folder specified on the Destination Folder panel of the Windows Mobile Wizard or Smart Device Setup Wizard. The file that is selected here is used to open documents with the specified file name extension.

Extension

Application

Note: To be listed, the files must have an .exe file name extension, and they must be installed into the default destination folder. If your main application executable does not appear in the list, it might not be installed into the default destination folder. Icon index This property specifies the zero-based index of an icon within the executable. The icon is displayed when the user views a document file in Windows Explorer. By default, this property is set to zero (0) to display the first icon within the executable file.

Note: The number and order of icons in the executable are determined when it is built. InstallShield cannot determine the icon index. If you are unsure of the correct index for your document icon, you can begin with an index of zero and gradually increase it until the desired icon is found.

File Details Dialog Box


Access this dialog by clicking the Details button in the System Search Wizard. This button becomes active after you define a search method and specify the file you are locating. In this dialog, you have the ability to enhance a search by specifying the following details:
Table 41-22: File Details Dialog Box Settings Setting Minimum Version Description The search is successful if the file exists on the target system and the version is equal to or higher than the version entered. The search is successful if the file exists on the target system and the version is equal to or lower than what is entered.

Maximum Version

InstallShield 2010 User Guide

ISP-1600-UG00

1355

Chapter 41: Dialog Box Reference File Properties Dialog Box

Table 41-22: File Details Dialog Box Settings (cont.) Setting Minimum Date Description Select the check box to search by a minimum date. The search is successful if the file exists on the target system and the date is equal to or later than the date entered. Select the check box to search by a maximum date. The search is successful if the file exists on the target system and the date is earlier or equal to the date entered. The search is successful if the file exists on the target system and is equal to or larger than the size indicated (in bytes). The search is successful if the file exists on the target system and is smaller than or equal to the size indicated (in bytes). Click the Browse (...) button to display the Languages dialog. You can select multiple languages as a condition of your search. The search is successful if at least one of the languages listed is a match.

Maximum Date

Minimum Size

Maximum Size

Languages

Note: The information you provide in the edit fields is optional. You can leave any field blank.

File Properties Dialog Box


Project: This information does not apply to the following project types:

InstallScript InstallScript Object

The File Properties dialog box lets you specify the properties for a file when it is installed onto the target system.

Task

To open the File Properties dialog box: 1. 2.

In the View List under Application Data, click Files and Folders. Right-click a file and click Properties.

Caution: Because the individual files might not be present at build time, most file properties cannot be set for dynamically linked files.

1356

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference File Properties Dialog Box

Dialog Box Options


Location This field displays the directory in which this file will be installed on a target system, based on the destination of the component that contains the file. This field cannot be changed directly. To modify the destination, change the destination of the component that contains the file. Font title If you are installing a font, you can specify the font title in this box in the format FontTitle (FontType) for example, Roman (All res). InstallShield provides the name of the font if it is registered on your system. You should not specify a font title for .ttf or .ttc fonts, because Windows Installer reads the embedded font name and registers it for you. Thus, for .ttf or .ttc files, InstallShield marks this field [Title read from file]. InstallShield provides the name of the font for you if it is registered on your system. For more information, see ICE07. Self Register Select this check box if you want to self-register the file during installation. The Self Register setting is valid for .dll, .ocx, .exe, .tlb, and .olb files. If the file is part of a 64-bit component, the installation performs 64-bit self-registration on the target system. For more information, see Targeting 64-Bit Operating Systems.

Note: It is recommended that you extract COM information from your self-registering files, instead of using selfregistration. For more information, see Registering COM Servers.

Override system attributes Select this check box to specify new file properties. If this option is not selected, the file is installed with the same attributes that it currently has on the development system.
Read-only

Select this check box if you want the file to be read-only when installed.
Hidden

Select this check box if you want the file to be hidden when installed.
Use File Hash

This option is available only for unversioned files. Windows Installer can use file hashing to detect and eliminate unnecessary file copying. A file hash stored in the MsiFileHash table can be compared to a hash of an existing file on the users computer obtained by calling MsiGetFileHash. Select this option if you want to populate the MsiFileHash table for every unversioned file in your build.

Note: If the Releases view counterpart to this option is already set, then no file hash entries are created for any files.

InstallShield 2010 User Guide

ISP-1600-UG00

1357

Chapter 41: Dialog Box Reference File Properties Dialog Box (InstallScript Installation Projects)

System

Select this check box if you want the file installed as a system file.
Vital

Select this check box to indicate that this file is vital to the operation of its component. A vital files component is not installed if the file cannot be installed for any reason. If a vital file cannot be installed, the end user sees an error message with Retry and Cancel buttons, instead of the usual Abort, Retry, and Ignore buttons. Override System Size This property contains the size, in bytes, of the file. To override the system value, select the check box and type the file size in the box. Always Overwrite This property enables you to specify that if the file already exists on the target system, the installer should overwrite it, regardless of the file version. If you select this check box, the files version is set to 65535.0.0.0. The maximum version number for a file is 65535.65535.65535.65535. Override System Version This property contains the files version, if any. To override the system value, select the check box and type the version in the Version box. Override System Language To override the system language, select this check box and type the decimal value for the language identifier code in the Language box. The default language is English (1033). Separate multiple language IDs with a comma. Font files should not be authored with a language ID because fonts do not have an embedded language ID resource. Leave this entry blank for font files. Permissions Click Permissions to launch the Permissions dialog box, where you can set permissions for the file.

File Properties Dialog Box (InstallScript Installation Projects)


Project: This information applies to the following project types:

InstallScript InstallScript Object

This dialog box displays the properties that are set for a file when it is installed on the target system.

1358

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Find and Replace Dialog

Task

To open the File Properties dialog box:

Right-click a file and click Properties. This option is disabled for files in components whose Link Type property is set to Dynamic. In InstallScript projects, the File Properties dialog box displays information about the selected file. The information in the dialog box is taken directly from the file system and the dialog box is read only except for the following controls:

Register Font File


If this box is checked, the file is marked internally to be registered on the target machine if you have enabled global font registration. If this box is unchecked, the file is not registered on the target machine.

Font title
For an .fon file, this text specifies the font title that the installation registers for the font. By default, the InstallShield user interface reads the font title from the registry of the source system and enters that font title in this edit box. For a TrueType file (.ttf or .ttc file), by default no text is displayed in this edit box and the installation reads the font title from the file at run time. For all three types of files, if you enter non-default text in this edit box, the installation registers that text as the font title.

Find and Replace Dialog


This dialog allows you to search for strings in your script file and replace them with different strings at runtime. In MSI projects, you can replace strings with an MSI property value. In InstallScript projects, you can use text substitutions for various system variables.

Caution: You should only replace text that is unique and will not cause script syntax errors.

Find String ID in Project Dialog Box


This dialog allows you to search your entire setup project for occurrences of a particular string entry. Select from the list the string entry you would like to find and click OK. The results of your search are displayed in the Output window at the bottom of the screen.

Folder Properties Dialog Box


This dialog determines the properties that are set for a folder when it is installed on the target system.

InstallShield 2010 User Guide

ISP-1600-UG00

1359

Chapter 41: Dialog Box Reference Function Signature Dialog Box

Task

To change any of the folder properties:

Type a new value in the appropriate field and click Apply.

Dialog Options
Directory Identifier This field contains the current directory identifier for the selected folder. Source Location The source location determines where files will be copied to the disk image folders when you build an uncompressed release. Target The target specifies the location to which the folder will be installed on the end users system.

Function Signature Dialog Box


The Function Signature dialog box is where you specify the parameters for the entry-point function in your standard .dll file.

Task

To access the Function Signature dialog box: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). In the Custom Actions explorer, select the custom action whose parameters you would like to specify. In the Function Signature property, click the ellipsis button (...).

2. 3.

Dialog Box Options


Name Specify the name of the function that you want to call. The .dll file can have a single entry point for each custom action. Arguments Build the list of argumentsin orderthat you want to pass to the function. First, click the last row of the Arguments list to add a new argument. Next, complete the Type, Source, and Value columns for each argument.

1360

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Function Signature Dialog Box

Type In this list, select the data type of the parameter. Note that there are two special cases for argument types, and these cases are identified below.

Task

To initialize a pointer to null: 1. 2. 3.

In the Type list, select POINTER. In the Source list, select Constant. In the Value list, select NULL. Do not enter 0 (zero) instead of NULL, because it is interpreted as a pointer pointing to the number 0.

Task

To set a handle to the .msi database or the Windows Installer window: 1. 2. 3.

In the Type list, select HANDLE. In the Source list, select Constant. In the Value list, select MsiHandle or MsiWindowHandle, depending whether you want a handle to the .msi database or the Windows Installer window.

Source Indicate how you want to pass the data to the function. The following options are available in this list.
Table 41-23: Function Signature Dialog Box Options Option Constant Description The value that you want to pass is stored as a literal in your installation project. After you select Constant for the arguments source, enter its definition in the Value column. This "constant" does not require a name or identifier. Do not enclose string literals in quotation marks. in Property Select in Property for the source to specify the name of a Windows Installer property whose value will be passed to the function. This type of argument is suitable for a ByVal parameter. This source type is similar to a ByRef parameter. Select inout Property for the source to specify the name of a Windows Installer property whose value will be passed to the function and can be modified by the function.

inout Property

InstallShield 2010 User Guide

ISP-1600-UG00

1361

Chapter 41: Dialog Box Reference Function Signature Dialog Box

Table 41-23: Function Signature Dialog Box Options (cont.) Option out Property Description An out property serves as a placeholder for a value that can be set by the function. No value is passed to the function, but the function requires the name of a property whose value it can modify.

When you select a property for the arguments source, you must specify the name of the property in the Value column. Value The value can be one of two types:

A number or string literal that you enter when the arguments source is a constant A Windows Installer property when the arguments source is a property

Note: When you set the Type list to HANDLE and the Source list to Constant, the Value column contains two options: MsiHandle and MsiWindowHandle. These constants can be used to get a handle to either the .msi database or the Windows Installer window.

When the source is a property, the Value list provides the name of every property in the Property Manager. You can select an existing property or enter a new name, in which case the new property is added to the Property Manager. Remember that a property is merely a container for a value. If your parameter stores its value in an in property or inout property, ensure that you specify a value for the property in the Property Manager. (Context Menu) The context menu provides you with options for working with your arguments. To access the context menu, right-click an argument in the Arguments grid. The context menu options are described below.
Table 41-24: Context Menu Options Option Add Remove Move Up Description Click Add to add an argument to the Arguments grid. Click Remove to delete the argument. The arguments must be in the precise order in which the function expects to receive them. Click Move Up to place the argument higher in the list. Click Move Down to place the argument lower in the list.

Move Down

1362

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference General Options - Advanced Dialog Box

Return Type Select the data type of the functions return value. If you do not need to check the return value, you can accept void. Return Property Select the name of a property whose value will be set to the functions return value. If you are going to check the return value elsewhere in your installation, you may want to initialize the return propertys value.

General Options - Advanced Dialog Box


The General Options - Advanced dialog box opens when you click the Advanced button on the General Options panel of the Release Wizard. This dialog box allows you to specify a custom location for the built files, (in installation projects only) the space that is reserved in the disk images folders, whether the installation performs MD5 checking, and (in object projects only) how InstallShield handles subobjects contained in the object project during the build of the object.

Panel Options
Build the media to the custom folder location If unchecked, the releases Disk Images, Log Files, and Report Files folders are created in the default location:
<project folder>\Media\<release name>

Check this box to specify another location by typing in the combo box, selecting and completing one of the list items, which are defined relative to path variables, or clicking the browse button and selecting a folder. Reserved Space

Project: This option is available in installation projects. If you are building an object project, this setting is not displayed.

Disabled if the current releases media type produces a single disk imagewhich is true for Network Image. Lets you reserve (leave empty) specified amounts of space in particular disk image folders. Select a disk image folder number in the Disk list box (for example, a value of 1 specifies disk image folder Disk1) and enter the space (in kilobytes) to be reserved in that folder in the Reserved Space edit box. Verify MD5 signature

Project: This option is available in installation projects. If you are building an object project, this setting is not displayed.

If this check box is checked, the setup compares each installed files MD5 hash value to the value stored in the .cab file. This setting is stored in the CheckMD5 key of the [Startup] section in the Setup.ini file.

InstallShield 2010 User Guide

ISP-1600-UG00

1363

Chapter 41: Dialog Box Reference General Options - Other Disk Files Dialog Box

Tip: MD5 checking can detect corrupted files, which is useful during Internet setups; not doing MD5 checking can make file transfer proceed faster.

Object Inclusion - Embedded

Project: This option is available in object projects.

If the object project includes any subobjects, the release includes those subobjects themselves rather than references to the subobjects. A release built with this option can be used by InstallShield users who do not have the subobjects registered on their systems. Object Inclusion - Reference

Project: This option is available in object projects.

If the object project includes any subobjects, the release includes references to those subobjects rather than the subobjects themselves. A release built with this option cannot be used by InstallShield users who do not have the subobjects registered on their systems.

General Options - Other Disk Files Dialog Box


The General Options - Other Disk Files dialog box opens when you click the Other Disk Files button on the General Options panel of the Release Wizard. This dialog box allows you to specify a location in the disk image folders for each file that is in the Other folder under Advanced Files in the Support Files/ Billboards view.

Panel Options
File name Select the file for which you want to specify a disk image folder number. Disk Select the desired disk image folder for the selected file (for example, selecting 3 places the selected file in disk image folder Disk3).

History Dialog Box


The History dialog is displayed when you select Show History from the Project/Source Control menu. The dialog contains a drop-down list box that contains all of the Windows Installer tables in your setup project.

1364

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Import Dialog Dialog Box

Task

To display view the tables history in your source control program:

Select a table from the list and click OK.

Import Dialog Dialog Box


The Import Dialog dialog box lets you select a dialog that you want to import into your installation project. The file for the dialog (.isd file) can be stored in a repository, or it can be stored in some other location.

Task

To access the Import Dialog dialog box: 1. 2.

Open the Dialogs view. In the Dialogs explorer, right-click All Dialogs and then click Import Dialog. The Import Dialog dialog box opens.

Dialog Box Options


Repository Items This box lists all of the dialogs that are available in the repository. Select the dialog that you want to add to your project. If the file for the dialog box (.isd file) that you want to import is not stored in the repository, click the Browse button to select it.

Import InstallScript Files Dialog Box


The Import InstallScript Files dialog box lets you select one or more InstallScript (.rul) or InstallScript header (.h) files that you want to import into your installation project. The files can be stored in a repository, or they can be stored in some other location.

Task

To access the Import InstallScript Files dialog box: 1. 2.

Open the InstallScript view. In the InstallScript explorer, right-click Files and then click Import Script File. The Import InstallScript Files dialog box opens.

InstallShield 2010 User Guide

ISP-1600-UG00

1365

Chapter 41: Dialog Box Reference Import SQL Script Files Dialog Box

Dialog Box Options


Repository Items This box lists all of the InstallScript files that are available in the repository. Select one or more InstallScript files that you want to add to your project. If the InstallScript file that you want to import is not stored in the repository, click the Browse button to select it.

Import SQL Script Files Dialog Box


The Import SQL Script Files dialog box lets you select one or more SQL script files that you want to import into your installation project. The SQL script (.sql) file can be stored in a repository, or it can be stored in some other location.

Task

To access the Import SQL Script Files dialog box: 1. 2.

Open the SQL Scripts view. In the SQL Scripts explorer, right-click Files and then click Import Script File. The Import SQL Script Files dialog box opens.

Dialog Box Options


Repository Items This box lists all of the SQL script files that are available in the repository. Select one or more SQL script files that you want to add to your project. If the SQL script file that you want to import is not stored in the repository, click the Browse button to select it.

Insert Action Dialog Box


Project: The Insert Action dialog box is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The Insert Action dialog box enables you to insert a standard action, custom action, or dialog into one of your projects sequences.

1366

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Insert Action Dialog Box

Task

To display this dialog: 1. 2.

In the View List under Behavior and Logic, click Custom Actions and Sequences. Right-click a sequence, dialog, custom action, or standard action, and then click Insert.

InstallShield 2010 User Guide

ISP-1600-UG00

1367

Chapter 41: Dialog Box Reference InstallShield Prerequisite Properties Dialog Box

Dialog Options
Table 41-25: Insert Action Dialog Box Options Option Action Type Description Select the type of action to insert:

Standard ActionsThese actions are built into Windows Installer. Custom ActionsCustom actions can be created with the Custom Action Wizard. Merge Module Custom ActionsThese custom actions are stored within one or more merge modules that you have associated with your installation project. The GUID for that merge module is appended to the name of the custom action. For example, if you have a custom action called LaunchNotepad stored within a merge module, it appears as LaunchNotepad.xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxx, where x is the GUID for that module. DialogsDialogs can be placed into the User Interface sequence. You can create custom dialogs with the Dialog Editor. Merge Module DialogsThese dialogs are stored within one or more merge modules that you have associated with your setup project. The GUID for that merge module is appended to the name of the dialog. For example, if you have a dialog called CustomerInfo stored within a merge module, it appears as CustomerInfo.xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxx, where x is the GUID for that module.

Note: When you delete a merge module from your project that contains custom actions or dialogs inserted within one of your sequences, those actions and dialogs will automatically be removed from the sequence. Select an Action After you have selected the action type, you need to select the specific action. To do this, highlight the action you want to insert. You can set a condition upon this action. If the condition does not evaluate to true, the action does not execute. For more information on conditions, see Conditional Statement Syntax. Enter comments in this field. These comments are for internal use only and are not displayed to the end user.

Condition

Comments

InstallShield Prerequisite Properties Dialog Box


The InstallShield Prerequisites Properties dialog box opens when you right-click a selected InstallShield prerequisite in the Redistributables view or in the Prerequisites view and then click Properties. This dialog box enables you to specify a location for the selected InstallShield prerequisite. To learn more, see Specifying the Location for InstallShield Prerequisites at the Release Level.

Project: In Basic MSI and InstallScript MSI projects, the InstallShield Prerequisite Properties dialog box also enables you to set release flags for InstallShield prerequisites that you want to exclude from certain builds. For example, if you have an
1368 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference InstallShield Prerequisite Properties Dialog Box

InstallShield prerequisite that should be included only in a special edition of your product that contains a special add-on that requires the prerequisite, you can flag that prerequisite and include it only when it is needed. Table 41-26: InstallShield Prerequisite Dialog Box Settings Setting Build Location Description When you package an installation that includes InstallShield prerequisites, you can use any one several methods for supplying the prerequisite files to end users:

Download From The WebDownload all of the InstallShield prerequisite files included in your project (if necessary) from the URL specified in the InstallShield prerequisite (.prq) file for each prerequisite. This option is recommended if your installation will be downloaded from the Internet and you want to minimize the package size and download time. An InstallShield prerequisite will not be downloaded if the correct version is already present on the target machine. This option is available for Basic MSI, InstallScript, and InstallScript MSI projects.

Extract From Setup.exeCompress the InstallShield prerequisite files into Setup.exe, to be extracted at run time, if necessary. Select this option if the entire installation must be self-contained in Setup.exe. Note that the Download From The Web option results in smaller installations and shorter download time; however, the Extract From Setup.exe option provides for a completely self-contained installation. This option is available for Basic MSI and InstallScript MSI projects.

Copy From Source MediaStore the InstallShield prerequisite files on the source media. Use this option if the installation will be run uncompressed from fixed mediaCD, DVD, or local network. This option is available for Basic MSI and InstallScript MSI projects.

Include with MediaStore the InstallShield prerequisite files on the source media. This option is available for InstallScript projects.

Note that the option that you select in the Build Location setting may be overridden in the Releases view. For more information, see Specifying the Location for InstallShield Prerequisites at the Release Level.

Note: Note that if an InstallShield prerequisite is added to a project as a dependency of another prerequisite, the location for the prerequisite dependency follows the location setting of the prerequisite that requires it. Release Flags Project: This setting is available in Basic MSI and InstallScript MSI projects. Type a string. The string can be any combination of letters or numbers. To have more than one flag on an InstallShield prerequisite, use a comma to separate the flags

InstallShield 2010 User Guide

ISP-1600-UG00

1369

Chapter 41: Dialog Box Reference Languages Dialog Box

Languages Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The Languages dialog box opens when you click the ellipsis button (...) for the Languages setting in the Components view. This dialog box enables you to specify the languages for which the component is intended, for use in build-time filtering. By default, components are language independent, meaning that none of the components data (such as files and registry entries) are specific to a particular language. To designate that the component is intended for only certain languages, select the check boxes for the appropriate languages.

Project: In InstallScript and InstallScript Object projects, if a language is not selected in the General Information view of a project, it is not listed as one of the available languages for the projects components.

Link Type Dialog Box


Project: This information applies to the following project types:

InstallScript InstallScript Object

The Link Type dialog box opens when you click the browse button in the Link Type setting in the Components and Setup Design views. It also opens when you right-click a component in the Destination computers folders pane in the Files and Folders view and then click File Linking. The Link Type dialog box lets you specify whether the file links of the selected component are static or dynamic and, if the latter, how the links are determined at the time of the media build.

Dialog Box Settings


Static Links The component contains file links to files specified by explicit fully qualified file names. Dynamic Links The component contains file links to files whose names can be specified by wild cards (for example, *.* or *.exe) and whose folder can be specified by an explicit path or by a build variable.

1370

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Link Type Dialog Box

Note: The following settings are enabled only if the Dynamic Links option is selected.

Specify the folder which contains the files to include This setting specifies the folder that contains the linked files. Type an explicit path, select or type a build variable, or select and optionally append to a predefined path variable.

Caution: Entering a relative path (for example, .\MyFolder) will give unpredictable results.

Browse Clicking this button opens the Browse for Folder dialog box, in which you can specify an explicit path. Include subfolders If you select this check box, InstallShield dynamically links the files that are included in any subfolders of the folder that you identified for the Specify the folder which contains the files to include setting.

Tip: The InstallScript engine does not support the concept of subcomponents. When you include subfolders in a dynamic file link, InstallShield creates separate components for each subfolder.

Wildcard(s) The file list is constructed by first including all files that match the specification you enter in the Inclusion combo box, and then excluding from those files all the ones that match the specification you enter in the Exclusion combo box. Inclusion Specify the names of the files to which the component contains file links. By typing an entry or selecting a path variable, you can enter the name of a single file or use wild cards in this filename specification, for example *.* or *.exe. To specify multiple wild cards, separate them with semicolons and no spaces, for example, *.txt;*.doc Exclusion Specify the names of the files to which the component does not contain file links. By typing an entry or selecting a path variable, you can enter the name of a single file or use wild cards in this filename specification, for example *.* or *.exe. To specify multiple wild cards, separate them with semicolons and no spaces, for example, *.exe;*.dll In the above example, no .exe or DLL files are included in the component.

InstallShield 2010 User Guide

ISP-1600-UG00

1371

Chapter 41: Dialog Box Reference Logging Options for Windows Installer 4.0 and Later Dialog Box

Logging Options for Windows Installer 4.0 and Later Dialog Box
InstallShield displays the Logging Options for Windows Installer 4.0 and Later dialog box when you click the ellipsis button (...) for the Create MSI Logs setting in the General Information view. This dialog box enables you to specify on a project-wide basiswithout having to use the command line or configure log parameters through the registrywhether Windows Installer should log your installation. You can also use this dialog box to customize the types of messages that are logged.
Table 41-27: Options for the Logging Options for Windows Installer 4.0 and Later Dialog Box Option No Yes (MsiLogging set to default value of voicewarmupx) Description Installations are not logged. This is the default value. InstallShield populates the MsiLogging property with the default value of voicewarmupx. If the installation is run on a target system that has Windows Installer 4.0 or later, as well as Windows Vista or later or Windows Server 2008 or later, the following occurs:

The installer creates a log file according to the default logging mode of voicewarmupx. The installer populates the MsiLogFileLocation property with the log files path. A Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. If the end user selects that check box and then clicks Finish, the log file is opened in a text file viewer or editor.

This setting applies to installations that are run with Windows Installer 4.0 or later on Windows Vista and later systems or Windows Server 2008 and later systems. The Show the Windows Installer log check box is not visible in run-time dialogs that are displayed on earlier systems that are running earlier versions of Windows Installer. Custom MsiLogging value InstallShield populates the MsiLogging property with the value that you specify in the box. If the installation is run on a target system that has Windows Installer 4.0 or later, as well as Windows Vista or later or Windows Server 2008 or later, the following occurs:

The installer creates a log file according to the custom value that you specified in the box. The installer populates the MsiLogFileLocation property with the log files path. A Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. If the end user selects that check box and then clicks Finish, the log file is opened in a text file viewer or editor.

This setting applies to installations that are run with Windows Installer 4.0 or later on Windows Vista and later systems and Windows Server 2008 or later systems. The Show the Windows Installer log check box is not visible in run-time dialogs that are displayed on earlier systems that are running earlier versions of Windows Installer.

1372

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Lowercase Component Directory Warning

Lowercase Component Directory Warning


This dialog appears when you declare a Directory Identifier in lowercase or in mixed-case letters when setting a components destination. Declaring a Directory Identifier in uppercase letters makes that value a public property that can be set from the user interface. Using mixed-case or lowercase letters for the Directory Identifier defines the directory entry as a private property. Private properties cannot be changed from the user interface.

Note: To suppress this warning, select the Do not show this dialog again option.

Media File Properties Dialog Box


Opens when you click the Import or Modify button in the Release Wizards Update panel. Lets you specify a release that is not in the current project and the method for determining its version information.

Media Header File


Type, or select and complete, the fully qualified name of the desired releases header file (such files have extension .hdr and are typically named Data1.hdr), or click the browse button to browse for the header file.

Read the version information ...


Specifies that the version information is automatically read from the releases header file.

Specify the version information below


Specifies that the version information is what you type or select in the combo box.

Merge Module Configurable Values Dialog Box


A configurable redistributable is a merge module or an object that has at least one row in the ModuleConfiguration table that is referenced by at least one row in the ModuleSubstitution table. This allows you to change a value in the redistributable.

Displaying the Merge Modules Configurable Values Dialog


The Merge Module Configurable Values dialog is displayed when you select a merge module or object in the Redistributables view that allows configuration. If the redistributable selected is an object, the Merge Module Configurable Values dialog is displayed when the object wizard finishes. You can also right-click on a configurable merge module or object and select Configure merge module.

InstallShield 2010 User Guide

ISP-1600-UG00

1373

Chapter 41: Dialog Box Reference Merge Module Properties Dialog Box

Dialog Options
The dialog contains a grid in which you can modify the configurable values. The left column contains the name of the configurable value. The right column contains the value options. You can select a new value from the drop-down menu. Refer to the redistributable vendors documentation for information about the values. After you specify the values that you want, click OK to save the new values. When you build your project, these values are used to build the .msi package. Restore Defaults Click this button to restore the redistributables default settings. All of the configurable values in the redistributable are returned to their defaults.

Merge Module Properties Dialog Box


The Merge Module Properties dialog is displayed when you right-click a selected merge module or object in the Redistributables view. The following tabs are associated with this dialog:

Media Tab Destination Tab Configurable Values

Media Tab
File Location
In this dialog, you can determine the destination and format of your output. On the source media (uncompressed) Choose this option to copy the files uncompressed to the media. In a new .CAB file When you choose this option, InstallShield puts the source media in the same location as the .msi package. However, you can choose to stream the .cab into the .msi package. Stream the new .CAB file into the Windows Installer Package Choose this option to stream the .cab into the .msi package.

Note: For transform (*.mst) project types, the option to stream the .cab into the .msi package is disabled because the transform project cannot store the .cab fie internally. It can only add uncompressed files or files stored in an external cab.

1374

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Method Browser Dialog Box

Destination Tab
The Merge Module Properties dialog is displayed when you right-click a selected merge module or object in the Redistributables view.

Dialog Options
GUID Displays the merge modules unique GUID. Author Displays the merge modules author. Version Displays the merge module version. Destination Specifies the destination of the merge modules files. It is recommended you use the default setting (Use merge modules default destination).

Method Browser Dialog Box


The Method Browser dialog box is where you specify the class and method in your managed assembly that your custom action should invoke. The Custom Action Wizard displays this dialog box when you click the Browse button on the Managed Method Definition panel. In addition, this dialog box is also displayed if you click the Browse button on the Method Signature dialog box.

Note: Only public methods of public classes are available for selection. In addition, overloaded methods cannot be selected.

Method Signature Dialog Box


InstallShield displays the Method Signature dialog box when you click the ellipsis button (...) in the Method Signature setting for a managed custom action in the Custom Actions and Sequences view (or the Custom Actions view). This dialog box lets you specify the public class method that you want your custom action to invoke.

InstallShield 2010 User Guide

ISP-1600-UG00

1375

Chapter 41: Dialog Box Reference Method Signature Dialog Box

The Method Signature dialog box has the following settings.


Table 41-28: Settings on the Method Signature Panel Setting Class Description Enter the name of the public classincluding the full namespacewith which the method is associated. Use the following format:
MyNamespace.MyClass

As an alternative, click the Browse button to display the Method Browser dialog box. This dialog box lets you select the public method from the list of public classes that are available in the managed assembly that you selected on the Action Parameters panel.

Note: The browse functionality is available only if the .NET Framework is installed. In addition, it is available only if the location of the managed assembly is set to the Binary table or installed with the productnot if the assemblys path references a property or a directory in the Directory table. Method Enter the public method that you want your installation to call. As an alternative, click the Browse button to display the Method Browser dialog box. This dialog box lets you select the public method from the list of public classes that are available in the managed assembly that you selected on the Action Parameters panel.

Note: The browse functionality is available only if the .NET Framework is installed. In addition, it is available only if the location of the managed assembly is set to the Binary table or installed with the productnot if the assemblys path references a property or a directory in the Directory table. Use custom method signature To use the default method signature, clear this check box. For the default method signature, the installation calls the method with an MsiHandle parameter if the signature has one or more void parameters, or if it has a single MsiHandle parameter. To use a custom method signature, select this check box. Then specify the arguments and return property as needed. If you specified a class and a method by clicking the Browse button, InstallShield automatically adds any associated parameters. Specify the value for each parameter that you want to pass to the method. For detailed information about specifying the methods signature, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

1376

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Modify Dynamic Links Dialog Box

Table 41-28: Settings on the Method Signature Panel (cont.) Setting Arguments Description If you are using a custom method signature, specify the list of arguments that you want to pass to the selected method. If you specified a class and a method by clicking the Browse button, InstallShield automatically adds any associated parameters to the grid in this area. To use a property as an argument, click the value field for the parameter, and then select the property from the list. You can also use a property that is not included in the list by typing the name of the property. The property must be defined at run time. The context menu provides you with options for working with arguments. To access the context menu, right-click an argument in the Arguments grid. The available context menu commands are:

AddAdd an argument to the grid. RemoveDelete an argument from the grid.

This grid is available only if the Use custom method signature check box is selected. For more information about specifying the arguments, see Specifying the Signature for a Managed Method in an Assembly Custom Action. Return Property Select or type the name of the property whose value will be set to the methods return value. This list is available only if the Use custom method signature check box is selected. For more information about specifying the return property, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

Modify Dynamic Links Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The Modify Dynamic Links dialog box shows all of the settings for your dynamic link.

Task

To launch the dialog box: 1. 2.

Open the Components view or the Setup Design view. In the explorer, expand the component whose dynamic link you would like to modify and then click Files.

InstallShield 2010 User Guide

ISP-1600-UG00

1377

Chapter 41: Dialog Box Reference Modify Property Dialog Box/Release WizardPlatforms Panel

3.

Right-click in the Files pane and then click Dynamic File Linking. The Modify Dynamic Links dialog box opens.

Table 41-29: Settings on the File Linking Tab of the Component Properties Dialog Box Setting Source Include SubFolders Description This column shows where the source files are stored. A path variable is typically used. This column indicates whether InstallShield should dynamically link the files in each subfolder. For information on how InstallShield creates components for the dynamically linked files in subfolders, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. Self-Register This column indicates whether you want InstallShield to self-register every file in the dynamic link. If the file are part of a 64-bit component and the Self-Register column indicates Yes for a dynamic link, the installation performs 64-bit self-registration on the target system. For more information, see Targeting 64-Bit Operating Systems. Create Components This column indicates how you want InstallShield to create the components when it adds the dynamic files to your release at build time. The valid options are:

Best PracticeInstallShield adheres to best practices when creating components for the dynamically linked files. By DirectoryInstallShield creates one component for each folder and subfolder.

To learn about these two methods, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. Details This column indicates the filter criteria for including files in and excluding files from the dynamic link.

Tip: Note the following guidelines for working with the File Linking tab:

To add a new dynamic link, click the New Link button. InstallShield displays the Dynamic File Link Settings dialog box. To modify the settings for an existing link, select the link and then click the Modify button. InstallShield displays the Dynamic File Link Settings dialog box. To remove a link and its associated dynamically linked files, select the link and then click the Delete button.

Modify Property Dialog Box/Release Wizard Platforms Panel


Project: The following information applies to InstallScript projects.

1378

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Modify Property Dialog Box/Release WizardPlatforms Panel

The Modify property dialog box and the Platforms panel in the Release Wizard let you specify whether a release is specific to one or more platforms. If the platform specified for a component does not match one of the platforms that is selected for the release, the component is not included in the release.

Task

To access the Modify Property dialog box: 1. 2. 3. 4.

In the View List under Media, click Releases. In the Releases explorer, click the release that you want to configure. Click the Build tab. Click the value of the Platform(s) setting, and then click the ellipsis button (...).

Task

To access the Platforms Panel in the Release Wizard: 1. 2. 3.

In the View List under Media, click Releases. In the Releases explorer, right-click the release that you want to configure, and then click Release Wizard. Complete each of the panels in the wizard until you reach the Platforms panel.

The following table shows the settings that are displayed on the Modify Property dialog box and the Platforms panel in the Release Wizard.
Table 41-30: Settings on the Modify Property Dialog Box and the Platforms Panel in the Release Wizard Setting Use platforms specified by the Platform Filtering setting Description If the selected release supports all of the platforms that are specified for the Platform Filtering setting in the General Information view, select this option. If you select this option, none of the components are excluded from the release at build time.

InstallShield 2010 User Guide

ISP-1600-UG00

1379

Chapter 41: Dialog Box Reference Module Dependencies Dialog Box

Table 41-30: Settings on the Modify Property Dialog Box and the Platforms Panel in the Release Wizard (cont.) Setting Specify the platforms to support below Description If the selected release is specific to one or more operating systems, select this option and then select the appropriate operating systems. If the platform specified for a component does not match one of the platforms that is selected for this setting, InstallShield does not include the component in the release.

Tip: To select multiple consecutive operating systems, select the first file, press and hold SHIFT, and select the last operating systems. To select multiple nonconsecutive operating systems, select the first operating systems, press and hold CTRL, and select each additional operating systems.

Project: For InstallScript projects, the list of operating systems that are displayed in this dialog box excludes any of the operating systems whose check box is cleared at the project level.

Module Dependencies Dialog Box


Project: This information applies to the following project types:

Merge Module MSM Database

The Module Dependencies dialog box opens when you click the ellipsis button (...) in the Module Dependencies setting of the General Information view. This dialog box lets you select the merge modules that are required for the merge module that you are creating.

Tip: The dialog box lists the merge modules that are found in the directories that are specified on the Merge Modules tab of the Options dialog box. If you want to add a dependency that is not present on your machine, you can do so by clicking the Add a new module dependency button in the Module Dependencies setting of the General Information view.

Module Exclusions Dialog Box


Project: This information applies to the following project types:

Merge Module MSM Database

1380

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference MSI Value Dialog Box

Some merge modules do not operate correctly in the presence of certain other merge modules. This may occur because an earlier version of a module might not be compatible with your new module. As a result, you need to ensure that the incompatible module is excluded from any installation that will contain your new module. The Module Exclusions dialog box opens when you click the ellipsis button (...) in the Module Exclusions setting of the General Information view. This dialog box lets you select the merge modules that are compatible with the merge module that you are creating. If you add a merge module that has exclusions to an installation project, and those excluded modules have already been added to your installation project, InstallShield silently removes any reference to the exclusions from your project.

Caution: Any excluded modules that are added to the installation project after the excluding module has been added will not be removed; in addition, you will not receive any warning that they are incompatible.

Tip: The dialog box lists the merge modules that are found in the directories that are specified on the Merge Modules tab of the Options dialog box. If you want to add an exclusion that is not present on your machine, you can do so by clicking the Add a new module dependency button in the Module Exclusions setting of the General Information view.

MSI Value Dialog Box


The MSI Value dialog box enables you to create or modify a primary key for an entry in the resulting Windows Installer packages Registry table. For more information, see Specifying a Primary Key for the Registry Table.

MST SIS Settings Dialog Box


This dialog allows you suppress errors and specify validation options for the transform and base MSI package. For more information, see Database.CreateTransformSummaryInfo in the Windows Installer Help Library.

Dialog Options
Suppress Errors Options Select the check boxes next to the error conditions that you want to suppress.
Table 41-31: Suppress Errors Options Condition Add existing row Add existing table Delete missing row Description Adds a row that already exists. Adds a table that already exists. Deletes a row that does not exist.

InstallShield 2010 User Guide

ISP-1600-UG00

1381

Chapter 41: Dialog Box Reference Multi-Line String Value Dialog Box

Table 41-31: Suppress Errors Options (cont.) Condition Delete missing table Modify missing row Change codepage Description Deletes a table that does not exist. Updates or modifies a row that does not exist. The transform and .msi code pages do not match and neither code page is neutral.

Validation Options In this section, you can indicate the information that you want the transform package to validate on the base MSI package before the transform is applied.
Table 41-32: Validation Options Validation Option Match languages Description Validates the languages in both the base MSI and the transform. The transform is not applied if the languages do not match. Validates the Upgrade Codes in both the base MSI and the transform. The transform is not applied if the Upgrade Codes do not match. Validates the Product Codes in both the base MSI and the transform. The transform is not applied if the Product Codes do not match.

Match Upgrade Code

Match Product Code

Version comparison Select the type of comparison you want to make.


Version level

Select whether you want only the major versions compared or both the major and minor versions.

Multi-Line String Value Dialog Box


In the multi-line string value dialog, choose how you want to modify the registry value.

Select how you want to modify the registry value

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1382

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Dialog Box Reference Multi-Line String Value Dialog Box

For Windows Installer-based projects, you can choose from the following options to indicate where you want to add the value.
Table 41-33: Options for Modifying the Registry Value Option Append Prepend Replace Description Add to the end of the existing registry value string. Add to the front of the existing registry value string. Replace the existing registry value string.

(Multi-line edit field)


In the multi-line edit field, enter a line for each null-delimited string or modify it. Right-click the grid to display the context menu or press the following keys in the grid below associated with the following actions.
Table 41-34: Multi-line Edit Field Actions Action Add String Rename String Delete String Move Up Move Down Shortcut Keys INSERT F2 DELETE UP ARROW DOWN ARROW

Click OK when you are finished entering a line for each null-delimited string. The strings are automatically concatenated.

Note: Strings that contain only spaces are allowed, but strings cannot be empty or [~], which is the separator for the strings as they are stored in the project and displayed in the Destination computers registry data pane. This separator is not included when the registry value is created on the target system.

InstallShield 2010 User Guide

ISP-1600-UG00

1383

Chapter 41: Dialog Box Reference Multi-Line String Value Dialog Box

1384

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: New Dependency Dialog Box

New Dependency Dialog Box


The New Dependency dialog box opens when you click the Add or Modify button on the Dependencies tab of the InstallShield Prerequisite Editor. This dialog box lets you specify other InstallShield prerequisites (.prq files) on which this prerequisite depends.
Table 41-35: New Dependency Dialog Box Options Dialog Option File Description Type the path and name of the .prq file that is required for the current InstallShield prerequisite. To find the .prq file by browsing, click the ellipsis (...) button. InstallShield prerequisite files are stored in the following location:
InstallShield Program Files Folder\SetupPrerequisites

New File Dialog Box


The New File dialog box opens when you click the Add button on the Files to Include tab of the InstallShield Prerequisite Editor. This dialog box lets you specify a file for your InstallShield prerequisite.
Table 41-36: New File Dialog Box Options Option File Description Type the path and name of the file. To find the file by browsing, click the ellipsis (...) button. If end users should be able to download the file from the Web, specify the uniform resource locator (URL) in this box. This URL is the same one that InstallShield uses when installation authors use the Redistributables view to download an InstallShield prerequisite from the Internet to their local machines. For example, if the URL for the file is http://www.mywebsite.com/Folder1/ Notepad.exe, enter the following in this box: http://www.mywebsite.com/Folder1

URL to file

New Project Dialog Box


This dialog box is displayed when you create a new project in InstallShield. In the dialog box, you can select a project type, name your project, and provide a location for the projects files. After you select a project type and click OK, your project opens in InstallShield.

Project: If you select an installation project such as InstallScript, Basic MSI, InstallScript MSI, or Compact, the Project Assistant launches to help you create your project.

InstallShield 2010 User Guide

ISP-1600-UG00

1385

Chapter 41: New Project Dialog Box

Dialog Box Tabs


Table 41-37: New Project Dialog Box Tabs Tab Common InstallScript Description This tab displays some of the most-often-used project types. This tab displays all of the project types that use the InstallShield installation engine, including the InstallScript installation project. If you previously used InstallShield Professional, you will be familiar with these project types. This tab includes projects that use the Microsoft Windows Installer engine, including the Basic MSI installation project. This tab displays all of the project types available in InstallShield. It also includes any project templates that you previously saved, as well as any templates that are available in your repository.

Windows Installer

All Types

Note: Running the Visual Basic 6.0 Wizard from this tab (or the Windows Installer tab) creates a Basic MSI project. To create an InstallScript project based on a Visual Basic project, run the wizard from the InstallScript tab.

Dialog Box Options


Table 41-38: New Project Dialog Box Options Option Project Name Description Type a name for your project in this box.

Project: When you create a Merge Module project, the name that you specify in this box should have 35 characters or fewer. This is because the name that you enter is used with the GUID in the ModuleID field of the ModuleSignature table of your object or module file, and the limit for the name portion of the ModuleID field is a maximum of 35 characters. Project Language Location Select the language that should be used for your installation project. Type a location or click Browse to navigate to a project location. To change the default project location displayed, change the Project Location path, which is specified on the File Locations tab of the Options dialog box. Select this check box if you want InstallShield to create a subfolder with your projects name in your Projects location.

Create the project in Project Name subfolder

1386

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Operating Systems Dialog Box

Operating Systems Dialog Box


This dialog lets you specify the operating systems with which a component (in an InstallScript MSI project) is associated.

Dialog Options
Operating Systems Select the operating systems on which the component should be installed. Leaving all operating systems unselected causes the component to be installed regardless of the target operating system.

Options Dialog Box


The Options dialog box enables you to specify preferences for creating projects and working in InstallShield.

Task

To access the Options dialog box:

On the Tools menu, click Options. The Options dialog box is organized into multiple task-related tabs:

General tab File Locations tab Path Variables tab User Interface tab Preferences tab Merge Modules tab Quality tab Updates tab .NET tab Files View tab File Extensions tab DIMs tab Source Control tab Directory tab Resource tab

InstallShield 2010 User Guide

ISP-1600-UG00

1387

Chapter 41: Options Dialog Box

Validation tab Repository tab SQL Scripts tab Configure Trialware tab

General Tab
The General tab on the Options dialog box enables you to set general project options.
Table 41-39: General Tab Settings Setting Enforce Setup Best Practices Help window on top Project Types Basic MSI, InstallScript MSI All Description Select this check box to indicate that you want InstallShield to monitor your installation design to help you comply with Setup Best Practices. Select this check box to have the help window remain on top of the InstallShield interface. If you want the help window to fall to the background when focus is given to InstallShield, clear this check box. Select this check box to abort the build process when a build error occurs.

Stop build process when first error is encountered Automatically create ISSetAllUsers action

Basic MSI, InstallScript, InstallScript MSI Basic MSI, InstallScript MSI

Select this check box to add the ISSetAllUsers action to your sequences when your project contains one or more records in the Upgrade table.

1388

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Options Dialog Box

File Locations Tab


The File Locations tab on the Options dialog box enables you to set the default directories for where your project files are located and where all of your merge modules can be found.
Table 41-40: File Locations Tab Settings Setting Project Type Description The project location becomes your Favorite folder for new installation projects. All of your source and release files, such as your project (.ism) file, installation package (.msi file), and disk image files, are stored in subfolders of your Favorites location, currently [unknown]. You can enter a complete path or click the Browse button to navigate to the folder. By default, your project is stored in the following location:
C:\InstallShield 2010 Projects

Project Location All

Tip: Changing the project location does not move existing folders and files in the previous project location. You must build a release with a new name or manually move the folders to change their location. Dialogs Location Basic MSI Enter the path where the Dialog Wizard should search for dialogs. Dialogs in this location appear in the list presented in the Dialog Wizards Dialog Template panel. Separate additional paths with a comma.

Path Variables Tab


The Path Variables tab enables you to set user-level path variables options.
Table 41-41: Path Variable Tab Settings Setting Always recommend path variables Project Types Basic MSI, InstallScript, InstallScript MSI Description Select this option if you want InstallShield to automatically assign existing path variables to your files. For example, if you are adding a file to your installation project that is stored in your Program Files folder, InstallShield uses <ProgramFilesFolder> rather than a hard-coded path. Select the check box below this option to have InstallShield automatically create a path variable for you. When a new variable is created, it is titled <MYVAR#> (where # is a successive number). You can change the name of this variable in the Path Variables editor. Dont recommend path variables Basic MSI, InstallScript, InstallScript MSI Select this option if you want to use hard-coded paths for all of your file links. InstallShield does not suggest path variables for you if this option is selected.

InstallShield 2010 User Guide

ISP-1600-UG00

1389

Chapter 41: Options Dialog Box

Table 41-41: Path Variable Tab Settings (cont.) Setting Always display the Path Variable Recommendation dialog to me Project Types Basic MSI, InstallScript, InstallScript MSI Description Select this option if you want the Path Variable Recommendation dialog box dialog box to be displayed every time you associate a file with your installation project.

User Interface Tab


The User Interface tab on the Options dialog box sets your user interface preferences. These settings are maintained across all projects that you create on this system.
Table 41-42: User Interface Tab Settings Setting Dont ask me Project Type Basic MSI, InstallScript, InstallScript MSI Description Certain aspects of your installation require that a feature, a component, or both exist before you can add that functionality. For example, you cannot create a shortcut without first creating the component that will contain that shortcut.

Always create new components and featuresIf you want InstallShield to automatically create components and features when needed, select this check box. If you do not select this check box, InstallShield prompts you to create components and features when necessary. Always confirm feature, component, and release deletionIf you want InstallShield to display a confirmation dialog box each time you delete a feature, component, or release, select this check box. Always confirm script terminology conversionIf you want InstallShield to display a confirmation dialog box when you open a project created in InstallShield Professional, select this check box. The dialog box asks if you want to convert your script to use the InstallScript lexicon. Automatically determine best feature or componentIf you want InstallShield to automatically determine the feature or component to associate registry data with, select this check box. If this check box is cleared, you will be prompted for a feature or component name when you create registry data for the All Application data filter or Feature filter. Show Welcome panel for IDE wizardsIf you want InstallShield to display a Welcome panel every time you run a wizard, select this check box. Warn about Web site deletionIf you want InstallShield to display a warning message when you delete a Web site in the Internet Information Services view, select this check box. The warning alerts you that the Web site contains one or more virtual directories, and the virtual directories will be deleted from your project when the Web site is deleted.

1390

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Options Dialog Box

Preferences Tab
The Preferences tab on the Options dialog box sets your program preferences. These settings are maintained across all installation projects you create on this system.
Table 41-43: Preferences Tab Settings Setting Self-Registration Project Type Basic MSI, InstallScript MSI Description This section allows you to select the self-registration method that InstallShield should use when you indicate that a file is self-registering. Changing this setting applies only to future self-registration settings and does not affect files that were previously designated as self-registering.

InstallShield Self-Registration Table (ISSelfReg)Select this option to use the InstallShield Self-Registration table for all files designated as self registering. Windows Installer Self-Registration Table (SelfReg)Select this option to use the Windows Installer Self-Registration table for all files designated as self registering.

This section also allows you to select the default timing for COM extraction of self-registering files. This is the default setting used if a self-registering file is added via the Files and Folders view or through the Component Wizard.

COM Extraction will occur during the buildSelect this option to perform extraction during the build. COM information will appear in the build log file. COM Extraction will occur immediately when the file is addedSelect this option to extract COM data right after you add a COM file. When you select this option, InstallShield populates the components COM Registration Advanced Settings view.

Run Commands

Basic MSI

Select the Uninstall before installing check box if you want InstallShield to automatically uninstall your Basic MSI installation before running it when you run your installation from the Build menu. Select the Maintain referential integrity check box if you want InstallShield to automatically maintain referential integrity when you are working in the Direct Editor. For example, the Control table has a Dialog_ column, meaning that the column is a foreign key to the Dialog table. If you rename the key in the Dialog table, the key in the Control table is also renamed. Also, if you delete the entire dialog, all of the controls should be deleted. This is true for any tables with this type of foreign key relationship. Select the Reload last opened project on startup check box if you want InstallShield to automatically reload the most recently opened project when you launch InstallShield.

Referential Integrity

Basic MSI, InstallScript, InstallScript MSI

Project Reload

All

InstallShield 2010 User Guide

ISP-1600-UG00

1391

Chapter 41: Options Dialog Box

Merge Modules Tab


The Merge Modules tab on the Options dialog box enables you to set preferences for merge modules and merge module projects.
Table 41-44: Merge Module Tab Settings Setting Merge Module Locations (Current User) and Merge Module Locations (All Users) Project Type Basic MSI, InstallScript, InstallScript MSI Description

Note: The All Users option is available if you want to run a command-line build under a system account for which you cannot easily update the user settings. Enter the paths where you will be storing merge modules. For installation projects, the Redistributables view of InstallShield displays all of the merge modules in these folders. Separate additional paths with a comma, as in the following example:
C:\MergeModules,C:\My Files\MergeModules

The first path you list is where the Release Wizard should copy a merge module after it is built. The file is copied only if you select Copy to Modules folder in the Merge Module Options panel or run ISCmdBld.exe with the -e command-line option. The folder is created if it does not exist. The default location for copying new merge modules is under the project location in the MergeModules folder. Initially, InstallShields Modules folder is included in the merge module location. InstallShield provides a number of freely redistributable merge modules in InstallShield Program Files Folder\Modules\i386.

Note: The Merge Module Locations path supports the use of environment variables. Merge Module File Search Behavior Basic MSI, InstallScript MSI When you add a file to your project via the Best Practices Component Wizard or the Files view (with Best Practices active), InstallShield searches the merge modules to see if there is a module that contains that file and notifies you of any matches. In this section, you can select options that InstallShield uses to determine whether the files match.

Quality Tab
The Quality tab on the Options dialog box provides the option to join the Customer Experience Improvement Program, which works on improving the quality, reliability, and improvement of software and services from Acresso Software. Participation is not mandatory, but Acresso Software appreciates your input.
1392 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Options Dialog Box

Updates Tab
The Updates tab on the Options dialog box enables you to configure how often FLEXnet Connect checks for updates to InstallShield. It also lets you specify whether automatic update notification should be enabled by default for all new projects that you create in InstallShield.
Table 41-45: Updates Tab Settings Setting Check for software updates Enable automatic update notification in all new projects Project Types All Description Select an option from this list to indicate how often you want InstallShield to check for software updates. Select this check box if automatic update notification should be enabled in all new projects that you create in InstallShield. You can override this automatic update notification setting for specific projects if necessary.

Basic MSI, InstallScript MSI

Note: FLEXnet Connect cannot be used to deploy an upgrade for your installation if FLEXnet Connect was not enabled in the original installation.

Project: For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

.NET Tab
The .NET tab on the Options dialog box is where you specify preferences for .NET projects. It is also where you specify the location of the Regasm.exe and InstallUtilLib.dll files, which are utilities that are included with the .NET Framework. These utilities are used for COM interop and .NET custom actions.
Table 41-46: .NET Tab Settings Setting Default .NET Scan at Build Component Setting .NET Framework File Locations Project Type Basic MSI, InstallScript MSI Description In this list, select how the .NET Scan at Build property should be set for new components. This applies to components that are automatically created when you add files to your project. Regasm.exe and InstallUtilLib.dll are utilities that are included with the .NET Framework. These utilities are used for COM interop and .NET custom actions.

Basic MSI, InstallScript MSI

Regasm.exe locationType the complete path or browse to the location of Regasm.exe. InstallUtilLib.dll locationType the complete path or browse to the location of InstallUtilLib.dll.

InstallShield 2010 User Guide

ISP-1600-UG00

1393

Chapter 41: Options Dialog Box

Files View Tab


In the Files View tab on the Options dialog box, you can select the columns that you want displayed in the several views of InstallShield.

Size
Select this check box to display a Size column in the following areas of InstallShield:

For Windows Installer and InstallScript projectsFiles and Folders view For Windows Installer and InstallScript projectsFiles subview in the Components view For Windows Installer, InstallScript, and Compact projectsApplication Files page of the Project Assistant

Link To
Select this check box to display a Link To column in the following areas of InstallShield:

For Windows Installer and InstallScript projectsFiles and Folders view For Windows Installer and InstallScript projectsFiles subview in the Components view For Windows Installer, InstallScript, and Compact projectsApplication Files page of the Project Assistant

Modified Date
Select this check box to display a Modified column in the following areas of InstallShield:

For Windows Installer and InstallScript projectsFiles and Folders vie For Windows Installer and InstallScript projectsFiles subview in the Components view For Windows Installer, InstallScript, and Compact projectsApplication Files page of the Project Assistant

Destination
Select this check box to display a Destination column in Application Files page of the Project Assistant for Windows Installer, InstallScript, and Compact projects.

Version
Select this check box to display a Version column in the following areas of InstallShield:

For Windows Installer and InstallScript projectsFiles and Folders view For Windows Installer and InstallScript projectsFiles subview in the Components view

Note: Selecting the Version check box will slow the performance of the above views.

1394

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Options Dialog Box

File Key
Select this check box to display a Key column in the Files subview of the Components view for Windows Installer projects.

File Extensions Tab


Project: The File Extensions tab is applicable to the following project types:

Basic MSI InstallScript MSI Merge Module

The File Extensions tab on the Options dialog box is where you specify preferences for Portable Executable (PE) files. InstallShield refers to this list of PE files on several different occasions. For example:

When you add a PE file to a folder in the Destination computers folders pane in the Files and Folders view, InstallShield creates a new component for it and sets it as the components key file. When you create components by using the best practice option in the Component Wizard, InstallShield creates a new component for PE files and sets each PE file as the key file of its component. When you use the best practice method of component creation for dynamic file links, InstallShield creates at build time a separate component for each PE file in the dynamically linked folder. Each PE file is the key file of its component.

The following setting is available on this tab:


Table 41-47: File Extensions Tab Settings Setting Portable Executable File Extensions Description In this box, type the file extensions that you would like InstallShield to consider to be PE files. Separate extensions with a comma. The default entry for this box is the following:
EXE,DLL,OCX,VXD,CHM,HLP,TLB, AX

InstallShield 2010 User Guide

ISP-1600-UG00

1395

Chapter 41: Options Dialog Box

DIMs Tab
The DIMs tab on the Options dialog box enables you to set preferences for DIMs.
Table 41-48: DIMs Tab Settings Setting DIM File Locations (Current User) and DIM File Locations (All Users) Project Type Basic MSI, Merge Module Description Specify the paths for the folders where you store DIM files and their dependent DIMs. If you add a DIM reference to a project and that DIM reference contains one or more dependencies, InstallShield searches the locations that you specified on this DIMs tab for the dependent DIMs, and adds them to the project as needed. To specify more than one location, separate each path with a comma, as in the following example:
C:\DIMs,C:\My Files\DIMs

If a location that you specify contains subfolders, InstallShield searches all of the subfolders. The All Users option is available if you want to run a command-line build under a system account for which you cannot easily update the user settings.

Note: The DIM File Locations path supports the use of environment variables.

Source Control Tab


Edit the settings on the Source Control tab of the Options dialog box to control how InstallShield interacts with your source code control program. All of the settings on this tab apply to every project the current user opens on this system.

Project: The following options apply to both Windows Installerbased and InstallScript-based projects unless otherwise noted.

Use dialog for checkoutWhen this check box is selected, a checkout dialog box is displayed when you check out a project through InstallShield. If this check box is cleared, InstallShield automatically checks out the file without a comment when you select the Check out project when edited check box or if, on the Project menu, you point to Source Control and then click Check Out. Get latest version when opening the projectSelect this check box to retrieve the latest version of your project from your source control program when you open the project in InstallShield. If you do not get the latest version, you might edit an older version in your working directoryif someone else modified the project file that exists in source control in the interim. Check out project when editedSelect this check box to have InstallShield automatically check your project file out of your source control program whenever you modify it in InstallShield. If your project file is not checked out, it is likely read only and you cannot save changes to it until you check it out.
ISP-1600-UG00 InstallShield 2010 User Guide

1396

Chapter 41: Options Dialog Box

Add new projects to source controlSelect this check box if you want new projects automatically added to source control upon creating them in InstallShield. Use XML format when creating new Windows Installer or Mobile based projectsWhen this check box is selected, XML is the default file format for Windows Installer or mobile device projects you create using the New Project dialog box. If this check box is cleared, binary is the default file format setting for Windows Installer or mobile device projects. You can change the projects file format at any time by changing the value for the Project File Format setting in the General Information view.

Note: When a project file format is converted to either XML or binary format, the project file extension remains .ism.

Project: The Use XML Format when creating new Windows Installer or Mobile based projects option applies only to Windows Installerbased projects.

User name
Specify the name you use to log on to the source control project.

Advanced
Click this button to view the source control programs Properties dialog box and make advanced modifications.

Directory Tab
On the Directory tab of the Options dialog box, you can set various design-time directory options for Windows Installer and InstallScript MSI projects.
Table 41-49: Directory Tab Settings Setting Show INSTALLDIR Project Type Basic MSI, InstallScript MSI Description Select this check box to display INSTALLDIR as a predefined folder at the root level of the folder structure. If the check box not cleared, INSTALLDIR appears in its location relative to other folders. In the Files and Folders view, it appears as a subfolder beneath the ProgramFilesFolder and the Your Company Name folder. In the Files and Folders view, the default behavior for displaying two directory identifiers with the same path is to display them as a single directory. To show different directory identifiers with the same path as two separate directories in the Files and Folders view, select this check box. Select this check box to remove unused user-defined directories from your installation project. For example, if you set a components destination to {MYDIR}[INSTALLDIR]MYDIR1 and subsequently change the destination to [INSTALLDIR], MYDIR1 is automatically deleted from your project if it is not used elsewhere in your project.

Always show directory nodes with different IDs separately

Basic MSI, InstallScript MSI

Clean up unused directories

Basic MSI, InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1397

Chapter 41: Options Dialog Box

Resource Tab
On the Resource tab of the Options dialog box, you can specify the location of the resource compiler and resource linker programs on your system. These programs are required in order to display modified dialogs in an InstallScript MSI installation project These fields are automatically populated with the default file locations and command-line options for each program, but you can edit them if necessary.
Table 41-50: Resource Tab Settings Setting Resource Compiler Settings Project Type Basic MSI, InstallScript, InstallScript MSI Description In this section, you can specify the location of a resource compiler and provide command line options.

Resource compiler locationThe default resource compiler (rc.exe) location appears in this field. To edit the resource compiler location, type or browse to the location of a resource compiler that is currently installed on your system. Resource compiler command line optionsTo edit the resource compiler command line options, type over the existing command line options in the field. The default command line option string is /r "%1".

Resource Linker Settings

Basic MSI, InstallScript, InstallScript MSI

In this section, you can specify the location of a resource linker and provide command line options.

Resource linker locationThe default resource linker (link.exe) location appears in this field. To edit the resource linker location, type or browse to the location of a resource linker that is currently installed on your system. Resource linker command line optionTo edit the resource linker command line options, type over the existing command line options in the field. The default command line option string is "%1" /DLL /NOENTRY /NODEFAULTLIB /MACHINE:iX86 /OUT:"%2".

Validation Tab
On the Validation tab of the Options dialog box, you can specify the type of validation you want InstallShield to perform after a successful build.
Table 41-51: Validation Tab Settings Setting Perform Patching & Upgrading validation Perform validation using Project Type Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Description Select this check box to perform validation on both patches and upgrades. To perform validation every time that you build an installation project, select this check box and then select the check box of one or more validation suites. You can also browse for a new validation module (.cub file).

1398

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Options Dialog Box

Table 41-51: Validation Tab Settings (cont.) Setting Perform merge module validation using Project Type Merge Module Description To perform validation every time that you build a merge module, select this check box and then select the check box of one or more validation suites. You can also browse for a new validation module (.cub file).

Click the Customize button to specify which internal consistency evaluators (ICEs) should be used for a specific validation suite. For more information, see Specifying Which ICEs, ISICEs, and ISBPs Should Be Run During Validation.

Repository Tab
Edition: The boxes on the Repository tab are available in the Premier edition of InstallShield only.

If you want to set up a network repository or change its location, name, or description, you can do so through the Repository tab on the Options dialog box.
Table 41-52: Repository Tab Settings Setting Network Repository XML File Description This is the path and file name of the .xml file that InstallShield creates for the network repository. InstallShield also automatically creates subfolders in the same directory as the .xml file; these subfolders contain items that are published to the network repository. This is the name of the network repository. This is a description of the network repository.

Name Description

SQL Scripts Tab


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1399

Chapter 41: Other IIS Properties Dialog Box

On the SQL Scripts tab of the Options dialog box, you can set one option for SQL script support.
Table 41-53: SQL Script Tab Settings Setting Generate unique Windows Installer properties for new connections Description To share Windows Installer properties between any new database connections that you add to your project, clear this check box. To use different Windows Installer properties for any new connections that you add, select this check box. This check box is cleared by default. For more information, see Specifying Whether New SQL Connections Should Share the Same Windows Installer Properties.

Configure Trialware Tab


Edition: Trialware functionality is available in the Premier edition of InstallShield.

The Configure Trialware tab enables you to set default values for the user name and the corresponding password that you want to use on the Configure Trialware Credentials panel of the Acquire New License Wizard.
Table 41-54: Project-specific Settings Setting InstallShield user name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description Type the user name that you use to log on to the InstallShield Activation Service Publisher Web Site. Your user account must have write access to the licensing part of the Web site. To obtain a new user name or to retrieve your password, visit the InstallShield Activation Service Publisher Web Site Type the password for your user name. The password is encrypted.

Password

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Other IIS Properties Dialog Box


When you select a Web site, application, or virtual directory in the Internet Information Services view, InstallShield displays a grid that contains many settings. The Other IIS Properties dialog box opens when you click the ellipsis button (...) in the Other IIS Properties setting in the Advanced area of the grid. This dialog box is where you specify values for IIS settings that are not displayed in the other areas of this view. To customize the value of a property, click the property name, and then click the Change Value button. The Edit ISIISMetaData Value dialog box opens, enabling you to set the value as needed.

1400

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Note: The other IIS property settings apply to IIS 6 and earlier. IIS 7 ignores these settings.

For help on specific settings, see Metabase Property Reference on the MSDN Web site.

Other Window Styles Dialog Box


Project: This information does not apply to Basic MSI projects.

This dialog box provides additional window style options for your dialog. The options available depend on the type of dialog control that is active when you click the ellipsis (...) button in the Other Windows Style field of the Dialog Editor. For more information about the values, refer to the MSDN Library.

Task

To apply window styles to your dialog control:

Click the styles to select them and click OK.

Style Tables
Click a table type to learn about the window styles available for specific controls.

Dialog Bitmap, Icon, Label, and Text Controls Button Controls (Check Box, Radio Button Group, Push Button, Group Box, and Billboard Controls) Combo Box and Directory Combo Custom Controls Directory List, List View, and Volume Cost List Edit, List Box, Scrollable Text, Path Edit, and Masked Edit Controls Line Controls Progress Bar Controls Selection Tree Controls

Other Window Styles for Dialogs


These window style options are available for the dialog. See the MSDN Library for additional information.

InstallShield 2010 User Guide

ISP-1600-UG00

1401

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your dialog control:

Click the styles to select them and click OK.


Table 41-55: Window Styles for Dialogs Value WS_POPUP DS_NOIDLEMSG Description Creates a popup window. Suppresses WM_ENTERIDLE messages that the system sends to the owner of a dialog box while the dialog box is displayed. Creates a dialog box that can function as a child window of another dialog box. This allows the user to tab among the control windows of a child dialog box and use its accelerator keys. This style is obsolete and is included for compatibility with 16-bit versions of Windows. If you specify this style, the system creates the dialog box with the WS_EX_TOPMOST style. This style does not prevent the user from accessing other windows on the desktop. Do not combine with the DS_CONTROL style. DS_3DLOOK Displays text in the dialog box in non-bold font and draws threedimensional borders around control windows in the dialog box. Centers the dialog box in the working area of the end users screen. Specifies that edit controls in the dialog box use memory in the applications data section. By default, all edit controls in dialog boxes use memory outside the applications data section. Causes the dialog box to use the SYSTEM_FIXED_FONT instead of the default SYSTEM_FONT. This is a monospaced font compatible with the System font in 16-bit versions of Windows operating systems earlier than 3.0. Centers the cursor in the dialog box. Indicates that the header of the dialog box template contains additional data specifying the font to use for text in the client area and controls of the dialog box. The font data begins on the WORD boundary that follows the title array. It specifies a 16-bit point size value and a Unicode font name string. If this style is not specified, the dialog box template does not include the font data. DS_ABSALIGN Indicates that the coordinates of the dialog box are screen coordinates.

DS_CONTROL

DS_SYSMODAL

DS_CENTER

DS_LOCALEDIT

DS_FIXEDSYS

DS_CENTERMOUSE DS_SETFONT

1402

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Table 41-55: Window Styles for Dialogs (cont.) Value DS_CONTEXTHELP Description Displays a question mark in the title bar of the dialog box. When the end user clicks the question mark, the cursor changes to a question mark with a pointer. If the end user then clicks a control in the dialog box, the control receives a WM_HELP message. The control should pass the message to the dialog box procedure. The help application displays a popup window that typically contains help for the control. DS_CONTEXTHELP is only a placeholder. When the dialog box is created, the system checks for DS_CONTEXTHELP andif it is thereadds WS_EX_CONTEXTHELP to the extended style of the dialog box. WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles. DS_MODALFRAME Creates a dialog box with a modal dialog box frame that can be combined with a title bar and window menu by specifying the WS_CAPTION and WS_SYSMENU styles. Creates the dialog box even if errors occurfor example, if a child window cannot be created or if the system cannot create a special data segment for an edit control. Causes the system to use the SetForegroundWindow function to bring the dialog box to the foreground.

DS_NOFAILCREATE

DS_SETFOREGROUND

Other Window Styles for Bitmap, Icon, Label, and Text Controls
These window style options are available for bitmap, icon, label, and text controls. See the MSDN Library for additional information.

Task

To apply window styles to your control:

Click the styles to select them and click OK.


Table 41-56: Window Style Options for Bitmap, Icon, Label, and Text Controls Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group.

InstallShield 2010 User Guide

ISP-1600-UG00

1403

Chapter 41: Other Window Styles Dialog Box

Table 41-56: Window Style Options for Bitmap, Icon, Label, and Text Controls (cont.) Value SS_CENTERIMAGE Description Specifies that, if the bitmap or icon is smaller than the client area of the static control, the rest of the client area is filled with the color of the pixel in the top left corner of the bitmap or icon. If the static control contains a single line of text, the text is centered vertically in the client area of the control. Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification messages when the user clicks or double-clicks the control. Specifies that the lower right corner of a static control with the SS_BITMAP or SS_ICON style is to remain fixed when the control is resized. Only the top and left sides are adjusted to accommodate a new bitmap or icon. Creates a window with a vertical scroll bar. Prevents a static icon or bitmap control (that is, static controls that have the SS_ICON or SS_BITMAP style) from being resized as it is loaded or drawn. If the icon or bitmap is larger than the destination area, the image is clipped. Windows NT/2000 or later: If the end of a string does not fit in the rectangle, it is truncated and ellipses are added. If a word that is not at the end of the string goes beyond the limits of the rectangle, it is truncated without ellipses. Compare with SS_PATHELLIPSIS and SS_WORDELLIPSIS. Windows 2000 or later: Replaces characters in the middle of the string with ellipses so that the result fits in the specified rectangle. If the string contains backslash (\) characters, SS_PATHELLIPSIS preserves as much as possible of the text after the last backslash. Compare with SS_ENDELLIPSIS and SS_WORDELLIPSIS. Windows NT/2000 or later: Truncates any word that does not fit in the rectangle and adds ellipses. Compare with SS_ENDELLIPSIS and SS_PATHELLIPSIS.

SS_NOTIFY

SS_RIGHTJUST

WS_VSCROLL SS_REALSIZEIMAGE

SS_ENDELLIPSIS

SS_PATHELLIPSIS

SS_WORDELLIPSIS

Note: SS_ENDELLIPSIS, SS_PATHELLIPSIS, and SS_WORDELLIPSIS are mutually exclusive.

Other Window Styles for Button Controls


These window style options are available for button controls. See the MSDN Library for additional information.

1404

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your button control:

Click the styles to select them and click OK.


Table 41-57: Window Styles for Button Controls Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Places text on the left side of the radio button or check box when combined with a radio button or check box style. Centers text horizontally in the button rectangle. Places text at the bottom of the button rectangle. Creates a window with a vertical scroll bar. Places text in the middle (vertically) of the button rectangle. Makes a buttonsuch as a check box, threestate check box, or radio buttonlook and act like a push button. The button looks raised when it is not pushed or selected, and sunken when it is pushed or checked. Specifies that the button is two-dimensional. It does not use the default shading to create a three-dimensional image. Enables a button to send BN_KILLFOCUS and BN_SETFOCUS notification messages to its parent window. Buttons send the BN_CLICKED notification message regardless of whether it has this style. To get BN_DBLCLK notification messages, the button must have the BS_RADIOBUTTON or BS_OWNERDRAW style. BS_MULTILINE Wraps the button text to multiple lines if the text string is too long to fit on a single line in the button rectangle.

BS_LEFTTEXT

BS_CENTER

BS_BOTTOM

WS_VSCROLL BS_VCENTER

BS_PUSHLIKE

BS_FLAT

BS_NOTIFY

InstallShield 2010 User Guide

ISP-1600-UG00

1405

Chapter 41: Other Window Styles Dialog Box

Other Window Styles for Push Button Controls


The following values apply only to push button controls. They are mutually exclusive.
Table 41-58: Window Styles for Push Button Controls Value BS_OWNERDRAW Description Creates an owner-drawn button. The owner window receives a WM_DRAWITEM message when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW style with any other button styles. Obsolete, but provided for compatibility with 16-bit versions of Windows. Win32-based applications should use BS_OWNERDRAW instead.

BS_USERBUTTON

Other Window Styles for Check Box Controls


The following values apply only to check box controls. They are mutually exclusive.
Table 41-59: Window Styles for Check Box Controls Value BS_AUTOCHECKBOX Description Creates a button that is the same as a check box, except that the check state automatically toggles between checked and cleared each time the user selects the check box. Creates a button that is the same as a check box, except that the box can be grayed as well as checked or cleared. Use the grayed state to show that the state of the check box is not determined. Creates a button that is the same as a three-state check box, except that the box changes its state when the user selects it. The state cycles through checked, grayed, and cleared.

BS_3STATE

BS_AUTO3STATE

Other Window Styles for Combo Box and Directory Combo


These window style options are available for combo box and directory combo controls. See the MSDN Library for additional information.

1406

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your dialog control:

Click the styles to select them and click OK.


Table 41-60: Window Styles for Combo Box and Directory Combo Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Creates a window with a vertical scroll bar. Displays the list box at all times. The current selection in the list box is displayed in the edit control. Similar to CBS_SIMPLE, except that the list box is not displayed unless the user selects an icon next to the edit control. Converts text entered in the combo box edit control from the Windows character set to the OEM character set and then back to the Windows set. This results in proper character conversion when the application calls the CharToOem function to convert a Windows string in the combo box to OEM characters. This style is useful for combo boxes that contain file names and applies only to combo boxes created with the CBS_SIMPLE or CBS_DROPDOWN style. Specifies that an owner-drawn combo box contains items consisting of strings. The combo box maintains the memory and address for the strings so the application can use the CB_GETLBTEXT message to retrieve the text for a particular item. Converts to uppercase all text in both the selection field and the list. Automatically scrolls the text in an edit control to the right when the user types a character at the end of the line. If this style is not set, only text that fits within the rectangular boundary is allowed. Shows a disabled vertical scroll bar in the list box when the box does not contain enough items to scroll. Without this style, the scroll bar is hidden when the list box does not contain enough items. Specifies that the size of the combo box is exactly the size specified by the application when it created the combo box. Normally, the system sizes a combo box so that it does not display partial items.

WS_VSCROLL CBS_SIMPLE

CBS_DROPDOWN

CBS_OEMCONVERT

CBS_HASSTRINGS

CBS_UPPERCASE

CBS_AUTOHSCROLL

CBS_DISABLENOSCROLL

CBS_NOINTEGRALHEIGHT

InstallShield 2010 User Guide

ISP-1600-UG00

1407

Chapter 41: Other Window Styles Dialog Box

Table 41-60: Window Styles for Combo Box and Directory Combo (cont.) Value CBS_OWNERDRAWFIXED Description Specifies that the owner of the list box is responsible for drawing its contents and that the items in the list box are all the same height. The owner window receives a WM_MEASUREITEM message when the combo box is created and a WM_DRAWITEM message when a visual aspect of the combo box has changed.

CBS_OWNERDRAWVARIABL Specifies that the owner of the list box is responsible for drawing E its contents and that the items in the list box are variable in height. The owner window receives a WM_MEASUREITEM message for each item in the combo box when you create the combo box and a WM_DRAWITEM message when a visual aspect of the combo box has changed.

Other Window Styles for Custom Controls


Project: The custom control is available only for dialogs in InstallScript MSI installation projects.

These window style options are available for custom controls. See the MSDN Library for additional information.

Task

To apply window styles to your control:

Click the styles to select them and click OK.


Table 41-61: Window Style Value Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group.

Other Window Styles for Directory List, List View, and Volume Cost List
These window style options are available for the directory list, list view, and volume cost list controls. See the MSDN Library for additional information.

1408

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your dialog control:

Click the styles to select them and click OK.


Table 41-62: Window Styles for Directory List, List View, and Volume Cost List Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Enables only one item to be selected at a time. By default, multiple items can be selected. Displays item text on a single line in icon view. By default, item text might wrap in icon view. Specifies that icons automatically remain arranged in icon view and small icon view. Always shows the selection highlighted, even if the control is not activated. Sorts items based on item text in ascending order. Sorts items based on item text in descending order. Enables item text to be edited in place. The parent window must process the LVN_ENDLABELEDIT notification message. Creates a virtual list view control. Disables scrolling, so all items must be displayed within the client area. Specifies that column headers do not work like buttons. This style is useful if clicking a column header in report view does not carry out any action, such as sorting. Enables the owner window to paint items in report view. The list view control sends a WM_DRAWITEM message to paint each item; it does not send separate messages for each subitem. The itemData member of the DRAWITEMSTRUCT structure contains the item data for the specified list view item. Specifies that no column header is displayed in report view, which is the default view. Specifies that the control does not destroy the image lists assigned to it when it is destroyed. This style enables the same image lists to be used with multiple list view controls.

LVS_SINGLESEL

LVS_NOLABELWRAP

LVS_AUTOARRANGE

LVS_SHOWSELALWAYS

LVS_SORTASCENDING LVS_SORTDESCENDING LVS_EDITLABELS

LVS_OWNERDATA LVS_NOSCROLL

LVS_NOSORTHEADER

LVS_OWNERDRAWFIXED

LVS_NOCOLUMNHEADER

LVS_SHAREIMAGELISTS

InstallShield 2010 User Guide

ISP-1600-UG00

1409

Chapter 41: Other Window Styles Dialog Box

Types

Note: The following values are mutually exclusive. Table 41-63: Type Values Value LVS_ICON LVS_REPORT LVS_LIST LVS_SMALLICON Description Specifies icon view. Specifies report view. Specifies list view. Specifies small icon view.

Align

Note: The following values are mutually exclusive. Table 41-64: Alignment Values Value LVS_ALIGNTOP Description Specifies that items are aligned with the top of the list view control in icon view and small icon view. Specifies that items are left-aligned in icon view and small icon view.

LVS_ALIGNLEFT

Other Window Styles for Edit, List Box, Scrollable Text, Path Edit, and Masked Edit Controls
Project: Other window styles properties are not used during run time for Basic MSI projects. They are exposed in InstallShield so they are available if you export the dialog to a resource (.rc) file. The scrollable text control is available only for dialogs in Basic MSI installation projects.

These window style options are available for the edit, list box, scrollable text, path edit, and masked edit controls. See the MSDN Library for additional information.

1410

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your control:

Click the styles to select them and click OK.


Table 41-65: Window Styles for Edit, ListBox, Scrollable Text, Path Edit, and Masked Edit Controls Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Creates a window with a vertical scroll bar. Creates a bordered list box. The parent window receives an input message whenever the end user clicks or double-clicks a string. Specifies a no-data list box. Specify this style when the count of items in the list box will exceed one thousand. A no-data list box must also have the LBS_OWNERDRAWFIXED style, but must not have the LBS_SORT or LBS_HASSTRINGS style. A no-data list box resembles an owner-drawn list box except that it contains no string or bitmap data for an item. Commands to add, insert, or delete an item always ignore any specified item data; requests to find a string within the list box always fail. The system sends the WM_DRAWITEM message to the owner window when an item must be drawn. The itemID member of the DRAWITEMSTRUCT structure passed with the WM_DRAWITEM message specifies the line number of the item to be drawn. A no-data list box does not send a WM_DELETEITEM message. LBS_NOINTEGRALHEIGHT Creates a list box that is precisely the size specified by the application when it created the list box. List box is not updated when changes are made. Toggles string selection each time the end user clicks or doubleclicks the string. Specifies that a list box contains items consisting of strings. The list box maintains the memory and addresses for the strings so that the application can use the LB_GETTEXT message to retrieve the text for a particular item. By default, all list boxes except ownerdrawn list boxes have this style. You can create an owner-drawn list box either with or without this style. Allows a list box to recognize and expand tab characters when drawing strings. Creates a multicolumn list box that scrolls horizontally.

WS_VSCROLL LBS_STANDARD LBS_NOTIFY

LBS_NODATA

LBS_NOREDRAW LBS_MULTIPLESEL

LBS_HASSTRINGS

LBS_USETABSTOPS

LBS_MULTICOLUMN

InstallShield 2010 User Guide

ISP-1600-UG00

1411

Chapter 41: Other Window Styles Dialog Box

Table 41-65: Window Styles for Edit, ListBox, Scrollable Text, Path Edit, and Masked Edit Controls (cont.) Value LBS_EXTENDEDSEL Description Allows the end user to select multiple items using the SHIFT key and the mouse, or key combinations. Displays a disabled vertical scroll bar when the list box does not contain enough items to scroll. Passes WM_VKEYTOITEM or WM_CHARTOITEM messages when the end user presses a key while the list box has focus. This allows an application to perform special processing on the keyboard input. Indicates that the owner of the list box is responsible for drawing the list boxs contents. Items in the list box are the same height. Indicates that the owner of the list box is responsible for drawing the list boxs contents. Items in the list box are of variable height.

LBS_DISABLENOSCROLL

LBS_WANTKEYBOARDINP UT

LBS_OWNERDRAWFIXED

LBS_OWNERDRAWVARIAB LE

Other Window Styles for Line Controls


These window style options are available for line controls. See the MSDN Library for additional information.

Task

To apply window styles to your Line control:

Click the styles to select them and click OK.


Table 41-66: Window Styles for Line Controls Value SS_SIMPLE Description Specifies a simple rectangle and displays a single line of left-aligned text in the rectangle. The text line cannot be shortened or altered in any way. Also, if the control is disabled, the control does not gray its text. Draws the left and right edges of the static control using the EDGE_ETCHED edge style. For more information, see the DrawEdge Windows API function in the MSDN Library. Draws the frame of the static control using the EDGE_ETCHED edge style. For more information, see the DrawEdge Windows API function in the MSDN Library. Draws the top and bottom edges of the static control using the EDGE_ETCHED edge style. For more information, see the DrawEdge Windows API function in the MSDN Library.

SS_ETCHEDVERT

SS_ETCHEDFRAME

SS_ETCHEDHORZ

1412

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Table 41-66: Window Styles for Line Controls (cont.) Value SS_BLACKRECT Description Specifies a rectangle filled with the current window frame color. This color is black in the default color scheme. Specifies a box with a frame drawn in the same color as the window frames. This color is black in the default color scheme. Specifies a rectangle filled with the current window background color. This color is white in the default color scheme. Specifies a box with a frame drawn with the same color as the window background. This color is white in the default color scheme. Specifies a rectangle filled with the current screen background color. This color is gray in the default color scheme. Specifies a box with a frame drawn with the same color as the screen background (desktop). This color is gray in the default color scheme. Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Creates a window with a vertical scroll bar. Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification messages when the user clicks or double-clicks the control. Specifies that the lower right corner of a static control with the SS_BITMAP or SS_ICON style is to remain fixed when the control is resized. Only the top and left sides are adjusted to accommodate a new bitmap or icon. Specifies that, if the bitmap or icon is smaller than the client area of the static control, the rest of the client area is filled with the color of the pixel in the top left corner of the bitmap or icon. If the static control contains a single line of text, the text is centered vertically in the client area of the control. Prevents a static icon or bitmap control (that is, static controls that have the SS_ICON or SS_BITMAP style) from being resized as it is loaded or drawn. If the icon or bitmap is larger than the destination area, the image is clipped. Windows NT, Windows 2000, or later: If the end of a string does not fit in the rectangle, it is truncated and ellipses are added. If a word that is not at the end of the string goes beyond the limits of the rectangle, it is truncated without ellipses. Compare with SS_PATHELLIPSIS and SS_WORDELLIPSIS.

SS_BLACKFRAME

SS_WHITERECT

SS_WHITEFRAME

SS_GRAYRECT

SS_GRAYFRAME

WS_GROUP

WS_VSCROLL SS_NOTIFY

SS_RIGHTJUST

SS_CENTERIMAGE

SS_REALSIZEIMAGE

SS_ENDELLIPSIS

InstallShield 2010 User Guide

ISP-1600-UG00

1413

Chapter 41: Other Window Styles Dialog Box

Table 41-66: Window Styles for Line Controls (cont.) Value SS_PATHELLIPSIS Description Windows 2000 or later: Replaces characters in the middle of the string with ellipses so that the result fits in the specified rectangle. If the string contains backslash (\) characters, SS_PATHELLIPSIS preserves as much as possible of the text after the last backslash. Compare with SS_ENDELLIPSIS and SS_WORDELLIPSIS. Windows NT, Windows 2000, or later: Truncates any word that does not fit in the rectangle and adds ellipses. Compare with SS_ENDELLIPSIS and SS_PATHELLIPSIS.

SS_WORDELLIPSIS

Note: SS_ENDELLIPSIS, SS_PATHELLIPSIS, and SS_WORDELLIPSIS are mutually exclusive.

Other Window Styles for Progress Bar Controls


These window style options are available for progress bar controls. See the MSDN Library for additional information.

Task

To apply window styles to your progress bar control:

Click the styles to select them and click OK.


Table 41-67: Window Styles for Progress Bar Controls Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. The progress bar displays progress status vertically, from bottom to top.

PBS_VERTICAL

Other Window Styles for Selection Tree Controls


These window style options are available for the selection tree control. See the MSDN Library for additional information.

1414

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Other Window Styles Dialog Box

Task

To apply window styles to your selection tree control:

Click the styles to select them and click OK.


Table 41-68: Window Styles for Selection Tree Controls Value WS_GROUP Description Specifies the first control in a group of controls. All controls defined with this style after the first control belong to the same group. Enables the user to edit the labels of tree view items. Displays plus (+) and minus (-) buttons next to parent items. The user taps the buttons to expand or collapse a parent items list of child items. To include buttons with items at the root of the tree view, you must also specify the TVS_LINESATROOT style. Prevents the tree view control from sending TVN_BEGINDRAG notification messages. Uses the system highlight colors to draw the selected item. Enables full-row selection in the tree view. The entire row of the selected item is highlighted, and clicking anywhere on an items row causes it to be selected. This style cannot be used in conjunction with the TVS_HASLINES style. Uses lines to show the hierarchy of items. Uses lines to link items at the root of the tree view control. This value is ignored if the TVS_HASLINES control is not also specified. Causes text to be displayed from right-to-left (RTL). Usually, windows display text left-to-right (LTR). Windows can be mirrored to display languages such as Hebrew or Arabic that read RTL. Typically, tree-view text is displayed in the same direction as the text in its parent window. If TVS_RTLREADING is set, tree-view text reads in the opposite direction from the text in the parent window. Disables ToolTips. Enables items in a tree view control to be displayed as check boxes. This style uses item state images to produce the check box effect. Enables hot tracking in a tree-view control.

TVS_EDITLABELS TVS_HASBUTTONS

TVS_DISABLEDRAGDROP

TVS_SHOWSELALWAYS TVS_FULLROWSELECT

TVS_HASLINES TVS_LINESATROOT

TVS_RTLREADING

TVS_NOTOOLTIPS TVS_CHECKBOXES

TVS_TRACKSELECT

InstallShield 2010 User Guide

ISP-1600-UG00

1415

Chapter 41: Outputs Dialog Box

Table 41-68: Window Styles for Selection Tree Controls (cont.) Value TVS_SINGLEEXPAND Description Causes the item being selected to expand and the item being unselected to collapse upon selection in the tree view. If the mouse is used to single-click the selected item and that item is closed, it will be expanded. If the user holds down the Ctrl key while selecting an item, the item being unselected will not be collapsed. Obtains ToolTip information by sending the TVN_GETINFOTIP notification. Disables horizontal scrolling in the control. The control will not display any horizontal scroll bars. Sets the height of the items to an odd height with the TVM_SETITEMHEIGHT message. By default, the height of items must be an even value.

TVS_INFOTIP

TVS_NOSCROLL

TVS_NONEVENHEIGHT

Outputs Dialog Box


The Outputs dialog displays information about a project output group in the File System Editor. This dialog is available for InstallShield projects created in Microsoft Visual Studio.

Task

To access the Outputs dialog, do one of the following: 1. 2. 3.

Select the Outputs property in the Properties window when a project output group is selected in the File System Editor. In the Files and Folders view, right-click an item in the Source computers files pane and click Resolve Project Output. In the Files and Folders view, right-click an item in the Destination computers files pane and click Resolve Project Output.

Note: If multiple project output groups are selected, information is displayed only for the first group selected.

Dialog Options
Target Name Displays the file name for the selected project output group as it will be displayed on a target computer. This field is read only. Source Path Displays the path to the project output group files on the development computer. This field is read only.

1416

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Overwrite Dialog Box

Overwrite Dialog Box


This dialog box lets you specify whether the files of the active component (the component selected in the Setup Design or Components view) overwrite already-existing versions on the target system always, never, or conditionally based on date/time stamp or version number.

Dialog Options
list box Select whether files on the target system are always overwritten, never overwritten, or conditionally overwritten based on date/time stamp or version number. The following controls are enabled only if "Overwrite files BY VERSION" or "Overwrite files BY VERSION THEN DATE (if necessary)" is selected in the list box.

Note: If a file on the target system has a version number and the file on your distribution media does not, or vice versa, the file with no version number is treated as if it had a lower version number.

Version: Newer A file on the target system is overwritten if the file on your distribution media has a higher version number. If the file on your distribution media and the file on the target system have the same version number, or if neither file has a version number, and you selected Overwrite files BY VERSION THEN DATE (if necessary) from the list box, then whether the file on the target system is overwritten is determined by which Date/Time option you select. If neither file has a version number and you selected Overwrite files BY VERSION from the list box, then the file on the target system is not overwritten. Version: Newer or Same A file on the target system is overwritten if the file on your distribution media has a higher or the same version number. If neither file has a version number and you selected Overwrite files BY VERSION THEN DATE (if necessary) from the list box, then whether the file on the target system is overwritten is determined by which Data/Time option you select. If neither file has a version number and you selected Overwrite files BY VERSION from the list box, then the file on the target system is not overwritten. Version: Older A file on the target system is overwritten if the file on your distribution media has a lower version number. If the file on your distribution media and the file on the target system have the same version number, or if neither file has a version number, and you selected Overwrite files BY VERSION THEN DATE (if necessary) from the list box, then whether the file on the target system is overwritten is determined by which Date/Time option you select.

InstallShield 2010 User Guide

ISP-1600-UG00

1417

Chapter 41: Patch Sequence Dialog Box

If neither file has a version number and you selected Overwrite files BY VERSION from the list box, then the file on the target system is not overwritten. The following controls are enabled only if Overwrite files BY DATE or Overwrite files BY VERSION THEN DATE (if necessary) is selected in the list box. Date/Time: Newer A file on the target system is overwritten if the file on your distribution media has a more recent date and time stamp. Date/Time: Newer or Same A file on the target system is overwritten if the file on your distribution media has a more recent or the same date and time stamp. Date/Time: Older A file on the target system is overwritten if the file on your distribution media has a less recent date and time stamp.

Patch Sequence Dialog Box


The Patch Sequence dialog box opens when you are creating a patch sequence in the Patch Design view.
Table 41-69: Patch Sequence Dialog Box Options Option Family Name Description Specify the name of the family of patches to which this patch belongs. Windows Installer 3.0 and later uses the patch family to compare small-update patches with all of the other patches within the same family and determine the order in which each of the patches should be applied to the target machine. To identify that a patch configuration belongs to multiple families, create a separate row on the Sequence tab for every patch family. You may want a patch to belong to multiple families, for example, if the patch can update more than one product. Target Type the product code GUID in this box if you want to associate the patch configuration with a specific product. Entry in this box is not required. To identify that a patch configuration should target multiple GUIDs, create a separate row on the Sequence tab for every GUID and family combination. Sequence Number Specify the sequence number for the patch configuration. This value indicates the placement of the patch configuration within sequence of patches that belong to the same patch family and the same target GUID (if identified).

1418

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Path Variable Recommendation Dialog Box

Table 41-69: Patch Sequence Dialog Box Options (cont.) Option Supersede previous versions Description If you want the patch to be used instead of all of the patches that have a lower sequence value and that are in the same patch family, select this check box. Selecting this check box does not guarantee that the patch will always supersede all earlier patches, since the earlier patches might belong to multiple patch families. Note that a small-update patch cannot supersede a minor upgrade patch or a major upgrade patch, regardless of whether this check box is selected.

Path Variable Recommendation Dialog Box


If you have selected the Always display the Path Variable Recommendation dialog to me option on the Path Variables tab of the Options dialog box, InstallShield displays the Path Variable Recommendation dialog box every time you associate a new source folder with your installation project. The dialog box is also displayed if you selected the Always recommend path variables option on the Path Variables tab of the Options dialog box and one of the following is true:

InstallShield can recommend more than one path variable for a particular source folder. InstallShield cannot recommend a path variable based on an existing path variable and you have not selected the auto-create check box on the Path Variables tab.

Dialog Options
Use the following path variable-based folder representation for the source folder This option provides suggested path variables or path variable combinations for you to use instead of an absolute path. For example, if you have a path variable called <MyFiles> that points to C:\Work\Files and you add a file to your installation from C:\Work\Files\Images, it is recommended that you use <MyFiles>\Images rather than the full hard-coded path C:\Work\Files\Images. This option is available only if InstallShield can recommend a path variable for the source folder. Create a new path variable To create a path variable for the source folder in which your files are located, select the Create a new path variable option. Selecting this option creates a standard path variable that is mapped to the folder in which your new files are located. Enter the new variable path name in the Path Variable Name box.

Caution: Do not enclose the path variables name in angle brackets. InstallShield automatically adds the angle brackets when you click OK.

InstallShield 2010 User Guide

ISP-1600-UG00

1419

Chapter 41: Permissions Dialog Boxes for Files and Directories

Use the following absolute path If you do not want to use a path variable to represent a particular link, select the Use the following absolute path option. The absolute path to your source folder appears below this button.

Permissions Dialog Boxes for Files and Directories


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Permissions Dialog Box


The Permissions dialog box lets you configure settings for securing files and folders for end users who run your product in a locked-down environment. You can assign permissions for a file or folder to specific groups and users. For example, you may assign Read, Write, and Delete permissions for a particular file to the Administrators group, but only Read permissions for all of the users in a different group. Depending on what is selected for the Locked-Down Permissions setting in the General Information view of your project, InstallShield adds permissions data to either the ISLockPermissions table or the LockPermissions table. To learn more, see Securing Files, Folders, and Registry Keys in a LockedDown Environment.

1420

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Permissions Dialog Boxes for Files and Directories

The following table describes the different areas on the Permissions dialog box.
Table 41-70: Areas of the Permissions Dialog Box Area Name(s) Description In this grid, you can enter any combination of domain and user names. To add an entry, right-click the grid and click New. You can modify or delete entries using the same context menu. You can enter [%USERDOMAIN] in the Domain field to represent the current users domain, and [LogonUser] (or any other property name in square brackets) in the User field to represent the user running the installation. If the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view, the User field contains a list of well-known security identifiers (SIDs). Most of the SIDs are not supported by the traditional Windows Installer handling option. The custom InstallShield handling option supports localized names for all of the SIDs that are listed in the User field. With the traditional option, if you try to use a localized name to set permissions on a non-English system, the installation may fail.

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment. Permissions Select a name in the Name(s) area, and then select or clear the check boxes in the Permissions box to configure the corresponding permissions for the file or folder. Once you have selected a permission, you can click the Advanced button to specify other associated permissions and advanced settings. If you want to explicitly deny the permissions that you are selecting in the Permissions box, select this check box. This check box is available only if the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view. The traditional Windows Installer handling option does not include support for this behavior.

Deny Access

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment.

InstallShield 2010 User Guide

ISP-1600-UG00

1421

Chapter 41: Permissions Dialog Boxes for Registry Keys

Advanced Permissions Dialog Box


If you click the Advanced button on the Permissions dialog box, the Advanced Permissions dialog box opens. The following table describes the different areas on the Advanced Permissions dialog box.
Table 41-71: Areas of the Advanced Permissions Dialog Box Area Advanced Permissions Apply these permissions to child objects Description In this box, select the check boxes for the permissions that you want to set. If you are configuring permissions for a folder and you want the permissions to be applied to all of the folders subfolders and files, select this check box. This check box is available only if the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view. The traditional Windows Installer handling option does not include support for this behavior.

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment.

Permissions Dialog Boxes for Registry Keys


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Permissions Dialog Box


The Permissions dialog box lets you configure settings for securing registry keys for end users who run your product in a locked-down environment. You can assign permissions for a registry key to specific groups and users. For example, you may assign Read, Write, and Delete permissions for a particular registry key to the Administrators group, but only Read permissions for all of the users in a different group. Depending on what is selected for the Locked-Down Permissions setting in the General Information view of your project, InstallShield adds permissions data to either the ISLockPermissions table or the LockPermissions table. To learn more, see Securing Files, Folders, and Registry Keys in a LockedDown Environment.

1422

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Permissions Dialog Boxes for Registry Keys

The following table describes the different areas on the Permissions dialog box.
Table 41-72: Areas of the Permissions Dialog Box Area Name(s) Description In this grid, you can enter any combination of domain and user names. To add an entry, right-click the grid and click New. You can modify or delete entries using the same context menu. You can enter [%USERDOMAIN] in the Domain field to represent the current users domain, and [LogonUser] (or any other property name in square brackets) in the User field to represent the user running the installation. If the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view, the User field contains a list of well-known security identifiers (SIDs). Most of the SIDs are not supported by the traditional Windows Installer handling option. The custom InstallShield handling option supports localized names for all of the SIDs that are listed in the User field. With the traditional option, if you try to use a localized name to set permissions on a non-English system, the installation may fail.

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment. Permissions Select a name in the Name(s) area, and then select or clear the check boxes in the Permissions box to configure the corresponding permissions for the registry key. Once you have selected a permission, you can click the Advanced button to specify other associated permissions and advanced settings. If you want to explicitly deny the permissions that you are selecting in the Permissions box, select this check box. This check box is available only if the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view. The traditional Windows Installer handling option does not include support for this behavior.

Deny Access

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment.

InstallShield 2010 User Guide

ISP-1600-UG00

1423

Chapter 41: Platform Suites Dialog Box

Advanced Permissions Dialog Box


If you click the Advanced button on the Permissions dialog box, the Advanced Permissions dialog box opens. The following table describes the different areas on the Advanced Permissions dialog box.
Table 41-73: Areas of the Advanced Permissions Dialog Box Area Advanced Permissions Apply these permissions to child objects Description In this box, select the check boxes for the permissions that you want to set. If you are configuring permissions for a registry key and you want the permissions to be applied to all of the keys subkey, select this check box. This check box is available only if the custom InstallShield handling option is selected for the Locked-Down Permissions setting in the General Information view. The traditional Windows Installer handling option does not include support for this behavior.

Tip: For more information on the custom InstallShield handling option and the traditional Windows Installer handling option, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment.

Platform Suites Dialog Box


Project: This information applies to the following project types:

InstallScript InstallScript Object

The Platform Suites dialog box lets you specify the platform suites with which the selected component is associated. To access this dialog box, click the ellipsis button (...) in the Platform Suite(s) setting for a component in the Components view or the Setup Design view.
Table 41-74: Platform Suites Dialog Box Settings Setting Install without performing platform suite verification on the target system Install when the target system has one or more of the specified platform suite(s) Description The installation of the components files does not depend on the target systems suite.

The installation installs the components files only if at least one of the selected suites exists on the target system. If you select this option, select the check boxes of the appropriate platform suites.

1424

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Platforms Dialog Box

Table 41-74: Platform Suites Dialog Box Settings (cont.) Setting Install only when the target system has all the specified platform suite(s) Description The installation installs the components files only if all of the selected suites exist on the target system. If you select this option, select the check boxes of the appropriate platform suites. To see all of the available suites, select this check box. The full list are those that can be specified in the Windows APIs OSVERSIONINFOEX data structure (as documented on MSDN). To see only the most common suites, clear this check box.

Show all platform suites

Platforms Dialog Box


Project: Some of this information applies to InstallScript projects, and some of this information applies to InstallScript MSI projects.

Depending on how you launch the Platforms dialog box, you can specify either of the following:

The platforms that you want to be available when you to select operating system requirements for components or releases in your project. This is available for InstallScript projects. The platform requirements for a component. This is available for InstallScript and InstallScript MSI projects.

Platform Support at the Project Level (InstallScript Projects)


If you access the Platforms dialog box at the project level, you can specify the platforms that you want to be available when you to select operating system requirements for components or releases in your project.

Note: Specifying platforms at the project level does not create target system requirements for running the installation. To create target system requirements in an InstallScript project, you can use the SYSINFO structure to identify the operating platform of the target system.

Task

To access the Platforms dialog box at the project level: 1. 2.

In the View List under Installation Information, click General Information. In the Platform Filtering setting, click the ellipsis button (...).

InstallShield 2010 User Guide

ISP-1600-UG00

1425

Chapter 41: Platforms Dialog Box

The following table shows the settings that are displayed on the Platforms dialog box when you are accessing it at the project level.
Table 41-75: Platforms Dialog Box Settings for a Project Setting The project supports all platforms that InstallShield supports Description Select this option if you want InstallShield to list all of the supported run-time platforms for the following settings:

Operating Systems setting at the component level (InstallScript and InstallScript MSI projects) Platform(s) setting at the release level (InstallScript projects)

If you select this option, you can designate that a particular component or release in your project is targeted for any one or more supported platforms. The project supports only the platforms that are selected below Select this option if you want InstallShield to list only some platforms that are displayed for the following settings:

Operating Systems setting at the component level (InstallScript and InstallScript MSI projects) Platform(s) setting at the release level (InstallScript projects)

Then select the platforms that should be displayed.

Tip: To select multiple consecutive operating systems, select the first file, press and hold SHIFT, and select the last operating systems. To select multiple nonconsecutive operating systems, select the first operating systems, press and hold CTRL, and select each additional operating systems. In general, if a platform is not listed for this setting at the project level, you cannot designate that a particular component or release in your project is targeted for that platform.

Platform Support at the Component Level (InstallScript and InstallScript MSI Projects)
If you access the Platforms dialog box at the component level, you can specify which platforms are supported by the selected component.

Task

To access the Platforms dialog box at the component level: 1. 2. 3.

In the View List under Organization, click Components. In the Components explorer, click the component whose platform requirements you want to configure. Click the value of the Operating Systems setting, and then click the ellipsis button (...).

1426

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Prerequisite Condition Dialog Box

The following table shows the settings that are displayed on the Platforms dialog box when you are accessing it at the component level.
Table 41-76: Platforms Dialog Box Settings for a Component Setting The files in this component should be installed when the setup is running on any platform The files in this component should be installed only when the setup is running on one of the platforms checked below Description If the selected component is operating system independentthat is, if none of the component's data are specific to certain operating systemsselect this option. If the selected component is specific to one or more operating systems, select this option and then select the appropriate operating systems. If the target machine's operating system does not match one of the operating systems that are specified for this setting, the component is not installed.

Tip: To select multiple consecutive operating systems, select the first file, press and hold SHIFT, and select the last operating systems. To select multiple nonconsecutive operating systems, select the first operating systems, press and hold CTRL, and select each additional operating systems.

Project: For InstallScript projects, the list of operating systems that are displayed in this dialog box excludes any of the operating systems whose check box is cleared at the project level. Note that if the selected component supports platforms that are not supported by a release, InstallShield does not include the component in the release at build time.

Prerequisite Condition Dialog Box


The Prerequisite Condition dialog box opens when you click the Add button on the Conditions tab of the InstallShield Prerequisite Editor. It also opens when you select an existing condition on this tab and then click the Modify button. The Prerequisite Condition dialog box lets you define installation conditions that determine whether an InstallShield prerequisite is already installed on the target machine. Failure to do so causes problems because the target system behaves as if the prerequisite was not properly installed. You can also create installation conditions that specify operating system, registry, or file requirements.
Table 41-77: Prerequisite Condition Dialog Box Options Option A registry key does or does not exist Description If you select this option, type the name of the registry key and select the appropriate option for 64-bit machines. If target machines that have this registry key should meet this installation condition, select If the specified registry key exists. If target machines that do not have this registry key should meet this installation condition, select If the specified registry key does not exist.

InstallShield 2010 User Guide

ISP-1600-UG00

1427

Chapter 41: Prerequisite Condition Dialog Box

Table 41-77: Prerequisite Condition Dialog Box Options (cont.) Option A registry entry has a specified value Description If you select this option, type the name of the registry key, the name of the value, and the value data. Also, select the appropriate option for 64-bit machines. In addition, select the option that should be used to compare the registry entry specified in this dialog box with the registry entry on the target machine. For example, if you specify 1.4.2 in the Value data box and select is greater than, target machines that have a value greater than 1.4.2 for this registry entry meet this installation condition. A registry entry has a specified version value If you select this option, type the name of the registry key, the name of the value, and the value data. The value data should be a version number. Note that all leading zeros for every field of the version number are ignored. For example, 3.5.3.0010 is greater than 3.5.3.009, and 3.5.3.009 is greater than 3.5.3.01. Select the appropriate option for 64-bit machines. In addition, select the option that should be used to compare the registry entry specified in this dialog box with the registry entry on the target machine. A file does or does not exist If you select this option, do one of the following:

Specify the path and name for the file. To specify a predefined folder, select the appropriate property in the list. The available properties are [CommonFiles64Folder], [CommonFilesFolder], [ProgramFiles64Folder], [ProgramFilesFolder], [System64Folder], [SystemFolder], and [WindowsFolder]. If you select one of the 64-bit folder locations, the installation checks the 64-folder location on 64-bit target systems and the 32-folder location on 32-bit target systems.

Specify just the file namewithout the path or a property. The installation will search for the specified file in all directories defined for the PATH environment variable on the target machine. Specify a registry key as a property. If you do this, the installation will resolve the registry key with the registry value. Note that the last element of the registry path is treated as a value name. If a backslash is the last character of the path, the value of the default registry entry for that registry key is used. For example, if you type the following as the value, the installation checks if the path specified as the value for the HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME registry entry contains a bin directory with a file named oci.dll:
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME]bin\oci.dll

If target machines that have this file should meet this installation condition, select If the specified file is found in the location specified above. If target machines that do not have this file should meet this installation condition, select If the specified file is not found in the location specified above.

1428

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Prerequisite Condition Dialog Box

Table 41-77: Prerequisite Condition Dialog Box Options (cont.) Option A file with a certain date exists Description If you select this option, do one of the following:

Specify the path and name for the file. To specify a predefined folder, select the appropriate property in the list. The available properties are [CommonFiles64Folder], [CommonFilesFolder], [ProgramFiles64Folder], [ProgramFilesFolder], [System64Folder], [SystemFolder], and [WindowsFolder]. If you select one of the 64-bit folder locations, the installation checks the 64-folder location on 64-bit target systems and the 32-folder location on 32-bit target systems.

Specify just the file namewithout the path or a property. The installation will search for the specified file in all directories defined for the PATH environment variable on the target machine. Specify a registry key as a property. If you do this, the installation will resolve the registry key with the registry value. Note that the last element of the registry path is treated as a value name. If a backslash is the last character of the path, the value of the default registry entry for that registry key is used. For example, if you type the following as the value, the installation checks if the path specified as the value for the HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME registry entry contains a bin directory with a file named oci.dll:
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME]bin\oci.dll

In addition, type the date andif appropriatethe time. For example:


4/26/2004 3:57:46 PM

Then select the appropriate match option to indicate when to run the InstallShield prerequisite. A file with a certain version exists If you select this option, do one of the following:

Specify the path and name for the file. To specify a predefined folder, select the appropriate property in the list. The available properties are [CommonFiles64Folder], [CommonFilesFolder], [ProgramFiles64Folder], [ProgramFilesFolder], [System64Folder], [SystemFolder], and [WindowsFolder]. If you select one of the 64-bit folder locations, the installation checks the 64-folder location on 64-bit target systems and the 32-folder location on 32-bit target systems.

Specify just the file namewithout the path or a property. The installation will search for the specified file in all directories defined for the PATH environment variable on the target machine. Specify a registry key as a property. If you do this, the installation will resolve the registry key with the registry value. Note that the last element of the registry path is treated as a value name. If a backslash is the last character of the path, the value of the default registry entry for that registry key is used. For example, if you type the following as the value, the installation checks if the path specified as the value for the HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME registry entry contains a bin directory with a file named oci.dll:
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ORACLE_HOME]bin\oci.dll

In addition, type the version number of the file. For example:


6.7.8.9

Then select the appropriate match option to indicate when to run the InstallShield prerequisite.

InstallShield 2010 User Guide

ISP-1600-UG00

1429

Chapter 41: Prerequisite Condition Dialog Box

Table 41-77: Prerequisite Condition Dialog Box Options (cont.) Option Setup is running on a specified platform Description If you select this option, click one of the predefined platforms in the Select which platform the prerequisite should be run on box, or select Custom to define your own platform requirements. To specify a range of service pack numbers for which this prerequisite condition is true, use the Service Packs boxes. For example, if target system must have service pack 2, 3, or 4, enter 2 in the first box and 4 in the second box. To target all future service packs, leave the second box blank. To target only service pack 3, enter 3 in both boxes. If you select Custom to define your own operating system requirements, you can configure any one or more of the following settings in the Custom area:

Platform IDSelect the required platform. If the value that you select matches the dwPlatformId member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the operating system condition evaluates as true.

Major VersionSpecify the required major version of the operating system. If the value that you specify matches the dwMajorVersion member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the operating system condition evaluates as true. If you type 0 in this box, the operating system condition that InstallShield creates does not include any major version or minor version requirements; the behavior is the same if you leave the Major Version and Minor Version boxes blank.

Minor VersionSpecify the required minor version of the operating system. If the value that you specify matches the dwMinorVersion member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the operating system condition evaluates as true. Note that 0 is a valid value for this box.

1430

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Privileges Dialog Box

Table 41-77: Prerequisite Condition Dialog Box Options (cont.) Option Setup is running on a specified platform (cont.) Description

Product (OS) TypeSelect the required operating system type. If the value that you select matches the wProductType member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the condition evaluates as true. Note that if the InstallShield prerequisite supports both servers and domain controllers, you can select the Server or Domain Controller option.

Processor ArchitectureSelect the required processor architecture (for example, 32-bit or 64-bit Windows). If the architecture that you select matches the architecture of the target systems operating system, this part of the operating system condition evaluates as true.

Minimum CSD VersionSpecify the minimum required service pack or other version information for the operating system. Note that this setting is provided for compatibility with InstallShield prerequisites that were created with earlier versions of InstallShield, and to enable subversions of Windows 9x platforms to be distinguished. Using this setting to specify a particular service pack is not recommended; if you need to specify a particular service pack, use the Minimum Service Pack box. If the value that you specify is the same version as or an earlier version than the szCSDVersion member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the operating system condition evaluates as true. For example, if you specify A and the szCSDVersion value on the target machine is B, this part of the operating system condition evaluates as true. It evaluates as false if you specify B but the value on the target machine is A. Similarly, if you specify Service Pack 1 and the value on the target machine is Service Pack 2, this part of the operating system condition evaluates as true. It evaluates as false if you specify Service Pack 2 but the value on the target machine is Service Pack 1. Note that to prevent comparison problems, any leading and trailing spaces in the version that you specify and in the value of the szCSDVersion member on the target system are ignored.

Setup is running on a specified platform (cont.)

Minimum Build NoSpecify the minimum required build number of the operating system. If the value that you specify is the same version as or an earlier version than the dwBuildNumber member of the OSVERSIONINFOEX structure of the target systems operating system, this part of the operating system condition evaluates as true.

For more information on specifying an operating system condition, see Adding an Operating System Condition for an InstallShield Prerequisite. For details about the OSVERSIONINFOEX structure, see OSVERSIONINFOEX on the MSDN Web site.

Privileges Dialog Box


Project: This information applies to the following project types:

InstallShield 2010 User Guide

ISP-1600-UG00

1431

Chapter 41: Product Condition Builder Dialog Box

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Privileges dialog box lets you specify one or more privileges that are required by the service that you are configuring. This dialog box opens in the following scenario:

You are configuring a service in the Advanced Settings area for a component in the Setup Design view (installation projects only) or the Components view. The Change list of required privileges option is selected in the Configuration Type setting for an event in the Configure Settings category of settings in the right pane, and you click the ellipsis button (...) in the Arguments setting for that event.

Select one or more check boxes. The change takes effect the next time that the system is started.

Product Condition Builder Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The Product Condition Builder dialog box simplifies the process of creating install conditions by providing a selection of valid Windows Installer properties and conditional expression operators.

1432

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Project Settings Dialog Box

For example, if your product requires 64 MB of RAM in order to run properly, you can use the Product Condition Builder dialog box to create a condition. At run time, the Windows Installer checks the target system to determine how much RAM is installed. If it is less than 64 MB, the Windows Installer displays an error message and exits the installation.
Table 41-78: Product Condition Builder Dialog Box Settings Setting Conditions Description This box displays a grid with the following columns:

ConditionThis column is where you define the conditions. You can type a condition directly in this column, or you can use the Properties list, the Operators list, and the Add buttons to build a condition statement. MessageThis column is where you specify the error message that should be displayed if the condition evaluates to false. When you type a value for this column, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

To add a new condition to this box, click the New Condition button, and then enter the appropriate information in the Condition and Message columns. To delete a condition in this box, select the condition, and then click the Delete Conditions button.

Important: When you click the OK button on this dialog box, InstallShield performs basic condition validation; however, you should still double-check that your condition statements evaluate to the expected outcome. For more information and example conditions, see Building Conditional Statements. Windows Installer dialogs, which display the text that you specify in the Message column, do not recognize the escape sequences \r (carriage return), \n (new line), or \t (tab). Properties This list contains common Windows Installer properties, as well as any properties that have been added in the Property Manager view. Select the property that you want to evaluate, and then click the Add button next to this list. If the list does not contain the property that you want to evaluate, you can type the appropriate property name in the Condition column. Operators This list contains all of the valid operators that are recognized by the Windows Installer. Select the operator that you want to use and then click the Add button next to this list. InstallShield appends the operator to the conditional statement in the Conditions box.

Project Settings Dialog Box


The Project Settings dialog box displays and lets you modify information about the open project.

InstallShield 2010 User Guide

ISP-1600-UG00

1433

Chapter 41: Project Settings Dialog Box

This dialog box is displayed with the following tabs when you select the Project menus Settings command. This dialog box is displayed with only the last two of the following tabs when you right-click an item in the Objects views InstallShield Objects/Merge Modules pane and select Register new object or Properties. In the last case, all properties are uneditable.

Project Tab Application Tab (in InstallScript Projects) (in Windows Installerbased projects) Application Tab (in InstallScript Projects) (in InstallScript and InstallScript Object projects) Platforms Tab (in InstallScript and InstallScript Object projects) Languages Tab Maintenance Tab (in InstallScript projects) Language-Independent Object Properties Tab (in InstallScript Object projects) Language-Specific Object Properties Tab (in InstallScript Object projects)

Project Tab
The Project tab on the Settings dialog box displays basic information about the open project. This dialog box opens when you select the Project menus Settings command.

Author
(Optional) Enter the name of the project author.

Comments
(Optional) Enter any comments about the project.

Application Tab (in Windows InstallerBased Projects)


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1434

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Project Settings Dialog Box

The Application tab on the Settings dialog box lets you view and modify information about the product that is installed by the open project. This dialog box opens when you click the Settings command on the Project menu.
Table 41-79: Application Tab Settings Setting Product Code Description This setting displays a GUID that uniquely identifies this product. To have InstallShield generate a different GUID for you, click the Change button next to this setting. Since this code uniquely identifies your product, changing the product code after you have already distributed your release is not recommended. For more information, see Setting the Product Code. Upgrade Code This setting displays the GUID that can be used for your products upgrade code. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The upgrade code is a GUID that identifies a related set of products. The Windows Installer uses a product's upgrade code when performing major upgrades of an installed product. The upgrade code, stored in the UpgradeCode property, should remain the same for all versions of a product. For more information, see Setting the Upgrade Code. Product Name Enter the name of the product. For information on how the product name is used, see Specifying a Product Name. Product Version Enter the version number for your product. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535. For more information, see Specifying the Product Version. Application Type Select the type of application from the list or type the name of an application type if it is not listed. This information is stored in the project file and is for your reference only. It is never displayed to the end user.

Tip: You can also configure the aforementioned settings in the General Information view.

Application Tab (in InstallScript Projects)


Project: This information applies to the following project types:

InstallScript

InstallShield 2010 User Guide

ISP-1600-UG00

1435

Chapter 41: Project Settings Dialog Box

InstallScript Object

The Application tab on the Settings dialog box lets you view and modify information about the project that is installed by the open project. This dialog box opens when you click the Settings command on the Project menu.
Table 41-80: Application Tab Settings Setting Product GUID Description Enter a GUID that uniquely identifies this product. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The product GUID is used to associate uninstallation or maintenance with the original installation. A new GUID is automatically generated for each new project that you create, including copies of existing projects. Once you have changed a projects product GUID, its previous GUID cannot be recovered. For these reasons, changing a projects product GUID is typically not necessary and should be approached with caution. For more information, see Setting the Product GUID. Product Name Enter the name of the product. For information on how the product name is used, see Specifying a Product Name.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. The product name is stored in the InstallScript system variable IFX_PRODUCT_NAME. Product Version Enter the version number for your product. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535. For more information, see Specifying the Product Version.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value.

1436

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Project Settings Dialog Box

Table 41-80: Application Tab Settings Setting Company Name Description Enter the name of your company. This value is used in the default script to set TARGETDIR (if the string entry COMPANY_NAME does not exist); it can be retrieved at run time by calling the MediaGetData function.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. Executable File Enter the name of the applications main executable file. This value can be retrieved at run time by calling the MediaGetData function.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. Application Type Select the type of application from the list or type the name of an application type if it is not listed. This information is stored in the project file and is for your reference only. It is never displayed to the end user. Enter a product URL. This information is stored in the project file and is for your reference only. It is never displayed to the end user.

URL

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value.

Tip: You can also configure the aforementioned settings in the General Information view.

Caution: You must specify a non-null value in the Product Version box; otherwise, build error -7044 occurs.

Platforms Tab
Project: This information applies to the following project types:

InstallScript InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

1437

Chapter 41: Project Settings Dialog Box

The Platforms tab on the Settings dialog box is where you specify the platforms that you want to be available when you to select operating system requirements for components or releases in your project.

Note: Specifying platforms at the project level does not create target system requirements for running the installation. To create target system requirements in an InstallScript project, you can use the SYSINFO structure to identify the operating platform of the target system.

The following table shows the settings that are displayed in the Platforms tab.
Table 41-81: Platforms Dialog Box Settings for a Project Setting The project supports all platforms that InstallShield supports Description Select this option if you want InstallShield to list all of the supported run-time platforms for the following settings:

Operating Systems setting at the component level (InstallScript and InstallScript MSI projects) Platform(s) setting at the release level (InstallScript projects)

If you select this option, you can designate that a particular component or release in your project is targeted for any one or more supported platforms. The project supports only the platforms that are selected below Select this option if you want InstallShield to list only some platforms that are displayed for the following settings:

Operating Systems setting at the component level (InstallScript and InstallScript MSI projects) Platform(s) setting at the release level (InstallScript projects)

Then select the platforms that should be displayed.

Tip: To select multiple consecutive operating systems, select the first file, press and hold SHIFT, and select the last operating systems. To select multiple nonconsecutive operating systems, select the first operating systems, press and hold CTRL, and select each additional operating systems. In general, if a platform is not listed for this setting at the project level, you cannot designate that a particular component or release in your project is targeted for that platform.

Languages Tab
The Languages tab on the Settings dialog box lets you view and modify the list of languages included in the open project. This dialog box opens when you click the Settings command on the Project menu.

check boxes
A checked check box next to a language indicates that the language is included in the project; an unchecked check box indicates that the language is not included. To add or remove a language from the project, click its check box to toggle it to the desired state.

1438

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Project Settings Dialog Box

Removing a language from the project also removes it from any components or releases that had been using that language.

Maintenance Tab
Project: This information applies to InstallScript projects.

The Maintenance tab on the Settings dialog box lets you select an option for the behavior of your setup when your end user reruns it. This dialog box opens when you click the Settings command on the Project menu. The Multi-Instance option lets your end users run a setup multiple times as a first setup, rather than a maintenance setup. For more information on these options, see Running an InstallScript Installation Multiple Times.

Language-Independent Object Properties Tab


Project: This information applies to InstallScript Object projects.

The Language-Independent Object Properties tab contains basic information about your object, such as the name of the object, the company that created it, and the location of the object. This dialog box opens when you select the Project menus Settings command in an InstallScript object project. This dialog box also opens in an InstallScript project when you register an object from within the Objects view, or you right-click an object in the Objects view and click Properties. In the last case, all properties are uneditable.

Object Wizard
This option allows you to specify the type of wizard, if any, that you would like to use for your objects default language. The following wizard choices are available:

No WizardSelect this option if your object does not require a wizard. Use InstallShield Object Stock WizardSelect this option to have InstallShield create a wizard for you based on the properties you created for your object. All read-only properties will be displayed but will not be editable. All read/write properties will be changeable by the user. Writeonly properties will not be displayed.

Note: The InstallShield stock wizard does not support array properties. If your objects properties require array properties, you will need to create your own wizard.

Use My Custom WizardSelect this option to use a wizard you created. InstallShield allows you to use a wizard created with either Visual C++ or Visual Basic. To use a wizard created with one of these two programs, enter the path to the DLL you created, or click the browse (...) button to navigate to that file.

The following controls are not displayed when you select the Project menus Settings command.
InstallShield 2010 User Guide ISP-1600-UG00 1439

Chapter 41: Project Settings Dialog Box

Company
Enter the name of the company responsible for creating this object.

Version
Enter the version of this object.

Media File
Enter the path to the objects media file (Data1.hdr file), or click the browse button to navigate to that file.

Language-Specific Object Properties Tab


Project: This information applies to InstallScript Object projects.

The Language-Specific Object Properties tab contains basic information about your object, such as the name of the object, the company that created it, and the location of the object. This dialog box opens when you select the Project menus Settings command in an InstallScript object project. This dialog box also opens in an InstallScript project when you register an object from within the Objects view, or you right-click an object in the Objects view and click Properties. In the last case, all properties are uneditable.

IDE Language
Select the language for which you want to specify object information. Available options are English and Japanese.

Use Default
Disabled if the default language, English, is selected. Check this box to specify that the object, when displayed in the selected language, use the same information that you specified for the default language. The following controls are enabled only if the Use Default check box is unchecked:

Display Name
Enter the name of your object as you would like it to appear in the object gallery.

Short Name
Enter a shortened version of your objects name, if necessary. You can enter the same name as entered in the Display Name field.

HTML Help
Enter the path to the help file for this object, or click the browse (...) button to navigate to this file. This help file must consist of a single .htm file.

1440

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Rename Key Dialog Box

Icon File
Enter the path to the icon file for your object, or click the browse (...) button to navigate to this file. The icon you choose will be displayed next to your object in the object gallery. The icon you use for your object needs to be sized to 16x16 with a maximum of 16 colors.

Rename Key Dialog Box


This dialog box is displayed if you click Edit after selecting Rename on the Resolve Conflict dialog box. The Rename Key dialog box presents a field in which you can provide a new key value for the exported dialog, component, or custom action. When you rename the exported item, you avoid the conflict, assuming that no objects with the new name exist in the target project file.

Dialog Options
Table 41-82: Rename Key Dialog Box Options Option Key Value Description Type a new key value or name for the item in this field and press OK to rename the item.

Required Features Dialog Box


Project: This information applies to the following project types:

InstallScript InstallScript MSI InstallScript Object

The Required Features dialog box lets you specify features that must be installed if the current feature is installed. This dialog box is launched when you click the ellipsis button (...) in the Required Features setting for a feature in the Setup Design view or the Features view. The Required Features dialog box has a Required Features for SelectedFeatureName box that shows all of the features in your project. Select the check box for each feature that the current feature requires.

Project: The check box for the current feature is automatically selected in InstallScript MSI projects. It is automatically cleared in InstallScript and InstallScript Object projects; in either case, the selection status cannot be changed, and it does not affect whether the feature is installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1441

Chapter 41: Resolve Conflict Dialog Box

Resolve Conflict Dialog Box


This dialog identifies a conflict when you are exporting a dialog, component, or custom action to another project. A conflict occurs when the target project has an item with the same name as but different properties than the one you are exporting. Resolve the conflict by selecting one of the options and clicking OK, or by renaming the item in a key column. If you click Cancel, the item is not exported.

1442

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Resolve Conflict Dialog Box

Dialog Options
Table 41-83: Resolve Conflict Dialog Box Options Option Property Sheet Description This control lists all of the properties of the dialog, control, component, or custom action. The existing value is the current value in the project file to which you are exporting the item. The new value is the value you want to replace it with from the project you have open. Key icons identify key columns in the record. If there is a conflict between a new and existing value, that line appears in red. Your selection for resolving the conflict determines whether or not the existing item and its properties are overwritten. Skip Select this option to continue exporting, but leave the current value for the conflicting properties. Select this option to continue exporting, but leave the current value for the conflicting properties in this object and for all conflicts that arise during this export. If you select this option, the Resolve Conflict dialog is not displayed for any other conflicting records. Select this option and click OK to replace the existing value with the new value for all properties in this object. Select Overwrite all to overwrite the existing value for this object and for all conflicts that arise in this export. If you select this option, the Resolve Conflict dialog is not displayed for any other conflicting records. Select this option and click Edit to display the Rename Key dialog box. The Edit button is enabled when the focus is on one of the key columns and the Rename option is selected.

Skip all

Overwrite

Overwrite All

Rename

Edit

Renaming Items

Task

You can display the Rename dialog to rename an item in one of the key columns (identified with the key icon) by doing any of the following: 1. 2. 3.

Double-click when your cursor is on the key column. Press the space bar when your cursor is on the key column. Select Rename and click Edit.

InstallShield 2010 User Guide

ISP-1600-UG00

1443

Chapter 41: Save As Dialog Box

Save As Dialog Box


On the File menu, click Save As to open the Save As dialog box. This lets you save a copy of the open project as a template or as a new project with a different name and location.

Dialog Box Settings


The Save As dialog box is a standard Windows dialog box. To display detailed help for any control except the following ones, select the control and press F1.
Table 41-84: InstallShield-Specific Settings on the Save As Dialog Box Setting Save as type Project: The Save as type option is available for the following project types: Basic MSI InstallScript InstallScript MSI Merge Module Description

The Save as type list enables you to specify the type of file that you are saving. To create a template from the current project, select InstallShield Template (.ist). Create Project Name subfolder and save the project in the created folder This check box controls where the project file is located on your system. To create a <Project Name> subfolder in the location specified in the Project Location box (on the File Locations tab of the Options dialog box) and to save the project in that subfolder, select this check box. For projects that contain InstallScript, the Script Files folder is also created in this subfolder. To save the .ism project in the location specified in the Project Location box, clear this check box. Create and assign a new project GUID to the saved project Update the project settings appropriately based on the new project name If the new projects GUID should be different than the GUID of the original project, select this check box. If the new projects GUID should be the same GUID of the original project, clear this check box. To use the name that you specified in the File name box as the value for the Project Name setting in the General Information view of the new project, select this check box. If the value of the new projects Name setting should be the same as that of the original project, clear this check box.

Script Conversion Dialog Box


InstallShield uses different terminology for InstallScript function names. For example, InstallShield uses the term feature where InstallShield Professional uses component, and vice versa. See Script Changes: Lexicon Conversion for more information. When you open an .ipr file in InstallShield, this dialog allows you to indicate whether you want InstallShield to automatically update your script (.rul) file to use the InstallShield lexicon.

1444

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: SCM Pre-shutdown Delay Dialog Box

Note: The InstallShield Help Library and other documentation uses the InstallShield script terminology.

SCM Pre-shutdown Delay Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The SCM Pre-shutdown Delay dialog box lets you specify the length of the time that the Service Control Manager should wait before proceeding with other shutdown tasks. This dialog box opens in the following scenario:

You are configuring a service in the Advanced Settings area for a component in the Setup Design view (installation projects only) or the Components view. The Configure SCM pre-shutdown delay option is selected in the Configuration Type setting for an event in the Configure Settings category of settings in the right pane, and you click the ellipsis button (...) in the Arguments setting for that event.

Select the appropriate option. To reset the time delay to the default of 3 minutes, select the Default option. The Service Control Manager waits for the specified period of time after sending the SERVICE_CONTROL_PRESHUTDOWN notification to the service. The change takes effect the next time that the system is started.

Select File Dialog Box


Use this dialog to enter a file into the DuplicateFile table in the Direct Editor.

Dialog Options
Component Select the component that contains the file you want to enter in this table. Files (*.*) Select the file that you want to include in this table.

InstallShield 2010 User Guide

ISP-1600-UG00

1445

Chapter 41: Select Icon Dialog Box

Select Icon Dialog Box


The Select Icon dialog box opens when you are using the Windows Mobile Wizard and you click the Select Icon button on the Desktop Icon Information panel. The Select Icon dialog box enables you to browse for an icon in .ico files, .dll files, and .exe files. This simplifies the process of specifying the location of the icon file, and the index of the icon within the file.

Task

To select an icon: 1. 2.

In the File name box, type the path to the file that has the icon and press Enter. As an alternative, you can click the Browse button to find the file. The Icon box shows all of the icons within the file. When you specify an icon file, you can select the icon to be used with the mouse or the arrow keys. Select the View large icons option or the View small icons option to preview the icons in the box as they appear in the standard 32 32 and 16 16 sizes.

Note: The View large icons and View small icons options have no effect on the index of the icon selected. They are used only to preview the icons in either size.

Select Media Location Dialog Box


For MSI Databases, choose where you want to place the new file(s) on the source media. If you are creating a .cab file, you can choose to stream the file(s) into the package.

Project: For MSM Databases, the File Location options are disabled since merge modules require you to store your files in a .cab file which is internal to the MSM.

Note: The option to extract COM information is only enabled when you drag files to a folder or when you add a single file to a component that does not already have any existing files. As a result, the COM file is the only file in the particular component.

Select SQL Server Dialog Box


The Select SQL Server dialog box opens when you are using the Database Import Wizard and you click the Browse button for the server name on the SQL Server panel. The Select SQL Server dialog box enables you to select the SQL Server whose database you are importing.

1446

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Select String Dialog Box

Select String Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The Select String dialog box shows the collection of language-independent identifiers and corresponding language-specific values for the default language of your project. This dialog box lets you select or create a string identifier that you can use in place of a hard-coded text string.

Accessing the Select String Dialog Box


The Select String dialog box is available from within the script editor pane in the InstallScript view. It is also available in other places throughout InstallShield. For example, if you click the ellipsis button (...) in one of the settings that accepts localizable text, the Select String dialog box opens, enabling you to select or create a string entry that you want to use for the selected setting. The Display Name and Description settings for a feature are two examples of a setting that accepts localizable text.

Working with the Select String Dialog Box


The Select String dialog box consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A spreadsheetlike table

Each row in the table represents a string entry in your project. The following table describes all of the buttons and other controls that are displayed in the Select String dialog box.
Table 41-85: Controls on the Select String Dialog Box Name of Control New Description Displays the String Entry dialog box, which lets you specify a new string identifier, a value, and internal comments. Deletes the selected string entry or string entries. Filters the strings that are displayed in the Select String dialog box according to the string that you specify in this text box. Use this group box area to group rows in the Select String dialog box. This dialog box supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the dialog box hierarchically according to column arrangement in the group box.

Delete Type a string to filter by

Drag a column header here to group that column

InstallShield 2010 User Guide

ISP-1600-UG00

1447

Chapter 41: Serial Number Violation Dialog Box

The following table describes each of the columns in the Select String dialog box.
Table 41-86: Columns in the Select String Dialog Box Column Identifier Description This column contains the language-independent ID for the string. Each string identifier in a project is linked to one or more values. This column shows the run-time string.

Value

Project: In Basic MSI, InstallScript MSI, and Merge Module projects, some of the string values contain Windows Installer properties inside square bracketsfor example, Install [ProductName]. At run time, the property and brackets are replaced by the property value. String values in these same project types may also contain font information in curly bracketsfor example, {&MSSansBold8}OK. The font information indicates style details that should be used to display the strings at run time. Comments This column contains internal note about the string entries. The comments are not displayed at run time. This column lists the date and time that the string entry was last modified.

Modified

Serial Number Violation Dialog Box


The Serial Number Violation dialog box opens when InstallShield detects that the serial number entered is already in use. InstallShield will not start for 20 minutes unless a unique, valid serial number is entered.

Task

To change the serial number: 1. 2.

Click Change. The Serial Number dialog box opens. In the Serial Number box, type a unique, valid serial number. Dashes are not required.

For information on securing valid licensing, visit http://www.installshield.com.

Server Locations Dialog Box


Project: This information applies to Transform projects.

The Server Locations dialog box opens when you click the ellipsis button (...) in the Server Locations setting of the General Information view. The Server Locations dialog box lets you specify network and URL paths to the products installation package and related files so that Windows Installer can find
1448 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Service Options Dialog Box for a Time Delay of an Auto-Start Service

them if they are needed. For example, if an end user installs the product from a network server or Web site and one or more of the features were set to be installed on first use, Windows Installer may need access to the .msi package and related files on the server or Web site sometime after the initial installation. InstallShield adds the paths that you specify to the SOURCELIST property. Windows Installer appends this list to the end of an end users existing source list for the product at run time. The validity of the server location that you specify is determined when the installation needs to access the server remotely. That is, if a server is not available, or if you added an invalid server, the entry will be ignored if the resource is needed, and errors might be generated. Each location that is specified must have the complete source for the installation. The entire directory tree at each source location must be the same and must include all of the required source files, including any .cab files. Each location must have an .msi file with the same file name and product code.

Tip: Server paths can contain environment variables that are identified with a percent sign (%). For example, the following path uses the Home environment variable:
\\Server1\%Home%\Office

Table 41-87: Server Locations Dialog Box Settings Setting Source Paths New Delete Move Up Move Down Description This box shows the list of paths that you have specified. Click this button to add a new path to the Source Paths box. Click this button to delete the selected path from the Source Paths box. Click this button to move the selected path higher in the list of paths. Click this button to move the selected path lower in the list of paths.

Service Options Dialog Box for a Time Delay of an Auto-Start Service


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

1449

Chapter 41: Service Options Dialog Box for Running Recovery Actions

The Service Options dialog box lets you specify whether the Windows service that you are configuring should be started after other auto-start services plus a time delay have elapsed. This dialog box opens in the following scenario:

You are configuring a service in the Advanced Settings area for a component in the Setup Design view (installation projects only) or the Components view. The Configure time delay of an auto-start option is selected in the Configuration Type setting for an event in the Configure Settings category of settings in the right pane, and you click the ellipsis button (...) in the Arguments setting for that event.

Select the appropriate option. The change takes effect the next time that the system is started.

Service Options Dialog Box for Running Recovery Actions


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Service Options dialog box lets you specify when the recovery actions should be run for the service that you are configuring. This dialog box opens in the following scenario:

You are configuring a service in the Advanced Settings area for a component in the Setup Design view (installation projects only) or the Components view. The Configure when to run recovery actions option is selected in the Configuration Type setting for an event in the Configure Settings category of settings in the right pane, and you click the ellipsis button (...) in the Arguments setting for that event.

Select the appropriate option. The change takes effect the next time that the system is started.

Service SID Dialog Box


Project: This information applies to the following project types:


1450

Basic MSI InstallScript MSI


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 41: Set File(s) URL Dialog Box

Merge Module MSI Database MSM Database Transform

The Service SID dialog box lets you specify the appropriate service security identifier (SID) that you want to add. This dialog box opens in the following scenario:

You are configuring a service in the Advanced Settings area for a component in the Setup Design view (installation projects only) or the Components view. The Add a service SID type to the process token option is selected in the Configuration Type setting for an event in the Configure Settings category of settings in the right pane, and you click the ellipsis button (...) in the Arguments setting for that event.

Select the appropriate option. Note that if multiple services are hosted in the same process and one service has the restricted service SID, all services must have the restricted service SID. The change takes effect the next time that the system is started.

Set File(s) URL Dialog Box


The Set File(s) URL dialog box opens when you click the Set File(s) URL button on the Files to Include tab of the InstallShield Prerequisite Editor. This dialog box lets you specify a file for your InstallShield prerequisite.
Table 41-88: Set File(s) URL Dialog Box Settings Setting URL to files parent folder Description Type the URL for the parent directory of the selected file or files. This URL is the same one that InstallShield uses when installation authors use the Redistributables view to download an InstallShield prerequisite from the Internet to their local machines. For example, if you selected files called Notepad.exe and Paint.exe, and the URLs for these files are http://www.mywebsite.com/Folder1/ Notepad.exe and http://www.mywebsite.com/Folder1/Paint.exe, enter the following in this box: http://www.mywebsite.com/Folder1

Settings Dialog Box


The Settings dialog box enables you to set preferences for how InstallShield builds the installation for the project that is currently open.

InstallShield 2010 User Guide

ISP-1600-UG00

1451

Chapter 41: Settings Dialog Box

Task

To open the Settings dialog box:

On the Build menu, click Settings. The following tabs are associated with this Settings dialog box:

Compile/Link tab Run/Debug tab (InstallScript projects only) MSI Log File tab (Windows Installer projects only)

Compile/Link Tab
The Compile/Link tab on the Settings dialog box lets you specify settings for compiling your script. These settings apply to Setup.rul and any files included in it.
Table 41-89: Compile/Link Tab Settings Setting Preprocessor Defines Description Specify any preprocessor definitions. Use the following format, with no spaces before or after equal signs or commas:
MYVARIABLE1=123,MYVARIABLE2=456

You can test those types of constants in your script by using #if and #ifdef statements that control the flow of the script. For example, type MYVARIABLE in this box, and the code in the following #ifdef loop will be executed:
#ifdef MYVARIABLE // Commands #endif

After you add or change a preprocessor definition in this box, you must compile your script for the addition or change to take effect.

Note: Many Windows API functions are declared in the header file ISRTWindows.h, which is automatically included when you include Ifx.h in your script. You can prevent the automatic definition of Windows APIs by placing the preprocessor constant ISINCLUDE_NO_WINAPI_H in the Preprocessor Defines box on the Compile/Link tab of the Settings dialog box.

1452

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Settings Dialog Box

Table 41-89: Compile/Link Tab Settings (cont.) Setting Include Paths Description Specify which directories InstallShield should search for source files that have been included in the main installations InstallScript code through #include statements. Use the following guidelines for this setting:

To specify multiple paths, separate each one with a comma. You can use any valid path variable in a path. Do not use quotation marks to specify a path. Since the current directory is not necessarily constant, do not use the dot (.) operator in the paths that you specify. Instead, use an explicit path variable such as <ISProjectFolder> to indicate a known folder location. When InstallShield passes the values that you have specified in this setting to Compile.exe, InstallShield automatically parses the specified string to determine comma-delimited paths. In addition, InstallShield handles path variable replacement, surrounds the paths with quotation marks, and then passes each path separately to Compile.exe using multiple /i switches. However, if you separate the paths with semicolons instead of commas, InstallShield considers the specified paths as a single path, and it passes the single path string to the compiler as is. In this case, no path variable substitution or quotation mark additions occurs.

Note: InstallShield searches any paths that you specify before it searches the standard InstallShield paths. Thus, if two include files share the same name but one include file is in one of your custom include paths and one is in a standard InstallShield include path, InstallShield links to the include file in the custom include path, not the version in the standard InstallShield include path. For more information, see #include. Max Warnings Maximum Errors Warning Level Specifies the maximum number of warning messages that are displayed. Specifies the maximum number of error messages that are displayed. Specifies the types of warnings that are displayed in the Output window.

NoneDisplays no warning messages. Level 1Displays any system warning message that InstallShield is unable to handle. Level 2Displays Level 1 messages, plus a message if string length exceeds the limit. Level 3 (Default)Displays all warning messages.

For more information, see Defining Constants Through the Compiler.

InstallShield 2010 User Guide

ISP-1600-UG00

1453

Chapter 41: Settings Dialog Box

Table 41-89: Compile/Link Tab Settings (cont.) Setting Compile before build Description To compile your InstallScript automatically every time that you build a release, select this check box. Note the following behavior that occurs if you select this check box:

If you select the Refresh Build command on the Build menu, your script is recompiled only if changes have been made to it since the last compile. If you select the Build <name of release> command on the Build menu, your script is recompiled, even if no changes have been made to it since the last compile.

Note: The compiled script is not copied to the disk images folder before the build begins because the build process automatically copies the compiled script to the folder during the build. If the script fails to compile because of compiler errors, the build does not continue. Generate inline debugging information If this check box is selected, debugging information is included in the compiled script file so a debugging information file is not needed. If you want to debug an installation that includes an object that you have created, and you want to obtain debugging information from the object, you must have compiled the object's script with this check box selected.

Caution: Selecting this check box makes the compiled script larger and the installation slower, and it makes it easier for others to reverse engineer your code. Therefore, in most cases, it should not be used when you are creating your final installation for distribution to end users. Warnings as errors If warnings should be treated as errors (that is, if the installation should not be run if there were any compile warnings when the InstallScript was compiled), select this check box.

1454

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Settings Dialog Box

Table 41-89: Compile/Link Tab Settings (cont.) Setting Additional Library Paths Project: For InstallScript and InstallScript Object projects, InstallShield automatically searches for script libraries in the following directories at compile time:
<ISProductFolder>\Script\Ifx\Lib <ISProductFolder>\Script\Isrt\Lib

Description

For Basic MSI and InstallScript MSI projects, InstallShield automatically searches for script libraries in the following directories at compile time:
<ISProductFolder>\Script\Iswi\Lib <ISProductFolder>\Script\Isrt\Lib

The aforementioned directories contain the libraries that define the built-in InstallScript functions and that are listed in the Libraries (.obl) box by default. If you want InstallShield to search any additional directories that contain your own script libraries, you can specify the directory path in the Additional Library Paths box. Use the following guidelines for this setting:

To specify multiple paths, separate each one with a comma. You can use any valid path variable in a path. Do not use quotation marks to specify a path. Since the current directory is not necessarily constant, do not use the dot (.) operator in the paths that you specify. Instead, use an explicit path variable such as <ISProjectFolder> to indicate a known folder location. When InstallShield passes the values that you have specified in this setting to Compile.exe, InstallShield automatically parses the specified string to determine comma-delimited paths. In addition, InstallShield handles path variable replacement, surrounds the paths with quotation marks, and then passes each path separately to Compile.exe using multiple /libpath switches. However, if you separate the paths with semicolons instead of commas, InstallShield considers the specified paths as a single path, and it passes the single path string to the compiler as is. In this case, no path variable substitution or quotation mark additions occurs.

Note: InstallShield searches any paths that you specify before it searches the standard InstallShield paths. Thus, if two libraries share the same name but one library is in one of your custom library paths and one is in a standard InstallShield library path, InstallShield links to the library in the custom library path, not the version in the standard InstallShield library path.

InstallShield 2010 User Guide

ISP-1600-UG00

1455

Chapter 41: Settings Dialog Box

Table 41-89: Compile/Link Tab Settings (cont.) Setting Libraries (.obl) Description Specify the names of script libraries (compiled .obl files) to which you want the compiler to link. Separate each file with a comma.

Note: It is not necessary to include the path of each library, as long as either the path is identified explicitly in the Additional Library Paths box or the path is one of the built-in library paths that InstallShield automatically searches at compile time.

Project: The following built-in libraries are listed by default for InstallScript projects: ifx.obl,isrt.obl. The following built-in libraries are listed by default for Basic MSI and InstallScript MSI projects: iswi.obl,isrt.obl. The following built-in libraries are listed by default for InstallScript Object projects: ifxobject.obl,isrt.obl. Additional built-in libraries may also be listed, depending on which views in InstallShield you use when you are developing your project.

Run/Debug Tab
Project: This information applies to the following project types:

InstallScript InstallScript Object

The Run/Debug tab lets you configure settings relevant to the running and debugging of your installation.
Table 41-90: Run/Debug Tab Settings Settings Setup Command Line Arguments Description Text placed in this box is written to the system variable CMDLINE when you run the installation from within InstallShield; this variable can be accessed in the script. If you select this check box, the installation automatically generates a Management Information Format (.mif) file when you run the installation from within InstallShield. For information on generating .mif files in the installation that you distribute, see The [Mif] Section. Specifies the name of the .mif file generated by the installation when you run the installation from within InstallShield. If you leave this box blank, the .mif file is named Status.mif.

Generate MIF File

MIF Filename

1456

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Setup DLL Properties Dialog Box

Table 41-90: Run/Debug Tab Settings (cont.) Settings Product Serial Number Description If you specify a serial number, the installation adds it to the .mif file it generates when you run the installation from within InstallShield.

MSI Log File Tab


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The MSI Log File tab on the Settings dialog box enables you to create a log file that you can use when you are running your installation from within InstallShield. In addition, this tab lets you select the type of information that you would like written to the log file.
Table 41-91: MSI Log File Tab Settings Setting MSI Log File Options Description Select the check boxes for the types of messages that you want to be displayed in your log file. When you select a check box, the corresponding argument is added to the MsiExec.EXE Command-Line Arguments box. Enter the command-line arguments that you would like to pass to MsiExec.exe when your installation is run. When check boxes are selected in the MSI Log File Options area, the corresponding command-line parameters are added to this box. Type the name of the log file that will be created when your installation is run.

MsiExec.EXE Command-Line Arguments

Log File

Project: For InstallScript MSI projects, you need to type the full path to the log file in this box.

Setup DLL Properties Dialog Box


The Setup DLL Properties dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you and you add a new .dll file or change the properties of an existing .dll file on the Setup DLLs panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1457

Chapter 41: Setup Languages Dialog Box

Use the Setup DLL Properties dialog box to view and edit the settings of setup .dll files to be built into the Windows Mobile or smart device installation.
Table 41-92: Setup DLL Properties Dialog Box Settings Setting Source file Description The full path and file name of the source file on the desktop computer to be included in the installation. Select the check box of each Windows Mobile device on which this file can be installed. The type of processor that is required to execute the file.

Platform Processor

Tip: To modify the list of platforms that are included in the Platform box, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings.

Setup Languages Dialog Box


Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The behavior of the Setup Languages dialog box varies, depending on whether the project type is Windows Installer based (a Basic MSI, InstallScript MSI, or Merge Module project) or InstallScript based (an InstallScript or InstallScript Object project).

The Setup Languages dialog box opens when you click the ellipsis button (...) for the Setup Languages setting in the General Information view. In Basic MSI, InstallScript MSI, and Merge Module projects, the Setup Languages dialog box lets you specify the languages that you want to be listed in the UI Languages setting in the Releases view. Therefore, if a language is not listed in this dialog box at the project level, you cannot include that particular UI language in your projects releases. In InstallScript and InstallScript Object projects, the Setup Languages dialog box lets you specify the languages that you want to be listed in the Languages setting in the Components and Releases views in your project. In general, if a language is not listed for this setting at the project level, you cannot designate that a particular component in your project is targeted for that language; in addition, you cannot designate that the components and UI strings for a particular language are included in your projects releases.

1458

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Shortcut Properties Dialog Box

When you add a supported language to your project through this setting, InstallShield adds string entries for that language to your project. The string entries include the built-in user-interface string resources that are already translated.
Table 41-93: Settings on the Setup Languages Dialog Box Setting Languages Description If you want the strings of a particular language to be included in your project, select its check box. To exclude all of the strings for a particular language, clear its check box.

Edition: Language support varies, depending on the edition of InstallShield that you are using, the project type, and the language of the InstallShield interface (English or Japanese). For example, if you are using the English version of InstallShield Professional Edition, only one language is available for selection in this dialog box; if other language check boxes are listed, they are disabled. For general information about language support, see Run-Time Language Support in InstallShield. Show only selected languages If you want the languages box to list only languages whose check boxes are selected, select this check box. If you want the languages box to list only languages that are available to you with the edition of InstallShield that you are using, select this check box.

Show only available languages

Shortcut Properties Dialog Box


The Shortcut Properties dialog box opens when you are using the Windows Mobile Wizard or the Smart Device Setup Wizard and you and you add a new shortcut or change the properties of an existing shortcut on the Shortcuts panel. The Shortcut Properties dialog box lets you specify parameters for a shortcut that launches an application on a Windows Mobile device or a smart device. The shortcut will be created on the Windows Mobile or smart device during installation.
Table 41-94: Shortcut Properties Dialog Box Options Option Display Name Description This is the name of the shortcut as it appears on the Windows Mobile device or smart device. It is not necessary to add the .lnk file name extension to the name of the shortcut. This property indicates the full path and file name of the file on the Windows Mobile device or smart device that is to be executed when the shortcut is clicked. The list contains the paths to all of the files being installed onto the Windows Mobile or smart device. Select the appropriate file from the list.

Target

InstallShield 2010 User Guide

ISP-1600-UG00

1459

Chapter 41: Shortcut Properties Dialog Box

Table 41-94: Shortcut Properties Dialog Box Options (cont.) Option Destination Description This property indicates the destination folder on the Windows Mobile device or smart device where the shortcut is to be created. By default, all shortcuts are placed in the \Windows\Start Menu\Programs folder.

Note: Each time the number or types of supported platforms are changed, the destination folder list is rebuilt to include only the folders that the different platforms have in common. For example, the Handheld devices have a \Windows\Desktop folder, whereas the Palm-size and Pocket PC devices do not. Therefore, the only way the Desktop folder can be selected as the shortcut destination is if only Handheld platform types are selected. Use a Start screen icon (.png) If you want to specify a .png file that should be used for the shortcut on the Start screen of Windows Mobile 6.5 Professionalpowered devices, select this check box, and then click the browse button to select the file. The file should be a 9090 pixel .png file. When the shortcut is installed and displayed on Windows Mobile 6.5 Professionalpowered devices, the Windows Mobile Shell scales down the shortcuts icon as necessary, depending on the DPI of the device.

Tip: If you are creating a mobile device installation for Windows Mobilepowered devices and you plan to distribute your product through Windows Marketplace for Mobile, you must use a 9090 pixel Start screen icon (.png file) for your product.

Note: If you use a Start screen icon, your .cab file must be signed. You can specify digital signature information on the Sign the .cab Files panel of the Windows Mobile Wizard or the Smart Device Setup Wizard. For more information, see Sign the .cab Files Panel. If you use a Start screen icon and your mobile device installation might be installed on a Windows Mobile 6.5 Standard device (which does not have support for displaying Start screen .png icons), your .cab file must be signed with a privileged certificate; otherwise, the installation fails. Platform This property determines which platforms the shortcut should be installed onto. One or more platform types can be specified by selecting the appropriate check boxes in the list; at least one platform type must be selected to continue.

Tip: To modify the list of platforms that are included in the Platform box, see Modifying the List of Available Windows Mobile Platforms or their Associated Settings.

1460

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: SQL Server Requirement Dialog Box

SQL Server Requirement Dialog Box


Define your database server requirements in this dialog box. See below for an explanation of all options in this dialog box.

Predefined Minimum Database Server Version


Select a predefined minimum database server version that your application supports. Choose from the list of available options.

Note: At runtime, InstallShield will verify that all database servers selected by the end user meet the specified requirements.

Customize
Rarely, you will want to define your own database server version, but in the cases that you must, check the Customize box and any of the following options that apply:
Table 41-95: Customize Options Option Major Version Description This is the major version returned by a SQL Server. For example, SQL Server version 7 returns 7.00 This is the server pack level number returned by a SQL Server. For example, SQL Server version 7 RTM returns 623. Check this option to support future major versions. Check this option to support future service packs.

Service Pack Level

Any Greater than Major Version Any Greater than Service Pack Level

Update Merge Module Search Path Dialog Box


This dialog box appears when you use the Browse for Merge Module option to add a merge module to your installation project. It displays the path that will be added to the merge module search path. Click OK to approve the action. To learn more about why this dialog box appears, see What Happens When You Browse for a Merge Module.

Window Properties Dialog Box


The Window Properties dialog box opens when you select Properties from the Script Editors context menu or press the keyboard shortcut assigned to the Properties command. By default, the keyboard shortcut is Alt+Enter. You can assign a different keyboard shortcut in the Window Properties dialog boxs Keyboard tab.
InstallShield 2010 User Guide ISP-1600-UG00 1461

Chapter 41: Window Properties Dialog Box

The Window Properties dialog box contains the following tabs:

Color/Font Tab Language/Tabs Tab Keyboard Tab Misc Tab

Color/Font Tab
The Color/Font tab lets you view and modify the foreground color andin some casesthe background color for various script elements. It also allows you to change the font, style, and size of script content.

Color
Table 41-96: Color Tab Options Option Item Description Select the script element whose foreground or background color you want to view or modify. (The Left Margin and Window elements have only a foreground color.) Displays the currently selected foreground color of the script element selected in the Item list box. Displays the currently selected background color of the script element selected in the Item list box, if applicable. For the Bookmarks script element, the default background color is the color of the left margin, in which bookmarks appear. For all other script elements, the default background color is the color of the window. Displays the currently selected font of the script element selected in the Item menu, if applicable.

Color

Background

Font style

Font
Displays sample text to which the currently selected font, style, and size are applied. Click the Change button to display the Font dialog. The Font dialog allows you to view or modify the font, style, and size of script content.

1462

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Window Properties Dialog Box

Language/Tabs Tab
The Language/Tabs tab lets you view and modify the auto indentation, tabs, and language settings for the script.
Table 41-97: Language/Tabs Tab Options Option Auto indentation style Description Select an auto-indentation option from those provided.

OffNo auto indentation is performed. Pressing Enter places the caret on a new line in the first column. Follow language scopingAuto indentation is performed according to the scoping rules of the programming language selected in the Language list box. If "<none>" is selected, no auto indentation is performed. Copy from previous lineIndentation is copied from the previous line. Pressing Enter places the caret on a new line positioned directly beneath the first character of the previous line.

Tabs

This section allows you to specify tab behavior in the Script Editor.

Tab SizeSet the tab size as a multiple of the character space size. For example, setting a tab space of 5 causes the cursor to move five character spaces when you press the Tab key. Convert tabs to spaces while typingAs tabs are typed, they are converted to the number of spaces specified in the Tab Size edit box.

Language

Select a programming language from the drop-down menu. This setting specifies the language of the script and determines the following:


Correct text case while typing language keywords

Which script elements are identified as belonging to which categories in the Color/Font tabs Item list. What scoping rules are applied if the Follow language scoping option button is selected.

Select this option to have text case automatically corrected while you are typing in the Script Editor. For example, if you have the InstallScript language selected and type featuregetdata in the Script Editor, it will automatically change to FeatureGetData when you finish typing the function name.

InstallShield 2010 User Guide

ISP-1600-UG00

1463

Chapter 41: Window Properties Dialog Box

Keyboard Tab
The Keyboard tab lets you view and modify keyboard shortcuts for various editing commands.
Table 41-98: Keyboard Tab Options Option Command Description Select an editing command. The selected commands keyboard shortcut(s), if any, are displayed in the Key Assignments list box and a description of the selected command is displayed in the Description static text box. Displays the keyboard shortcut(s), if any, currently assigned to the command selected in the Command list box. Enter the keyboard shortcut to be assigned to the command selected in the Commands list box. Press the keys, rather than typing their names. For example, if you want the shortcut to be Ctrl+Q, you should press the Ctrl and the Q keys simultaneously. Assign the shortcut by clicking the Assign button. If the keyboard shortcut you enter is already assigned to a command, you are shown (below the New Key Assignment edit box) what command to which the keyboard shortcut is assigned. If you click the Assign button, the keyboard shortcut you entered is added to the list of keyboard shortcuts for the selected command and removed from the list of keyboard shortcuts for the command to which that shortcut was previously assigned. Assign Assigns the keyboard shortcut in the New Key Assignment edit box to the command selected in the Commands list box. Disabled if there is no keyboard shortcut in the New Key Assignment edit box. Removes the keyboard shortcut selected in the Key Assignments list box. Disabled if there is no keyboard shortcut selected in the Key Assignments list box. Resets keyboard shortcuts for all commands to their default values.

Key Assignments

New Key Assignment

Remove

Reset

Misc Tab
The Misc tab lets you control miscellaneous Script Editor functionality.
Table 41-99: Misc Tab Options Option Smooth scrolling Description If selected, scrolling is smooth when you scroll the window vertically by one line or horizontally by one character. If this option is deselected, scrolling occurs in a single step.

1464

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 41: Window Properties Dialog Box

Table 41-99: Misc Tab Options (cont.) Option Show left margin Description If selected, the Script Editor has a left margin in which you can click to select an entire line of text and in which bookmarks, if any, are displayed. If selected, a tooltip showing the line number of the uppermost line in the window is displayed while you press and hold the mouse button over the vertical scroll box. If selected, you can drag and drop selected text within the Script Editor or between the Script Editor and any window supporting OLE text drag and drop. Dragging the text moves itdrag the text while pressing and holding the Ctrl key. If selected, you can select one or more columns by pressing and holding the Alt key while selecting with the mouse. You can select a column having a width of zero characters. This is useful for inserting text in multiple lines. If selected, the caret will appear alongside the right end of the text in the row in which you click. For example, if the following code appears in the Script Editor:
szMsg = "";

Line tooltips on scroll

Allow drag and drop

Allow column selection

Confine caret to text

...and you click anywhere to the right of the code text, the cursor will appear immediately to the right of the semicolon in the code. Color syntax highlighting If selected, script elements are colored according to the settings in the Color/Font tabs Color area and the Language/ Tabs tabs Language list box. If this option is deselected, only the window and left margin are colored. If selected, a horizontal scroll bar is displayed when the width of the script text exceeds the width of the Script Editor. If selected, a vertical scroll bar is displayed when the height of the script text exceeds the height of the Script Editor. If selected, a split box is displayed at the left of the horizontal scroll bar. To split the window horizontally, double-click the split box or drag it into the desired position. If selected, a split box is displayed at the top of the vertical scroll bar. To split the window vertically, double-click the split box or drag it into the desired position.

Show horizontal scrollbar

Show vertical scrollbar

Allow horizontal splitting

Allow vertical splitting

InstallShield 2010 User Guide

ISP-1600-UG00

1465

Chapter 41: Window Properties Dialog Box

Line numbering
In this section, you can indicate whether you want line numbering in the Script Editor and you can select a line numbering style.
Table 41-100: Line Numbering Settings Option Style Description Select a numbering style from the drop-down menu.


Start at

<None>No line numbering. BinaryUses base-2 numbering. OctalUses base-8 numbering. DecimalUses base-10 numbering. HexUses base-16 numbering.

The number in this field indicates the Script Editor line at which line numbering should begin.

Maximum undoable actions


In this section, you can select unlimited undoable actions or you can put a limit on the number of undoable actions in the Script Editor.
Table 41-101: Undo Action Settings Option Unlimited Description If selected, the number of editing actions that can be undone in the Script Editor is unlimited. If the option button is selected, the number of sequential editing actions that can be undone is limited to the number entered in the edit box. Selecting this option can save memory by limiting the size of the undo buffer.

Limited to

Tip: To undo an editing action, press the keyboard shortcut for the Undo commandCtrl+Z or Alt+Backspace by defaultor right-click in the Script Editor and select Undo from the context menu.

1466

ISP-1600-UG00

InstallShield 2010 User Guide

42
Wizard Reference
InstallShield includes many wizards to assist you in creating your installation project.

Project: Not all wizards are available with all project types.

The following wizards are available in InstallShield.

Access 2000/2002/2003 Object Wizard Access 97 Object Wizard Acquire New License Wizard BDE Designer Wizard ClickOnce Converter Wizard Component Wizard Convert Source Paths Wizard Create New QuickPatch Wizard Create Table Wizard Crystal Reports 8 Object Wizard Crystal Reports 8.5 Object Wizard Crystal Reports 8.5 SP Object Wizard Custom Action Wizard Database Import Wizard Device Driver Wizard Dialog Wizard

InstallShield 2010 User Guide

ISP-1600-UG00

1467

Chapter 42: Wizard Reference Access 2000/2002/2003 Object Wizard

DirectX Object Wizard Dynamic Scanning Wizard Export Components Wizard Function Wizard Import REG File Wizard Import XML Settings Wizard InstallShield Merge Module for MSDE 1.0 Object Microsoft .NET Framework Object Wizard MSDE 2000 Object Wizard New Language Wizard Open MSI/MSM Wizard Open MSP Wizard Open Transform Wizard Palm OS Wizard Publish Wizard Redistributable Downloader Wizard Reg-Free COM Wizard Release Wizard Setup Best Practices Wizard Static Scanning Wizard System Search Wizard Transform Wizard Upgrade Validation Wizard Visual Basic Wizard Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET Windows Mobile Wizard/Smart Device Setup Wizard

Access 2000/2002/2003 Object Wizard


The Access 2000/2002/2003 Object Wizard consists of the following panels:


1468

Welcome Panel Redistributable Path Panel


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Access 2000/2002/2003 Object Wizard

Build Location Panel Summary Panel

Welcome Panel
The Access 2000/2002/2003 Object Wizard allows you to configure a Microsoft Access 2000/2002/ 2003 object that you have added to your setup project. In the Access 2000/2002/2003 Object Wizard, you indicate the path to the Access 2000/2002/2003 redistributable disk image and specify a build location for the redistributable. The wizard provides your setup project with the functionality to run the Access 2000/2002/2003 redistributable, however it does not add specific database (.mdb) files to your project. You can include the database (.mdb) files that your project requires in your setup design. At build time, the Access 2000/2002/2003 object adds the Access 2000/2002/2003 redistributable files to your setups disk image. The object also adds two nested install custom actions to your setup InstallAccess and UninstallAccess.

Caution: Your setup must be uncompressed on the source medium if you plan on including the Access 2000/2002/2003 object in your setup. If the setup is compressed, the setup cannot locate the Access 2000/2002/2003 redistributable files.

Click Next to indicate the path to the Access 2000/2002/2003 redistributable disk image in the Redistributable Path panel.

Redistributable Path Panel


Microsoft requires that developers who redistribute Access 2000/2002/2003 have an Office 2000 developers license. Because of this requirement, the Access 2000/2002/2003 redistributable files cannot be shipped with InstallShield products. Therefore, you must have your own copy of the Access 2000/2002/2003 redistributable files.

Note: You can find the Access 2000/2002/2003 redistributable disk image on Microsofts Access 2000/2002/2003 Developer CD or you can download the redistributable files from Microsofts Internet site.

Task

In the Redistributable Path panel, indicate the location of the Access 2000/2002/2003 redistributable disk image. Specify the absolute path to the disk imageincluding the name of the main .msi packagein either of the following ways:

Type the complete path to the disk image in the text box. You can use a path variable. Click the Browse button to navigate to the disk images location.

Click Next to indicate the build location for the Access 2000/2002/2003 redistributable in the next panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1469

Chapter 42: Wizard Reference Access 97 Object Wizard

Build Location Panel


When you build a release, the Access 2000/2002/2003 object copies the required Access 2000/2002/ 2003 redistributable files to your setup projects disk image. The build location indicates where on the disk image the Access 2000/2002/2003 redistributable files are placed. In the Build Location panel, indicate the Access 2000/2002/2003 redistributables build location by specifying a path relative to the Disk1 folder created by the build engine. By default, the build location for the Access 2000/2002/2003 redistributable is AccessRT. You can indicate a different build location by deleting the default location name and typing a new relative path in the text box.

Note: The object will be uncompressed on your setup projects disk image. This is the only available release configuration for the Access 2000/2002/2003 object.

Click Next to review the Access 2000/2002/2003 Object Wizard information in the next panel.

Summary Panel
In the Summary panel, review the information you supplied for the Access 2000/2002/2003 redistributable object. If any of the information in the Summary panel is incorrect, click the Back button to return to the previous panels. Otherwise, click the Finish button to close the wizard and add the Access 2000/2002/ 2003 redistributable to your setup project.

Access 97 Object Wizard


Unlike most of the redistributables included with InstallShield, the Access 97 object requires a small amount of customization in order to configure your Access application on the target system. If you simply want to install Access 97 without setting up an Access application, just associate the Access object (and its three merge module dependencies) with a feature.

Task

To configure an Access application, launch the Access 97 Object Wizard as described below: 1. 2. 3.

Open the Redistributables view. Select the box next to the Access 97 object to include it in your setup. Access 97 and its dependencies are included in your setup project. Right-click on Access 97 and select Configure to launch the wizard.

The Access 97 Object Wizard consists of the following panels:

Welcome Panel Access 97 Database File Panel Additional Information Panel

1470

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Access 97 Object Wizard

Workgroup File Panel Summary Panel

Welcome Panel
This object allows you to install the files required to run an Access application. You do not have to configure the Access 97 object if all you want to do is install the Access run-time files, but not set up an Access application. Click Next to begin customizing the Access object to fit your needs in the next panel.

Access 97 Database File Panel


Provide the location of your Access 97 application (an .mdb file) and choose whether to create a shortcut for it.

Panel Options
Database Enter the fully qualified path to the .mdb file as it is stored on the target system. Instead of hard-coding a path, you can select a Windows Installer folder property from the combo box. For example, if you are installing MyApp.mdb to the destination folder [INSTALLDIR]Database, then you can safely point to the following path as the location of your database:
[INSTALLDIR]Database\MyApp.mdb

It is your responsibility to make sure that the database exists on the target system or a network location. The database file is not automatically added to your setup project when you enter its path into the Database field. Create shortcut Select this option to add a shortcut to your Access 97 database on the Programs menu. Since a shortcut is an element of a components data, a new component named Access97Shortcut is added to the Access objects feature after you complete the wizard. The shortcut has the default name AccessShortcut. The shortcut is supplied with initial properties based on your settings in the Access 97 Object Wizard. The most complex of these properties is the shortcuts argument; the following table explains how the command-line argument is constructed:
Table 42-1: Command-line Argument Construct Parameter /runtime Description This command-line parameter indicates that the Access application should be opened in run-time mode (as opposed to retail mode, which allows complete access to the databases tables). [database] contains the fully qualified path to the .mdb file that you provided in the Database field (above).

[database]

InstallShield 2010 User Guide

ISP-1600-UG00

1471

Chapter 42: Wizard Reference Access 97 Object Wizard

Table 42-1: Command-line Argument Construct (cont.) Parameter /profile [profile name] Description This parameter opens the database with the user profile you enter in the Additional Information panel. This parameter instructs Access to use the specified workgroup information (.mdw) file.

/wrkgrp [file name]

Additional Information Panel


In this step, you can configure custom user profile information. When the Access application is opened with this user profile, it contains customized elements, such as a splash screen graphic with the products logo. The files you specify for the icon, help, and splash screen are not automatically added to your project. You must install them yourself or be certain that they are present on the target system.

Panel Options
User profile This is the name of the custom user profile you are creating. This field is required if you want to use a custom user profile. This profile applies to all users who open the Access application with the /profile <profile name> command-line parameter. This profile name is supplied for the shortcuts argument if you chose to create a shortcut. Title bar Enter a new title for the title bar of your Access application. If you leave this field blank, the title bar defaults to Access 97. Icon Enter the path and file name of the icon (.ico) file you want to be displayed to the left of the title bar. If you leave this field blank, the default Access icon is used. The path for the icon is the folder where it will be stored on the target system. Instead of hard-coding a path, you can select a Windows Installer folder property from the combo box. If you are installing this icon as one of your components files, use the same path as the components destination folder. Help file Enter the path and file name of the Windows help (.hlp) file, if any, that you have created for your Access application. Splash screen Enter the path and name of the bitmap (.bmp) file that will be displayed as the splash screen for your Access application. You can leave this field blank.

1472

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Acquire New License Wizard

Workgroup File Panel


In this step, you can select a custom workgroup information (.mdw) file and configure how it is installed. If you are not using a custom workgroup with your Access database, you can skip this step.

Panel Options
Workgroup file Enter the path and name of the workgroup file as it can be found on the target system. Once you enter a value into this field, the check boxes become enabled. Instead of hard-coding a path, you can select a Windows Installer folder property from the combo box. If you are installing this icon as one of your components files, use the same path as the components destination folder. Register as the system/default workgroup file Make your workgroup the default workgroup on your users system. Any existing system workgroup information file will no longer be the default. Use the /wrkgrp command-line argument The argument /wrkgrp <file name> tells Access to use the specified workgroup information file with your database regardless of the registered system workgroup file. When you select this option, the command-line argument /wrkgrp <file name>, where <file name> stands for the path to the workgroup file (above), is added to the Access applications shortcut. If you choose to include a custom workgroup, you can select either, both, or neither of these settings for your workgroup. Selecting both of these will cause your workgroup to be used for all Access databases. If the user decides to set a different default workgroup, your workgroup will then be used only with your database.

Summary Panel
In this final step in the Access 97 Object Wizard, you can review the choices you made in the previous steps. This dialog box displays the configuration you selected for the user profile and workgroup for your Access database application. If these settings are incorrect, click the Back button to return to the previous steps. If you are satisfied with these choices, click the Finish button to close the wizard.

Tip: If you have not already done so, add your database, workgroup, and other files to your setup project.

Acquire New License Wizard


Use the Acquire New License Wizard to obtain a license for your trialware. InstallShield uses the license to wrap a trialware shell around your products executable file (.exe, .dll, .ocx, or .scr file). The executable file can be unwrapped and used only according to the license settings that you configure, such as the trial limit (a specified number of days or a specified number of uses).
InstallShield 2010 User Guide ISP-1600-UG00 1473

Chapter 42: Wizard Reference Acquire New License Wizard

In most cases, you should acquire a unique license for each version of your product. For more information, see Acquiring a License. The following panels are associated with the Acquire New License Wizard:

Welcome Panel Configure Trialware Credentials Panel Communicating with the License Server Panel

Welcome Panel
The Welcome panel is where you create a user name and password to log on to the InstallShield Activation Service Publisher Web Site if do not already have them. You need a user name and password in order to be able to connect to the license server and download a license. Your user name must have write access to the licensing part of the Web site.

Configure Trialware Credentials Panel


The Configure Trialware Credentials panel is where you enter information needed to obtain a license.
Table 42-2: Options in the Configure Trialware Credentials Wizard Panel Option Description Description Type a description for the license that you are obtaining. The description that you enter is for your reference only; it is not displayed to end users of your product. Type the version number of your product. Type your user name for the InstallShield Activation Service Publisher Web Site. The default value for this box is the value entered on the Configure Trialware tab of the Options dialog box. Type the password for your user name. The default value for this box is the value entered on the Configure Trialware tab of the Options dialog box.

Version User name

Password

Communicating with the License Server Panel


The Communicating with the License Server panel shows a progress bar as the license server is contacted and a license is created for your executable file. When you have obtained the license and closed the wizard, the new license is added to the License(s) list for your executable file on the General tab of the Trialware view.

1474

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference BDE Designer Wizard

BDE Designer Wizard


The Borland Database Engine is a data access engine that is used by Delphi, dBase, and Paradox for Windows. This data access engine consists of the core technology that allows any ODBC driver to be used as an IDAPI driver for any application using the Borland Database Engine. Additionally, the Borland Database Engine can be augmented with optional native SQL drivers that provide transparent and efficient connectivity to widely used SQL servers. BDE support is provided through the use of a merge module. Unlike most of the redistributables in the gallery, the BDE module requires customization in order to function properly. This customization is accomplished with the BDE Designer Wizard.

Note: The BDE module is available only if a Borland tool was present on the system when you installed InstallShield.

Task

To launch the BDE Designer Wizard: 1. 2. 3.

Open the Redistributables view. Select the BDE check box. Right-click the BDE module and select Configure merge module to launch the wizard.

Note: When you add the BDE merge module to an installation, a single-file installation cannot be created.

The following panels are associated with this wizard:

Welcome Panel INI File Location Panel Configure INI File Panel BDE Merge Module Configuration Utility Add Alias Panel Summary Panel

Welcome Panel
The BDE designer allows you to customize the BDE run-time files installed on the target system. The customization of these files is a crucial part of your setup and requires in-depth knowledge of BDE architecture. This merge module requires that Borland Delphi be installed on your build machine. Click Next in the Welcome panel to begin customizing your BDE installation.

Note: When you add the BDE merge module to a setup, a single file setup cannot be created.

InstallShield 2010 User Guide

ISP-1600-UG00

1475

Chapter 42: Wizard Reference BDE Designer Wizard

INI File Location Panel


Select the .ini file containing your desired BDE configuration or create a new file.

Panel Options
Create a new BDE configuration file Select this option if you would like to create a new BDE configuration file. Click the Browse button to navigate to the directory where you would like this file created. Open an existing BDE configuration file Select this option if you have already created a BDE configuration file. Click the Browse button to navigate to the desired file.

Configure INI File Panel


From this panel you can launch Borland/Inprise BDE merge module configuration utility. This utility allows you to specify the types of drivers you would like associated with your BDE installation. Additionally, you can configure these drivers to suit your needs. If you are using an existing, pre-configured BDE Configuration file, you can skip this step. Click Launch to open the Borland/Inprise BDE merge module configuration utility, or click Next to skip this step.

BDE Merge Module Configuration Utility


The BDE Merge Module Configuration Utility allows you to customize the BDE installation to fit your products needs.

Dialog Options
Alias Select from the list the Alias you would like to include in your setup. If you have not created an alias yet, click the Add button. Add Click the Add button to view the Add Alias panel and add aliases to your setup. Edit Click the Edit button to change the settings of an alias. Delete Click the Delete button to remove an alias from the list. Driver Check the box next to the driver or drivers you would like to install. If you know the necessary driver is already on the target machine you can skip this step.
1476 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference ClickOnce Converter Wizard

Add Alias Panel


The Add Alias panel allows you to create or edit aliases for use in your application.

Panel Options
Alias Name Select a pre-configured alias from the list or enter the name of a new alias. Driver Name If you selected a pre-configured alias, this field contains the appropriate driver. If you are creating a custom alias, select the driver you would like your alias associated with.

Note: The driver you select here is not installed unless you check it in the BDE Merge Module Configuration Utility.

Parameter Overrides If you selected a pre-configured alias the default parameter overrides appear in this text box. Type in custom overrides or accept the defaults as needed by your application. For custom aliases, you can press the Defaults button to show the default parameters for the driver you selected. Defaults Click the Defaults button to revert the parameter overrides to their default state. Clear Click the Clear button to clear the parameter overrides text box.

Summary Panel
The Summary panel displays all the configuration settings you supplied for your BDE installation. Review these settings to ensure accuracy and click the Finish button to have the BDE merge module added to your setup.

Note: When you add the BDE merge module to a setup, a single file setup cannot be created.

ClickOnce Converter Wizard


Use the ClickOnce Converter Wizard to convert a ClickOnce package to a Basic MSI project with an associated .dim file.

Note: In order to convert a ClickOnce package, you must have the .NET Framework redistributable and the Visual J# .NET redistributable installed on your machine. Note that the version numbers of these two redistributables must match.

InstallShield 2010 User Guide

ISP-1600-UG00

1477

Chapter 42: Wizard Reference ClickOnce Converter Wizard

Task

To launch the ClickOnce Converter Wizard, do one of the following:

On the Tools menu, click Convert a ClickOnce Package. Double-click the ClickOnce2Dim.exe file, which is in the following location by default:
C:\Program Files\InstallShield\2010\System\ClickOnce2Dim.exe

At the command line, enter the full path of the ClickOnce2Dim.exe file in quotation marks. For example, if you installed InstallShield to the default location, enter the following at the command line:
"C:\Program Files\InstallShield\2010\System\ClickOnce2Dim.exe"

Tip: As an alternative, you can convert the ClickOnce manifest file without using the wizard by running the
ClickOnce2Dim.exe application from the command line and specifying the appropriate command-line parameters. For

more information, see ClickOnce2Dim.exe.

The following panels are associated with this wizard:

Welcome Specify File and Location Conversion in Process Conversion Complete

Welcome Panel
Use the ClickOnce Converter Wizard to convert a ClickOnce package to a Basic MSI project with an associated .dim file.

Note: In order to convert a ClickOnce package, you must have the .NET Framework redistributable and the Visual J# .NET redistributable installed on your machine. Note that the version numbers of these two redistributables must match.

Specify File and Location Panel


The Specify File and Location panel is where you specify the ClickOnce file that you want to convert and identify the location where the DIM should be created.

1478

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Panel Options
Table 42-3: Options on the Specify File and Location Panel Option ClickOnce Deployment Manifest Target Location Description Specify the ClickOnce manifest file (.application) that you want to convert. Specify the location for the .dim file and the Basic MSI project created by the wizard. If you want the ClickOnce source files copied to the target location that you specified, select this check box. The ClickOnce source files are placed in a folder. If you do not want the ClickOnce source files copied to the target location, clear this check box.

Copy the source files to the target location

Conversion in Process Panel


The Conversion in Process panel is displayed while the ClickOnce Converter Wizard is converting the ClickOnce deployment

Conversion Complete Panel


The Conversion Complete panel signifies the end of the conversion process. Click Finish to close the wizard. The .dim file, the InstallShield project file (.ism), and any associated files are available in the location that you specified.

Component Wizard
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Although there are several ways to create Windows Installer components and specify advanced settings for them, the Component Wizard simplifies the process. The wizard assists you by organizing your files into components and making settings for files with advanced installation requirementsoften by automatically retrieving information about the files.

InstallShield 2010 User Guide

ISP-1600-UG00

1479

Chapter 42: Wizard Reference Component Wizard

Task

To launch the Component Wizard, do one of the following:

For installation projects only: In the Setup Design view, right-click a feature and click Component Wizard. For installation projects and merge module projects: In the Components view, right-click the Components explorer and click Component Wizard.

When you launch the Component Wizard, you are presented with the following options on the Welcome panel:
Table 42-4: Welcome Panel Settings Setting Create components for me using Best Practices Description Select this option to specify all of your applications files and have InstallShield create all of the necessary components for you according to Setup Best Practices. This option creates components containing files that need special treatment upon installation and uninstallation. The wizard can create components for only one of the following file categories at a time. Run the Component Wizard again to build components for another type of file.

Let me select a type and define the component myself

COM Server Install Service Control Service Fonts

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

Welcome Panel
Project: This information applies to the following project types:


1480

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Although there are several ways to create Windows Installer components and specify advanced settings for them, the Component Wizard simplifies the process. The wizard assists you by organizing your files into components and making settings for files with advanced installation requirementsoften by automatically retrieving information about the files.

Tip: The Component Wizard should not be used to modify existing components. When you have created your components, you can edit their properties, files, and advanced settings in the Setup Design view or the Components view. Table 42-5: Welcome Panel Settings Setting Create components for me using Best Practices Description Select this option to specify all of your applications files and have InstallShield create all of the necessary components for you according to Setup Best Practices. This option creates components containing files that need special treatment upon installation and uninstallation. The wizard can create components for only one of the following file categories at a time. Run the Component Wizard again to build components for another type of file.

Let me select a type and define the component myself

COM server Install Service Control Service Fonts

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

Setup Best Practices


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

InstallShield 2010 User Guide

ISP-1600-UG00

1481

Chapter 42: Wizard Reference Component Wizard

This Component Wizard path is the easiest means for organizing all of your applications files into components. The wizard also handles installing files with special installation requirements, such as COM servers and fonts, if it detects them among the files that you provide. For more information on how the Component Wizard organizes your files according to Best Practices, see Best Practice Rules for Creating Components. After selecting the Best Practices option in the Component Wizard, the next panel you see is the Best PracticesDestination Panel.

Destination Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The first step is to specify the folder where the components files will be installed on the target system.

Note: The Destination setting is disabled if you launch the Component Wizard by right-clicking on a destination in the Files and Folders view. The destination that you selected before launching the Component Wizard becomes the destination for the component that you create. Table 42-6: Destination Panel Settings Setting Destination Description The wizard uses the same destination folder for all of the components it creates. The destination you select in this field becomes the Destination Folder setting for every component that is created in this wizard session. Select a Windows Installer folder property, in square brackets, from the dropdown list of standard destination folders. The default value points to the root of INSTALLDIR, which is initialized in the products Destination Folder setting. Select Browse, create, or modify a directory entry from the drop-down list to display the Browse for Directory dialog box.

Files Panel

Project: This information applies to the following project types:


1482

Basic MSI InstallScript MSI Merge Module


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

MSI Database MSM Database

In the Files panel, specify the files that should be grouped into components.
Table 42-7: Files Panel Settings Setting Files Description The Files list displays information about each file associated with this component. Add files to the list in either of the following ways:

Drag and drop files from Windows Explorer onto the file list. Click Add Files and browse to your applications files.

Note: The path to each file is a hard-coded link. If the file is moved or renamed, the Link To value reads *** File Not Found ***, and the Release Wizard will be unable to resolve the file link when you build your setup package. Extract COM Info Immediately If this option is selected, the components COM Extract at Build setting is set to No and the COM data is extracted immediately. If you clear this check box, the COM data is extracted at build time. Click Add Files to browse to the files you want to add to the list. In the resulting dialog you can select as many files as you want from a single folder by pressing the SHIFT or CTRL key and clicking on the files. You can also use the Insert key to add files. Add Folder Click Add Folder to browse to a folder that you would like to add to the list. All the files under this folder, including any files in subfolders, will be added to your project. Select one or more files and click Remove Files to permanently delete them from the list. You can also use the Delete key to delete files.

Add Files

Remove Files

Summary Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

InstallShield 2010 User Guide

ISP-1600-UG00

1483

Chapter 42: Wizard Reference Component Wizard

The Summary panel displays the components settings. Review the summary, and click Finish to complete the component creation process and organize the files into components. If you launched the wizard by right-clicking a feature, the new components are associated with that feature. Otherwise, you must open the Setup Design view, right-click one or more features, and select Insert Components to associate your new components with features. The Component Wizard provides smart defaults for most of your component settings and any necessary advanced settings. To edit them, select a component in the Components view and modify the components settings.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

Component Type Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The Component Type panel enables you to create components of a single type. Since these components all have unique installation and uninstallation requirements, subsequent panels of the Component Wizard differ, depending on the type of component that you are installing.
Table 42-8: Component Type Panel Settings Setting Component Name Description When you click a component type, the wizard suggests a unique name for your new component in the Component Name field. To change the name, type a new name over the suggested name.

Note: Although you can specify a single component type for multiple font files or multiple services in one file, these are all placed into a single component and require only one component name. This setting is disabled if you are creating the font type of component. InstallShield uses the font file name as the name of font components.

1484

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Table 42-8: Component Type Panel Settings (cont.) Setting Component Types Description Select the type of component that you want to create.

COM Server Install Service Control Service Fonts

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

COM Server Component Type

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The COM server component type in the Component Wizard accepts a single COM server (.exe, .dll, or .ocx) file and creates a component for it in your installation project. Since these files require special registration so that they can operate on the target system, the wizard attempts to extract the information for you. If the wizard fails to extract the files registry settings, it prompts you for the CLSID, progID, and so on. All of the registration information that maps to the COM Registration advanced setting is written there. The wizard creates any additional entries, such as the InProcServer32 ThreadingModel value, in the components registry data.

Tip: If you are using InstallShield on a 64-bit system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. To learn more about 64-bit support, see Targeting 64-Bit Operating Systems.

Using the components data, the installer registers the file during installation and unregisters it during uninstallation instead of calling self-registration functions, which would be a violation of Setup Best Practices.
InstallShield 2010 User Guide ISP-1600-UG00 1485

Chapter 42: Wizard Reference Component Wizard

Note: The PATH system variable on the build machine must be set to include the directories of all of the .dll files to which the COM server links; otherwise, the file will fail to register and COM information will not be extracted.

The wizard asks if your COM server runs as a service, so you can specify installation parameters for the service.

COM Server File Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The COM Server File panel is where you identify basic information about your COM servers executable file.
Table 42-9: COM Server File Panel Settings Setting COM Server File Description Enter the path and file name of your COM server (.exe, .dll, or .ocx) file, or click the Browse button to navigate to the file. You can specify only one portable executable file per component according to Setup Best Practices. Launch the wizard again to install additional COM servers, or create the components using the Component Wizards Best Practices option.

1486

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Table 42-9: COM Server File Panel Settings (cont.) Setting Extract registration information Description Select this check box to have the wizard scan your file to extract all of the files registration information. If the extraction is successful, the next panel displayed is the Summary confirmation dialog.

Project: If you are working on a Basic MSI, InstallScript MSI, or Merge Module project, an alternative to extracting the COM information through the wizard and maintaining it in the COM Registration advanced setting is to have the data dynamically extracted at build time. If you are working in Direct Edit Mode, COM information cannot be extracted at build time; it is extracted at design time. If you do not select this check box or if the wizard cannot read the files registration, the Classes panel is displayed next.

Tip: If you are using InstallShield on a 64-bit system, InstallShield can extract COM data from a 64-bit COM server. In order to install the data to the correct locations, the component must be marked as 64 bit. To learn more about 64bit support, see Targeting 64-Bit Operating Systems. This file also runs as a service This check box is enabled only if your COM server is an .exe file. If you select this option, the wizard displays panels that enable you to specify installation parameters for services. If you select this check box and specify the service information, InstallShield enters the information in the Services area under the Advanced Settings node of your component in the Components view. You do not have to launch the wizard again to create a service component for this COM server. Custom EXE Command Line This check box is enabled only if your COM server is an .exe file. Once it is enabled, you can enter a command line argument. The command line argument overrides the default /regserver command line to an .exe file. If you select the service option and specify parameters in the Custom EXE Command Line box, /service is passed as the command line. By default, the /service command line does everything that the /regserver command line does but it also adds registry values for service support. If you select all the options on this panel, the command line that you enter in this box is the command line that is passed to the .exe file.

If the COM server is part of a 64-bit component and you are running InstallShield on a 64-bit machine, InstallShield performs 64-bit COM extraction. For more information, see Targeting 64-Bit Operating Systems.

InstallShield 2010 User Guide

ISP-1600-UG00

1487

Chapter 42: Wizard Reference Component Wizard

Classes Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

This panel is where you begin providing registration information for your COM serverincluding your files classes, identified by their progIDs and CLSIDs. This panel and the next few registration information panels are displayed only if you elected not to have the wizard extract the information, or if the wizard failed for any reason (for example, if the .exe, .dll, or .ocx file does not indeed contain a COM server). Otherwise, the wizard would continue with the Service Executable panelif the COM server is a service, or the Summary panelif the COM server is not a service.
Table 42-10: Classes Panel Settings Setting ProgID Description Enter the COM servers programmatic identifier, or progID in this panel. Each progID corresponds to a COM class in your file. To add a new progID in the format Program.Component.N, click the Add button or press the Insert key. Enter the same value in both the ProgID and Version-Independent ProgID fields if the progID is version independent (in the format Program.Component). All of the other information in this panel corresponds to the class you named in this field with a progID. Click on each progID to set its class ID and versionindependent progID and to check whether it is DCOM/COM+ enabled. Add Click Add to register a new class for this COM server. To rename the service, type the new name immediately after clicking the Add button, or press F2 and then type the new name. You can also use the Insert key to add a new service. Remove Click Remove to permanently delete a progID from the list. You can also use the Delete key to remove a service. Click on a progID to provide the corresponding class ID. Enter a string GUID for the CLSID that Windows Installer will register for this class. Click on a progID to provide the corresponding version-independent progID, if any, in the format Program.Component. If the progID itself is version independent, enter the same progID in this field. This COM server is DCOM/COM+ enabled If the COM class is enabled for DCOM or COM+, and therefore requires additional registry entries, check this box. The wizard prompts you for this information in the AppID General Information and AppID Advanced Information panels.

Class ID

Version-Independent ProgID

1488

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Context Types Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Indicate the type of file in which your COM server resides. The available context types are:

InprocServer16-bit DLL or OCX InprocServer3232-bit DLL or OCX LocalServer16-bit EXE LocalServer3232-bit EXE

Type Library Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Specify the type library, if any, referenced by this COM server.


Table 42-11: Type Library Panel Settings Setting Type Library Description Description Provide a brief description of the type library. This value is used in the components COM Registration advanced setting as the type librarys name in the COM Registration Explorer. The description is registered as the default value under HKEY_CLASSES_ROOT\TypeLib\libID\version. Type Library GUID Enter the GUID (LibID) that identifies this type library. You can paste (Ctrl+V) your COM servers LibID into this field. Enter the decimal value of the type librarys locale ID. Since type libraries are usually language neutral, 0 (zero) is the most common language of type libraries.

Language

InstallShield 2010 User Guide

ISP-1600-UG00

1489

Chapter 42: Wizard Reference Component Wizard

Table 42-11: Type Library Panel Settings (cont.) Setting Version Description Provide the version number of the type library. If this field is blank, Windows Installer automatically determines the version of the type library at run time.

AppID General Information Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

In this panel, you provide basic information about your DCOM or COM+ files AppID. An AppID is a GUID registered under HKEY_CLASSES_ROOT\AppID used for grouping all of the security and configuration options of distributed COM objects. The information you provide in this panel and in the AppID Advanced Information panel are registered under this key. This panel is not displayed unless you selected the This COM server is DCOM/COM+ enabled check box on the Classes panel.
Table 42-12: AppID Information Panel Settings Setting AppID GUID Description Enter the string GUID (AppID) for this COM+ or DCOM component. You can paste (Ctrl+V) the AppID into this field. Enter the name of the computer on which this component should run.

Remote Server Name

AppID Advanced Information Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

In this panel, you provide more advanced information about your DCOM or COM+ files AppID than you provided in the AppID General Information panel.

1490

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

This panel is not displayed unless you selected the This COM server is DCOM/COM+ enabled check box on the Classes panel.
Table 42-13: AppID Advanced Information Panel Settings Setting Activate at Storage Description Select this check box to indicate that the distributed COM server resides on the same machine as its data. When a DCOM file is activated at storage, its objects are instantiated on the same machine as the data it uses, thereby reducing network traffic. Note that calling applications can override this default behavior with DCOM API functions. Run as Interactive User Select this check box to have the COM server run under the same account as the user currently logged onto the system. This option allows the server to be connected with the interactive desktop. Since COM servers that also run as services are not designed to run as the interactive user, this check box is disabled if you select the Run as a Win32 Service check box. Run as a Win32 Service Select this option if the distributed COM .exe file is intended to run as a service. When this option is selected, you should provide the name of the service and any parameters it takes.

Note: If you indicatedin the COM Server Executable panelthat this file runs as a service, the next panel displayed is the Service Executable panel, in which you must enter information about this files services. Service Name Service Parameters Enter the name of the service. Enter the parameters you want passed to the service when it is launched.

Summary Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Review the components description and click Finish to have the wizard create the described components. Click Back if you need to change any of the information you provided. All of the registration information that maps to the COM Registration advanced setting is written there. The wizard creates any additional entries, such as the InProcServer32 ThreadingModel value, in the components registry data.

InstallShield 2010 User Guide

ISP-1600-UG00

1491

Chapter 42: Wizard Reference Component Wizard

If the wizard lists Please enter this information in the IDE, go to the components COM Registration (or Install Services for components that also run as a service) advanced setting and provide the values. If you launched the wizard by right-clicking a feature, the new components are associated with that feature. Otherwise, you must open the Setup Design view, right-click one or more features, and select Insert Components to associate your new components with features.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

Control Service Component Type

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

The Control Service component type is used start or stop a single service during installation or uninstallation. For example, you might need to delete a running service before updating it in your setup. The wizard takes you through a series of panels prompting you for information about the service you want to control. Once you have completed the wizard, you have a new component consisting only of default properties and the advanced settings necessary for controlling a service. Later you can add data such as files, shortcuts, and registry entries to your component through the Setup Design or Components view.

Task

To control another service:

Launch the wizard again or modify the components Control Service advanced setting.

1492

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Task

To install a service:

Launch the wizard again and select the Install Services component type or add the services file to the Control Service component you have created in the wizard and edit its Services node in the Advanced Setting area of the Components view.

Specify Service Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The first step is to specify which service you want to install. Everything else you do in the wizard refers to this service. You can use the Component Wizard to control a single service at installation and uninstallation. To control another service in a new component, launch this wizard again.

Note: To control more than one service in the same component, you must modify the components Services node under the Advanced Settings area of the Components view. Table 42-14: Specify Service Panel Settings Setting Service is present on target system Description Select this option to control a service that you are certain will be installed on the target system when your setup runs or that will be when your product is uninstalled. Enter the name of the service. This is the name that InstallShield, Windows Installer, and the Service Control Manager (which maintains the systems database of services and exposes an interface for controlling these services) use to identify a servicenot its display name. Select this option to choose from among the services you have created in your setup project.

Service Name

Service is included in this setup

Note: This option is disabled if none of your components has a service in its Services node under the Advanced Settings area in the Components view.

InstallShield 2010 User Guide

ISP-1600-UG00

1493

Chapter 42: Wizard Reference Component Wizard

Installation Events Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

This panel offers you standard options for controlling the service during your products installation.
Table 42-15: Installation Events Panel Settings Setting Trigger the following events when the component is installed Start the service Description Click this option to enable the installation control events.

This event starts the service when the component is installed. Specifically, it is started by the Start Services action in your setups Installation sequence. Specify any command-line parameters to be used for launching the service in the Arguments field.

Arguments

Specify any arguments that you want passed to the service when it is started. Separate each argument with a comma. This event stops the service when the component is installed. It is stopped by the Stop Services action in your setups Installation sequence. This event deletes the service when the component is installed. It is deleted by the Delete Services action in your setups Installation sequence. Select this option if you do not need to control this service during your products setup. This option cancels any of the above events.

Stop the service

Delete the service

No event (do nothing)

Uninstallation Events Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

1494

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

This panel is prompting you for the same control events that were available for the products installation, except that they will be triggered only when this component is uninstalled.
Table 42-16: Uninstallation Events Panel Settings Setting Trigger the following events when the component is uninstalled Start the service Description Click this option to enable the uninstallation control events.

This event starts the service when the component is uninstalled. Specifically, it is started by the Start Services action in your setups Installation sequence. Specify any command-line parameters to be used for launching the service in the Arguments field.

Arguments

Specify any arguments that you want passed to the service when it is started. Separate each argument with a comma. This event stops the service when the component is uninstalled. It is stopped by the Stop Services action in your setups Installation sequence. This event deletes the service when the component is uninstalled. It is deleted by the Delete Services action in your setups Installation sequence. Select this option if you do not need to control this service during your products setup. This option cancels any of the above events. If you selected the No event (do nothing) option on the Installation Events panel, it is disabled in this panel. You must select a control event at either installation or uninstallation.

Stop the service

Delete the service

No event (do nothing)

Wait Type Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

In this panel, you can set the wait option for all events in your products installation and uninstallation. Windows Installer proceeds as specified in this panel, following the control event. Select Wait for the service to complete the event before continuing if the event is critical to the installation or uninstallation. If you selected the No event (do nothing) option in the Installation Events or Uninstallation Events panel, the corresponding wait settings are disabled in this panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1495

Chapter 42: Wizard Reference Component Wizard

Summary Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Review the information the wizard has collected, and click Finish to create your Control Service component. You can review and edit the new components settings in the Components view or the Setup Design view. If you launched the wizard by right-clicking a feature, the new components are associated with that feature. Otherwise, you must open the Setup Design view, right-click one or more features, and select Insert Components to associate your new components with features.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

Install Service Component Type

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Note: If you want to create a component that installs, starts, stops, or deletes a service during installation or uninstallation, it is recommended that you use the Advanced Settings area under a component in the Setup Design view or the Components view. You can also use the Advanced Settings area to configure extended service customization options, which are not configurable through the Component Wizard. For more information, see Installing, Controlling, and Configuring Windows Services.

The Install Service component type is used to create a component that contains the information necessary to install all of the Win32 services that are present in a single .exe file.

Tip: If the file also runs as a COM server, a better way to create the component is to select the COM Server component type and specify that it contains a service. Once you have provided all the COM registration data, the Component Wizard

1496

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

will the prompt you for the same information about the service that you must provide for the Install Services component type.

The wizard takes you through a series of panels prompting you for information about the services you want to install. Once you have completed the wizard, you have a new component consisting of your file, the default component properties, and the advanced settings necessary for installing and uninstalling the services. You can edit the services installation information in the Services node under the Advanced Setting area of the Components view. Windows Installer will pass these values to the Windows API function CreateService() to install each service onto the target system and register it with the Service Control Manager (which maintains the systems database of services and exposes an interface for controlling these services).

Service Executable Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Provide the fully qualified path for your file and list all of its services. Only .exe files are allowed. Driver services (.sys files) are not supported in the wizard.
Table 42-17: Service Executable Panel Settings Setting Service Executable Description Enter the fully qualified path to the executable file for the services in this component or click the Browse button to navigate to the services executable file. In compliance with Setup Best Practices, the component can contain only one executable file. Launch the wizard again later to add another file to a new component. If you have arrived at this wizard panel as the result of having a COM Server component that contains services, the Service Executable box is disabled. The wizard uses the same executable that you entered in the COM Server Executable panel.

Caution: If you use the Browse button to navigate to and select a file, the new value overwrites anything that was entered in the Service Executable box. Services This list contains all of the services found in the file.

InstallShield 2010 User Guide

ISP-1600-UG00

1497

Chapter 42: Wizard Reference Component Wizard

Table 42-17: Service Executable Panel Settings (cont.) Setting Add Description Click Add to add a new service. To rename the service, type the new name immediately after clicking the Add button, or press F2 and then type the new name. This is the name that InstallShield, Windows Installer, CreateService(), and the Service Control Manager (which maintains the systems database of services and exposes an interface for controlling these services) use to identify the servicenot its display name. You can also use the Insert key to add a new service. Remove Select a service and click Remove to permanently delete it from the Services list. You can also use the Delete key to remove a service.

Service Type Information Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Select each service in the drop-down list and provide the necessary details.
Table 42-18: Service Type Information Panel Settings Setting Service Description Select the services that you entered in the Services list of the Service Executable panel and then specify the Display Name and Service Type installation properties for each. Enter a display name for the service. This is the name that is displayed to users in the SCM. If you leave the Display Name field blank, the name you gave the service is used as the display name.

Display Name

Note: Other service properties, such as the service description to display on Windows 2000 target systems (and later), are available in the components advanced settings.

1498

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Table 42-18: Service Type Information Panel Settings (cont.) Setting Service Type Description Specify whether the service runs in its own process or shares a process with others. Select the Service shares a process with others option only if there is more than one service in the component. If you are familiar with the source code for the service, select This service runs in its own process if it is of type SERVICE_WIN32_OWN_PROCESS, and Service shares a process with others if it is of type SERVICE_WIN32_SHARE_PROCESS.

Note: You are limited to the options provided under Service Type. The Component Wizard does not support driver services. Arguments Enter command-line arguments to pass to the service when it runs. Expressions of the form [PropertyName] will be expanded to the value of the Windows Installer property called PropertyName.

Service Start Type Information Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Select each service in the drop-down list and indicate the way in which you want the service startedor if you want the service disabled.

Start Type
Select the services start type from the list.

Automatically when the system starts up On demand through the Service Control Manager Not started (Disabled)

Service Load Order Panel

Project: This information applies to the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1499

Chapter 42: Wizard Reference Component Wizard

InstallScript MSI Merge Module MSI Database MSM Database

Select each service in this file and enter its load-ordering group and dependency information. Having dependencies and membership in a load-ordering group means that the service requires other services to be running before it can be started. (Service load-ordering groups are listed under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder. The services Start Type property determines when it loads within its group.)
Table 42-19: Service Load Order Panel Settings Setting Service Description Select each of the services that you entered in the Services list of the Service Executable panel and then specify its load-ordering and dependency information. Enter the name of the load-ordering group of which this service is a member. Leave this field blank if the service does not belong to a group. List the services dependencies in the edit field. A services dependency can be another servicein which case enter the services name, or it can be a loadordering groupin which case precede the name of the load-ordering group with a plus sign (+) so that the SCM can distinguish it from a service. Separate each dependency with a comma.

Load-Ordering Group

Dependencies

Error Control Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Select each of the services that you entered in the Services list of the Service Executable panel andfor each servicespecify which action you would like the Service Control Manager to take if it receives an error while attempting to start the service.

Log the error and continue starting the service. Log the error, display a message box, and continue starting the service. Log the error and, if possible, restart the system with the last known good configuration.

1500

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Service Logon Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Select each service in the list and specify the type of account you want the service to log on as when it starts up.

Caution: Because of potential password conflicts, Microsoft recommends that all services log on under the local system account. Table 42-20: Service Logon Panel Settings Setting Service Description Select each of the services that you entered in the Services list of the Service Executable panel and then specify how the service should log on. Select this option to have the service log on under the local system account. If the service has a user interface, click this option.

Local system account Allow service to interact with the desktop This account

Select this option if you want the service to impersonate a specific user when it logs on. You must enter a user name and password, or the local system account will be used. Enter accounts in the form DomainName\UserName. You can use a dot for the built-in domain, such as .\UserName. Enter the password for this account. The password will not be used if you do not specify a user name, and the service will log on under the local system account.

Domain/User Name

Password

Summary Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1501

Chapter 42: Wizard Reference Component Wizard

MSI Database MSM Database

Review the information the wizard has collected, and click Finish to create your service component. The wizard provides smart defaults for all of your components properties. You can review the property sheet in the Setup Design views. Of particular importance for an service is the Remote Installation setting, since Windows Installer cannot install a service that does not reside on the local system. If you launched the wizard by right-clicking on a feature, the new component is associated with that feature. Otherwise, you must open the Setup Design view, right-click on one or more features, and select Insert Components to associate your new component with a feature.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

After the wizard finishes, you can modify any of the installation options for the components Services node under the Advanced Setting area of the Components view. InstallShield provides functionality for controlling this service or others on the target system. For more information, see Installing, Controlling, and Configuring Windows Services.

Font Component Type

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

Although you can create a component in one of several ways, the easiest way to install a font (a .ttf, .fon, or .ttc file) in a setup is to create a Fonts component in the Component Wizard. Unlike the other component types offered in the wizard, there is no corresponding advanced setting for Fonts components. The setting that distinguishes a Fonts component and tells Windows Installer to install it differently is the files Font Title property. An alternative to creating a Fonts component is to select the Setup Best Practices option in the Component Wizard and let InstallShield create a Fonts component for you from your font files.

Note: If you want a font to remain on the system after the application has been uninstalled, set its components Permanent property to Yes.

1502

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Component Wizard

Add Installed Fonts Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

The wizard searches for all fonts that are registered on the development system. You can create a component containing any of these fonts by selecting them in the list.
Table 42-21: Add Installed Fonts Panel Settings Setting Fonts I also want to add fonts not installed on this system Description Select the fonts you want to include in your Fonts component. Click this option to be able to browse to additional fonts in the Add New Fonts panel. If you do not select this option, the wizard displays the Summary panel next.

Add New Fonts Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

This panel lets you add any .ttf, .fon, or .ttc file to your Fonts component.

Note: This panel is designed to allow you to add fonts to your installation that are not installed on your machine. For example, you might have a font file that is stored on a network drive. As a result, you cannot select fonts from your Fonts

InstallShield 2010 User Guide

ISP-1600-UG00

1503

Chapter 42: Wizard Reference Component Wizard

folder since those fonts are already installed on your local machine. If you want to add a font that is installed on your machine to your installation, click Back and select the appropriate font from the list. Table 42-22: New Fonts Panel Settings Setting Fonts Description Drag and drop files into the list, or click Add Fonts to browse to and add new fonts to your component. InstallShield reads the font title from the font file. If no title is specified within the font file, click on the font title to specify a title in the format FontTitle (FontType)for example, Marlett (TrueType). Add Fonts Remove Fonts Click Add Fonts to browse to new font files. Select a font in the list and click Remove Fonts to permanently remove the selected font from the component.

Summary Panel

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

If you launched the wizard by right-clicking on a feature, the new component is associated with that feature. Otherwise, you must open the Setup Design view, right-click on one or more features, and select Insert Components to associate your new Font component with a feature.

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

When the fonts feature is selected for installation, it is automatically registered by Windows Installer. All Font components are installed by default to the location stored in the FontsFolder property. You can edit the components Destination Folder or set additional properties by editing the components property sheet.

Note: If you would like a font to remain on the system even after the program has been uninstalled, be sure to set the Font components Permanent property to Yes.

Unlike the other component types offered in the wizard, there is no corresponding advanced setting for Fonts components. The setting that distinguishes a Fonts component and tells Windows Installer to install it differently is the files Font Title property.

1504

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Convert Source Paths Wizard

Component Wizard General Summary Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database

This panel appears at the end of the wizards component creation process. For help with a specific component type, see the following information.

Setup Best Practices Option COM Server Component Type Install Services Component Type Control Service Component Type Fonts Component Type

Note: Components that are not associated with a feature are displayed with the orphaned component icon.

Convert Source Paths Wizard


With the Convert Source Paths Wizard, you can convert existing hard-coded paths to path variables, thereby enhancing the portability of your setup project.

Task

To launch the Convert Source Paths Wizard:

On the Project menu, click Convert Source Paths.

Welcome Panel
The Convert Source Paths Wizard allows you to convert your setups hard-coded paths to path variables. The wizard scans your project for any use of hard-coded paths and then replaces the paths with standard path variables. If you have files that evaluate to existing path variables, the wizard automatically converts these paths without providing the option of selecting a new variable. For example, if you have a file in the Program Files folder, this path is automatically converted to the predefined path variable <ProgramFilesFolder>.

InstallShield 2010 User Guide

ISP-1600-UG00

1505

Chapter 42: Wizard Reference Convert Source Paths Wizard

Search Panel
The Search panel displays the search status. At this time the wizard is scanning the current project for any absolute paths. If your files evaluate to existing path variables, these files are converted automatically.

Search Results and Recommendations Panel


The Search Results and Recommendations panel lists all the path variable options for the files and links in your project that are not located in directories that already have path variables. For example, if your file is C:\App Files\Executable\App.exe, you are given the option of creating a path variable called Executable that equates to that path.

Panel Options
Path Variable Recommendation Indicate the variables that you want to create by selecting the corresponding boxes. If you do not want to create one of the suggested variables, clear the check box next to it. Rename Select the variable that you want to rename and click the Rename button. Type the new variable name in the Path Variable Recommendation column. Deselect All Click the Deselect All button to clear the check boxes next to all the corresponding suggested path variables. Select All Click the Select All button to select all the path variable suggestions. When you click Apply, these variables are created and added to your project.

Updating Your Project Panel


This panel displays the wizards progress in updating the hard-coded paths in your project to path variables.

Update Completed Panel


This panel signifies the end of the Convert Source Paths Wizard. Click the Finish button to return to the IDE.

1506

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Create New QuickPatch Wizard

Create New QuickPatch Wizard


Project: This information applies to QuickPatch projects.

A QuickPatch project is recommended for installation authors who want to ship small, single updates to their users. QuickPatch authoring provides a simple alternative to creating a patch in the Patch Design view, even though it provides less customization. Fundamentally, both patch creation methods produce the same deliverable types: .msp and .exe files. To create a QuickPatch project for an existing .msi file or an existing QuickPatch, use the Create New QuickPatch Wizard.

Caution: Creating a QuickPatch project for an earlier QuickPatch without first building the earlier QuickPatch project may cause unexpected behavior.

Task

To open the Create New QuickPatch Wizard:

Create a new project in InstallShield and select QuickPatch Project as the project type. The QuickPatch you create using this method can be used to patch an existing .msi file or an existing QuickPatch.

Tip: You can use the Create New QuickPatch Wizard to create a QuickPatch project for an existing QuickPatch. As an alternative, you can open the latest QuickPatch project in InstallShield and specify that you want to create a QuickPatch project for the current QuickPatch. For more information, see Creating a QuickPatch Project for an Existing QuickPatch.

Welcome Panel
Project: This information applies to QuickPatch projects.

A QuickPatch project is recommended for installation authors who want to ship small, single updates to their users. QuickPatch authoring provides an alternative to creating a patch in the Patch Design view, even though it provides less customization. Fundamentally, both patch creation methods produce the same deliverable types: .msp and .exe files. To create a QuickPatch project for an existing .msi file or an existing QuickPatch, use the Create New QuickPatch Wizard.

Note: If you click Cancel or Exit in the wizard, QuickPatch project creation will be incomplete, and the QuickPatch project will not open in InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

1507

Chapter 42: Wizard Reference Create New QuickPatch Wizard

QuickPatch Project Base Panel


Project: This information applies to QuickPatch projects.

The QuickPatch Project Base panel is where you specify whether you would like to base your new QuickPatch project on an existing .msi file or on an existing QuickPatch project.

Panel Options
Table 42-23: QuickPatch Project Base Panel Options Option Based on an MSI package Description Select this option to build a QuickPatch project for an existing .msi file. Select this option if this is the first QuickPatch created for the application. Select this option to build a QuickPatch project for an existing QuickPatch. This option creates a project that can patch existing QuickPatch projects as well as the original .msi file.

Based an existing QuickPatch project

Note: Attempting to create a QuickPatch of an already existing QuickPatch project without first building the existing QuickPatch causes unexpected behavior.

If you select the Based on an MSI package option and click Next, the Original Setup Package panel opens. If you select the Based an existing QuickPatch project option and click Next, the Location of Existing QuickPatch panel opens.

Original Setup Package Panel


Project: This information applies to QuickPatch projects.

If you are building a QuickPatch project for an existing Windows Installer installation, use the Original Setup Package panel to specify the location of the .msi file. The original installation is the base installation for the new patch. The Create New QuickPatch Wizard creates a patch that can update this installation. If the original installation is compressed, InstallShield creates an uncompressed image of that installation. The Original Setup Package panel enables you to specify the path for the uncompressed base image.

Note: Once your project has been created and opened in InstallShield, there is no way to change the path to the base installation. Therefore, if you want to patch a different installation, you must run through the Create New QuickPatch Wizard again to create a new QuickPatch project.

1508

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Create New QuickPatch Wizard

Panel Options
Table 42-24: Original Setup Package Panel Options Option Original Setup Description Specify the location of the original/base installation or click the Browse button. The Create New QuickPatch Wizard creates a project that can validate this installation. If your original installation is uncompressed, click Finish to open your QuickPatch project in InstallShield. Decompress Path Note: This option is not available if the original installation is uncompressed.Specify a path that should contain the decompressed image. If you do not specify a path, the following location is used as the default: <ISProjectDataFolder>\BaseImage.

Click Finish to close the Create New QuickPatch Wizard and open your new QuickPatch project in InstallShield.

Caution: You cannot decompress installations that span multiple disks from a local or network drive. You will need to find an alternate method of decompressing the installation.

Location of Existing QuickPatch Panel


Project: This information applies to QuickPatch projects.

If you are building a QuickPatch project for an existing QuickPatch, use the Location of Existing QuickPatch panel to specify its location. The QuickPatch that is created can be used to update the original installation, the existing QuickPatch project that you specified, and any selected intermediate QuickPatch projects.

Note: Once your project has been created and opened in InstallShield, there is no way to change the path to the existing QuickPatch project. Therefore, if you want to patch a different QuickPatch project, you must run through the Create New QuickPatch Wizard again to create a new QuickPatch project.

Panel Options
Existing QuickPatch Project Specify the location of the QuickPatch project (.ism file) that you would like to patch or click the Browse button.

InstallShield 2010 User Guide

ISP-1600-UG00

1509

Chapter 42: Wizard Reference Create Table Wizard

Create Table Wizard


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Create Table Wizard is launched when you are adding a table through the Direct Editor. This wizard collects information about your custom table, and then adds it to the table list.

Task

To launch the Create Table Wizard: 1. 2.

In the View List under Additional Tools, click Direct Editor. Right-click the Table explorer and click Add Table.

The Create Table Wizard consists of the following panels:

Welcome Column Properties Summary

Welcome Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

The Welcome panel provides an introduction to the Create Table Wizard.

1510

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Create Table Wizard

Task

To begin creating a table: 1.

In the table name box, enter a name.

Windows Logo Guideline: The Windows Logo Quality Program requires that you avoid naming a custom table with the MSI (in uppercase, lowercase, or mixed-case letters). The MSI prefix is reserved for future use in new standard properties and tables. 2.

Click the Add Column button to proceed to next panel in the wizard.

Column Properties Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

On the Column Properties panel, you configure information for your custom table columns. The following properties are configurable:
Table 42-25: Column Properties Panel Options Property Column Name Column Description Column Type Nullable Check Box Primary Key Check Box Localizable String Check Box String Length Description Provide a name for the column. Type a description for the column. The available types are Binary, Long, Short, and String. Select this check box if this columns values are nullable. Select this check box to make this column the tables primary key. Select this check box if the string is localizable. Provide a maximum length for string columns. Enter 0 if the string can be any length. For numeric columns, specify a minimum value. For numeric columns, specify a maximum value.

Min Value Max Value

InstallShield 2010 User Guide

ISP-1600-UG00

1511

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Table 42-25: Column Properties Panel Options (cont.) Property External Key Table External Key Column Description If this column references an external table, select it from this list Select the column referenced in an external table.

Click Add Another Column to define additional columns, or click Done with Columns to proceed to the Summary panel.

Summary Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform

In the Summary panel, you can review your new tables settings before you add it to your project. If you need to change any of the settings, click Back until you see the appropriate panel, and make the necessary changes. Click Finish to add the custom table.

Crystal Reports 8, 8.5, and 8.5 SP Objects Overview


The Crystal Reports 8 Object, the Crystal Reports 8.5 Object, and the Crystal Reports 8.5 SP Object provide an efficient way to add required redistributable Crystal Reports files with your application. Instead of adding individual files, InstallShield uses the Crystal Reports 8 Object Wizard, the Crystal Reports 8.5 Object Wizard, and the Crystal Reports 8.5 SP Object Wizard to assist you in determining the files needed for your application, depending on your database type, export formats, and other functionality. Based on your selections, InstallShield includes only the merge modules that you need, rather than every possible redistributable Crystal Reports file, decreasing the size of your installation.

1512

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Task

To add one of the Crystal Reports objects to your installation project: 1.

In the Redistributables view, select the check box for the Crystal Reports 8, Crystal Reports 8.5, or Crystal Reports 8.5SP object. The corresponding Crystal Reports Object Wizard opens.

2.

Customize the Crystal Reports object by selecting options in the wizard.

Crystal Reports 8 Object Wizard


The Crystal Reports 8 Object Wizard allows you to include Crystal Reports 8 components in your setup. The following panels are associated with the Crystal Reports 8 Object Wizard:

Welcome Engine Access Methods Export Formats Export Destinations Database Connections Additional Components Summary

Welcome Panel
The Welcome panel is the first panel displayed in the Crystal Reports 8 Object wizard. Click Next to proceed to the Engine Access Methods panel.

Engine Access Methods Panel


The Engine Access Methods panel allows you to select the methods you want to support in your setup. The following options are available:
Table 42-26: Engine Access Methods Panel Options Option Crystal ActiveX Control Crystal Reports Engine API (8.0 version) Crystal Reports Automation Server (8.0 version) Description 32-bit OCX Interface for C Developers

32-bit COM object model, dispatch only

InstallShield 2010 User Guide

ISP-1600-UG00

1513

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Table 42-26: Engine Access Methods Panel Options (cont.) Option Report Designer Component (8.0 version) Description 32-bit only COM object model, dual interface, apartment model

Caution: Crystal ActiveX Control requires Mfcans32.dll to be present on the target machine. The Crystal Reports object does not add this file by default. You can add this file to your installation project in the Files and Folders view.

Export Formats Panel


The Export Formats panel allows you to select the export formats required by your Crystal Reports application. Select this option to enable export support for reports. The following export formats are included when this option is selected:

Export Crystal Reports Format (8.0 version) Export CSV Format Export DIF Format (8.0 version) Export Excel Format Export Lotus 1-2-3 Format Export ODBC (8.0 version) Export Record Format Export Report Definition Format Export Rich Text Format (8.0 version) Export Text Format

Export Destinations Panel


The Export Destinations panel allows you to select the export destinations required by your Crystal Reports application. Select this option to provide support for standard Crystal Report destinations (report export locations). The following destinations are included when this option is selected:

Export to Application Export to Disk (8.0 version) Export to Exchange Folders (8.0 version) Export to MAPI Export to Lotus Domino (8.0 version) Export to VIM

1514

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Database Connections Panel


The Database Connections panel allows you to select the database connections you want to include with your reports. Select the database connections you want to include.

Additional Components Panel


The Additional Components panel allows you to select other components that your reports may require. The following options are available:
Table 42-27: Additional Components Panel Options Option Print Engine Charts Description Include print capabilities for your reports. You can include chart functionality in your reports. Select this option to do so. Crystal Reports supports the inclusion of geographic maps in reports. Select this option to include this functionality.

Maps (8.0 version)

Note: If you need to include Map functionality, and cannot determine the exact Map files your Crystal Reports application requires, you can check the Non-Grid Data Files for Maps box. This will significantly increase your setups size. If you can determine the specific Map files, they must be installed to [ProgramFilesFolder]MapInfo MapX\Maps. SQL Expressions (8.0 version) Select this option if you want to support SQL expressions in your Crystal reports. Select this option if you intend to support User Function Libraries (a separate DLL or Automation server to which you add your own custom functions). If your reports require Visual Basic run-time components and you do not know whether your target has them installed, you can include them by selecting this option.

User Function Libraries

Visual Basic 6 Runtime

Summary Panel
The Summary panel provides a summary of selections made in the previous panels of the Crystal Reports 8 Object Wizard. It provides a listing of merge modules that will be added to your project, and those merge modules that will be removed. It also reports merge modules that are needed but missing.

InstallShield 2010 User Guide

ISP-1600-UG00

1515

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Crystal Reports 8.5 Object Wizard


The Crystal Reports 8.5 Object Wizard allows you to include Crystal Reports 8.5 components in your setup. The following panels are associated with the Crystal Reports Object Wizard:

Welcome Engine Access Methods Export Formats Export Destinations Database Connections Additional Components Summary

Welcome Panel
The Welcome panel is the first panel displayed in the Crystal Reports 8.5 Object wizard. Click Next to proceed to the Engine Access Methods panel.

Engine Access Methods Panel


The Engine Access Methods panel allows you to select the methods you want to support in your setup. The following options are available:
Table 42-28: Engine Access Methods Panel Options Option Crystal ActiveX Control Crystal Reports Engine API (8.5 version) Crystal Reports Automation Server (8.5 version) Report Designer Component (8.5 version) Embeddable Designer Control Description 32-bit OCX Interface for C Developers

32-bit COM object model, dispatch only

32-bit only COM object model, dual interface, apartment model ActiveX Control; allows design and editing Crystal Reports at run time

Caution: Crystal ActiveX Control requires Mfcans32.dll to be present on the target machine. The Crystal Reports object does not add this file by default. You can add this file to your installation project in the Files and Folders view.

1516

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Export Formats Panel


The Export Formats panel allows you to select the export formats required by your Crystal Reports application. Select this option to enable export support for reports. The following export formats are included when this option is selected:

Export Crystal Reports Format (8.5 version) Export CSV Format Export DIF Format (8.5 version) Export Excel Format Export HTML Format (8.5 version) Export Lotus 1-2-3 Format Export ODBC (8.5 version) Export PDF Format Export Record Format Export Report Definition Format Export Rich Text Format (8.5 version) Export Text Format Export XML Format

Export Destinations Panel


The Export Destinations panel allows you to select the export destinations required by your Crystal Reports application. Select this option to provide support for standard Crystal Report destinations (report export locations). The following destinations are included when this option is selected:

Export to Application Export to Disk (8.5 version) Export to Exchange Folders (8.5 version) Export to MAPI Export to Lotus Domino (8.5 version) Export to VIM

Database Connections Panel


The Database Connections panel allows you to select the database connections you want to include with your reports. Select the database connections you want to include.

InstallShield 2010 User Guide

ISP-1600-UG00

1517

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Additional Components Panel


The Additional Components panel allows you to select other components that your reports may require. The following options are available:
Table 42-29: Additional Components Panel Options Option Print Engine Charts Description Include print capabilities for your reports. You can include chart functionality in your reports. Select this option to do so. Crystal Reports supports the inclusion of geographic maps in reports. Select this option to include this functionality.

Maps (8.5 version)

Note: If you need to include Map functionality, and cannot determine the exact Map files your Crystal Reports application requires, you can check the Non-Grid Data Files for Maps box. This will significantly increase your setups size. If you can determine the specific Map files, they must be installed to [ProgramFilesFolder]MapInfo MapX\Maps. SQL Expressions (8.5 version) User Function Libraries Select this option if you want to support SQL expressions in your Crystal reports. Select this option if you intend to support User Function Libraries (a separate DLL or Automation server to which you add your own custom functions). This is required when exporting to a format that allows you to set a page range. These formats include Rich Text Format (.rtf) and the Adobe Acrobat PDF format. Select option if you want to include the Crystal Reports component used for translating the report into an HTML stream. If your reports require Visual Basic run-time components and you do not know whether your target has them installed, you can include them by selecting this option.

Page Ranged Export

HTML Translation

Visual Basic 6 Runtime

Summary Panel
The Summary panel provides a summary of selections made in the previous panels of the Crystal Reports 8.5 Object Wizard. It provides a listing of merge modules that will be added to your project, and those merge modules that will be removed. It also reports merge modules that are needed but missing.

1518

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Crystal Reports 8.5 SP Object Wizard


The Crystal Reports 8.5 SP Object Wizard enables you to include Crystal Reports 8.5 SP components in your installation. The following panels are associated with the Crystal Reports 8.5 SP Object Wizard:

Welcome Specify Engine Access Methods Export Formats Export Destinations Database Connections Additional Components Other Requirements Summary

Welcome Panel
The Welcome panel is the first panel displayed in the Crystal Reports 8.5 SP Object Wizard. Click Next to proceed to the Specify Engine Access Methods panel.

Specify Engine Access Methods Panel


The Specify Engine Access Methods panel enables you to select the methods that you want to support in your installation. The following options are available:
Table 42-30: Specify Engine Access Methods Panel Options Option Crystal ActiveX Control Crystal Reports Engine API (8.5 version) Crystal Reports Automation Server (8.5 version) Embeddable Designer Control Description 32-bit OCX Interface for C Developers

32-bit COM object model, dispatch only

ActiveX Control; allows design and editing Crystal Reports at run time 32-bit only COM object model, dual interface, apartment model

Report Designer Component (8.5 version)

InstallShield 2010 User Guide

ISP-1600-UG00

1519

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Caution: Crystal ActiveX Control requires Mfcans32.dll to be present on the target machine. The Crystal Reports object does not add this file by default. You can add this file to your installation project in the Files and Folders view.

Export Formats Panel


The Export Formats panel enables you to select the types of export formats required by your Crystal Reports application. The following export formats are available:

Export Crystal Reports Format (8.5 version) Export CSV Format Export DIF Format (8.5 version) Export Excel Format Export HTML Format (8.5 version) Export Lotus 1-2-3 Format Export ODBC (8.5 version) Export PDF Format Export Record Format Export Report Definition Format Export Rich Text Format (8.5 version) Export Text Format Export Word Format Export XML Format

Export Destinations Panel


The Export Destinations panel enables you to select the destinations to which your Crystal Reports application exports. The following destinations are available:

Export to Application Export to Disk (8.5 version) Export to Exchange Folders (8.5 version) Export to Lotus Domino (8.5 version) Export to MAPI Export to VIM

Database Connections Panel


The Database Connections panel enables you to specify the database connection drivers that you want to install with your application.
1520 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview

Additional Components Panel


The Additional Components panel enables you to select other components that your reports may require. The following options are available:
Table 42-31: Additional Components Panel Options Option ASP ActiveX Viewer Description To include the ActiveX viewer with your installation, select this check box. To include the Java viewer with your installation, select this check box. If your application requires the ASP Web Report Server, select this check box. To include chart functionality in your reports, select this check box. If you want to include the Crystal Reports component used for translating the report into an HTML stream, select this check box. Crystal Reports supports the inclusion of geographic maps in reports. To include this functionality, select this check box.

ASP Java Viewer

ASP Web Report Server

Charts

HTML Translation

Maps (8.5 version)

Note: If you need to include Map functionality but you cannot determine the exact Map files that your Crystal Reports application requires, you can select the Non-Grid Data Files for Maps check box. This will significantly increase your installations size. If you can determine the specific Map files, they must be installed to [ProgramFilesFolder]MapInfo MapX\Maps. Page Ranged Export This is required when exporting to a format that lets you to set a page range. These formats include Rich Text Format (.rtf) and the Adobe PDF. If you want to support SQL expressions in your Crystal reports, select this check box. If you intend to support User Function Libraries (a separate .dll file or Automation server to which you add your own custom functions), select this check box.

SQL Expressions (8.5 version)

User Function Libraries

Other Requirements Panel


The Other Requirements panel lets you specify additional requirements that your application requires, such as MFC, Microsoft DCOM, and MDAC.

InstallShield 2010 User Guide

ISP-1600-UG00

1521

Chapter 42: Wizard Reference Custom Action Wizard

Summary Panel
The Summary panel provides a summary of selections made in the previous panels of the Crystal Reports 8.5 SP Object Wizard. It provides a listing of merge modules that will be added to your project, and those merge modules that will be removed. It also reports merge modules that are needed but missing.

Custom Action Wizard


Project: The Custom Action Wizard is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Custom Action Wizard enables you to add custom actions to your installation. These actions can call a .dll file function; launch an executable file (.exe); call a public method in a managed assembly; run VBScript, JScript, or InstallScript code; display an error message; set a directory or a property; and more.

Task

To launch the Custom Action Wizard: 1.

In the View List under Behavior and Logic, click Custom Actions and Sequences (in Basic MSI, InstallScript MSI, MSI Database, and Transform projects) or Custom Actions (in Merge Module and MSM Database projects). Right-click the Custom Actions explorer and click Custom Action Wizard.

2.

The Custom Action Wizard consists of the following panels:


1522

Welcome Basic Information Action Type Function Definition Action Parameters Managed Method Definition In-Sequence Scripts Additional Options Respond Options
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Insert into Sequence Summary

Windows Logo Guideline: If you are applying for the Windows Vista logo, any custom actions in your installation must follow best practices guidelines for custom action creation. You can use the InstallShield Certified for Windows Vista Validation Suite and the Full MSI Validation Suite to verify whether your installation package meets most of the custom actionrelated logo requirements. However, some of the requirements cannot be verified through the validation suite. To learn more, see Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program.

Welcome Panel
Project: The Custom Action Wizard is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Welcome panel provides a brief introduction to the Custom Action Wizard. The wizard helps you build a custom action that will perform tasks not inherently supported by Windows Installer.

Windows Logo Guideline: If you are applying for the Windows Vista logo, any custom actions in your installation must follow best practices guidelines for custom action creation. You can use the InstallShield Certified for Windows Vista Validation Suite and the Full MSI Validation Suite to verify whether your installation package meets most of the custom actionrelated logo requirements. However, some of the requirements cannot be verified through the validation suite. To learn more, see Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program.

Basic Information Panel


Project: The Custom Action Wizard is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00 1523

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

The Basic Information panel lets you enter the name of your custom action and a description. This information is used only for your reference and is not displayed to the end user.

Panel Options
Name Enter the name of your custom action. The name can contain only letters, numbers, underscores, or periods, and it must begin with a letter or an underscore. Comment You can enter any comments about your action in this box. This information is for your reference only and is not displayed to the end user.

Action Type Panel


Project: The Custom Action Wizard is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Action Type panel lets you specify the type of custom action that you want to create and where the code for that action is stored.

1524

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Panel Options
Type The Type list provides options for several different ways of executing your custom action. For example, your custom action can call an executable file, run VBScript code, or call a function from a .dll file. The following options are available in this list:
Table 42-32: Available Types of Custom Actions Type Call a function in a standard dynamic-link library Project Type Basic MSI, InstallScript MSI Description This custom action calls a function in a .dll file. Specify the function name, parameters, and return value in the Function Definition panel.

Note: If you call a function in a standard .dll file that is stored in the Binary table, you cannot use deferred or rollback execution for the actions In-Script Execution property. If you call a function in a standard .dll file that is installed with the product and the action is scheduled as deferred (for the In-Script Execution property), the .dll file that you are calling must be the components key file. Call a function in a Windows Installer dynamic-link library Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module This custom action calls a function from a .dll file written specifically for Windows Installer. The .dll files entry point must have a predefined parameter and return value.

Call a public method in a managed assembly

This custom action calls a public method in a managed assembly that is written in managed code such as Visual Basic .NET or C#. For more information, see Calling a Public Method in a Managed Assembly. This custom action displays a specified error message, returns failure, and ends the installation.

Display error message and abort

Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

Launch an executable

This custom action launches an executable file.

InstallShield 2010 User Guide

ISP-1600-UG00

1525

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-32: Available Types of Custom Actions (cont.) Type Launch another .msi package Project Type Basic MSI, InstallScript MSI, MSI Database, Transform Description Also known as a nested installation, this type of custom action launches a second .msi package during your installation.

Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations on the MSDN Web site. Run 64-bit JScript code Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform This custom action runs 64-bit JScript code instead of a compiled language such as C or Visual Basic. This type of custom action requires Windows Installer 2.0 or later on the target system.

Run 64-bit VBScript code

This custom action runs 64-bit VBScript code instead of a compiled language such as C or Visual Basic. This type of custom action requires Windows Installer 2.0 or later on the target system.

Run InstallScript code

This custom action calls a function from your InstallScript code.

Run JScript code

This custom action runs JScript code instead of a compiled language such as C or Visual Basic.

Run VBScript code

This custom action runs VBScript code instead of a compiled language such as C or Visual Basic.

Set a property

This custom action sets a property in the Property table. This is useful if you need to get information from the end user and store it so that it can be used later in your installation.

1526

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-32: Available Types of Custom Actions (cont.) Type Set a directory Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description This custom action sets a directory in the Directory table at run time. For example, if you want to create a temp directory that is a subdirectory of the installation directory selected by the end user, you can use this option to set that new temp directory for use later in the installation.

Location The code that your custom action calls can be stored in one of several places. Select the location where the installer should look for that code. Note that some custom action types do not support some of the locations. In addition, the Location setting is not applicable for the error custom action.
Table 42-33: Possible Locations for Storing Custom Actions Location An application that is advertised or already installed Custom Action Type Launch another .msi package Description Select this location to uninstall any Windows Installer applications that are currently installed on the target system for example, applications that you previously installed with a custom action. You should have this custom action launch only on uninstallation of your main installation. When you call a function in a standard .dll file, the file can be present in the target systems search path. Select this location if the .msi file that you want to launch is stored within your main installation package. Select this location to call code from a file or executable file that is going to be installed on the target system.

Destination machine search path Included within your main setup Installed with the product

Standard DLL

Launch another .msi package Standard DLL, MSI DLL, Managed code, Executable file, VBScript, 64-bit VBScript, JScript, 64-bit JScript VBScript, 64-bit VBScript, JScript, 64-bit JScript

Stored directly in the custom action

Select this location to enter code directly into the wizard, without having to associate a file.

InstallShield 2010 User Guide

ISP-1600-UG00

1527

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-33: Possible Locations for Storing Custom Actions (cont.) Location Stored in the Binary table Custom Action Type Standard DLL, MSI DLL, Managed code, Executable file, VBScript, 64-bit VBScript, JScript, 64-bit JScript Description Select this location to have your code base stored in the Binary table. This option is useful if you do not want the file to be installed on the target system.

Note: For the managed-code type of custom action, InstallShield creates a C++ Windows Installer wrapper DLL for your .NET assembly at build time. The wrapper DLL includes your assembly, as well as the information that is required to mediate, load, and run the assembly. InstallShield stores the wrapper DLL in the Binary table. Select this location to reference a pathwithout the file namethat is stored in the Directory table. Select this location to reference a full path to the executable that you want to launch. The path is stored in the Property table.

Stored in the Directory table Stored in the Property table

Executable file

Managed code, Executable file, VBScript, 64-bit VBScript, JScript, 64-bit JScript Launch another .msi package

Stored on the source media

Select this location if the .msi file that you want to launch is stored on the same media as your main installation package.

Function Definition Panel


The Function Definition panel is where you specify the parameters for the entry-point function in your standard .dll file. This panel is displayed only if you selected Call a function in a standard dynamic-link library in the Action Type panel of the Custom Action Wizard.

Note: The function must use the __stdcall calling convention. Functions with more than one parameter will not work properly if this convention is not used.

Panel Options
Name Specify the name of the function that you want to call. The .dll file can have a single entry point for each custom action. Arguments Build the list of argumentsin orderthat you want to pass to the function.

1528

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

First, click the last row of the Arguments list to add a new argument. Next, complete the Type, Source, and Value columns for each argument. Type In this list, select the data type of the parameter. Note that there are two special cases for argument types, and these cases are identified below.

Task

To initialize a pointer to null: 1. 2. 3.

In the Type list, select POINTER. In the Source list, select Constant. In the Value list, select NULL. Do not enter 0 (zero) instead of NULL, because it is interpreted as a pointer pointing to the number 0.

Task

To set a handle to the .msi database or the Windows Installer window: 1. 2. 3.

In the Type list, select HANDLE. In the Source list, select Constant. In the Value list, select MsiHandle or MsiWindowHandle, depending whether you want a handle to the .msi database or the Windows Installer window.

Source Indicate how you want to pass the data to the function. The following options are available in this list.
Table 42-34: Options for Passing Data to a Function Option Constant Description The value that you want to pass is stored as a literal in your installation project. After you select Constant for the arguments source, enter its definition in the Value column. This constant does not require a name or identifier. Do not enclose string literals in quotation marks. in Property Select in Property for the source to specify the name of a Windows Installer property whose value will be passed to the function. This type of argument is suitable for a ByVal parameter. This source type is similar to a ByRef parameter. Select inout Property for the source to specify the name of a Windows Installer property whose value will be passed to the function and can be modified by the function. An out property serves as a placeholder for a value that can be set by the function. No value is passed to the function, but the function requires the name of a property whose value it can modify.

inout Property

out Property

When you select a property for the arguments source, you must specify the name of the property in the Value column.
InstallShield 2010 User Guide ISP-1600-UG00 1529

Chapter 42: Wizard Reference Custom Action Wizard

Value The value can be one of two types:

A number or string literal that you enter when the arguments source is a constant A Windows Installer property when the arguments source is a property

Note: When you set the Type list to HANDLE and the Source list to Constant, the Value column contains two options: MsiHandle and MsiWindowHandle. These constants can be used to get a handle to either the .msi database or the Windows Installer window.

When the source is a property, the Value list provides the name of every property in the Property Manager. You can select an existing property or enter a new name, in which case the new property is added to the Property Manager. Remember that a property is merely a container for a value. If your parameter stores its value in an in property or inout property, ensure that you specify a value for the property in the Property Manager. (Context Menu) The context menu provides you with options for working with your arguments. To access the context menu, right-click an argument in the Arguments grid. The context menu options are described below.
Table 42-35: Context Menu Options Option Add Remove Move Up Description Click Add to add an argument to the Arguments grid. Click Remove to delete the argument. The arguments must be in the precise order in which the function expects to receive them. Click Move Up to place the argument higher in the list. Click Move Down to place the argument lower in the list.

Move Down

Return Type Select the data type of the functions return value. If you do not need to check the return value, you can accept void. Return Property Select the name of a property whose value will be set to the functions return value. If you are going to check the return value elsewhere in your installation, you may want to initialize the return propertys value. Silent mode Select this check box if you do not want InstallShield to display a warning message if the custom action fails to load the .dll file and call the function.

1530

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Action Parameters Panel


The Action Parameters panel is where you specify the actual file that you call in your custom action. For example, if you call an executable file, you can browse to that file and add any command-line options. This panel is not displayed if your custom action is running JScript or VBScript code that is stored directly within the action.

Panel Options
Source This box behaves differently depending on the options you selected for the Type and Location lists on the Action Type panel. The following table shows the source values that you can use, depending on the type and location of each custom action.
Table 42-36: Source Values for Custom Actions Custom Action Type Call a function in a standard DLL Instructions for Setting the Source Set the source for this custom action type according to its location.

Destination machine search pathBrowse to the location of the .dll file. The wizard uses only the file name and not the path. Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the .dll file is located. Then, in the list of files, select the standard .dll file. Stored in the Binary tableBrowse to the location of the .dll file.

Call a function in a Windows Installer DLL

Set the source for this custom action type according to its location.

Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the .dll file is located. Then, in the list of files, select the Windows Installer .dll file. Stored in the Binary tableBrowse to the location of the .dll file.

Call a public method in a managed assembly

Set the source for this custom action type according to its location.

Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the .NET assembly is located. Then, in the list of files, select the assembly. Stored in the Binary tableBrowse to the location of the .NET assembly. Path referencing a PropertySelect a Windows Installer property in the list, type the name of a new property, or type the name of a directory in the Directory table. The property or directory name must be enclosed within square brackets ([]). You can add a string after the property if appropriate. The resulting path should indicate the location of the .NET assembly.

Display error message and abort

The Source setting is disabled for the error custom action, since it is not applicable to this type of custom action.

InstallShield 2010 User Guide

ISP-1600-UG00

1531

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-36: Source Values for Custom Actions (cont.) Custom Action Type Launch an executable Instructions for Setting the Source Set the source for this custom action type according to its location.

Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the executable file is located. Then, in the list of files, select the executable file. Stored in the Binary tableBrowse to the location of the .exe file. Stored in the Property tableSelect a Windows Installer property in the list. If you specify the name of a new property, you must later open the Property Manager, enter the property, and specify a value that points to the .exe file. Stored in the Directory tableSelect one of the standard folders in the list, or enter the name of a new entry into the Directory tablewhich you can later edit in the Direct Editor. The directory that you specify is the working directory for the target that you specify in the Target box.

Launch another .msi package Set the source for this custom action type according to its location. (For more information about custom actions that launch another .msi package, see Nested Installations.)

Included within your main setupBrowse to the location of the child .msi file. The Custom Action Wizard automatically creates the appropriate entries in the Binary table. Stored on the source mediaBrowse to the location of the child .msi file. The Custom Action Wizard automatically adds this file to the Disk1 folder in the Support Files view. When you build a release, InstallShield copies the .msi file (but not its uncompressed application and support files) to the release location. An application that is advertised or already installedBrowse to the location of the child .msi file. The Custom Action Wizard extracts the product code from the .msi package that you select.

Run InstallScript code

You cannot change the location of the InstallScript file. For an InstallScript custom action, you must select the name of the entry-point function in the list. Set the source for this custom action type according to its location.

Run JScript or 64-bit JScript code

Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the .js file is located. Then, in the list of files, select the .js file. Stored in the Binary tableBrowse to the location of the JScript source file. Stored in the Property tableSelect one of the properties in the list. If you specify a new property, you must later open the Property Manager, enter the property name, and add the JScript code as the value of the property. Stored directly in the custom actionYou can use the In-Sequence Scripts panel, which provides a text editor for your JScript code.

Note: The In-Sequence Scripts panel is provided for backward compatibility only. A superior script editor is available in the Script tab of the Custom Actions and Sequences view (and the Custom Actions view).

1532

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-36: Source Values for Custom Actions (cont.) Custom Action Type Run VBScript or 64-bit VBScript code Instructions for Setting the Source Set the source for this custom action type according to its location.

Installed with the productClick Browse to open the Browse for File dialog box. In the list of destination folders, select the folder in which the .vbs file is located. Then, in the list of files, select the .vbs file. Stored in the Binary tableBrowse to the location of the VBScript source file. Stored in the Property tableSelect one of the properties in the list. If you specify a new property, you must later open the Property Manager, enter the property name, and add the VBScript code as the value of the property. Stored directly in the custom actionYou can use the In-Sequence Scripts panel, which provides a text editor for your VBScript code.

Note: The In-Sequence Scripts panel is provided for backward compatibility only. A superior script editor is available in the Script tab of the Custom Actions and Sequences view (and the Custom Actions view). Set a directory You cannot set the location when setting a Directory. You must select the name of a folder in the list, or enter a new name and specify it in the Directory table (available in the Direct Editor). You cannot set the location when setting a property. You must select the name of the property in the list, or enter a new name and specify it in the Property Manager.

Set a property

Target The value for the target depends on the custom action type.
Table 42-37: Target Options Custom Action Type Call a function in a standard DLL Call a function in a Windows Installer DLL Instructions for Setting the Target For the standard DLL type of custom action, the Target box is read-only. It displays the function definition that is specified on the Function Definition panel. Use this box to enter the name of the function that you want to call. You do not need brackets or any other special formatting, but note that the function name is casesensitive. A Windows Installer .dll function has a predefined parameter and return type. For more information, see Passing Parameters to a .dll File Function in a Custom Action. Call a public method in a managed assembly For a managed assembly type of custom action, the Target box is not applicable. The Managed Method Definition panel, which is the next panel in the wizard for this type of custom action, is where you identify the method that you want to be invoked.

InstallShield 2010 User Guide

ISP-1600-UG00

1533

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-37: Target Options (cont.) Custom Action Type Display error message and abort Instructions for Setting the Target Type the error message text that should be displayed when the custom actions conditions are met on the target system. As an alternative, you can type a property name whose value contains the error text. The property name must be enclosed within square brackets ([]). Launch an executable If you are launching an executable file, you can enter command-line arguments in this box. For example, if you want to launch a readme file that is installed with you installation, you should enter Notepad.exe [INSTALLDIR]Readme.txt.

Launch another .msi package Specify any public properties that you would like to pass to the .msi package. Run InstallScript code Run JScript/64-bit JScript or VBScript/64-bit VBScript code Set a property or directory The target value is not applicable for InstallScript custom actions. Enter the function name that you want to call.

Enter a formatted text string that evaluates to the new value of the property that you selected or created. See the Windows Installer Library for more information on formatted text strings.

Note: Both 64-bit JScript and VBScript custom actions require Windows Installer 2.0 or later.

Managed Method Definition Panel


The Managed Method Definition panel is where you specify the public class method in the managed assembly. The Custom Action Wizard displays this panel only if you selected Call a public method in a managed assembly in the Action Type panel. The Managed Method Definition panel has the following settings.
Table 42-38: Settings on the Managed Method Definition Panel Setting Class Description Enter the public class with which the method is associated. As an alternative, click the Browse button to display the Method Browser dialog box. This dialog box lets you select the public method from the list of public classes that are available in the managed assembly that you selected on the Action Parameters panel.

Note: The browse functionality is available only if the .NET Framework is installed. In addition, it is available only if the managed assembly is stored in the Binary table or it is installed with the productnot if its path references a property.

1534

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-38: Settings on the Managed Method Definition Panel (cont.) Setting Method Description Enter the public method that you want your installation to call. As an alternative, click the Browse button to display the Method Browser dialog box. This dialog box lets you select the public method from the list of public classes that are available in the managed assembly that you selected on the Action Parameters panel.

Note: The browse functionality is available only if the .NET Framework is installed. In addition, it is available only if the managed assembly is stored in the Binary table or it is installed with the productnot if its path references a property. Use custom method signature To use the default method signature, clear this check box. For the default method signature, the installation calls the method with an MsiHandle parameter if the signature has one or more void parameters, or if it has a single MsiHandle parameter. To use a custom method signature, select this check box. Then specify the arguments and return property as needed. If you specified a class and a method by clicking the Browse button, InstallShield automatically adds any associated parameters. Specify the value for each parameter that you want to pass to the method. For detailed information about specifying the methods signature, see Specifying the Signature for a Managed Method in an Assembly Custom Action. Arguments If you are using a custom method signature, specify the list of arguments that you want to pass to the selected method. If you specified a class and a method by clicking the Browse button, InstallShield automatically adds any associated parameters to the grid in this area. To use a property as an argument, click the value field for the parameter, and then select the property from the list. The context menu provides you with options for working with arguments. To access the context menu, right-click an argument in the Arguments grid. The available context menu commands are:

AddAdd an argument to the grid. RemoveDelete an argument from the grid.

This grid is available only if the Use custom method signature check box is selected. For more information about specifying the arguments, see Specifying the Signature for a Managed Method in an Assembly Custom Action. Return Property Select the name of the property whose value will be set to the methods return value. This list is available only if the Use custom method signature check box is selected. For more information about specifying the return property, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

InstallShield 2010 User Guide

ISP-1600-UG00

1535

Chapter 42: Wizard Reference Custom Action Wizard

In-Sequence Scripts Panel


Note: The In-Sequence Scripts panel is provided for backward compatibility only. A superior script editor is available in the Script tab of the Custom Action and Sequences view (and the Custom Actions view).

If your custom action calls JScript or VBScript code that is stored directly in the custom action, you can enter the script in the box that is displayed. Type your code into the text box and click Next to continue. No validation is performed on your code to check syntax.

Additional Options Panel


The Additional Options panel lets you specify how the custom action thread should be processed and whether the custom action should be run only during patch uninstallation. The Additional Options panel has the following settings.
Table 42-39: Settings on the Additional Options Panel Setting Return Processing Description Specify how the custom action thread should be processed. Valid options for the Return Processing list are:

Asynchronous (No wait for completion) Asynchronous (Wait for exit code) Synchronous (Check exit code) Synchronous (Ignores exit code)

These flags are used to specify that the main and custom action threads run synchronously (the installer waits for the custom action thread to complete before resuming the main installation thread) or asynchronously (the installer runs the custom action simultaneously as the main installation continues). Note that some options are not applicable to some types of custom actions. Only options that pertain to the selected type of custom action are available in this list.

1536

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-39: Settings on the Additional Options Panel (cont.) Setting Run During Patch Uninstall Project: If you are working on a project in Direct Edit mode, this setting is not applicable unless the database schema is a minimum of 405 (for Windows Installer 4.5 or later). This check box lets you specify whether Windows Installer should run the custom action only when a patch is being uninstalled. You can select this check box for a custom action in an .msi package. You can also select this check box for a new custom action that is added by a patch. However, this check box should not be selected for a custom action that is being added or removed by a patch to an existing custom action. This check box is cleared by default. When Windows Installer 4.5 runs the patch uninstall custom action, it uses the custom action in the patch that is being uninstalled. Description

Note: Windows Installer 4.5 includes support for this setting, but Windows Installer 4.0 and earlier do not. Therefore, if you select Yes for this setting and some target systems may have Windows Installer 4.0 or earlier, add a condition to this custom action to prevent Windows Installer 4.0 and earlier from running it. Otherwise, Windows Installer 4.0 and earlier would call the custom action during the installation, repair, or update of the package. For the condition, use the MSIPATCHREMOVE property. For more information, see MSIPATCHREMOVE in the Windows Installer Help Library.

InstallShield 2010 User Guide

ISP-1600-UG00

1537

Chapter 42: Wizard Reference Custom Action Wizard

Respond Options Panel


The Respond Options panel lets you specify how your custom action will respond to the rest of the installation.
Table 42-40: Respond Options Panel Options Option In-Script Execution Description Specify when you would like your action to execute.

Immediate executionSelect this option to have the action execute when it is encountered in the sequence. Immediate execution (Terminal Server Aware)Select this option to have the action execute when it is encountered in the sequence. The custom action impersonates the user during per-machine installations on terminal server machines. Deferred executionSelect this option to have your action wait until the script begins to run. Rollback executionSelect this option to set your action to execute only during rollback. If you changed something to the system during the execute sequence using a custom action, you need to undo that change with a rollback custom action. Rollback execution (Terminal Server Aware)Select this option to set your action to execute only during rollback. If you changed something to the system during the execute sequence using a custom action, you need to undo that change with a rollback custom action. The custom action impersonates the user during per-machine installations on terminal server machines. Commit executionSelect this option to have your action delayed until the installation has successfully completed the installation script. Commit execution (Terminal Server Aware)Select this option to have your action delayed until the installation has successfully completed the installation script. The custom action impersonates the user during per-machine installations on terminal server machines. Deferred execution in system contextSelect this option if your action needs elevated system privileges for performing tasks such as editing the registry. The action is deferred until the script begins to run. When the action does run, it runs with elevated system privileges. For more information on this property, see In-Script Execution.

Note: If you are calling a function in a standard dynamic-link library that is stored in the Binary table, you cannot use deferred or rollback execution for the actions In-Script Execution property.

1538

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Custom Action Wizard

Table 42-40: Respond Options Panel Options (cont.) Option Execution Scheduling Description This list lets you set how many times the action executes. For example, if an action is listed in both the User Interface and Execute sequences, it can be set to execute both times, or it can execute only once. If you selected anything other than Immediate execution in the In-Script Execution list, the Execution Scheduling list is not available and is set to Always execute.

Always executeSelect this option to have the action execute every time it is encountered. Therefore, it could execute in the User Interface sequence and again in the Execute sequence. Execute only onceSelect this option if your custom action should execute only onceeven if it exists in both the User Interface and Execute sequences. The action is skipped in the Execute sequence if the User Interface sequence has run.

Note: The Execute only once option does not work for InstallScript MSI projects. If your custom action exists in both the User Interface and Execute sequences, it is executed twice. This is becausein an InstallScript MSI projectthe InstallScript engine executes the User Interface sequence and Windows Installer executes the Execute sequence.

Execute only once per processThe User Interface sequence and the Execute sequence run in separate processes. Select this option to force your custom action to launch at least once in the User Interface sequence and once in the Execute sequence. Always execute at least once on the clientThis action executes at least one time on the client.

Insert into Sequence Panel


In the Insert into Sequence panel, you specify where in the installation sequence you want to insert the custom action that the wizard is creating. You can insert your custom action into one sequence or into multiple sequences.

Panel Options
Sequences Select where in the Installation User Interface or Installation Execute sequence you want to insert your custom action. Conditions Click the Browse button to launch the Condition Builder dialog box, where you can create a condition that will be used to determine whether your custom action is launched.

InstallShield 2010 User Guide

ISP-1600-UG00

1539

Chapter 42: Wizard Reference Database Import Wizard

Summary Panel
In the Summary panel, you can review your custom actions settings before you add it to your installation. If you need to change any of the settings, click Back until you see the appropriate panel, and make the necessary changes. When your action is complete, click Finish. You can now insert this custom action into a sequence or specify it as the argument for a dialogs control event.

Database Import Wizard


Note: The import database functionality applies to the Microsoft SQL Server Database. Oracle users should refer to the Oracle Web page on Oracle Database Utilities for information on utilities that may work in conjunction with InstallShield.

The Database Import Wizard helps you import your Microsoft SQL Server Database and generate a SQL script file from the database based on options you, the installation author, determine. The wizard can be launched from the following nodes of the SQL Scripts explorer when you right-click in the SQL Scripts view:

SQL Servers New Connection New Script

Note: InstallShield supports SQL Server 7.0 and later.

The following wizard panels are associated with the Database Import Wizard:

Welcome SQL Server SQL Database Database Tables Objects to Script Scripting Options Advanced Scripting Options Summary

1540

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Database Import Wizard

Welcome Panel
Note: The import database functionality applies to the Microsoft SQL Server Database.

The Database Import Wizard helps you import your Microsoft SQL Server Database and generate a SQL script file from the database based on options you, the installation author, determine. The second paragraph of this wizard panel indicates what the wizard will create.

SQL Server Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

Server Name
Specify a SQL Server from the list of servers below or click Browse to select the location of a server on your network.

Note: InstallShield supports SQL Server 7.0 and later. Importing a database and browsing for a SQL Server requires ODBC driver version 3.80 or later.

With Windows NT authentication using the network login ID


This is the recommended authentication method. SQL Servers must be set up to work with this method. The currently logged in user and the users credentials will be used.

With Server authentication using the login ID and password below


If you select this option, you will have to enter the login ID and set the password for a particular SQL Server.

SQL Database Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

Database Name
Choose a database found on the SQL Server you selected in the SQL Server panel. A script file will be generated for the database you select in the Database Name drop down list.

InstallShield 2010 User Guide

ISP-1600-UG00

1541

Chapter 42: Wizard Reference Database Import Wizard

Script Display Name


Type a valid identifier for the script file which will be generated from the SQL database you selected in the Database Name drop down list. The script display name is what is displayed in the explorer in the SQL Scripts view.

Note: When the generated script is executed on a target machine, this database will be automatically created if not found on the target server.

Database Tables Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

In this panel, determine which tables in the database you want to include or exclude in the generated script file. If you choose to include or exclude certain tables, then from the Available Tables list, click the table(s) you want, and then click the > button to mark the tables.

Note: Selecting the Include All Tables option guarantees that new tables added to the database are imported every time you reimport the database.

Objects to Script Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

The Objects to Script panel is where you select the objects that you want to import from the database.

Objects
Determine which objects to import from your SQL Database. Many of these objects represent and expose attributes of a single Microsoft SQL Server database object.

Note: The Records option is unavailable if no tables are selected to be imported in the Database Tables wizard panel.

Scripting Options Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

1542

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Database Import Wizard

The Scripting Options panel in the Database Import Wizard is where you specify whether your script should be compatible with Microsoft SQL Server version 7.0. Other options on this panel let you specify whether descriptive headers, extended properties, and other information should be included in your script. Transact-SQL statements are generated as needed.

InstallShield 2010 User Guide

ISP-1600-UG00

1543

Chapter 42: Wizard Reference Database Import Wizard

General Options
Table 42-41: General Options Option Create Only If Missing Description To generate a Transact-SQL statement that creates a component prefixed by a check for existence, select this check box. When the script is executed, a component is created only if a copy of the named component does not exist.

Note: Currently, this option applies only to tables. Drop First If Exists To generate a Transact-SQL statement that removes a referenced component, select this check box. The script tests for the existence of the component prior to an attempt to remove the component.

Include Descriptive Headers To include explanatory header text before each Transact-SQL statement in the script, select this check box. Include Extended Properties Only Script 7.0 Compatible To include extended stored procedures in the SQL scripts that are created, select this check box. To generate a script that is compatible with Microsoft SQL Server version 7.0, select this check box. If you select this check box, the following SQL Server 2000 options are ignored:

Column level collation User-defined functions Extended property INSTEAD OF trigger on tables and views Indexes on views (indexed views) Indexes on computed columns Reference permissions on views Descending indexes

Table Scripting Options


Table 42-42: Table Scripting Options Setting Script Indexes Description To generate a Transact-SQL statement that creates indexes that currently exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel.

1544

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Database Import Wizard

Table 42-42: Table Scripting Options (cont.) Setting Script Full-Text Indexes Description To generate a Transact-SQL statement that creates full-text indexes, select this check box. Selecting this check box is useful only if one or more tables are selected on the Database Tables panel. Script Triggers To generate a Transact-SQL statement that creates triggers that exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel. Script Check Constraints To generate a Transact-SQL statement that creates check constraints that exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel. Script Foreign Keys To generate a Transact-SQL statement that creates FOREIGN keys that exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel. Script Primary Keys To generate a Transact-SQL statement that creates PRIMARY keys that exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel. Script Defaults To generate a Transact-SQL statement that creates defaults that exist for any selected tables, select this check box.

Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel.

Advanced Scripting Options Panel


Note: The import database functionality applies to the Microsoft SQL Server Database.

InstallShield 2010 User Guide

ISP-1600-UG00

1545

Chapter 42: Wizard Reference Database Import Wizard

The Advanced Scripting Options panel lets you specify security scripting options, as well as the file format.

Security Scripting Options


Table 42-43: Security Scripting Options Setting Script database Description Generate a Transact-SQL statement to create a script of the existing database schema. Generate a Transact-SQL statement to create all users and roles that have access to the database. Generate a Transact-SQL statement to create all logins that currently have access to the server. Generate a Transact-SQL statement to create all grant, revoke, and deny permissions that currently exist for each object selected on the Objects to Script panel.

Script database users and database roles Script SQL Server logins (Windows NT and SQL Server logins) Script object-level permissions

File Format
Table 42-44: File Format Options Option Windows Text (ANSI) Description This is the default recommended option. Choose this file format to have the script in ANSI format. International Databases can use the Unicode file format for the script, if necessary. Note that the InstallShield SQL Script Editor cannot modify Unicode Scripts. To edit the script using Microsofts SQL Query Analyzer, right click on the script in the explorer of the SQL Scripts view and select that option.

International Text (Unicode)

Note: Consult your SQL-DMO help reference for more detailed information about script formatting and file formats.

Summary Panel
Note: The import database functionality applies to the Microsoft SQL Server Database.

The Summary panel provides a summary of all the wizard settings. Check the Regenerate Script at Build option if you want to regenerate the script file each time you build your installation project.

1546

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Device Driver Wizard

Note: The Regenerate Script at Build option will slow down your build since a connection to the server needs to be established, and the database needs to be reimported every time you rebuild your project.

Click Finish to generate the script file (.sql). Once the script is generated, you can edit it from the scripts Script tab in the SQL Scripts view.

Device Driver Wizard


Project: The Device Driver Wizard is available in the following project types:

Basic MSI InstallScript MSI MSI Database

The Device Driver Wizard simplifies the process of installing device drivers from a Windows Installer based installation using the Driver Installation Frameworks for Applications (DIFxApp) from Microsoft. The wizard creates the necessary table and entries, custom actions, feature, and components. For the latest available information on the Driver Installation Frameworks, visit Windows Hardware and Driver Central at http://www.microsoft.com/whdc/.

Task

To open the Device Driver Wizard, do one of the following:

In the Setup Design view, right-click a feature and then click Device Driver Wizard. The feature that the wizard creates will be a subfeature of the selected feature. On the Project menu, click Device Driver Wizard. The feature that the wizard creates will be a root-level feature.

The following panels are associated with the Device Driver Wizard:

Welcome Device Driver Package Device Driver Files Device Driver Information Project-Wide Device Driver Information Summary

InstallShield 2010 User Guide

ISP-1600-UG00

1547

Chapter 42: Wizard Reference Device Driver Wizard

Welcome Panel
The Device Driver Wizard simplifies the process of installing device drivers from a Windows Installer based installation using Microsofts Driver Install Frameworks for Applications (DIFxApp). The wizard creates the necessary table and entries, custom actions, feature, and components.

Tip: You can disable the Welcome panel by choosing the Tools menus Options command and clearing the Options dialog boxs User Interface tabs Show Welcome panel in IDE wizards option.

Device Driver Package Panel


In the Device Driver Package panel, specify the package file (.inf file) for the device driver that you want to add. Type the fully qualified file name of the package, or click the Browse button to navigate to the file.

Note: Clicking Next displays a warning message if the specified package file does not specify a security catalog, if the specified security catalog is missing, or if the package file has been modified or corrupted since it was signed. For more information, visit http://www.microsoft.com/whdc/winlogo/drvsign/drvsign.mspx.

Device Driver Files Panel


The Device Driver Files panel displays the files that the wizard has detected as belonging to the device driver.

Device Driver Information Panel


In the Device Driver Information panel, you can view the device driver type that is specified in your .inf file, and optionally select any of the following runtime options:

Always overwrite any existing device driver


Replace any existing driver for the device with this driver. If this check box is cleared and a driver already exists for the device, your driver is not installed.

Do not show Connect Device to Computer dialog


To prevent the Connect Device to Computer dialog from being displayed during the installation of a device driver if a device matching the driver is not connected to a computer, select this option.

Do not create Add or Remove Programs entry for device driver


If you select this check box, the installation does not create an Add or Remove Programs entry for the device driver. If you clear this check box, the installation does create an Add or Remove Programs entry. DIFxApp does not support this feature on Windows Vista.

1548

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Device Driver Wizard

Install unsigned driver files and drivers with missing files


By default, DIFxApp does not install unsigned driver packages or driver packages that have missing files. To override this default behavior, select this check box. Selecting this check box enables you to fully test drivers more easily before shipping final signed versions.

Remove binary files associated with driver during uninstall


By default, when DIFxApp uninstalls a driver package, DIFxApp does not remove the binary files that were copied to the system when it installed the driver. To override this default behavior, select this check box. If you select this check box, DIFxApp removes a binary file from the system only if the binary file is identical to the corresponding binary file in the driver store.

Caution: Select the Remove binary files associated with driver during uninstall check box only if you can verify that the drivers binary files are not required by any other driver package or application.

Device Driver Type


The Device Driver Information panel displays a device driver type, which is determined in the following way:

If the [Version] section of the package file (.inf file) has a DriverPackageType entry whose value is one of those in the following table, the corresponding driver type is displayed. Otherwise, the displayed device driver type is Plug and Play driver.

Table 42-45: DriverPackageType Values and Corresponding Driver Types DriverPackageType Value ClassFilter FileSystem FileSystemFilter KernelModule KernelService Network PlugAndPlay Corresponding Driver Type Class filter driver File system driver File-system filter driver Export driver Kernel service driver Network driver Plug and Play driver

InstallShield uses Microsoft Windows Driver Install Framework (DIFx) to install drivers. When your device driver is installed, DIFx treats it as being a device driver of the type that is displayed in the Device Driver Information panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1549

Chapter 42: Wizard Reference Device Driver Wizard

To change the device driver type, change the value of the DriverPackageType entry in the package files [Version] section to the desired value from the preceding table, and then re-sign the package file. (For more information on signing package files, visit http://www.microsoft.com/whdc/winlogo/drvsign/ drvsign.mspx.)

Project-Wide Device Driver Information Panel


The settings that you configure on the Device Driver Information panel are applied to all device drivers in this project. The settings are:

Include all localized installation runtime dialogs


When this check box is selected, the installation uses a custom action runtime .dll that includes dialogs and text for the following languages:

Arabic (Saudi Arabia) Chinese (Peoples ROC) Chinese (Taiwan) Czech (Czech Republic) Danish (Denmark) Dutch (Netherlands) English (United States) Finnish (Finland) French (France) German (Germany) Greek (Greece) Hebrew (Israel) Hungarian (Hungary) Italian (Italy) Japanese (Japan) Korean (Korea) Norwegian (Bokml) (Norway) Polish (Poland) Portuguese (Brazil) Portuguese (Portugal) Russian (Russia) Spanish - Modern Sort (Spain) Swedish (Sweden) Turkish (Turkey)

1550

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Dialog Wizard

If you clear this check box, the installation uses runtime dialogs for English only. The English runtime .dll file is smaller than the localized .dll file, so if space is an issue and you do not need the extra language runtime dialogs, clear this check box.

Device driver machine architecture


This area has several options. Select the appropriate option.

Device driver targets 32 bit machines Device driver targets Itanium 64 bit machines Device driver targets AMD 64 bit machines

Summary Panel
The Summary panel displays the options that you have specified in the wizard. Click the Finish button to complete the wizard.

Dialog Wizard
InstallShield provides a Dialog Wizard that enables you to add a new dialog to your installation and configure it by stepping through the wizard panels.

Task

To launch the Dialog Wizard: 1. 2. 3.

Open the Dialogs view. In the Dialogs explorer, right-click All Dialogs and then click New Dialog. The Dialog Wizard launches. Follow the wizard panels.

The following panels are associated with the Dialog Wizard:

Welcome Dialog Template User Interface Sequence Dialog Position and Condition

Welcome Panel
This panel welcomes you to the wizard and briefly describes the Dialog Wizards function. Click Next to begin using the wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1551

Chapter 42: Wizard Reference Dialog Wizard

Dialog Template Panel


Use the Dialog Template panel to select a default template or an existing dialog on which to base your new dialog.

Panel Options
List of Dialogs The box in the Dialog Template panel lists dialogs that are in the directory specified in the Dialog Location box on the File Locations tab of the Options dialog box. It may also include dialogs that are stored in a repository. In addition, several default dialog templates are listed:
Table 42-46: Dialog Template Options Dialog Template Blank Exterior Description Creates a blank dialog with no dialog controls. Creates a dialog with a large bitmap along the left side of the dialogsimilar to the formatting of the Welcome dialog. This dialog template is available only for Basic MSI projects. Creates a dialog with a small bitmap at the top of the dialog. This dialog template is available only for Basic MSI projects. Creates a set of dialogs that enable the end user to create or browse for an existing user account in order to access resources restricted to others. Creates a new script-based dialog that contains the same controls as those contained in an internal dialog. This dialog contains basic controls, including Back, Next, Cancel, Title, and Subtitle. This dialog template is available only for InstallScript MSI projects. Creates a new script-based, skinnable dialog that contains some of the same controls as those contained in an internal dialog. This dialog contains basic controlsincluding Back, Next, and Cancel. This dialog template is available only for InstallScript MSI projects. You should select this option if you plan to use dialog skins.

Interior

LogonInformation

NewScriptBasedDialog.isd

NewSkinnableDialog.isd

Caution: If you add any controls to this dialog, do not set the control ID to 52. If you do, the dialog skins will not work.

Show Dialogs in Repository To display dialogs that are stored in a repository, select the Show Dialogs in Repository check box. Browse Click the Browse button if you want to select to a dialog (.isd) file that is not listed.
1552 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Dialog Wizard

Let me Insert this dialog into a sequence Select this check box to automatically insert the new dialog in a user interface sequence. This check box is available only for Basic MSI projects and only for Interior and Exterior dialogs. In InstallScript MSI projects, you need to use InstallScript to schedule the dialogs appearance in the user interface and to process the dialogs controls.

Note: If this option is not selected in a Basic MSI project, the wizard process ends and the new dialog is added to your project. You need to manually add the dialog to a sequence to display it during installation.

Basic MSI Projects


If you selected an Exterior or Interior dialog, click Next to move to the next panel. If you selected a Blank dialog, a dialog in your repository, or a dialog in a different location, click Finish to add the dialog to your project.

Note: You need to manually insert a blank dialog into a sequence in order to display it during installation.

InstallScript MSI Projects


Click Finish to add the new dialog. In order for the new dialog to appear in the user interface, you need to add it to your script and use InstallScript to process the dialog controls. You can edit the dialog controls if necessary.

User Interface Sequence Panel


In this panel, you select the user interface sequence into which you want to insert the new dialog. You can also see which dialogs are currently in the selected sequence and insert the new dialog after a particular existing dialog.

Panel Options
Table 42-47: User Interface Sequence Panel Options Option User Interface Sequence Description From the menu, select the sequence into which you want to insert the new dialog. Displays the dialogs that occur in the selected sequence. Select the dialog that you want to appear immediately before your new dialog in the sequence.

Dialogs currently in this sequence

Dialog Position and Condition Panel


In this panel, you indicate where you want the dialog to appear in the sequence and you can specify any conditions you want placed on the dialog.
InstallShield 2010 User Guide ISP-1600-UG00 1553

Chapter 42: Wizard Reference DirectX Object Wizard

Panel Options
Table 42-48: Dialog Position and Condition Panel Options Option Dialog Position Description This pane displays the new dialogs place in the sequence selected in the User Interface Sequence panel. To move the new dialog within the sequence, select it and click Move Up or Move Down. Set a condition for the new dialog in this field. Click Build to launch the Condition Builder dialog box.

Condition

Click Finish to exit the wizard. InstallShield adds the new dialog to your project and inserts it in the specified sequence.

DirectX Object Wizard


Project: The DirectX Object Wizard is available in the following project types:

Basic MSI InstallScript MSI

The DirectX Object Wizard enables you to include the Microsoft DirectX 9c redistributable files in your installation project and to set several options.

For information about which files are included with the DirectX object, see Including the DirectX 9.0 Object. The optional ManagedDX component of DirectX 9c requires that the .NET Framework version 1.1 or later be installed on the system.

The following wizard panels are associated with the DirectX Object Wizard:

Welcome Object Settings Summary

For more information about DirectX, visit http://msdn.microsoft.com/directx.

Welcome Panel
Project: The DirectX Object Wizard is available in the following project types:

1554

Basic MSI

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference DirectX Object Wizard

InstallScript MSI

The DirectX Object Wizard enables you to include the Microsoft DirectX 9c redistributable files in your installation project and to set several options.

For information about which files are included with the DirectX object, see Including the DirectX 9.0 Object. The optional ManagedDX component of DirectX 9c requires that the .NET Framework version 1.1 or later be installed on the system.

For more information about DirectX, visit http://msdn.microsoft.com/directx.

Object Settings Panel


Project: The DirectX Object Wizard is available in the following project types:

Basic MSI InstallScript MSI

The Object Settings panel enables you to set the following options:
Table 42-49: Object Settings Panel Options Option Place DirectX files in a folder in Disk1 Description If you select this check box, InstallShield creates a DirectX folder for your installation at build time and places it in the Disk1 folder of your release. If you clear this check box, InstallShield streams the DirectX redistributable files into the .msi file. If you are creating a single-file executable installation, clear this check box so that the files are included in the .msi file. For information on the DirectX files that are included in the object, see Including the DirectX 9.0 Object. Show the Microsoft DirectX EULA before starting the DirectX 9 installation By default, the Microsoft DirectX EULA is displayed to the end user before the DirectX 9 installation begins. To prevent the EULA from being displayed, clear this check box.

For more information about DirectX, visit http://msdn.microsoft.com/directx.

Summary Panel
Project: The DirectX Object Wizard is available in the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1555

Chapter 42: Wizard Reference Dynamic Scanning Wizard

The Summary panel enables you to review the options that you configured on the Object Settings panel. Click Finish to accept the settings and add the DirectX 9 redistributable files to your project.

Dynamic Scanning Wizard


You can use the Dynamic Scanning Wizard to add an executables dependency files to your setup. This wizard scans a running executable for all DLL and OCX dependency files and automatically adds them to your project. The wizard can scan for an executable that is already a part of your setup, or it can add a new executable to your project in the Specify the Executable panel prior to the scanning process.

Task

To launch the Dynamic Scanning Wizard: 1. 2.

Open the Dependency Scanners view. Click the Perform Dynamic Scanning button to the right.

Welcome Panel
The Dynamic Scanning Wizard provides you with an easy path to add your applications dependency files to your setup. Before you begin using the scanner, you should add the target executable file to your installation. Click Next to begin using this wizard.

Filter Files Panel


The Dynamic Scanning Wizard may list as dependencies certain files that you do not want added to your installation. For example, common system files that are already present on target machines usually do not need to be reinstalled. To avoid having these files added to your installation when you run the scanner, select the Filter files check box on the Filter Files panel. To learn how to customize the list of files that are excluded from scans, see Filtering Files in Dependency Scanners.

Specify the Executable Panel


In the Specify the Executable panel, you can select whether or not you want to scan an executable that is already associated with your setup or one that has not yet been added.

Panel Options
I would like to select an executable file from my project (recommended) Select this option if the executable you would like to scan has already been added to your setup project. I would like to select a new executable Select this option if the executable you want to scan is not currently associated with your setup project.
1556 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Dynamic Scanning Wizard

Specify Application File Panel


This panel allows you to select the specific executable file (EXE) you would like to scan. Additionally, you can specify command-line parameters for the EXE and a working folder.

Panel Options
Application Specify which executable file you would like to scan. If you choose to scan a file that is already associated with your project, select it from the list of executables present in your setup. If you choose to scan a file that is not yet a part of your setup, enter the path to that file or click the Browse button to navigate to it. Command Line Enter any command-line parameters you would like to pass to the executable. These parameters are only used during the scanning process and will not be used after the wizard has been dismissed. Working Folder Enter the path to the working folder for this application, or click the Browse button to navigate to this directory. By default, this directory is set to the same folder in which the application you choose to scan resides.

Launch the Application


Before the wizard begins scanning your application, it must launch the application. After your application is launched by the wizard, you should use as many of the applications menu items and features as you can. This helps to identify where dependency files are located so that they can be added to your installation. Click Next to launch your application and begin scanning for dependencies.

Your Application is Running Panel


This panel is displayed while your application is running. When you have finished using your application, click Done to view the results of the scan. No files are added until you have confirmed the findings of the scan.

File Selection Panel


Panel Options
File Indicate which files you want added to your setup by selecting the appropriate boxes. Additional information about each of these files is also displayed in this fieldfor example, the feature to which it will be added and the location of the dependency file. (Note that the files are displayed in a flat list rather than a nested tree control.)

InstallShield 2010 User Guide

ISP-1600-UG00

1557

Chapter 42: Wizard Reference Export Components Wizard

Deselect All Select this option to have none of the displayed files added to your setup. You can then manually check the files you would like added. Select All Select this option to have all the displayed files added to your setup. You can then manually deselect the files you would not like to be added.

Scan Results Panel


The Scan Results panel displays the dependencies located by the wizard. The files listed in this window will be added to your setup project. Click Next to add these files or click Cancel to exit the wizard without adding any files to your setup.

Completing the Dynamic Scanning Wizard Panel


At this point, the wizard has added the executables dependency files to your setup. If you chose to scan an executable that was not already associated with your setup, that .exe file has been added as well. Click Finish to close the wizard and return to the IDE.

Export Components Wizard


Project: The Export Components Wizard does not appear in the following project types:

InstallScript InstallScript Object QuickPatch Smart Device

This wizard simplifies the process of exporting a component from certain file types (.ism, .msi, .msm) to any existing project or a new one altogether. A common use of this wizard includes exporting components to merge modules.

Note: You will not be able to export components from an .msi file to an .ism file.

When you export components to other projects, a copy of this component is added to the specified project file, along with all of the components data, such as its files, shortcuts, registry entries, and advanced settings.

1558

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Export Components Wizard

Task

To access the Export Components Wizard: 1. 2.

Select a component from the Components view. Right-click, and select Export Component Wizard from the context menu.

Note: You can also access the Export Components Wizard from the Project menu in the IDE.

The following panels are associated with the Export Components Wizard:

Welcome Select Target File Select Target File Info Summary

Welcome Panel
Project: The Export Components Wizard does not appear in the following project types:

InstallScript InstallScript Object QuickPatch Smart Device

This wizard simplifies the process of exporting components from a file type (.ism, .msi, .msm) to any existing project or a new one altogether. A common use of this wizard includes exporting components to merge modules.

Note: You cannot export components from an .msi or .msm file to an .ism file. Also, you cannot export from an .ism file to an .msi or .msm file.

Note: You can disable the Welcome panel by selecting the check box in the panel after viewing it the first time. You can also disable the panel by choosing Options from the Tools menu and deselecting the option in the User Interface tab of the Options dialog.

Select Components Panel


Project: The Export Components Wizard in not available in the following project types:
InstallShield 2010 User Guide ISP-1600-UG00 1559

Chapter 42: Wizard Reference Export Components Wizard

InstallScript InstallScript Object QuickPatch Smart Device

In this panel, all of the components in your existing project are listed. Select the components that you want to export. You can filter the components list in this panel by feature or component destination.

Note: When you are exporting from an .msm or .ism file, the feature filter is not available because there are no features in .msm files.

Select Target File Panel


Project: The Export Components Wizard does not appear in the following project types:

InstallScript InstallScript Object QuickPatch Smart Device

In this wizard panel, determine whether you want to export your file (.ism, .msi, or .msm) to an existing or new Merge Module, MSI database, or .ism project file. The first option allows you to export to an existing file. The second one allows you to export to a new file. In either case, browse for the file location.

Note: If the target .ism file already has a component of the same name with different properties, the Conflict dialog opens to offer you options for resolving the conflicts.

There is also an option to export as a Merge Module project. Select this option to export the component to this specific project type.

Target File Info Panel


Project: The Export Components Wizard does not appear in the following project types:

InstallScript InstallScript Object QuickPatch Smart Device

In this panel, specify information for the new project. Enter information in the product name, version, and language edit fields, and determine whether or not you want to replace exported components in the current project with the generated merge module. Replacing the component with the exported merge module option will remove the component from the currently open file.

1560

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Function Wizard

Summary Panel
Project: The Export Components Wizard does not appear in the following project types:

InstallScript InstallScript Object QuickPatch Smart Device

The summary panel displays the results of the export process. The summary also lists any errors from exporting. Click Finish to complete the process.

Note: After you have arrived at the Summary panel, you cannot click Back to return to previous panels.

Function Wizard
The Function Wizard automates the process of adding function calls to your scripts. After you complete two brief wizard panels, your function call is inserted into your script at the caret location.

Launching the Function Wizard

Task

To launch the Function Wizard, do one of the following:

From the Script Editor, press Ctrl+I. Click the toolbars Insert InstallScript Function button ( ). On the Edit menu, point to Insert and select InstallScript Function.

Function Name Panel


Lets you select an InstallScript function to paste into the active script editor window. The Function Wizard lets you select from an alphabetic list of all functions or from lists of specific function categories. You can view the description for each function you highlight. Press the Help button to see the complete function description for any highlighted function.

Panel Options
Function Category (list box) Select a function category. The InstallScript functions belonging to the selected category are displayed in the Function Name list box. Select All to display the names of all available InstallScript functions.

InstallShield 2010 User Guide

ISP-1600-UG00

1561

Chapter 42: Wizard Reference Import REG File Wizard

Function Name (list box) Select a function name to display the function parameters and a brief description of the selected function in the bottom portion of this panel. Click Next to display the Function Parameters panel of the Function Wizard.

Function Parameters Panel


Displays the name of the function selected in the Function Name panel and the parameters for that function. Next to each parameter is either an edit box in which you can enter a variable name or a value, or a drop-down menu from which you can select a parameter value.

Task

To specify function parameters and insert the function into your script: 1.

Complete the arguments for each function. When you place the cursor in an edit field, the parameter description appears at the bottom of the panel. If there are predefined options available for a parameter, the edit field contains a drop-down menu. Note that you can select only one option from a drop-down menu, even when the options are not exclusive.

Note: You can enter strings (or string identifiers) and numbers directly in the edit fields, but you must pay careful attention to the purpose of the parameters. One clue is the InstallScript Hungarian notation in the variable name. You must declare all variable names that you use in all function calls. The Function Wizard does not declare them for you. 2.

Click Finish to insert the function call into your setup script. If you need further help, place the cursor in the function name and press the F1 key.

Import REG File Wizard


InstallShield enables you to import existing registry (.reg) files that you have created in other installation projects or outside InstallShield.

Task

To launch the Import REG File Wizard: 1. 2.

Open the Registry view. Windows Installer projects only: In the View Filter list, click the component that should have the .reg file that you are importing.

Note: If All Application Data is selected, the Registry view is read-only.InstallScript projects only: In the Destination computers Registry view pane, open the registry set that should have the .reg file that you are importing.

1562

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Import REG File Wizard

3.

In the Destination computers Registry view pane, right-click the registry key to which you would like your registry data added, and then click Import REG File. The Import Reg File Wizard opens.

When you import an .reg file into a component or registry set, that registry data is added to the components or registry sets registry data and written to the end users system if the component or registry set is installed. The Import REG File Wizard consists of the following panels:

Welcome Import Registry File Import Conflict Options Progress

Welcome Panel
The Import REG File Wizard allows you to import existing registry data (.reg) into your InstallShield project. This registry data is added to the target systems registry during the setup project. Click Next to continue to the next wizard panel to begin importing your REG file.

Note: Before you begin importing REG data be sure that you selected the proper feature to which you would like this data added. To specify a feature, cancel the wizard and select the appropriate feature from the Feature list at the top of the Registry view.

Import Registry File Panel


In this panel you can specify the REG file you would like to import.

Panel Options
Registry File Enter the path to the REG file you would like to import, or click the Browse button to navigate to this file.

Import Conflict Options Panel


Because your setup may already contain registry data that could conflict with information stored within the REG file you are importing, you can select how you would like to handle any conflicts.

Panel Options
Overwrite the registry data Select this option if you would like data stored within the REG file you are importing to overwrite any conflicting data already present in your setup project.
InstallShield 2010 User Guide ISP-1600-UG00 1563

Chapter 42: Wizard Reference Import XML Settings Wizard

Do not overwrite the registry data Select this option if you would like to retain the data already present in your setup project when a conflict arises during the import progress. All nonconflicting registry data are still imported. Log all registry conflicts to a file Select this option if you want to keep a record of all registry conflicts found by the wizard. You can type a path and folder name in the field or click the folder button to browse to a file.

Import Progress Panel


This panel displays the import progress of the REG file. Click Cancel to stop the import or wait until the wizard finishes importing your REG file and click Finish to return to the IDE.

Import XML Settings Wizard


The Import XML Settings Wizard enables you to add a reference for an XML file to the XML File Changes view, where you can configure the changes that you want to be made to the XML file at run time.

Important: The XML File Changes view is not designed to list a node for every node in an XML file. To improve performance, the XML File Changes view should show only the settings that differ from the base XML file:

If the XML file that you are modifying is part of your installation, the XML File Changes view should list only the nodes and node sets that should be added, changed, or deleted after the XML file is installed at run time. If the XML file that you are modifying is a file that is already present on the target system, the XML File Changes view should list only the nodes that need to be added, changed, or deleted at run time.

Therefore, when you use the Import XML Settings Wizard, import only the nodes in the XML file that you want to modify at run time. Note that the XML File Changes view does not enable you to specify the order in which new elements should be listed in the XML file. Therefore, importing only the nodes that you want to modify at run time helps to avoid issues that may occur if your product requires that the elements be listed in a particular order.

The wizard consists of the following panels:

Welcome XML File XML Element XML Import Progress XML Import Results

1564

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference Import XML Settings Wizard

Welcome Panel
The Import XML Settings Wizard enables you to add a reference for an XML file to the XML File Changes view, where you can configure the changes that you want to be made to the XML file at run time. The Welcome panel is the first panel of the Import XML Settings Wizard.

Important: The XML File Changes view is not designed to list a node for every node in an XML file. To improve performance, the XML File Changes view should show only the settings that differ from the base XML file:

If the XML file that you are modifying is part of your installation, the XML File Changes view should list only the nodes and node sets that should be added, changed, or deleted after the XML file is installed at run time. If the XML file that you are modifying is a file that is already present on the target system, the XML File Changes view should list only the nodes that need to be added, changed, or deleted at run time.

Therefore, when you use the Import XML Settings Wizard, import only the nodes in the XML file that you want to modify at run time. Note that the XML File Changes view does not enable you to specify the order in which new elements should be listed in the XML file. Therefore, importing only the nodes that you want to modify at run time helps to avoid issues that may occur if your product requires that the elements be listed in a particular order.

XML File Panel


On the XML File panel, specify the XML file that you want to import by clicking Browse to locate it and populate the field. Then click Next to continue.

XML Element Panel


On the XML Element panel, specify which elements in the XML file should be imported into the XML File Changes view. Then click Import to begin the process or click Back to return to the previous panel.

Important: The XML File Changes view is not designed to list a node for every node in an XML file. To improve performance, the XML File Changes view should show only the settings that differ from the base XML file:

If the XML file that you are modifying is part of your installation, the XML File Changes view should list only the nodes and node sets that should be added, changed, or deleted after the XML file is installed at run time. If the XML file that you are modifying is a file that is already present on the target system, the XML File Changes view should list only the nodes that need to be added, changed, or deleted at run time.

Therefore, on the XML Element panel of the Import XML Settings Wizard, select only the nodes in the XML file that you want to modify at run time. Note that the XML File Changes view does not enable you to specify the order in which new elements should be listed in the XML file. Therefore, importing only the nodes that you want to modify at run time helps to avoid issues that may occur if your product requires that the elements be listed in a particular order.

InstallShield 2010 User Guide

ISP-1600-UG00

1565

Chapter 42: Wizard Reference InstallShield Merge Module for MSDE 1.0 Object

XML Progress Panel


The XML Progress panel appears after you click Import in the Import XML Element panel. It displays the progress of the file import.

XML Results Panel


The XML Results panel displays a summary of the imported .xml file and all of its elements. Click Finish to complete the import process and exit the wizard. Once you click Finish, InstallShield adds a new node for the XML file that you imported. The XML file node contains each of the nodes that you selected in the wizard. Each node represents an XPath query that occurs at run time. InstallShield also adds a new component for the XML file that you have imported through the XML File Changes view. Once you are done importing, you can use the XML File Changes view to configure the XML files settings and specify any element, attribute, and content changes for it. For examples of how to create some basic XPath expressions, see Using XPath Expressions to Find XML Data in an XML File.

InstallShield Merge Module for MSDE 1.0 Object


MSDE is the Microsoft Data Engine, a fully SQL Server-compatible data engine for building desktop and shared solutions that provides the easiest migration path to SQL Server 7.0. Solutions built with MSDE can be migrated to full SQL Server 7.0 without requiring a change in a single line of code. The MSDE object installs and launches the MSDE that Microsoft supplies. The setup is a package that, once it is unpacked, starts the MSDE setup in silent mode. The MSDE setup uses a response file to allow it to run silently with one single command line statement.

System Requirements
Platforms supported are Windows 95, Windows 98, and Windows NT 4.0 Service Pack 4 and later. Disk space requirement is 30 MB for the redistributable CAB file. Approximately 40 MB is typical for an installation of the full MSDE engine.

Launching the MSDE 1.0 Object Wizard


The MSDE 1.0 Object Wizard allows you to configure the way MSDE is installed and run on your end users systems. The MSDE 1.0 Object Wizard launches automatically when you add this object to your project.

Task

To configure the MSDE object, launch the MSDE 1.0 Object Wizard: 1. 2.

Go to the Redistributables view. Select the box next to the InstallShield Merge Module for MSDE 1.0 object to launch the MSDE 1.0 Object Wizard.

1566

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference InstallShield Merge Module for MSDE 1.0 Object

3.

Follow the instructions in the wizard panels to add your copy of the MSDE 1.0 redistributable to your setup.

Configuring the Installation


You can configure the installation in two ways. Changing the Run-Time Message for Inadequate System Resources If the end user does not have the required system resources, a message is displayed to inform the end user. You can provide your own message by manually creating a property in the Property Manager. The property name must be MSDE1_NT4_MESSAGE. Forcing the Installation to Abort for Inadequate System Resources If the end user has inadequate system resources, the installation does not abort by default. You can force the installation to end in this case by creating the MSDE1_NT4_ISERROR property in the Property Manager and setting the propertys value to Yes.

Welcome Panel
This panel provides a brief introduction to the MSDE 1.0 Object Wizard. This wizard walks you through all the necessary steps required to configure how the MSDE 1.0 object is installed and run on your end users systems. Click Next in the wizard panel to begin using the wizard.

SQL Data Paths Panel


In the first step in the MSDE Wizard, you specify the SQL Data Root and SQL Data Path folders.

InstallShield 2010 User Guide

ISP-1600-UG00

1567

Chapter 42: Wizard Reference InstallShield Merge Module for MSDE 1.0 Object

Panel Options
Table 42-50: SQL DataPaths Panel Options Option Enter the SQL Data Root directory. Description Specify the path that will be entered as the string data in the target systems HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLSer ver\Setup\SQLDataRoot registry value. You can specify a path explicitly or in terms of an InstallShield system variable. To specify a path in terms of a system variable, you can select a system variable from the list and, optionally, type a subpath after it. Specify the path that will be entered as the string data in the target systems HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLSer ver\Setup\SQLPath registry value. You can specify a path explicitly or in terms of an InstallShield system variable. To specify a path in terms of a system variable, you can select a system variable from the list and, optionally, type a subpath after it.

Enter the SQL Data Path directory.

Click Next to continue to the Launcher Options panel.

Launcher Options Panel


In this panel, you specify your custom InstallShield Silent response file (.iss file), if any, and whether the -SMS command line switch is passed to the MSDE setup.

Panel Options
Table 42-51: Launcher Options Panel Options Option Use Custom Response File Description Select this check box if you want to specify a custom response (.iss) file. Specify the fully qualified file name of your custom InstallShield Silent response file (.iss file) or click Browse to navigate to the file. If you leave this field empty, the MSDE setup uses the default response file, Unattend.iss. You can specify a path explicitly or in terms of an InstallShield system variable. If this check box is selected, the MSDE object passes the -SMS command line switch to the MSDE setup. If the check box is not selected, the object does not pass the switch. This switch prevents network connections from closing before the MSDE setup is complete.

Add the -SMS switch to the command line of the MSDE setup.

Click Next to display the Summary panel.


1568 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference Microsoft .NET Framework Object Wizard

Summary Panel
Review the MSDE 1.0 redistributable information summary. Click Finish to close the wizard and add the MSDE object to your setup, or click Back to return to previous panels and change your selections.

Microsoft .NET Framework Object Wizard


Project: The Microsoft .NET Framework Object Wizard is available in InstallScript projects.

The Microsoft .NET Framework Object Wizard opens when you add the Microsoft .NET Framework Object to a feature in the Objects view of an InstallScript project. This wizard lets you specify which versions of the .NET Framework and language packs should be included in your project. The language packs contain translated text, such as error messages, for languages other than English. The Microsoft .NET Framework Object Wizard consists of the following panels:

Step 1 Step 2

Tip: This object is not installed with InstallShield; you need to download it. For more information, see Obtaining Updates for InstallShield.

Step 1 Panel
Project: The Microsoft .NET Framework Object Wizard is available in InstallScript projects.

The Step 1 panel of the Microsoft .NET Framework Object Wizard lets you specify which versions of the .NET Framework and language packs should be included in your project.
Table 42-52: Step 1 Panel Settings Setting Select the version of .NET to include and install Use Web downloader version of .NET redistributable Description Select which versions of the .NET Framework should be included in the object.

If a Web downloader redistributable and a full package redistributable are available for the selected version of .NET, this check box is enabled. Select this check box if you want to use the Web downloader redistributable. The Web downloader redistributable is smaller than the full package redistributable, but it requires that the target system have an Internet connection at run time.

InstallShield 2010 User Guide

ISP-1600-UG00

1569

Chapter 42: Wizard Reference Microsoft .NET Framework Object Wizard

Table 42-52: Step 1 Panel Settings (cont.) Setting Platforms Description Select which platform-specific versions of the .NET Framework should be included in the object. Specify whether the object should include language packs.

Languages

Dont include any language packsIf no language packs should be included, select this option. Include all appropriate language packsIf the object should include all of the available language packs that are supported by the project, select this option.

For more information about this object, see the help pane that is displayed when you click the Microsoft .NET Framework Object in the Objects view.

Tip: This object is not installed with InstallShield; you need to download it. For more information, see Obtaining Updates for InstallShield.

Step 2 Panel
Project: The Microsoft .NET Framework Object Wizard is available in InstallScript projects.

If you select the Include multiple versions of the .NET Framework option on the Step 1 panel of the Microsoft .NET Framework Object Wizard, the Step 2 panel is displayed.
Table 42-53: Step 2 Panel Settings Setting Select the .NET redists to include in the object Description Select the check box for each version of the .NET Framework that should be included in the project. Note that the object can install only one version of the .NET Framework at run time. To allow a language pack to be installed without first installing the corresponding version of the .NET Framework, select this check box. InstallShield uses this setting to configure the InstallLangPackOnly property for the object. This read-write numeric property indicates whether the object should allow the installation of the language pack without first installing the corresponding version of the .NET Framework, which may occur if the framework is not being included in the object. By default, if the object is set to install a particular version of the framework and that version of the framework is not included in the object, the object sets a status of DOTNET_STATUS_VERSION_NOT_IN_MEDIA. However, if the InstallLangPackOnly property is set, the object does not set the failure status, which allows the object to install the language pack, if appropriate, without first installing the framework. This property is typically set in the object wizard.

Allow the object to install a .NET language pack without installing the corresponding .NET Framework.

1570

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

For more information about this object, see the help pane that is displayed when you click the Microsoft .NET Framework Object in the Objects view.

Tip: This object is not installed with InstallShield; you need to download it. For more information, see Obtaining Updates for InstallShield.

MSDE 2000 Object Wizard


Note: The Microsoft MSDE 2000 merge modules and the InstallShield MSDE 2000 Merge Module Object have been removed from the Redistributables view. Microsoft does not recommend use of these merge modules since instances of MSDE 2000 installed cannot be upgraded using the Desktop Engine SP3a files. Desktop Engine (MSDE 2000) SP3a provides merge modules to support existing applications that use merge modules.

The MSDE 2000 Object and the InstallShield MSDE 2000 Object for NT Platforms enable the installation of support for MSDE 2000. If you are targeting only Windows 9x operating systems, include the MSDE 2000 Object in your project. If you are targeting only Windows NT operating systems, include the InstallShield MSDE 2000 Object for NT Platforms in your project. If you are supporting both types of operating systems, include the InstallShield prerequisite for Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) in your installation.

Note: The InstallShield MSDE 2000 Object for NT Platforms works only on Windows NT-based operating systems. If end users run the installation on a Windows 9x platform (and MSDE 2000 needs to be installed), they receive a message saying that the installation cannot install the MSDE 2000 object on the machine. Then the installation exits. The end user will have to install the MSDE 2000 object and then rerun the installation. This limitation is because of a incompatibility of Windows Installer and the MSDE 2000 installation itself. The MSDE 2000 installation is a Windows Installer (.msi) installation. The only way one .msi can launch another .msi is as a nested .msi custom action. However, the MSDE 2000 readme file specifically says that you cannot install MSDE 2000 as a nested .msi custom action. The only other option is to launch it in the InstallUISequence. With this method, the InstallUISequence installs the MSDE 2000 object and the InstallExecuteSequence installs your application. This works on Windows NT-based machines because each sequence is run in a separate thread. However, on Windows 9x systems, both sequences are run in the same thread. This makes the MSDE 2000 installation fail with an error of another setup is currently in progress. Therefore, end users cannot install the MSDE 2000 object on a Windows 9x machine as part of your installation (if your installation is Windows Installer based). This would be the case even if you tried to create your own custom action to install the MSDE 2000 object on Windows 9x machines.

Task

To add the MSDE 2000 Object or the InstallShield MSDE 2000 Object for NT Platforms to your installation project: 1. 2.

In the Redistributables view, select the MSDE 2000 Object check box or the InstallShield MSDE 2000 Object for NT Platforms check box. The MSDE 2000 Object Wizard opens. Customize the object by selecting options in each of the wizard panels.
ISP-1600-UG00 1571

InstallShield 2010 User Guide

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

Welcome Panel
The MSDE 2000 Object wizard allows you to configure an MSDE 2000 object that you have added to your setup project. In the MSDE 2000 Object wizard, you can customize MSDE installation locations, alter default instance and collation settings, and indicate upgrade settings. Click Next to select functionality.

Functionality Panel
In the Functionality panel, you can select the optional MSDE 2000 functionality that your application requires. There are three options:

Data Management Objects (DMOs) Replication Core Functionality

Note: An option appears only if all of the corresponding merge modules exist on the development system.

Click Next to customize the MSDE 2000 installation locations.

Directories Panel
This panel enables you to customize the MSDE 2000 installation locations.

Customize SQL Server system database location


Select this check box to customize the SQL Server system database location. Type the path to the database in the box.

For the MSDE 2000 Object only: If you want to set <ProgramFilesFolder>MyDatabase as your system database location, enter [ProgramFilesFolder]MyDatabase in this box. For the InstallShield MSDE 2000 Object for NT Platforms only: System variables cannot be used in this box. Only hard-coded paths are valid.

Customize Desktop Engine executable files location


Select this check box to customize the Desktop Engine executable files location. Type the path to the executable files in the box.

For the MSDE 2000 Object only: If you want to set <ProgramFilesFolder>Myengineloc as your desktop engine executable files location, enter [ProgramFilesFolder]Myengineloc in this box. For the InstallShield MSDE 2000 Object for NT Platforms only: System variables cannot be used in this box. Only hard-coded paths are valid.

Click Next to change the default instance and collation settings.


1572 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

Instance and Collation Settings Panel


This panel allows you to change the instance and collation settings from their defaults.

Specify instance name (if unspecified, instance is installed as a default instance)


Select this option to specify an instance name other than the default. Type the instance name in the edit field.

Specify default collation for instance


Select this option to specify a default collation for the instance. Type the default collation name in the edit field. Click Next to indicate upgrade and security preferences.

Upgrade and Security Panel


This panel allows you to provide settings for upgrading MSDE 1.0. In addition, you can select SQL security.

Upgrade an instance of MSDE 1.0


Select this option if you want the MSDE 2000 object to update an instance of MSDE 1.0 if it is installed on the target system. Specify MSDE 1.0 username Select this option to specify an MSDE 1.0 username. Type the username in the edit field.

Use SQL security mode


Select this option to enable SQL security mode. Click Next to view a summary of your choices.

Service Pack 3 Panel


In this panel, you can set the following new switches for the Setup.exe in the Desktop Engine (MSDE) setup and customize the Microsoft Data Engine (MSDE) installation that uses merge modules. By selecting options in this wizard panel, InstallShield allows you to assign specific internal properties used in the SQL Server 2000 SP3 MSDE merge modules to a specific value. Internally, InstallShield edits the Property table of the .msi file and set the Internal Property to a specific value when you select or deselect one of the following options:

Enable cross-database ownership chaining


Selecting this option enables a new security enhancement-related option for configuring cross-database ownership chaining. This internally sets the SqlAllowXDBChaining property value to 1 and enables cross-database ownership chaining across all databases. By default, this option is deselected.

InstallShield 2010 User Guide

ISP-1600-UG00

1573

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

According to Microsoft, cross-database ownership chaining occurs when the source object depends on objects in another database. A cross-database ownership chain works in the same way as ownership chaining in a database, except that an unbroken ownership chain is based on all the object owners being mapped to the same login account. Therefore, in a cross-database ownership chain, if the source object in the source database and the target objects in the target databases are owned by the same login account, SQL Server does not check permissions on the target objects.

Enable network protocols


Selecting this option allows an application running on another computer to connect to this instance of MSDE 2000. As recommended by Microsoft, this option is deselected by default, resulting in a more secure configuration.

Allow installation to proceed with a blank sa password


If you enable this option, you can perform an installation with a blank sa password. Regardless of whether an instance of Desktop Engine is using Microsoft Windows or Mixed Mode authentication, the setup cannot continue if a blank password is detected for the sa logon. A warning message appears if a blank password is detected. If you have a blank password for the sa logon, before you continue you must change the password by using the sp_password stored option. See the Set an sa password option below.

Set an sa password
Selecting this option allows you to specify the sa password. You can use this option for new installations. Unlike other properties, this property is hidden and the value is not written to the log file.

If you specify both the Set an sa password and Allow installation to proceed with a blank sa password, setting an sa password takes precedence and the blank sa password is ignored. If you are using an .ini file during setup, avoid storing credentials in the .ini file.

Set an upgrade password


When you select this option and enable the edit field, you will be able to specify the password for the logon that is used when you upgrade Desktop Engine by using SQL Server Authentication.

Summary Panel
The Summary panel lists the selections that you made in the previous MSDE 2000 Object Wizard panels. Click Finish to exit the wizard and commit the changes to your setup project. If you need to change any of your selections, click Back until you arrive at the appropriate panel.

Removing the MSDE 2000 Object


To remove the MSDE 2000 object from your installation project, run the MSDE 2000 Object Wizard again and deselect all options. You must also deselect the MSDE 2000 option in the Redistributables view.

1574

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

Installing MSDE 2000 Merge Modules for Another Language


Task To install the MSDE 2000 merge module for another language: 1. 2.

Copy all of the required merge modulesincluding the *_RES.MSM modulesinto Modules\i386. When prompted to replace the .msm files already in that folder, click Yes to All.

Required Merge Modules


These are the merge modules required for a given language:
Table 42-54: Required Merge Modules for Language Support

CONNECT.MSM DEV_SCM.MSM DMO.MSM DTC.MSM DTS.MSM REPL.MSM SEM.MSM

SHARED.MSM SQLAGENT.MSM SQLBASE.MSM SQLSVR.MSM TOOLS.MSM UPGRADE.MSM DMO_RES.MSM

DTS_RES.MSM REPL_RES.MSM SEM_RES.MSM SQLAGENT_RES.MSM SQLBASE.MSM SQLSVR_RES.MSM TOOLS_RES.MSM

Cautions

Caution: Follow these guidelines when installing MSDE 2000 for another language.

Do not delete the English-specific merge modules that the MSDE 2000 Object Wizard places in Modules\i386\0409. All of Microsofts non-.res merge modules depend on the English version of the corresponding .res merge module. For example, the Italian REPL.MSM has a dependency on the English REPL_RES.MSM. A setup that does not contain the English REPL_RES.MSM might install correctly, but it will trigger build errors. Do not use more than one set of MSDE 2000 modules at a time. They are not designed to support more than one language at a time.

InstallShield 2010 User Guide

ISP-1600-UG00

1575

Chapter 42: Wizard Reference MSDE 2000 Object Wizard

1576

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: New Language Wizard

New Language Wizard


Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The InstallShield Premier edition lets you add unsupported languages, beyond the built-in 35 languages, to projects through the New Language Wizard. An unsupported language is one in which none of the default run-time strings are translated. When you add an unsupported language to a project, that language is made available in various language-related settings throughout InstallShield. In addition, InstallShield uses the strings from your projects default language as placeholders for the strings in that newly added unsupported language; you can use the String Editor view to provide translated strings for the unsupported languages. When you use the New Language Wizard to add an unsupported language, InstallShield adds to your machine several files that contain English strings as placeholders:

LanguageID.ini LanguageID

is the language identifier for the new language. InstallShield adds this file to the following directory:

InstallShield Program Files Folder\Support

_isres_LanguageID.dll
LanguageID

is the language identifier for the new language. InstallShield adds this file to the following directories:

InstallShield Program Files Folder\Redist\Language Independent\i386 InstallShield Program Files Folder\Redist\Language Independent\i386\Skins

If you want to add the unsupported language in InstallScript or InstallScript MSI projects, you will need to translate the strings in those files. You can open the .dll file in a resource editor to replace the English strings with the appropriate translated strings.

Task

To launch the New Language Wizard:

On the Tools menu, click Add New Language.

InstallShield 2010 User Guide

ISP-1600-UG00

1577

Chapter 42: New Language Wizard

Welcome Panel
Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The InstallShield Premier edition lets you add unsupported languages, beyond the built-in 35 languages, to projects through the New Language Wizard. An unsupported language is one in which none of the default run-time strings are translated. When you add an unsupported language to a project, that language is made available in various language-related settings throughout InstallShield. In addition, InstallShield uses the strings from your projects default language as placeholders for the strings in that newly added unsupported language; you can use the String Editor view to provide translated strings for the unsupported languages.

Project Language Panel


Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The Project Language panel lets you specify the languages that you would like to add to your project. Select the box next to each language that you want to add.

Project Files Panel


Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in the following project types:

Basic MSI InstallScript

1578

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: New Language Wizard

InstallScript MSI

The Project Files panel is where you specify which existing projects should contain the ability to add the new languages. (That is, InstallShield will add the new languages to the list of languages that you can select for the Setup Languages setting in the General Information view.) This panel also enables you to specify whether you want to be able to include the languages in every new project that you create. For information on adding a language to a project, see Selecting the Installation Languages.

Panel Settings
Table 42-1: Project Files Panel Settings Setting Project Name Description Select the projects that should enable you to select the new languages for the Setup Languages setting in the General Information view. If your project is not stored in the default project location, navigate to it by clicking the Browse button. Select this check box if you would like any new project that you create to have optional support for these languages. Selecting this check box does not automatically include the new languages in future projects. Instead, it adds the new languages to the list of languages that you can select for the Setup Languages setting in the General Information view.

Update InstallShield

Summary Panel
Edition: The New Language Wizard is available in the Premier edition of InstallShield.

Project: The New Language Wizard is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The Summary panel lists the new languages that will be added to the specified projects. It also indicates whether you want InstallShield to add the new languages to all new projects that you create. Click the Finish button to accept the settings and begin updating projects with the new languages. When you use the New Language Wizard to add an unsupported language, InstallShield adds to your machine several files that contain English strings as placeholders:

LanguageID.ini LanguageID

is the language identifier for the new language. InstallShield adds this file to the following directory:

InstallShield Program Files Folder\Support

InstallShield 2010 User Guide

ISP-1600-UG00

1579

Chapter 42: Open MSI/MSM Wizard

_isres_LanguageID.dll
LanguageID

is the language identifier for the new language. InstallShield adds this file to the following directories:

InstallShield Program Files Folder\Redist\Language Independent\i386 InstallShield Program Files Folder\Redist\Language Independent\i386\Skins

If you want to add the unsupported language in InstallScript or InstallScript MSI projects, you will need to translate the strings in those files. You can open the .dll file in a resource editor to replace the English strings with the appropriate translated strings.

Open MSI/MSM Wizard


The Open MSI/MSM Wizard is a tool that converts existing installation projects (.msi files) and merge modules (.msm files) to InstallShield installation projects (.ism files) that you can modify and build in the InstallShield user interface.

Task

To launch the Open MSI/MSM Wizard: 1. 2. 3.

Select the Open Project button on the toolbar. A browse dialog opens. Select either Windows Installer Packages (*.msi) or Windows Installer Modules (*.msm) from the Files of Type list. Go to the setup package or merge module that you want to import and click Open.

Once you select a Windows Installer database, the Open MSI/MSM Wizard presents options for converting the file, converts the project, and then opens the converted project.

Note: Any errors encountered by the wizard are displayed in the bottom panel of the IDE when the converted project is opened. To solve any problems, see MSI/MSM Conversion Errors.

Welcome Panel
The Open MSI/MSM Wizard allows you to import setup packages (.msi) and merge modules (.msm) into InstallShield. This functionality is useful for network administrators who need to build custom setups for their users.

Panel Options
Open MSI/MSM in Direct Edit Mode Select this option to view and edit the database directly, without creating a project file. If you select this option, the selected database will open in the IDE, where you can view and edit its contents with the Direct Editor. Click Next to open the database in the Direct Editor.

1580

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Open MSP Wizard

Convert MSI/MSM to an InstallShield Project Select this option to convert the selected database into an InstallShield project, which you can then edit within the IDE. Click Next to continue using the wizard for this option.

File Locations Panel


In the File Locations panel, specify the name of the project that the wizard will create and the location of its data files.

Panel Options
Project Name Type a name for the setup project that will be created when the wizard converts the existing .msi or .msm project to an InstallShield (.ism) project. The .ism project is saved in the default location.

Note: Because the project name determines the name of the .ism file and the root for the projects folder structure, use only legal characters for a Windows file name.

Data File Location If the imported applications files are stored in .cab files, those files are automatically extracted and stored in the location specified here. After specifying the project name and data file location, click Finish to convert the project and open it in the InstallShield IDE.

Note: The wizard alerts you of any errors it encountered while creating the project. To resolve any problems, see MSI/ MSM Conversion Errors.

Open MSP Wizard


Before InstallShield can open a patch or MSP file for editing or create a new patch project, it needs the base MSI to which the MSP should be applied. When you first open a patch (.msp) project in InstallShield, the Open MSP Wizard appears. The Open MSP Wizard gathers the necessary file information, applies the patch to the base MSI, and opens the patch project in the IDE in Direct MSP mode (which is similar to the Direct Edit mode). The data you specify in the Open MSP Wizard is saved so the next time you open the MSP file, the patch project opens in the IDE.

Welcome Panel
This panel welcomes you to the wizard and briefly describes the Open MSP Wizards function. Click Next to begin using the wizard.
InstallShield 2010 User Guide ISP-1600-UG00 1581

Chapter 42: Open Transform Wizard

Base MSI Package Panel


In the Base MSI Package panel, you specify the base MSI file to which you want to apply this patch.

Panel Options
MSP File Name Read-only field that provides the path and file name of the MSP file. Base MSI File Name Specify the name of the base MSI file to which this patch (indicated in the MSP File Name edit box) will be applied. Click the browse (ellipsis) button to browse to an .msi file. Click Finish to close the Open MSP Wizard and create your patch project. The patch is applied to the MSI project that is specified in the Base MSI File Name edit box, and the patch project (.msp file) opens in Direct MSP mode in the IDE.

Open Transform Wizard


Before InstallShield can open a transform (.mst) file for editing or create a new Transform project, it needs the base .msi file to which the .mst should be applied and any additional .mst files that should be applied to the base .msi file. The first time that you open an .mst file in InstallShield, the Open Transform Wizard launches. This wizard enables you to specify the .mst file, the base .msi file, and any additional transforms to apply before editing. The last panel of this wizardthe Create a Response Transform panellets you specify whether or not your transform should be a response transform. A response transform includes default responses for the user interface portion of the installation. If you specify that you want to create a response transform, the user interface elements of the installation are executed, enabling you to customize the options available in each panel of the installation wizard. When the Open Transform Wizard is finished, the transforms are applied and the .mst file opens in the InstallShield in Direct MST mode (which is similar to Direct Edit mode). The data specified in the wizard is saved so that the next time that you open the .mst file, the transform project opens directly in InstallShield.

Task

To launch the Open Transform Wizard when opening a transform for editing: 1. 2. 3. 4.

On the File menu, click Open. The Open dialog box opens. Select the .mst file that you would like to open. In the Open as box, select Wizard. Click Open. The Open Transform Wizard opens.

1582

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Open Transform Wizard

Task

To launch the Open Transform Wizard when creating a new transform: 1. 2. 3. 4. 5.

On the File menu, click New. The New Project dialog box opens. On the Windows Installer tab, click Transform. In the Project Name box, type a name for your transform project. In the Location box, type the path where your transform project should be stored or click the browse button to find the location. Click OK. The Open Transform Wizard opens.

The following panels are associated with the Open Transform Wizard:

Welcome Transform Information Additional Transforms Create a Response Transform

Welcome Panel
This panel welcomes you to the Open Transform Wizard and briefly describes the wizards function. Click Next to begin using the wizard.

Transform Information Panel


In the Transform Information panel, you specify the base .msi file to which you want to apply this transform.

Panel Options
MST File Name Read-only field that provides the path and file name of the .mst file. Base MSI File Name Specify the name of the base .msi file to which this transform (indicated in the MST File Name box) will be applied. Click the ellipsis (...) button to browse to an .msi file. Click Next to move to the next panel.

Additional Transforms Panel


In this panel, you can supply the names of one or more additional transforms that you want applied prior to applying the transform that the Open Transform Wizard is currently creating. For example, you may want to include previous customization or transforms containing language-specific information. The transforms are applied in the order in which they are listed.
InstallShield 2010 User Guide ISP-1600-UG00 1583

Chapter 42: Open Transform Wizard

Adding a Transform

Task

To add a transform to the list: 1. 2.

Click New (Insert) or press Insert. Type the full path and name of the .mst file or click the ellipsis (...) button to browse to it.

Deleting a Transform from the List

Task

To delete a transform from the list: 1. 2.

Select the transform in the list that you would like to remove. Click Delete or press Delete.

Changing the Transform Order

Task

To change the order in which the transforms are applied:

Select a transform in the list and click the move up button or the move down button. The transform that the Open Transform Wizard is creating is applied last.

Caution: When you are using multiple transforms, keep in mind that the order in which they are applied is critical. For example, if you create a transform for a Windows Installer package that creates a new value for a property, and then you create a second transform that changes the value created in the first transform, everything works correctly. However, if you apply the second transform first, that transform is attempting to modify the propertys value, instead of creating it. That will result in an error. One simple example of where this may be a problem is with the default company name. If the value is not set by default, and you set it in the first transform, a new value for the property is created. If you create a second transform that modifies the combined original package and first transform, and the second transform changes the default company name, it is only changing the property. However, if you try to apply the second transform without the first one, Windows Installer interprets this as trying to change a null value to another value, which will result in an error.

Click Next to move to the next panel.

Create a Response Transform Panel


In this panel, you can specify that you want to create a response transform.

1584

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Palm OS Wizard

Panel Options
Table 42-2: Create a Response Transform Panel Options Option Create response transform Description If you want to create a response transform, select this check box. If you select this option, the user interface elements of the installation are executed when you click Finish. No file transfer takes place, and no changes to your machine occur. Complete this simulated installation, customizing the options available in each panel of the installation wizard as needed. When you reach the end of the installation sequence and click Install, the simulated installation exits. InstallShield saves all of the changes that you made during the simulated installation as default installation values in the response transform. If you are using a response transform, you can specify additional command-line properties (in property name/value pairs separated by semicolons) to pass to the response transform. These must be public properties, and they control only how the dialog boxes are displayed during creation of the response transform. They are not persisted outside of the user interface sequence during creation. For example, you can pass the property/value pair ARPHELPTELEPHONE=1-111111-1111 to set the value of the Help Telephone field of Add or Remove Programs in Control Panel. You might pass a property/value pair during the creation of a response transform to display all dialog boxes during an installation that may not be displayed based on your system configuration (for example, to show Windows 9xonly dialog boxes on a Windows NT platform). You can then make appropriate responses and have them included in your transform.

Command line properties (optional)

Click Finish to exit the Open Transform Wizard and create your transform project. The transforms are applied to the .msi file specified in the Transform Information panel, and the transform project (.mst file) opens in Direct MST mode in InstallShield.

Palm OS Wizard
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Use the Palm OS Wizard to create and configure an installation package for Palm OS devices. The application files can be deployed via HotSync to the Palm OS device. You can target either the devices memory or a storage card. Before you can use the Palm OS Wizard, you must create a new installation project and add the Palm application files to it.
InstallShield 2010 User Guide ISP-1600-UG00 1585

Chapter 42: Palm OS Wizard

Task

To open the Palm OS Wizard: 1. 2.

In the View List under Application Data, click Mobile Devices. Right-click the Mobile Device Installations explorer and click New Palm OS.

The Palm OS Wizard opens. When you add an installation for a Palm OS device to your project, a corresponding component is created and added to all of the features that you selected to associate with the Palm OS application. The following panels are associated with the Palm OS Wizard:

Welcome Palm Application Files Features Summary

Welcome Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Welcome panel welcomes you to the Palm OS Wizard and briefly describes the wizards function. Click Next to begin using the wizard.

Palm Application Files Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Palm Application Files panel is where you add your application files to your Palm OS installation. The files you add must already exist in your main installation. You must add at least one file in order to continue with the wizard.

1586

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Palm OS Wizard

Adding Palm Application Files

Task

To add a file: 1. 2. 3. 4.

Click Add or right-click anywhere in the Files box and select Add. The Browse for Shortcut Target dialog box opens. Browse to the file that you want to add and click Open. The Destination dialog box opens. Select the Handheld option or the Storage Card option, depending on the target location. Click OK.

Modifying the Destination of a Palm Application File

Task

To modify the destination of one of the files: 1. 2. 3. 4.

In the Files box, select the file whose destination you would like to change. Click Properties. The Destination dialog box opens. Select the Handheld option or the Storage Card option. Click OK.

Removing a Palm Application File

Task

To remove a file: 1. 2.

In the Files box, select the file that you would like to remove. Click Remove.

Features Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

In the Features panel, select the feature or features to which your Palm OS installation belongs.

InstallShield 2010 User Guide

ISP-1600-UG00

1587

Chapter 42: Publish Wizard

Summary Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

In the Summary panel, you can review the settings for your Palm OS installation before you add it to your project. If you need to change any of the settings, click Back until you reach the appropriate panel, and then make the necessary changes. When you are done, click Finish. A component is created for your Palm OS installation, and it is added to all of the features that you selected to associate with the Palm OS application in the Features panel.

Publish Wizard
Use the Publish Wizard to save the selected installation element to a repository. The following panels are associated with the Publish Wizard:

Welcome Repository Publishing Information Summary

Welcome Panel
This panel welcomes you to the Publish Wizard. Click Next to begin using the wizard.

Repository Panel
The Repository panel of the Publish Wizard is where you specify the repository to which your installation element should be published.

Publishing Information Panel


The Publishing Information panel of the Publish Wizard is where you specify information that identifies the item that you are publishing to the repository. If you are publishing a dialog to the repository, for example, the information that you provide in the Publishing Information panel will be displayed for your dialog when you or other users browse the repository of dialogs.

1588

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Redistributable Downloader Wizard

Panel Options
Name Specify a name for the dialog, template, script file, or other installation element that you are publishing. Publisher Type your name. Description Type the description that should be displayed for this installation element.

Summary Panel
Use the Summary panel of the Publish Wizard to review the settings for the item that you are publishing to the repository. If you need to change anything, click Back until you reach the appropriate panel, and then make the necessary changes. When you are done, click Finish. The Output window opens to inform you whether the installation element was successfully published to the selected repository.

Redistributable Downloader Wizard


Project: This information does not apply to the following project types:

InstallScript InstallScript Object

The Redistributable Downloader Wizard allows you to quickly download third-party redistributables, merge modules, and other files to your local machine. You can launch the Redistributable Downloader Wizard from the Release Wizards .NET Run-Time Options panel and from the Releases view (.NET 1.1/ 2.0 Core Language and .NET 1.1/2.0 Language Packs settings).

Task

To use the Redistributable Downloader Wizard: 1. 2. 3.

In the Select Files to Download panel, select the redistributables that you want to download and click Next to move to the Progress panel. When the progress bars complete, click Next. The final panel displays the list of redistributables that the wizard downloaded to your machine. Click Finish to exit the wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1589

Chapter 42: Reg-Free COM Wizard

Reg-Free COM Wizard


Use the Reg-Free COM Wizard to create and modify Reg-Free COM manifest files to be included in your installation.

Note: Before you use the Reg-Free COM Wizard, you should add the COM libraries (.dll and .ocx files) and the executable file that uses them to your InstallShield project. Note that the Reg-Free COM manifest file, the executable file, and the COM libraries should all be installed to the same folder on the target machine.

Task

To launch the Reg-Free COM Wizard:

On the Project menu, click Reg-Free COM Wizard.

Tip: To launch the Reg-Free COM Wizard in a ClickOnce project, click Add a Reg-Free COM .manifest file to include in your deployment in the More Options area on the Application Files page of the ClickOnce Assistant.

The following panels are associated with the Reg-Free COM Wizard:

Welcome Select an EXE File Select the Manifest File Select Files Summary

Welcome Panel
The Welcome panel provides a brief introduction to the Reg-Free COM Wizard. Click Next to begin using the wizard.

Note: Select the Dont show the welcome panel again check box if you do not want this panel to appear the next time you open the wizard.

Select an EXE File Panel


The Select an EXE File panel is where you specify the executable file that uses the manifest file that you are creating or modifying.

1590

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Reg-Free COM Wizard

Panel Options
Executable FileKey Select an executable file from the Executable FileKey list and click Next. Note that the file must already be included in your installation project.

Select the Manifest File Panel


The Select the Manifest File panel is where you either specify that you are creating a new manifest (.manifest) file or that you are modifying an existing one. If you are modifying a manifest file, you need to specify where it is located.

Panel Options
Create a new manifest file that will be added to the project To create a new manifest file, select this option. Pre-existing file that will be added to the project To specify a manifest file that already exists but has not been included in the project yet, select this option, and then click the Browse button to locate the file. A manifest file that already exists in the project To specify a manifest file that has already been added to the project, select this option and then select the file from the list.

Select Files Panel


The Select Files panel is where you specify the required COM library files (.dll or .ocx) that are used by the executable file. You can additionally specify to extract the COM information during each build by selecting the Refresh COM Info during Build check box. If you clear this check box, the COM information is injected into the manifest only once, when you have completed the wizard.

Summary Panel
Use the Summary panel of the Reg-Free COM Wizard to review the options that you selected. If you need to change anything, click Back until you reach the appropriate panel, and then make the necessary changes. When you are done, click Finish. The wizard creates a new component with the manifest file set as the key file. The manifest component has the same destination and condition as the associated executablefile component. The following file naming convention is used for manifest files:
ExecutableFileName.exe.manifest

For example, MyFile.exe.manifest is created for an executable file called MyFile.exe. You can specify additional COM servers by running the wizard again and specifying the existing manifest file.

InstallShield 2010 User Guide

ISP-1600-UG00

1591

Chapter 42: Release Wizard

Release Wizard
The Release Wizard provides an easy way for you to build a release for your product and specify the settings particular to that release.

Task

To launch the Release Wizard and build your setup package, do one of the following:

Click the Release Wizard button on the toolbar. Select Release Wizard from the Build menu. Double-click the Release Wizard item in the Release view. Right-click on a product name or a release name in the tree control in the Release view, and select Release Wizard.

Task

You can launch an abbreviated version of the Release Wizard by doing one of the following:

Click the Build button on the toolbar. Select Build from the Build menu. Right-click on a release name in the Release explorer, and select Build.

The Build option rebuilds the release that has focus in the Release view or builds the products first release with default settings. The build feedbackand any build errorsappears in the Output window. Another alternative to the Release Wizard is building a release at the command line.

Welcome Panel
This panel provides a brief introduction to the Release Wizard. This wizard walks you through all the necessary steps required to build a distributable release of your product. Click Next to begin using the wizard.

Product Configuration Panel


Project: This topic does not apply to InstallScript projects.

A product configuration is the highest level of organization in the Release view. By grouping related releases together under a common product configuration, you can change specific settings for each release by editing the properties of the product configuration.

1592

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Panel Options
New product configuration Select this option if you want to build this release under a new product configuration. Specify a name for the new configuration. Existing product configuration Select this option to build this release under an existing product configuration. Choosing this option overwrites any existing release.

Specify a Release Panel


This panel gives you the option of creating a new release or rebuilding an existing release.

Panel Options
New Release Name If you would like to build a new release, select the New Release Name option and then enter a new name in the field. Existing Release Name If you choose to build an existing release, click the Existing Release Name option and then select a release name from the drop-down list.

Filtering Settings Panel


Project: The Filtering Settings panel is available in the following project types:

Basic MSI InstallScript MSI Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1593

Chapter 42: Release Wizard

The Filtering Settings panel prompts you to select which features, components, InstallShield prerequisites, and chained .msi packages to include in your release.
Table 42-3: Filtering Settings Panel Options Setting Release Flags Description To filter features, InstallShield prerequisites, and chained .msi packages, enter the release flags that you would like to include in this release. If you are including more than one flag, separate them with commas. You have the option of including a subfeature but not its parent feature. In such a case, the subfeature is built into the release as a top-level feature, and its parent is excluded from the release. The release flags that you enter here are combined with the product configuration flags. For more information on the relationship between the two, see Product Configuration Flags vs. Release Flags.

Project: The Release Flags option is not available for merge module projects. Filter application data based on the following languages To filter application data based on each components language, select this option, and then select or clear the appropriate language check boxes. If you select one or more language check boxes, InstallShield includes in the release all of the components that are marked with a matching language, as well as all of the components that are marked as language independent; InstallShield excludes any components whose languages do not match.

Merge Module Options Panel


The Merge Module Options panel provides the option to make your new module immediately available to other InstallShield packages by copying it to your local merge module gallery.

Panel Options
Add to local merge module catalog Select this option if you would like your new module to be immediately available to other projects. The Merge Modules Locations field is located on the Merge Modules tab of the Options dialog.

Setup Languages Panel


Project: The functionality for the Setup Languages panel varies, depending on which project type you are using.

1594

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

The Setup Languages panel lets you specify language-related settings for your installations run time.
Table 42-4: Setup Languages Panel Settings Setting Included Release Languages Description The functionality for this box varies, depending on which project type you are using:

In a Basic MSI or InstallScript MSI project, this setting lets you specify which user interface languages you want to include in a release. Note that if a language is not selected in the Setup Languages setting in the General Information view of the project, it is not listed as one of the available languages in this box.

In an InstallScript or InstallScript Object project, use this setting if you want to include certain components and exclude others based on the language that is selected for each component. This setting also lets you specify which user interface languages you want to include in a release. If the language specified for a component does not match one of the languages that is selected in this box, InstallShield does not include the component in the release. In addition, if a UI language that is included in the project does not match one of the languages that is selected in this box, InstallShield does not include the UI strings in the release. By default, releases are language independent; that is, none of the projects components or UI strings are excluded from the release. Note that if a language is not selected in the General Information view of a project, it is not listed as one of the available languages in this box.

Make Default

To override the releases default project language that is configured in the General Information view or the String Editor view, select the appropriate default user interface language for your installation, and then click this button. For more information, see Setting the Default Project Language.

Display the Setup Languages Dialog

If you want your installation to display the Choose Setup Languages dialog when it is run with a full user interface, select this check box.

Tip: A Setup.exe setup launcher is required if you want the language selection dialog to be displayed. To learn more, see Creating a Setup Launcher.

Project: In Basic MSI and InstallScript MSI projects, the Setup Languages panel affects only the user interface elements that you include in your project. To include components based on the language of the application data, see the Release Filtering panel.

For information on adding a language to a project, see Selecting the Installation Languages.

InstallShield 2010 User Guide

ISP-1600-UG00

1595

Chapter 42: Release Wizard

Media Type Panel


This panel prompts you to select the type of distribution media for which you want to create a release.

Panel Options
Media type Choose the type of media on which you will be distributing your setup program. You can select from the following options:
Table 42-5: Media Type Panel Options Option CD-ROM Description Select this option if you will be distributing your setup on a CD. The maximum size for this type of media is 650 MB. Select this option if the media that you are distributing is not in the list of media types. For example, you may be distributing your setup on floppy disks or Zip disks. You will need to set the format size and cluster size for this media, as it will change depending on the media type you are using. This option allows you to ship your release on a 4.38 GB DVD-ROM. Choose this option if you plan on shipping your setup on a 7.95 GB DVD-ROM. This option allows you to ship your release on an 8.75 GB DVD-ROM. If you have an enormous setup, you can ship your release on 15.83 GB DVD-ROM media. If your setup is going to be placed on a network, you can choose this option. There is no size limit for this media type. (Windows Installer based projects only) If you want to distribute your release over the Web, choose this option. There is no size limit for this media type.

Custom

DVD-5 DVD-9 DVD-10 DVD-18

Network image

Web

Project: If your installation requires more than one disk, InstallShield automatically splits it across as many disks as needed. In a Windows Installerbased project, the wizard prompts you for more information about disk spanning later in the sequence.

Format size
If you chose the Custom media type, you will need to specify the capacity of the media in this field. For example, if you are shipping your installation program on a Zip disk, you will want to set the media size to 100 MB. If you chose any other media type, the maximum size allowed for that media is displayed in this field.

1596

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Cluster size in bytes (Windows Installer based projects only)


This option defines the minimum amount of space that each file requires. For bigger disks, the cluster size will be larger due to the formatting constraints.

Disk Spanning Options Panel


Project: This panel is not available for InstallScript projects.

If your setup is larger than one disk, you have the option to split the setup into pieces so it can be distributed on multiple disks.

Panel Options
Automatic Select this option to have the wizard automatically split your setup across as many disks as are necessary. This option is the recommended way to span your setup across disks. Custom Select this option to manually define how many disks your setup requires, and set the breakpoints yourself. This option requires you to specify which features will be stored on each disk in the Disk Spanning Advanced Settings panel.

Caution: Multi-disk setups cannot be run from a non-removable media (for example, from a hard drive). If you want to run test a setup that spans disks, you need to put the setup on your target media. If you do not, the setup will fail due to a limitation of the Windows Installer service.

Enforce disk size Select this option if you want the wizard to verify that none of your disk images exceeds the media size that you selected. If any of the disks exceeds the specified size limit, Build Error -1531 appears when you try to build the project.

Disk Spanning Advanced Settings Panel


Project: This panel is not available for InstallScript projects.

This panel prompts you to specify the number of disks that your setup requires. In addition, you can choose which features are on each disk. This panel is displayed only if you selected the Custom Disk Spanning option on the Disk Spanning Options panel.

InstallShield 2010 User Guide

ISP-1600-UG00

1597

Chapter 42: Release Wizard

Panel Options
Disk Mapping This dialog lists all the features included in the release when it was first built. Because a release is designed to be a snapshot of your build settings, features created after a release will not be available for disk mapping nor built into the current release. You must start a new release in order to map the new features. All features are on Disk 1 by default. To change the name of this disk, click the Rename Disk button and type in the new name of the disk. To add a new disk, click the New Disk button.

Task

To transfer some of your features from one disk to another: 1. 2.

Select the feature that you want to move. Click the Move Up or Move Down button. The feature will move through the hierarchy of the current disk until there is nowhere left to go, at which time it will skip to the next disk, provided there is another disk for it to move to.

Tip: Note the following when spanning your setup across multiple disks:

A single feature cannot be spanned across multiple disks. If you have a feature that is too big to fit on one disk, you need to divide it into smaller features or subfeatures. Any merge modules that are included in your setup must be on the first disk, because these files must be available when Windows Installer first processes the database (.msi file).

If you add features to your setup after you have defined how you would like your setup to span across multiple disks, those features are automatically added to the last disk of your setup. You can add new disks to your setup at any time by using the Release Wizard. Disk Prompt

Task

To indicate the prompt you want displayed to end users when the next disk needs to be inserted: 1. 2.

Select a disk in the Disk Mapping section. Do one of the following in the Disk Prompt field.

Type the prompt that you want to display to end users. Click the ellipsis button (...) to display the Select String dialog and select a string to use as the prompt.

Repeat for each disk except the last. The Release Wizard automatically creates a string-table entry for the Disk Prompt value, so you can provide a translated string for each language your setup program supports.

1598

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

The string that is displayed comes from a number of sources throughout your project, as described below:
1. 2. 3. 4.

The complete prompt originates in the Error table (exposed in the Direct Editor) as Error record 1302. This value in turn comes from your projects string entries, and the default value for English reads Please insert the disk: [2]. Windows Installer resolves [2] with the value of the property DiskPrompt, which is set to [1] in the Property Manager. Finally, Windows Installer evaluates [1] to the string you enter into the Disk Prompt field.

In most cases you should enter the same name as the disk volume (below). For example, assuming the defaults are unchanged, a Disk Prompt entry of Disk8 would cause the user to be prompted with Please enter the disk: Disk8. Disk Volume Select a disk and then enter the name for the resulting disk image folder. Repeat for each disk. When you are building your release image for removable media (such as CD-ROM), be sure to create the media with the same volume names specified here. If you leave the names as DISK?, the Release Wizard numbers the disks sequentially (for example, DISK1, DISK2, and so on).

Tip: Notice that the default name of the volume is in all uppercase letters. It is a good idea to keep the names as uppercase to accommodate media types, such as CD-ROM, which require volume names in that format.

Web Type Panel


Project: This panel is not available for InstallScript projects.

The Web Type panel prompts you to select the configuration of your Web installation package.

Panel Options
One Executable Select this option if you want to build this release as a single self-extracting Setup.exe. This Web type is ideal for a package that is to be downloaded from multiple Web or FTP sites, since the installation package is self-contained, and it does not contain any configuration information that ties it to a specific location. Note, however, that the entire installation package will be downloaded, so the download size and time will be greater than the Install from the Web type described below.

InstallShield 2010 User Guide

ISP-1600-UG00

1599

Chapter 42: Release Wizard

Downloader Select this option to build this release as a combination of Setup.exe and your .msi database. With this option, you can specify where your products data files should be stored: they can be streamed into the .msi database or stored externally in cabinet (.cab) files. Any .mst and .ini files are embedded in the Setup.exe file. With the Downloader option, the end user downloads and runs Setup.exe, which in turn downloads and runs the .msi database. If the .cab files are stored externally, only the .cab files that are required, based on the end users setup type and feature selections, are downloaded and installed. This minimizes download size and time. The URL that you specify in the Downloader Options panel of the Release Wizard is used during product maintenance and repair mode. Install from the Web Select this option to build this release as a combination of Setup.exe, your .msi database, and external cabinet (.cab) files. Any .mst and .ini files are embedded in the Setup.exe file. With the Install from the Web option, the end user downloads and runs Setup.exe, which in turn downloads and runs the .msi database; based on the end users setup type and feature selections, only the requested .cab files are downloaded and installed, which minimizes download size and time. The URL that you specify in the Install from the Web Options panel of the Release Wizard is used during product maintenance and repair mode.

Downloader Options Panel


Project: This panel is not available for InstallScript projects.

The Downloader Options panel is where you specify the URL for your installation package. It is also where you specify the location for your products data files.
Table 42-6: Downloader Options Panel Settings Setting URL for your package Description Type the URL for your installation packagefor example, http:// www.yourcompany.com/downloads. (The file name is not necessary.) To stream your products data files into the .msi package, clear this check box. To store your products data files outside the .msi package (in external .cab files), select this check box and then select the appropriate .cab Files option.

Create external .cab files

1600

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Table 42-6: Downloader Options Panel Settings (cont.) Setting .cab Files Description If you select the Create external .cab files check box, specify how the (.cab files should be created. Available options are:

One .cab per componentBuilds a separate cabinet file for each component. At run time, only the cabinet files that are required by the end users setup type and feature selections are downloaded. One .cab per featureBuilds a separate cabinet file for each feature. At run time, only the cabinet files that are required by the end users setup type and feature selections are downloaded. Multiple .cab files based on sizeEnter a specific size, in kilobytes, for each cabinet file.

Install From The Web Options Panel


Project: This panel is not available for InstallScript projects.

The Install From The Web Options panel is where you specify the URL for your installation package. It is also where you specify how the .cab files should be created.
Table 42-7: Install From The Web Options Panel Settings Setting URL to install files from the Web Description Type the URL for your installation packagefor example, http:// www.yourcompany.com/downloads. The URL must begin with http:// or ftp://. Specify how the (.cab files should be created. Available options are:

.cab Files

One .cab per componentBuilds a separate cabinet file for each component. At run time, only the cabinet files that are required by the end users setup type and feature selections are downloaded. One .cab per featureBuilds a separate cabinet file for each feature. At run time, only the cabinet files that are required by the end users setup type and feature selections are downloaded. Multiple .cab files based on sizeEnter a specific size, in kilobytes, for each cabinet file.

One-Click Install Panel


Project: This panel is not available for InstallScript projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1601

Chapter 42: Release Wizard

The One-Click Install panel is where you specify whether to generate an HTML page and cabinet file from which an end user can begin installing your project.

Panel Options
Generate a One-Click Install Select this option if you would like to create a One-Click Install, which is an installation program whose initial user interface is an HTML page. When an end user visits your Web page and clicks a button on it, the installation files are downloaded to the target system and then launched. The files that are downloaded to the users system depends on your setting for the Web Type property for the current release.
HTML base file name

Type in the base name of the HTML file to generate, as in install. The .htm extension will be added to the base name you specify.
CAB/JAR base file name

Type in the base name of the cabinet (.cab) file and applet archive (.jar) file to generate, as in install.
Browsers to support

Select the browsers you want your One-Click Install to support:


Table 42-8: Browser Support Options for One-Click Install Browser Internet Explorer Explanation Generate a cabinet (.cab) file based on your CAB/JAR base file name setting. Generate a JAR (.jar) file based on your CAB/JAR base file name setting. Generate both the CAB and JAR files.

Netscape Communicator

Both Internet Explorer & Netscape Communicator

Note: InstallShield supports Netscape Communicator versions 4.06 through 4.78 for Internet deployment.

Note About Installing on Machines Running Internet Explorer


If your installation package is not digitally signed and will be installed on target machines running Internet Explorer, the end user might receive a Microsoft Internet Explorer error message if the Internet Explorer security settings are not set in a particular way.

Task

To remedy this, the end user should do the following: 1. 2.

Select Internet Options from the Tools menu in Internet Explorer. Click the Security tab.
ISP-1600-UG00 InstallShield 2010 User Guide

1602

Chapter 42: Release Wizard

3.

Select Low for the Default security level orif the end user has a custom security level defined set the Custom security level to allow Download unsigned ActiveX controls and Active scripting.

Local Machine Panel


Project: This panel is not available for InstallScript projects.

The Local Machine panel prompts you to specify whether and where your installation files should be cached on the target system.

Panel Options
Cache installation on local machine Check this box if you would like your installation files to be cached on the target system. When the user performs maintenance operations on your product, the cached location you specify here will be used as the default installation source.

Note: Files cached on the target system using this option will not be automatically removed when the user uninstalls your product.

Path Specify the directory in which files should be cached on the target system. You can enter a hard-coded path, as in C:\Cached Files, but it is recommended you include a destination variable from the dropdown list in the path, as in [LocalAppDataFolder]Downloaded Installations.

Note: Only the destination variables included in the Path list are available for use as download locations.

Release Configuration Panel


Project: This panel is not available for InstallScript projects.

The Release Configuration panel enables you to specify the type of compression, if any, that you would like to use in your release.

InstallShield 2010 User Guide

ISP-1600-UG00

1603

Chapter 42: Release Wizard

If you are rebuilding an existing release, the wizard remembers your previous build settings.
Table 42-9: Settings on the Release Configuration Panel Setting Compress all files Description Select this option to compress all of your product's files into either a single executable file (Setup.exe) or a single Windows Installer package (.msi file). Select this option if your product's files should not be compressed, and if they should be in a subfolder of the folder that contains your installation package.

Leave files uncompressed and separate from the installation package Custom

Specify whether the release should be compressed:

Compress all filesSelect this option to compress all of your product's files into either a single executable file (Setup.exe) or a single Windows Installer package (.msi file). Leave files uncompressed and separate from the installation packageSelect this option if your product's files should not be compressed, and if they should be separate from your installation package. CustomSelect this option to compress only the files that are associated with one or more features into .cab files. If you select this option, the Release Wizard displays the Custom Compression Settings panel when you click Next to enable you to configure how the compression should be done.

Tip: The output of the build process depends on your media type, compression, and spanning settings.

Note: The output of the build process depends on your media type, compression, and spanning settings.

If you choose a Network Image media type and the Compress all files option, all your data files are compressed into Setup.exe or your .msi database, depending on whether you include the Setup.exe installation launcher. If you choose a CD-ROM, DVD-ROM, or Custom media type, along with the Compress all files option, each disk image contains a DataN.cab file that contains your data files. If you choose a CD-ROM, DVD-ROM, or Custom media type, along with the Custom option compression, the data files that you choose to compress are placed in cabinet files named ComponentName.cab. If you choose a Web media type, the build output is described on the Web Type panel of the Release Wizard.

Custom Compression Settings Panel


Project: This panel is not available for InstallScript projects.

This panel prompts you to choose which features you would like to compress.

1604

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Panel Options
Features to Compress All of the features included in this release are displayed here. Select the features that you would like to compress by selecting the check box next to each one. A component or merge module can be associated with more than one feature. In such a case, the Release Wizard applies the compression settings of the first feature with which the component or module is associated. For example, if ComponentA belongs to both Feature1 (whose files are compressed) and Feature2 (whose files are uncompressed), the compression settings are applied as follows. If Feature1 is the first feature to be built into the release, ComponentAs files will be compressed into the Windows Installer package or Setup.exe. Select All Click this button to select all features for compression. Clear All Click this button to deselect all features, meaning that none of the features will be compressed into the installation.

Setup Launcher Panel


Project: The Setup Launcher panel is available for the following project types:

Basic MSI InstallScript MSI

The Setup Launcher panel lets you specify whether you want to create a Setup.exe setup launcher. It also lets you specify whether you want to include the redistributable for Windows Installer 3.1 or earlier with your installation. For information about Windows Installer redistributables, see Adding Windows Installer Redistributables to Projects.
Table 42-10: Settings on the Setup Launcher Panel Setting Create installation launcher (Setup.exe) Description Use this option to specify whether to create a Setup.exe setup launcher for the current release. The Setup.exe setup launcher is required in some cases. For example, if you want to install the Windows Installer engine on a target system, your release must include a setup launcher. It is also required if you selected the option to display the Language dialog in the Setup Languages panel. To learn more about scenarios that require a setup launcher, see Creating a Setup Launcher. The entire setup package and all of your applications files are compressed into
Setup.exe if you selected the Compressed and included within the

installation package option on the Release Configuration panel for a Network Image or WebOne Executable media type.

InstallShield 2010 User Guide

ISP-1600-UG00

1605

Chapter 42: Release Wizard

Table 42-10: Settings on the Setup Launcher Panel (cont.) Setting Include MSI Engine Description If you want to include the Windows Installer engine installation so that it can be installed or upgraded on a target system if necessary, select this check box. As an alternative, you can add an InstallShield prerequisite for the Windows Installer to your project. For more information, see Adding Windows Installer Redistributables to Projects. Suppress warning if the Windows Installer service cannot be upgraded MSI Engine Version Note: Some versions of Windows Installer are not available as redistributables. For more information, see Adding Windows Installer Redistributables to Projects. Select the version of the Windows Installer engine that you want to be installed. Available options are: To suppress the warning dialog that is displayed if the Windows Installer service cannot be installed or upgraded on the target system, select this check box.

Version 2.0Installs Windows Installer 2.0 to the target system. Version 3.0 (requires Windows 2003 SP3 or greater)Installs Windows Installer 3.0 to the target system. Version 3.1 (requires Windows 2003 SP3 or greater)Installs Windows Installer 3.1 to the target system. Version 3.1 or 2.0 (best fit for system)Installs Windows Installer 3.1 to a target system that is running Windows 2003 SP3 or later, and installs Windows Installer 2.0 to other target systems.

Delay engine reboot until after your setup installation completes

Select the Delay engine reboot until after your setup installation completes option to delay any reboot that may be required by the Windows Installer engine installation until your setup program has completed. Clear this option to allow the system to reboot immediately after installing or updating the Windows Installer engine, if necessary.

Windows Installer Location Panel


Project: This panel is not available for InstallScript projects.

This panel specifies where the Windows Installer engine installers (InstMsiA.exe and InstMsiW.exe) are located.

1606

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Panel Options
Download engine from the Web Select this option to download the Windows Installer engine installers (if necessary) from the URL that is specified in the Release property sheets Win9x MSI Engine URL, WinNT MSI Engine URL, or MSI 3.1 Engine URL property. (The URL property that the installation uses is determined by the target operating system and the value of the MSI Engine Version property, which you can set in the Release property sheet or the Release Wizards Setup Launcher panel.)

Tip: This option is recommended if your installation will be downloaded from the Internet and you want to minimize the package size and download time. The engine will not be downloaded if the correct version is already present on the target machine.

Extract engine from Setup.exe Select this option to compress the selected Windows Installer engine installers into Setup.exe, to be extracted at run time, if necessary.

Tip: Use this option if the entire installation must be self-contained in Setup.exe. Note that the Download engine from the Web option results in smaller installations and shorter download time; however, this option provides for a completely selfcontained installation.

Copy from source media Select this option to leave the Windows Installer engine installers on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe.

Tip: Use this option if the installation will be run uncompressed from fixed mediaCD, DVD, or local network.

InstallShield Prerequisite Panel


The InstallShield Prerequisite panel is displayed if your project contains one or more InstallShield prerequisites. Use this panel to specify where the InstallShield prerequisites are located. Available options are as follows.

InstallShield 2010 User Guide

ISP-1600-UG00

1607

Chapter 42: Release Wizard

Tip: If you want to use the locations that are specified for each individual InstallShield prerequisite, you must select the Following Individual Selections option for the InstallShield Prerequisites Locations setting on the Setup.exe tab in the Releases view. For more information, see Specifying a Location for a Specific InstallShield Prerequisite. Table 42-11: Available Options on the InstallShield Prerequisite Panel Option Download prerequisites from the Web Description Download all of the InstallShield prerequisite files included in your project (if necessary) from the URL specified in the InstallShield prerequisite (.prq) file for each prerequisite.

Tip: This option is recommended if your installation will be downloaded from the Internet and you want to minimize the package size and download time. An InstallShield prerequisite will not be downloaded if the correct version is already present on the target machine. Extract prerequisites from Setup.exe Compress the InstallShield prerequisite files into Setup.exe, to be extracted at run time, if necessary.

Tip: Select this option if the entire installation must be self-contained in Setup.exe. Note that the Download prerequisites from the Web option results in smaller installations and shorter download time; however, the Extract engine from Setup.exe option provides for a completely self-contained installation. Copy prerequisites Store the InstallShield prerequisite files on the source media. from source media

Tip: Use this option if the installation will be run uncompressed from fixed mediaCD, DVD, or local network.

Note: If an InstallShield prerequisite is added to a project as a dependency of another prerequisite, the location for the prerequisite dependency follows the location setting of the prerequisite that requires it.

Digital Signature Panel


The Digital Signature panel enables you to specify digital signature information for your package and the files in your package. Digitally signing your application assures your end users that the code within your application has not been modified or corrupted since publication.

1608

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Note: When you are building a release on a Windows 2000 machine, SP4 must be installed in order for you to digitally sign the application. Table 42-12: Settings on the Digital Signature Panel Setting Certificate URL Description Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company. Specify the location of your digital certificate file (.spc or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file. Private key file (PVK) If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you would like to pass the password for the .pvk file or the .pfx file to
ISCmdBld.exe to digitally sign your application while building the release from the

Digital certificate file (SPC or PFX)

Certificate password

command line, type the password in this box. InstallShield encrypts this password and stores it in your project (.ism) file. If you do not specify a password in this box but you are digitally signing the release while building it from the command line, you will need to manually enter the password when you are prompted each time that you build the release from the command line.

Digital Signature Options Panel


The Release Wizard includes the Digital Signature Options panel if you enter digital signature information on the Digital Signature panel. Use the Digital Signature Options panel to specify which files in your installation should be digitally signed at build time.

InstallShield 2010 User Guide

ISP-1600-UG00

1609

Chapter 42: Release Wizard

Tip: You can also configure digital signature information for a release on the Signing tab in the Releases view. Table 42-13: Settings on the Digital Signature Options Dialog Box Setting Sign Windows Installer Package Project Type Basic MSI, InstallScript MSI, Merge Module Description If you want to sign your Windows Installer package (.msi file), select this check box. This check box is enabled only if .spc and .pvk files are specified, or if a .pfx file is specified.

Note: You can sign the Windows Installer package only if version 2.0 or later is selected for the MSI Engine Version setting on the Setup.exe tab. Sign Media (requires .spc and .pvk) InstallScript If you want to digitally sign the media header file (Data1.hdr), select this check box. This check box is enabled only if .spc and .pvk files are specified, or if a .pfx file is specified.

Project: InstallShield does not support using .pfx files to sign media header files (.hdr files), which are used for the One-Click Install type of installation for InstallScript projects. For this type of installation, consider one of the following alternatives: Use .spc and .pvk files instead of a .pfx file for your digital signature. Build a compressed installation, which would enable you to sign with a .pfx file.

Sign Setup.exe

Basic MSI, InstallScript, InstallScript MSI

If you want to sign your Setup.exe file, select this check box. This check box is enabled only if .spc and .pvk files are specified, or if a .pfx file is specified. In addition, this setting is applicable only to releases that meet the following criteria:


Sign files in package Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Single-file Setup.exe Compressed files Network image media type

If you want to sign any of the files in your release, select this check box and then use the Include patterns and files and Exclude patterns and files boxes to indicate which files should be signed.

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

1610

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Table 42-13: Settings on the Digital Signature Options Dialog Box (cont.) Setting Include patterns and files Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description Specify the files and file patterns that you want to be digitally signed at build time. Note the following guidelines:

You can type directly in the box. As an alternative, you can click the Files button, which launches the Browse for file dialog box. This dialog box lists all of the static files that are currently in your project. It also lists file patterns such as *.dll, which you can select. To indicate a wild-card character, use an asterisk (*). For example, if you want to sign all .exe files, specify the following: *.exe Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to sign all files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

Exclude patterns and files

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Specify any files and file patterns that you do not want to be digitally signed at build time. Note the following guidelines:

You can type directly in the box. As an alternative, you can click the Files button, which launches the Browse for file dialog box. This dialog box lists all of the static files that are currently in your project. It also lists file patterns such as *.dll, which you can select. To indicate a wild-card character, use an asterisk (*). For example, if you do not want to sign any .drv files, specify the following: *.drv Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to avoid signing any files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

InstallShield 2010 User Guide

ISP-1600-UG00

1611

Chapter 42: Release Wizard

Table 42-13: Settings on the Digital Signature Options Dialog Box (cont.) Setting Sign files that are already signed Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description If any of the files in your project are already digitally signed, determine whether you want InstallShield to replace those existing digital signatures with the digital signature that you specify on the Digital Signature panel. Note that this affects only files that meet the requirements that are specified in the Include patterns and files and Exclude patterns and files boxes.

To use the digital signature information that you provided on the Digital Signature panel to sign a file instead of any existing digital signature information that is already included with the file, select this check box. To leave the existing digital signature information intact for any files that are already signed, clear this check box.

This check box is cleared by default. Sign files in their original location Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Determine whether you want InstallShield to sign your original files or just the files that are built into the release:

If you want InstallShield to sign a temporary copy of each file and then use that signed temporary copy to build a release, clear this check box. Note that if you clear this check box, InstallShield will not modify or sign your original files. If you want InstallShield to sign your original files, select this check box.

This check box is cleared by default.

Tip: The benefit of selecting this check box for a Basic MSI or InstallScript MSI project is that it helps create one patch that updates both compressed and uncompressed versions of a release that contains originally unsigned files.

Netscape Digital Signature Panel


Project: This panel is not available for InstallScript projects.

The Netscape Digital Signature panel prompts you to digitally sign your JAR file for a One-Click Web release. These settings are required if you intend to target users running Netscape Communicator browsers.

Panel Options
Certificate ID Enter your certificate ID. Certificate Password Enter the password for your digital certificate.

1612

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Certificate Database Path Enter the path or browse to the directory containing cert7.db and key3.db.

Password & Copyright Panel


The Password & Copyright panel prompts you to activate password protection for your setup and (except in InstallScript projects) to indicate specific information for your applications copyright.

Panel Options
Password protect Setup.exe Select this option to require the end user to enter a password in order for Setup.exe to run. Password Type the desired password into the Password field. Show Password dialog box during setup initialization Check this box to execute the password-checking code in the OnCheckMediaPassword event handler functions default code.

Tip: If you leave this box unchecked, you must enter your own code in the script to request the password from the end user and check it by calling ComponentValidate.

Use my copyright in Setup.exe

Project: This option is not displayed for InstallScript projects.

Select this option if you want to override the InstallShield default information and display your companys copyright information in the Version tab of the Setup.exe properties dialog. The user can view this information by right-clicking the Setup.exe icon, selecting Properties, and then clicking the Version tab. Copyright notice

Project: This box is not displayed for InstallScript projects.

Type your copyright information in the text box.

.NET Framework Panel


Project: This panel is available in the following project types.

Basic MSI
ISP-1600-UG00 1613

InstallShield 2010 User Guide

Chapter 42: Release Wizard

InstallScript MSI

To include one or more versions of the .NET Framework in an InstallScript or InstallScript Object project, use the Objects view to add the Microsoft .NET Framework object to your installation.

The .NET Framework panel is where you add support for the 32-bit versions of the .NET Framework 1.0, 1.1, or 2.0.

Note: To include .NET Framework 3.5, 3.0 SP1, 3.0, 2.0 SP1 (x86, x64, IA64), or 2.0 (only x64, IA64) redistributables in your project, use the Redistributables view to add the appropriate InstallShield prerequisite for the Microsoft .NET Framework to your project. For more information, see Adding .NET Framework Redistributables to Projects. Table 42-14: .NET Framework Panel Settings Setting Include or set up .NET Framework Description Select this check box to include the .NET Framework with your installation. If it is not available on the target system, you can indicate the location where to find it and specify installation details. Select the version of .NET Framework that you want to install to the target system.

.NET Version

Note: To include .NET Framework 3.5, 3.0 SP1, 3.0, 2.0 SP1 (x86, x64, IA64), or 2.0 (only x64, IA64) redistributables in your project, use the Redistributables view to add the appropriate InstallShield prerequisite for the Microsoft .NET Framework to your project. For more information, see Adding .NET Framework Redistributables to Projects. Download from the Web Select this option to download .NET Framework support from the URL that is specified in the Release property sheets .NET and J# Framework URL property. Select this option to extract the .NET Framework from Setup.exe and install it to the target system. Select this option to leave the .NET Framework on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe. If you select this check box, the Microsoft .NET Framework (English) Setup wizard appears when dotnetfx.exe installs the .NET Framework on the target system. This wizard shows the progress of the .NET Framework installation. If you clear this check box, the InstallShield Wizard appears when dotnetfx.exe installs the .NET Framework on the target system. This InstallShield Wizard shows the progress of the .NET Framework installation.

Extract from Setup.exe

Copy from source media

Show full user interface when installing .NET Framework

1614

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Table 42-14: .NET Framework Panel Settings (cont.) Setting Delay requested .NET reboots until after your installation Description Select this check box to delay any prompts to reboot until after the installation is finished. The .NET Framework may not function until after this reboot. Therefore, it is strongly recommended that you not select this check box if the .NET Framework is used during the installation.

.NET Run-Time Options Panel


Project: This panel is not available for InstallScript projects.

Use this panel to specify additional command line parameters to DotNetFx.exe and select the .NET core language.

Panel Options
Command line to pass to DotNetFx.exe In the edit field, type a command line that you want to pass to DotNetFx.exe. .NET Core Language If you selected .NET version 1.1 in the .NET Framework panel, you can specify one .NET core language you want to distribute. This is the language that is used while the .NET 1.1 core redistributable is installed. If you selected version 2.0, the language options are disabled since they are all included with this version of the redistributable. To launch the Redistributable Downloader Wizard, click Download more Languages.

.NET Language Pack Run-Time Options Panel


Project: This panel is not available for InstallScript projects.

Use this panel to select the .NET language packs you want to include with your setup. In addition, you can provide a command line to be used with LangPack.exe.

Panel Options
Command line to pass to LangPack.exe Type a command line to pass to LangPack.exe. .NET 1.1 Language Packs to Distribute Select the check boxes next to the language packs that you want to distribute with your setup. The options available depend on the Microsoft language pack redistributables you have on your system. To download more, click Download more languages to launch the Redistributable Downloader Wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1615

Chapter 42: Release Wizard

Visual J# Run-Time Options Panel


Project: This panel is not available for InstallScript projects.

Use this panel to select Visual J# options that will be used if the Visual J# run-time components are not installed on the target system.

Note: The version of Visual J# installed at runtime aligns with the version of the .NET Framework you selected in the .NET Framework panel.

Panel Options
Include Visual J# run-time components Select this option to include the Visual J# run-time components you select below Download from the Web Select this option to have the setup download the components from the URL that is specified in the Release property sheets .NET and J# Framework URL property. Extract from Setup.exe Select this option to extract the J# run-time components from Setup.exe during the installation process. Copy from source media The components are copied from the installations source media. Command line to pass to redist Type a command line to pass to the J# redistributable. Consult Microsoft for valid command-line parameters. Make the installation of J# optional Presents the option to the end user while the installation is runningvia a dialog. If it is optional, and the setup is silent, install J# If you elect to make J# installation optional and the installation is run silently, the option cannot be presented to the end user. In this case, the J# run-time components are installed without requiring the end user to make a choice.

Advanced Settings Panel


Project: This information applies to the following project types:

Basic MSI

1616

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

InstallScript MSI Merge Module

The Advanced Settings panel enables you to set the release location and file name format. For installation projects, you can also specify whether you want to create Autorun and package definition files along with your release. You can optionally specify an earlier release build to optimize patch creation. If you are rebuilding an existing release, the wizard remembers the build settings you last specified.

InstallShield 2010 User Guide

ISP-1600-UG00

1617

Chapter 42: Release Wizard

Panel Options
Release Settings
Table 42-15: Release Settings Area on the Advanced Settings Panel Setting Location Description Enter the directory where you would like your release to be saved. You may navigate to this directory by clicking the Browse button. Alternatively, you may enter a path variable for your release location. To use a path variable in this field, you can either navigate to the directory your path variable points to, or you can enter the name of the path variable you would like to use, enclosed in angle bracketsfor example, <MyVariable>. If your release will be stored on media that supports long file names, select this check box. If long file names are not supported, or if you are uncertain what file name format your media supports, clear this check box. If you want InstallShield to use the LZX method of compression when building this releases cabinet files, select this check box.

Use long file names

Optimize size

Important: Using compression generally decreases the size of your compressed files, but the build process may take more time to complete. Depending on the number and size of the files being compressed, the LZX compression and the build may take hours to complete. Therefore, if you select this check box, it is recommended that your build machine have the latest hardware to minimize the time that it takes for the build to complete. This setting is used only if your release is configured to compress some or all of its files. Use path variable test values If you used test values for any of your path variables, you can set those variables to their actual values at this time. Choose this option if you are distributing your installation on a CD-ROM and want to support the AutoPlay feature, a Windows logo requirement. A text file called Autorun.inf containing the instructions to autoplay your installation will be created in the root of your disk images folder. You can edit this file to add additional AutoPlay options or to pass commandline parameters to MsiExec.exe or Setup.exe. AutoPlay will not work in the disk image folders on your development system, because it is enabled only in root drives. Note also that users can turn off AutoPlay on their own systems. Generate Package Definition File To create a package definition file (.pdf) that enables end users to run your installation as an SMS job, select this check box. If you select this check box, InstallShield creates a version 2.0 .pdf.

Generate Autorun.inf

1618

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Table 42-15: Release Settings Area on the Advanced Settings Panel (cont.) Setting Build UTF-8 Database Description If you want the Windows Installer database, along with any instance or language transforms, to be built using the UTF-8 encoding, select this check box. The UTF-8 encoding supports characters from all languages simultaneously, enabling you to mix and match, for example, Japanese and German, or Russian and Polish, both in text shown to end users and in file names and registry keys. These mixed languages work correctly regardless of the current language of the target system. However, some scenarios result in user interface issues. For example, if an end user specifies the /qb command-line option or uninstalls the product from Add or Remove Programs, Windows Installer uses very small fonts to display the user interface text in a UTF-8 database. If you clear this check box, InstallShield creates an ANSI database when you build your release. This option does not let you mix characters from languages in different code pages. This check box is cleared by default.

Patch optimization (Optional) Area To make the smallest possible patches, file keys in the File table should be identical in the earlier and later .msi databases. The patch-creation process uses the File table keys to determine if two files are the same file. (The actual file names cannot reliably be used, since a package might contain more than one file with the same name, installed under different conditions.) If the previous package is specified here, InstallShield uses identical File table keys for identical files. For more information, see Upgrade Considerations.
Previous Windows Installer package

Browse for the earlier release version of the .msi file.

Release Settings Summary Panel


If you want to change any settings, click the Back button until you come to the panel that you would like to change. You can then return to the Release Settings Summary panel and start your build.

Panel Options
Build the Release Select this option to build this release when you click Finish. Progress information for the build is displayed in the Output window.

Note: The Build your Release option does not appear on the Summary panel if the Release Wizard was launched from Microsoft Visual Studio.

InstallShield 2010 User Guide

ISP-1600-UG00

1619

Chapter 42: Release Wizard

General Options Panel


Project: The General Options panel is available in the following project types:

InstallScript InstallScript Object

The General Options panel enables you to do the following:

Create a self-extracting executable file for distributing your installation. Pass command-line options to Setup.exe. Pass preprocessor variable definitions to the compiler. Select whether to place the compiled script file (.inx file) in a cabinet file.

Project: In an InstallScript object project, the Compiler Preprocessor Defines list and the Advanced button are available; none of the other options on this panel are available.

Create a single file executable Select this check box to create a self-extracting executable file. The File Name and Icon lists are enabled only if this check box is selected. File Name Type a file name for the self-extracting executable file or select a path variable whose value defines the password. Icon Optionally specify the fully qualified name of the file from which the executable files icon is taken at build time; if no file is specified, a default icon is used. To specify a file, type an explicit path, select and append to a path variable, or click the browse button to open the Change Icon dialog box, in which you can click the Browse button to select a file. By default, the icon with index 0 is used; to specify a different icon, either select an icon in the Change Icon dialog box or append the icons index or resource ID (preceded by a minus sign) to the file name. For example, C:\Temp\MyLibrary.dll,2 indicates the icon with an index of 2, and C:\Temp\MyLibrary.dll,-100 indicates the icon with a resource ID of 100.

Note: You can specify a non-default icon only when building on a Windows NT, Windows 2000, or Windows XP machine.

Compress compiled script (.inx) file into media If the compiled script file (.inx file) should be placed in a cabinet file, select this check box. If the file should be placed uncompressed in the Disk1 disk image folder, clear this check box. Setup Command Line Optionally specify any command-line parameters you want to pass to Setup.exe when the installation is launched; type a command line or select a path variable.
1620 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Release Wizard

Compiler Preprocessor Defines Optionally specify any preprocessor variable definitions; type the definitions or select a user-created build variable. Preprocessor variable definitions that are specified here apply only to the current release; they are not used when compiling the script for other releases. Use the following format, with no spaces before or after equals signs or commas:
MYVARIABLE1=123,MYVARIABLE2

Such variables can be tested in the script by #if and #ifdef statements that control the flow of the script. When you are creating an InstallScript object, enter IFX_OBJECTS. Entering the name of a preprocessor variable in this box defines the variable. For example, if you enter MYVARIABLE in this box, the script commands in the following #ifdef loop are executed:
#ifdef MYVARIABLE // Commands #endif

After you add or change a preprocessor variable definition in this box, you must compile your installation project for the addition or change to take effect. To learn how, see Compiling Scripts. Other Disk Files This button is enabled only if there are files in the Other folder under Advanced Files in the Support Files/Billboards view and you selected a media format that produces multiple disk imageswhich is true for all formats other than Network Image. When you click this button, the General Options - Other Disk Files dialog box opens. This dialog box lets you specify a location in the disk image folders for each file that is in the Other folder. Advanced When you click this button, the General Options - Advanced dialog box opens. This dialog box lets you specify a custom location for the built files, the space that is reserved in the disk images folders, and whether the installation performs MD5 checking.

Features Panel
Project: This panel is not available for the following project types:

Basic MSI InstallScript MSI

The Features panel allows you to specify which features are included in the built release.

Panel Options
Use the "Include in Build" property If this option is selected, each feature whose Include in Build property is set to Yes is included in the built release and each feature whose "Include in Build" property is set to No is not included.

InstallShield 2010 User Guide

ISP-1600-UG00

1621

Chapter 42: Release Wizard

Specify the features Lets you specify for each feature whether the feature is included in the built release. To toggle a features inclusion, click the check box next to the feature. A checked box indicates that a feature is included in the built release; an unchecked box indicates that a feature is not included. You cannot toggle the inclusion status of InstallScript objects. Objects will always have the same inclusion status as their parent feature. A disabled checked box indicates that the feature cannot be excluded because it is required by a feature that is included. If you toggle a feature to included, all its parent, child, and required features will also become included, as well as all child features of its required features. If you toggle the feature to excluded, then its child features will become excluded as well. If this features parent has no more included features, then the parent will become excluded as well; a parent feature must have at least one child feature included for it to be included. If you exclude all but one of the visible child features of a required feature, the remaining visible child feature of the required feature is automatically included and disabled so that at least one child feature remains included. Visible features (features whose Visible property is set to Yes) are displayed with a filled icon ( ); invisible features are displayed with an unfilled icon ( ).

Media Layout Panel


Project: This panel is not available for Windows Installerbased or InstallScript MSI projects.

This panel allows you to specify, for individual features or for all features, whether the features files are stored in cabinet files or placed uncompressed in the disk image.

Panel Options
Cabinet File(s) Store all features files in cabinet files.

Note: You can specify in a components Compressed property whether the components files are compressed or uncompressed when stored in a cabinet file.

CD-ROM Folder(s) Place all features files uncompressed in the disk image. Files associated with a given feature are placed in the disk image in the folder specified in the features CD-ROM Folder property. If no folder is specified, that features files are placed in the root of the disk image. Custom If this option is selected, clicking the panels Next button displays the Custom Media Layout panel, which lets you specify for individual features whether the features files are stored in cabinet files or placed uncompressed in the disk image.

1622

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Custom Media Layout Panel


Project: This panel is not available for the following project types:

Basic MSI InstallScript MSI

This panel allows you to specify, for individual features or for all features, whether the features files are stored in cabinet files or placed uncompressed in the disk image.

Panel Options
Features in cabinets Lets you specify for individual components whether the components files are stored in cabinet files or placed uncompressed in the disk image. To toggle a components storage mode, click the check box next to the component. A checked box signifies that a components files are stored in cabinet files. An unchecked box signifies that a components files are placed in the disk image in the folder specified by the components CD-ROM Folder property. If no folder is specified, that components files are placed in the root of the disk image. Select All Selects all features in the Features in cabinets box. Clear All Deselects all features in the Features in cabinets box.

User Interface Panel


Project: This panel is not available for the following project types:

Basic MSI InstallScript MSI

This panel allows you to specify the look and feel of your setups end user dialog boxes.

Panel Options
Use projects default If this option is selected, the end user dialog boxes are displayed with the skin that is selected in the Dialogs views Skins folder, as shown in the Dialog Preview graphic. Do not use any skin If this option is selected, the end user dialog boxes are displayed in standard Windows style, as shown in the Dialog Preview graphic.

InstallShield 2010 User Guide

ISP-1600-UG00

1623

Chapter 42: Release Wizard

Use skin specified below If this option is selected, the end user dialog boxes are displayed with the skin that you select in the list box, as shown in the Dialog Preview graphic. Note that the BlueTC skin uses GIF files and so under a 16bit color setting does not look as good as the Blue skin, which uses bitmaps (and so is much larger). Dialog Preview Displays a sample of how the end user dialog boxes will appear as a result of the selections you made with the option buttons and list box.
The dialog boxes that are displayed by the following functions cannot be displayed with a skin; they appear the same regardless of whether you have specified a skin. AskYesNo EnterDisk MessageBox MessageBoxEx RebootDialog SdComponentDialogthe Available Disk Space dialog box SdComponentDialog2the Select Subcomponents dialog box SdComponentDialogAdvthe Available Disk Space dialog box SdConfirmNewDir SdConfirmRegistration SdExceptions SdShowMsg SelectDir SelectDirEx SprintfBox

Display small initialization dialog If checked, the setup initialization dialog box is the small box that was shown by setups created with InstallShield Professional version 6.31 and earlierunless the setup displays a security, Save And/or Run Setup, Choose Setup Language, or Qualifying Product(s) Detected dialog box, in which case the setup initialization dialog box is larger and is consistent with the rest of the end user dialog boxes, regardless of the state of this check box. If unchecked, the setup initialization dialog box is larger and is consistent with the rest of the end user dialog boxes. If this check box is unchecked, the setup initialization dialog box (and the Choose Setup Language dialog box, if any) are not displayed until the startup graphic closes. To specify the length of time for which the startup graphic displays, set Setup.inis [Startup] sections SplashTime value.

Internet Options Panel


Project: This panel is available in InstallScript projects.

The Internet Options panel enables you to specify various Internet-related options.

1624

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Note: Any release can be run over the Internet, regardless of its media type. Table 42-16: Settings on the Internet Options Panel Setting Generate One-Click Install Description To create a One-Click Install installation that end users can download from the Internet and install, select this check box. If you select this check box, InstallShield includes with your installation an external setup player (Setup.ocx file) that downloads and then launches the Setup.exe file with the appropriate command line. If you select this check box, the other settings on this panel are enabled. To learn more, see One-Click Install Installations in InstallScript Projects. Create a default Web page for the setup Enter the URL to launch Select this check box to indicate that you want InstallShield to create a default Web page (.htm file) in the Disk1 folder. Do one of the following to indicate what URL should be launched if you click the Run From Web command on the Build menu:

To launch the Setup.htm file that InstallShield creates at build time and places in the Disk1 folder, leave this box blank. To launch a different Web page, type the URL in this box or click the browse button to select the Web file.

Tip: If you enter a URL, do not include the name of the page, and do not include an ending forward slash. For example, if the full URL for the Setup.htm file is http:// www.mypages.com/setup/Setup.htm, enter the following as the URL to launch: http://www.mypages.com/setup. When you click the Run from Web command on the Build menu, InstallShield launches the appropriate URL (http://www.mypages.com/setup/Setup.htm, in the aforementioned example). Include Netscape Support If you want to include support for Netscape, select this check box. If you select this check box, InstallShield creates the files (Setup.zip and Setupapplet.jar) that Netscape requires in order to launch the installation from the Web page. These files are placed in the Disk1 folder. If you clear this check box, the Setup.zip and Setupapplet.jar files are not created.

Update Panel
Project: This panel is not available for the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1625

Chapter 42: Release Wizard

This panel allows you to specify the release format and the existing releases for which the current release can be run as an update.

Tip: To create a setup that can be run on a system on which no version of your product is currently installed, select the Full option and the Non-version specific option.

Panel Options
Full Specifies that the current release is a full release. Non-version specific Enabled only if the Full option button is selected. Specifies that the current release can update any existing version of your application (as long as it was installed by a setup that was created with InstallShield Professional version 6.0 or later), or can install your application on a system on which no version of your product is currently installed. Version specific Enabled only if the Full option button is selected. Specifies that the current release can update only the versions of your application that are specified in the combo box. combo box Enabled only if the Version specific option is selected. Lets you specify the versions of your product to which the update can be applied. Type a semicolon-delimited list of version numbers (for example, 1.2.3;1.2.4) or select a list of version numbers from the list box. If you leave this field blank, the update can be applied to all earlier versions of your product. Differential Specifies that the current release is a differential release. list box Enabled only if the Differential option button is selected. Displays the existing releases to which the current project is compared when creating the new differential release. A file in the current project is excluded from the differential release if the same file (with the same date and time, size, and attributes) exists in each of the specified releases; otherwise the file is included in the differential release. (Files in a component whose Difference property is set to No are always included in the differential release.) You specify these releases by clicking the Import and Add buttons. Also displays the version information for each release.

Note: If the setup is unable to determine a specified releases version information, that version of your product cannot be updated by the setup. If no version information is displayed for a release, select the release, click the Modify button, then select the Specify the version information below option and type or select a version number.

1626

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Release Wizard

Add Enabled only if the Differential option is selected. Opens the Existing Media dialog box, in which you can specify a release that is in the current project. Import Enabled only if the Differential option is selected. Opens the Media File Properties dialog box, in which you can specify a release that is not in the current project. Modify Enabled only if the Differential option is selected and a single release is selected in the list box. Opens the Media File Properties dialog box, in which you can change the release selection and the version information that is associated with the release. Remove Enabled only if the Differential option is selected and one or more releases are selected in the list box. Removes the selected release from the list. Objects Enabled only if the Differential option is selected. Opens the Object Difference dialog box, in which you select the conditions for including InstallScript objects in your differential release.

Object Difference Dialog Box


This dialog box opens when you click the Objects button in the Release Wizards Update panel. This dialog box allows you to you specify the conditions for including InstallScript objects in your differential media.

Dialog Options
Include All Specifies that the differential build will include all objects that would have been included in a full (nondifferential) build. (This excludes, for example, objects that are associated with a feature whose Include In Build property is set to No or that is deselected in the Release Wizards Features panel.) Include If Changed Specifies that the differential build will include only those objects that would have been included in a full build and are absent from, or have an earlier version number in, all the specified comparison media.

Note: If the current project and all specified comparison media include the InstallShield Object Installer object, the media builder compares the files packaged by the InstallShield Object Installer in the current project to the packaged files in the specified media. The media builder includes in the InstallShield Object Installer only those files that are absent fromor have an earlier date and time, different size, or different attributes inall the specified comparison media.

Exclude All Specifies that the differential build will include no objects.

InstallShield 2010 User Guide

ISP-1600-UG00

1627

Chapter 42: Release Wizard

Postbuild Options Panel


Project: The Postbuild Options panel is not available for the following project types:

Basic MSI InstallScript MSI

The Postbuild Options panel enables you to copy disk image folders to a folder or FTP site, or execute a batch file, after the release build is complete.
Table 42-17: Settings on the Postbuild Options Panel Setting Upload release files to the FTP site specified below Description To automatically distribute your release to an FTP site, select this check box and enter the FTP location. Also enter the user name and password, if applicable.

FTP LocationSpecify the FTP URL for the location. If you need to distribute your release to a path outside the FTP default folder, use a double slash (//). For example, to distribute your release to a root-level folder called myproduct, where the URL of the FTP server is ftp://ftp.mydomain.com, enter ftp://ftp.mydomain.com//myproduct for the FTP location.


Copy the built media files to the folder specified below

User NameIf a user name is required to upload to the FTP location, enter the user name. PasswordIf a password is required to upload to the FTP location, enter the password.

If you want to be able to automatically distribute your release to a folder, select this check box and specify the FTP URL for the location. Existing folders with the same names as copied folders are overwritten, but no folders are deleted. Specify the folder path by typing the path in the box, or click the browse button to browse to the location. If the media format of the selected release is a network image, which creates only one disk image folder, the contents of the disk image folder, rather than the folder itself, are copied. If you chose to create a self-extracting executable file, the executable file, rather than the disk image folders, is copied.

Execute the batch or executable file specified below after building the media files

To launch a batch file (.bat) or executable file (.exe) after the release has been built, select this check box and specify the path in the box. You can either type the path or click the browse button to browse to the file. In addition, you can select a path variable in the list and then type the rest of the path. If you select this check box, InstallShield sets environment variables with the same names (including the angle brackets) and values as the projects build variables. InstallShield also sets the environment variable <ISMEDIADIR>, whose value is the path to the folder in which the releases Disk Images, Log Files, and Report Files folders are created. You can refer to the value of an environment variable in a batch file by surrounding the variable name with percent signs (%); for example: set PATH = %<ISPROJECTDIR>%;%PATH% When the file is finished, InstallShield deletes the environment variables that it set.

1628

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Setup Best Practices Wizard

Setup Best Practices Wizard


This wizard is invoked whenever you violate Setup Best Practices while adding files to a component. The wizard tells you which Best Practices you are not following and gives you the option to correct the action. The wizard appears only if you have enabled active monitoring of Best Practices in the Options dialog.

Welcome Panel
The wizard is informing you that by adding files to a component you have violated one of the following Setup Best Practices:
Table 42-18: Setup Best Practices Violations Best Practice Description

Components Should Not Each component should contain only one portable executable Contain Multiple EXEs, file (an EXE, DLL, or OCX) or help file (CHM or HLP). Windows DLLs, OCXs, CHMs, or HLPs Installer components are designed such that all of the advanced settings and component properties, such as the code GUID, refer ideally to a single portable executable or help file. Place other EXEs, DLLs, OCXs, CHMs, or HLPs into new components. A File Cannot Be Associated with More than One Component This Best Practice is extremely important for shipping reusable components and facilitating resiliency. Microsoft recommends that no file be shipped in more than one component, even across products, product versions, and companies. Merge modules contain all of the files, registry entries, and logic necessary to install a distinct piece of functionality. You should not distribute a file for which a merge module is available. Using merge modules also helps you comply with two related requirementsthe Best Practice to avoid associating a file with more than one component and the Windows logo guideline not to ship any core components. If the Best Practices monitoring option is enabled, the Setup Best Practices Wizard alerts you whenever you try adding to a component any file that is part of the merge modules that InstallShield provides.

Use Merge Modules

Panel Options
Please do not warn me of other Setup Best Practice conflicts Selecting this option if you do not want the Setup Best Practices Wizard to notify you of Best Practices violations. You can reverse this action later in the Tools | Options panel.

Compliance Panel
This panel tells you which files violate the Setup Best Practices listed in the Welcome panel by placing a warning icon next to the file and citing the specific Best Practice rule violated.
InstallShield 2010 User Guide ISP-1600-UG00 1629

Chapter 42: Static Scanning Wizard

Panel Options
Files The list contains all of the files you added to the component and tells you which of them violates Best Practices. You can ignore the wizards recommendations by clicking Finish (or Cancel to exit the wizard altogether), or you can correct the Best Practices conflict by clicking the Remove button. Remove Select a file and click the Remove button to prevent the file from being added to this component.

Static Scanning Wizard


The Static Scanning Wizard enables you to scan the files already added to your project for any dependencies they may require. This wizard scans all .exe, .dll, .ocx, .sys, .com, .drv, .scr, and .cpl files in your project and lets you add any detected dependencies to your installation. The new files added to your project are added to the same feature as the file that depends upon them.

Launching the Static Scanning Wizard

Task

To launch the Static Scanning Wizard: 1. 2.

Open the Dependency Scanners view. Click the Perform Static Scanning button.

How the .NET Scan at Build Component Property Affects Static Scanning
The setting of the .NET Scan at Build component property (Windows Installer projects only) affects how the Static Scanning Wizard scans the files in your installation project in the following ways:
Table 42-19: Settings for Determining How the Static Scanning Wizard Scans Files Setting None Description The Static Scanning Wizard does not scan the .NET portion of the component for dependencies or properties. For example, if your component contains Notepad.exe and a .NET assembly file, the Static Scanning Wizard scans Notepad.exe for dependencies and does not scan the .NET assembly file for dependencies or properties. The Static Scanning Wizard scans the entire componentall files in the component, including .NET assembliesfor properties, but it does not identify dependencies for the .NET portion of the component. For example, if your component contains Notepad.exe and a .NET assembly file, the Static Scanning Wizard scans both files for properties, but it does not identify dependencies for the .NET assembly file.

Properties Only

1630

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Static Scanning Wizard

Table 42-19: Settings for Determining How the Static Scanning Wizard Scans Files (cont.) Setting Dependencies and Properties Description The Static Scanning Wizard scans the entire componentall files in the component, including .NET assembliesfor dependencies and properties. Any dependencies found during the scan are presented in the File Selection panel. If any properties are found for .NET files, the .NET Assembly grid under the components .NET Assembly node under Advanced Settings is populated.

Welcome Panel
The Static Scanning Wizard scans any .exe, .dll, .ocx, .sys, .com, .drv, scr, and .cpl files in your installation project and adds their dependencies to your installation. These dependency files are added to the same feature as the files that require them. Click the Next button to begin scanning your setup files for any dependencies.

Filter Files Panel


The Static Scanning Wizard may list as dependencies certain files that you do not want added to your installation. For example, common system files that are already present on target machines usually do not need to be reinstalled. To avoid having these files added to your installation when you run the scanner, select the Filter files check box on the Filter Files panel. To learn how to customize the list of files that are excluded from scans, see Filtering Files in Dependency Scanners.

Scanning Progress Panel


The wizard is currently scanning all .exe, .dll, .ocx, .sys, .com, .drv, scr, and .cpl files in your setup project for dependencies. These files are not added to your setup until later in the wizard. Click Next to view the results of the scan.

File Selection Panel


The File Selection panel allows you to choose which files you would like added to your setup. All files determined by the scanner to be dependencies are listed on this panel. (Note that the files are displayed in a flat list rather than a nested tree control.)

InstallShield 2010 User Guide

ISP-1600-UG00

1631

Chapter 42: Static Scanning Wizard

Panel Options
File Indicate the files you want added to your setup by selecting the appropriate boxes. Additional information about each of these files is also displayed in this field such as the feature it will be added to, the location of the dependency file, and the file that requires it. The meaning of each type of icon is described in the following table:
Table 42-20: Icon Descriptions Icon Description This icon indicates the file is a system or driver files. They are normally not redistributed as part of a setup, and can potentially cause destination machines to become inoperable. Ensure these files are necessary before including them. This icon indicates a non-system file. Select the check box to the left of the icon to include the file in your setup. This icon indicates a merge module. Select the check box to the left of the icon to add the specified merge module to your project. This is the icon for a .NET assembly in your installation project. This icon indicates a file that the Static Scanner has detected but is already in the project.

Deselect All Select this option to have none of the displayed files added to your setup. You can then manually select the files you would like added. Select All Select this option to have all the displayed files added to your setup. You can then manually deselect the files you would not like to be added.

Scan Results Panel


The Scan Results panel lists all of the dependency files that you selected in the File Selection panel. These files are added to your setup project when you click Next. If you do not want to add these files to your project, click Cancel to exit the wizard.

Completing the Static Scanning Wizard Panel


This is the final panel in the Static Scanning Wizard. All dependencies located by the wizard have been added to your setup project. Click Finish to close the wizard and return to the InstallShield interface.

1632

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: System Search Wizard

System Search Wizard


Project: The System Search Wizard is not available in the following project types:

InstallScript InstallScript Object

The System Search Wizard provides the Windows Installer capability to search for a particular file, folder, Registry Key, .xml file or .ini value on a target system prior to installation. To access the wizard, click System Search in the view list under Behavior and Logic. The System Search Wizard consists of the following panels:

Welcome What do you want to find? How do you want to look for it? What do you want to do with the value?

Welcome Panel
The Welcome panel is the first panel displayed in the System Search Wizard, which allows you to add or modify a system search in your setup project. Click Next to add or modify a system search.

What do you want to find? Panel


Task In this panel, specify the item you want to search for on the target system and the location of that item. To do so: 1.

Choose the appropriate item/search method combination from the drop-down list in the dialog. This indicates what type of item you are searching for and where to conduct that search on the target system.

2.

Click Next to continue.

Note: If you are searching for a registry entry that contains a file path or folder, then the file or folder must exist on your system in order for the search to be successful. Otherwise, the value from the search will not be set to a property. If you are searching for a file or folder, the full path to that item is stored in the property. If you are searching for a registry value, the data of that value will be stored in the property. The same holds true for .ini files. For components, the key path to the component will be in the property. To get the property using script, see MsiGetProperty in the Windows Installer Help Library.

InstallShield 2010 User Guide

ISP-1600-UG00

1633

Chapter 42: System Search Wizard

How Do You Want to Look for It? (Defining Your System Search Method)
Provide information to customize your search in this wizard panel. The information you provide in this panel will vary depending on your search methodology.

How do you want to look for it?


In this panel, you need to provide the following information:
Table 42-21: System Search Wizard Panel Options Option File Name Description Enter the full name and extension of the file or application you want to locate.

Note: Once you have entered a file name, the Details button is enabled. To modify your search to include any particular version, date, size or language, click Details to display the File Details dialog box. Look In The information in this field references where your setup will look for items on the target system. Specify the number of subdirectory levels to search for the file on the target system.

Number of subfolder levels to search

Click Next to continue to the next panel.

How do you want to look for it?


In this panel, you need to provide the following information:
Table 42-22: System Search Wizard Panel Options Option File Name Description Enter the full name and extension of the file or application you want to locate.

Note: Once you have enter a file name, the Details button next to that field is enabled. If you want to modify your search to include any particular version, date, size or language, click the Details button to enhance your search. Look In In this section, you can either specify a full path or choose a path found in a previous search. When your are specifying a full path, the browse button next to the text box is enabled. Click the browse button to display the Browse for Directory dialog box in which you can select an existing directory or create a new one. If you want to specify a path from a previous search, select it from the list.

1634

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: System Search Wizard

Table 42-22: System Search Wizard Panel Options (cont.) Option Number of subfolder levels to search Description In this field, specify the number of subdirectory levels to search for the file on the target system.

Click Next to continue to the next panel.

How do you want to look for it?


In this panel, you need to provide the following information:
Table 42-23: System Search Wizard Panel Options Option Folder Name Description Enter the full name of the folder you want to locate. Once you have entered a folder name, the Details button next to that field is enabled. If you want to modify your search to include any particular version, date, size or language, click the Details button to enhance your search. Look In The information in this field references where your setup will look for items on the target system. In this field, specify the number of subdirectory levels to search for the file on the target system.

Number of subfolder levels to search

Click Next to continue to the next panel.

How do you want to look for it?


In this panel, you need to provide the following information:
Table 42-24: System Search Wizard Panel Options Option Folder Name Description Enter the full name and extension of the folder you want to locate.

Note: Once you have entered a folder name, the Details button next to that field is enabled. If you want to modify your search to include any particular version, date, size or language, click the Details button to enhance your search. Look In: In this section, you can either specify a full path or choose a path found in a previous search. When specifying a full path, the browse button next to the edit field is enabled. Clicking the browse button launches the "Browse for Directory" dialog, in which you can select an existing directory or create a new one. When specifying a path from a previous search, select from the drop-down list.

InstallShield 2010 User Guide

ISP-1600-UG00

1635

Chapter 42: System Search Wizard

Table 42-24: System Search Wizard Panel Options (cont.) Option Number of subfolder levels to search Description Specify the number of subdirectory levels to search for the file on the target system.

Click Next to continue to the next panel.

How do you want to look for it?


In this panel, you need to provide the following information:

Registry RootChoose the appropriate Registry root on the target system to locate the search item. For example, the registry key for Adobe Acrobat on a system would be similar to the following: HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat. In this case, you would select HKEY_LOCAL_MACHINE from the Registry Root menu. Registry KeyType in the exact Registry Key associated with the item you are locating. If wanted to locate HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat on the target system, you would type SOFTWARE\Adobe\Acrobat in this field.

Note: Ensure that the syntax is correct by copying the correct key name from the Windows Registry Editor.

Registry ValueThis field allows you to search for a specific registry value. If you want to add this to your search, enter the Registry value exactly as it appears in the Registry.

Note: If this field contains no data, the system search will look for the registry keys default value.

How do you want to look for it?


In this panel, you need to provide the following information:
Table 42-25: System Search Wizard Panel Options Option Field INI File Name INI Section Name Description Description Specify the INI file name as it should appear on the target system. Obtain this information from the INI file. If you need to add a section to an INI file, refer to INI File Changes view. Enter the INI file key that can be found within the section. This option will search for data in the field column of an INI files IniLocator Table if it is null or 0.

INI Key Name Read entire line checkbox

1636

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: System Search Wizard

Specify the Data That You wish to Find in the XML File
This wizard panel is where you specify which .xml element you want to search for in an .xml file on the target system. The settings in this panel allow you to search by attribute value, contents, or existence of the element you specify.

How do you want to look for it?


Enter the component ID of the component whose key path is to be used for the search. The component ID must be enclosed in curly braces {}.

What do you want to do with the value?


In this panel, you can choose from a list of properties to which you will set an existing value or enter a new property. This stores your search value in a property. To store your value in a non-predefined, type the name of the property directly in the property edit field. The property must be a public property and therefore have an identifier that consists of uppercase letters.

Note: You can add a new property to your setup project via the Property Manager. Any new properties you create must be public properties and have an identifier that consists of all uppercase letters. Save changes to your project after you add a new property, so you can access that new property in your project. For example, the new property is listed in the System Search Wizard.

You also have the option to use the property in an Install Condition by choosing the option in the Additional Options section of the panel. Click Finish when you are done making your selections. InstallShield automatically launches the Condition Builder if you have chosen to use the property in an Install Condition.

What do you want to do with the value?


In this panel, you can choose from a list of properties to which you can set an existing value. This stores your search value in a property.

Store the value in this property


Select a property from the drop-down list. To store your value in a non-predefined, type the name of the property directly in the property edit field. The property must be a public property and therefore have an identifier that consists of uppercase letters.

Note: You can add a new property to your project via the Property Manager. Any new properties you create must be public properties and have an identifier that consists of all uppercase letters. Save changes to your project after you add a new property, so you can access that new property in your project. For example, the new property is listed in the System Search Wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1637

Chapter 42: Transform Wizard

Additional Options
Select from the options listed below.
Table 42-26: System Search Wizard Panel Options Option Just store the value in the property Use the property in an Install Condition Use the property as the destination for a component Description Stores the value in the property you select in this dialog.

This will trigger the condition builder after you click Finish.

Selecting this option enables the component list. You can then choose a component with which to associate the property.

Note: This option is available only when you are searching for a folder path, a registry entry that contains a folder, an INI file that contains a folder, or a component whose key path is a folder.

Transform Wizard
The Transform Wizard walks you through the steps of creating and applying transforms for your installation projects. Transforms represent the difference between two similar installation projects. When you apply a transform to one project, you are updating or changing it to incorporate the changes between the two projects.

Task

To launch the Transform Wizard:

On the Tools menu, click Create/Apply Transform. It is not necessary to have a project open in InstallShield. The following panels are associated with the Transform Wizard:

Welcome Specify Files Validation Settings Suppress Error Conditions Specify Output File Name Summary Completing the Transform Wizard

1638

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Transform Wizard

Welcome Panel
The Transform Wizard walks you through the steps of creating and applying transforms to your setup project. A transform represents the differences between two setup projects. For example, network administrators may want to distribute different configurations of a product to the various departments in the company. As a result, you can create a transform for every configuration of the product, then apply the appropriate transform as needed.

Panel Options
Create a transform Select this option to compare two similar setup projects and create a transform that represents the differences between them. This transform can then be applied at run time or before the final setup is built. Apply a transform Select this option to apply a transform to an existing Windows Installer setup. This may be useful for network administrators who will be customizing a product for everyone.

Specify Files Panel


If you are creating a transform, select the two MSI files that you would like to compare. If you are applying a transform, select the MSI file that you would like the transform applied to and the transform that will be applied.

Panel Options
Base package This field will contains the path to the project that is currently open. If you want to change this value, enter the path to a different project or click the Browse button to navigate to one. If you are applying a transform, this field should contain the path to the file that you would like the transform applied to. Target Package This option is only available if you are creating a transform. Enter the path to the MSI file that you would like to compare to your base file, or click the Browse button to navigate to this file. The differences between these two files will be compared and a transform will be created that will update the base package to the target package. Transform This option is only available if you chose to apply a transform. Enter the path to the transform (*.mst) file that you would like to apply, or click the Browse button to navigate to that file.

Validation Settings Panel


The Validation Settings panel is displayed if you selected the Create a transform option on the Welcome panel of this wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1639

Chapter 42: Transform Wizard

The Validation Settings panel prompts you for information on how you would like to validate your transform. These validation items must be met in order for the transform to execute.

Panel Options
Do not perform validation prior to applying the transform to the base package Select this option if you do not want to perform any validation prior to applying the transform. Validate the following prior to applying the transform to the base package Select this option to check for certain conditions before the transform is applied. If these conditions are not met, the transform will not be applied.
Table 42-27: Conditions for Applying a Transform to a Base Package Option Default language must match base package Product must match base package Description Select this option if the language of the transform should match the language of the package to which the transform is being applied. Select this option if you want your transform to be applied only to .msi files that have the same product code as the base package. Select this option if the platform for which the base package is intended should match the target platform of the transform. Select this option if you want the transform to be applied only if the upgrade code of the .msi file matches that of the transform. Select the version type that you would like to validate against. You can choose between a combination of major version, minor version, or upgrade version. You can also choose to not validate against the product version. Specify how you would like to validate the product version. The choices are outlined below:

Platform must match base package

Upgrade Code must match base package Product Version

Version Relationship

NoneDo not validate against the product version. Applied Version < Base VersionApply the transform only if the product version of the .msi file to which the transform is being applied is less than the version number of the base .msi file. Applied Version <= Base VersionApply the transform if the product version of the .msi file to which the transform is being applied is less than or equal to the version number of the base .msi file. Applied Version = Base VersionApply the transform only if the product version of the .msi file to which the transform is being applied is equal to the version number of the base .msi file. Applied Version >= Base VersionApply the transform only if the product version of the .msi file to which the transform is being applied is greater than or equal to the version number of the base .msi file. Applied Version > Base VersionApply the transform only if the product version of the .msi file to which the transform is being applied is greater than the version number of the base .msi file.

1640

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Transform Wizard

Suppress Error Conditions Panel


As your transform is being applied to the target MSI file, certain error codes may be generated. This panel gives you the option of suppressing those error codes so the end user will not see them.

Panel Options
Do not suppress error conditions when the transform is applied to the base package Select this option if you do not want to hide the errors reported during the application of the transform. Suppress the following error conditions when the transform is applied to the base package Select this option to hide certain error codes from your end users. You can choose to suppress the following errors:
Table 42-28: Suppressible Error Conditions Error Adding an existing row Description If your transform tries to add a row to the MSI database that already exists, an error is generated. Select this option to suppress that error. Select this option to suppress any errors that occur as a result of your transform trying to delete a row from the MSI database that does not exist. Select this option to suppress errors caused by your transform trying to add a table to the MSI database that already exists. Select this option to suppress any errors that occur as a result of your transform trying to delete a table from the MSI database that does not exist. If your transform tries to update a row to the MSI database that does not exist, an error will be generated. Select this option to suppress that error. Select this option to suppress error codes caused by code pages in the transform not matching those in the target database.

Deleting a row that does not exist

Adding an existing table

Deleting a table that does not exist

Updating a row that does not exist

Transform and database code pages do not match

Specify Output File Name Panel


This panel prompts you for the location and name of the transform (*.mst) file that will be created as a result of the comparison of your two MSI files.

Panel Options
Folder location and file name If you are creating a transform, enter the path and file name of the transform file that you would like to create. If you are applying a transform, enter the path and file name of the new MSI package that you are creating as a result of applying the transform.

InstallShield 2010 User Guide

ISP-1600-UG00

1641

Chapter 42: Upgrade Validation Wizard

Summary Panel
The Summary panel displays all of the settings you selected throughout the Transform Wizard. If you need to change any of these settings, click the Back button until you reach the appropriate panel.

Completing the Transform Wizard Panel


The last panel of the Transform Wizard notifies you of the wizards success. When you click the Finish button, you will be taken back to the IDE. For more information on transforms, see Creating Transforms. This page provides an overview of transforms and links to pages that discuss how to create a transform and the different ways that transforms can be applied.

Tip: For more information about the errors that can occur when a transform is being applied to an .msi database, see the MsiDatabaseApplyTransform topic in the Windows Installer Help Library.

Upgrade Validation Wizard


The Upgrade Validation Wizard performs a set of tests to determine if your installation will properly upgrade older versions of your installation.

Project: This wizard does not apply to the following project types:

InstallScript InstallScript Object

Task

To launch the Upgrade Validation Wizard:

On the Build menu, point to Validate, and then click Upgrade Validation Wizard. The following panels are associated with this wizard:

Welcome Settings Summary

Welcome Panel
The Upgrade Validation Wizard performs a set of tests to determine if your setup will properly upgrade older versions of your setup. Click Next to continue.

1642

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Upgrade Validation Wizard

Settings Panel
Specify the following basic configurations for the upgrade validation:
Table 42-29: Settings Panel Configuration Specify the latest version of your setup Description Click the browse button to locate the file.

Tip: Think of the latest setup as the new image or version that you want to place on the target machine, and think of the previous setup as the existing image or version on the target machine before an upgrade. Specify any previous versions of your setup you want to validate against Click Add to append to the existing list. You can add *.msi or *.exe Windows Installer Setup files. You can also specify multiple previous versions of your setup. To remove an item from the previous versions list, you must first select it in the list control and then click Remove.

When you click Next, validation begins.

Summary Panel
The Summary panel allows you to view the results from validation. You can also view the results externally by opening the corresponding log file stored in <ISProjectDataFolder>\Upgrade Validation Log\Results.log.

Note: You can run validation again with different settings by clicking the Back button and changing your settings.

The following table describes the icons next to each log file entry.
Table 42-30: Icons Button Description This is the information notice icon. This is the error notice icon. This is the warning notice icon.

InstallShield 2010 User Guide

ISP-1600-UG00

1643

Chapter 42: Visual Basic Wizard

Visual Basic Wizard


The Visual Basic Wizard allows you to import Visual Basic projects into your InstallShield setup. The wizard scans your project to determine any file dependencies and displays the results of the scan, showing the files that can be added to your setup. You then have the option of adding that Visual Basic project and its dependencies to your setup.

Note: The wizard requires that Visual Basic is installed on your system. If you do not have it installed, and would like to import a Visual Basic project, you need to install Visual Basic before you launch the wizard.

Task

To launch the Visual Basic Wizard, do one of the following:

If you have a project open in InstallShield:

On the Project menu, click Import Visual Basic Project. In the Dependency Scanners view, click Import Visual Basic Project.

If you do not have a project open in InstallShield: On the File menu, click New. The New Project dialog box opens. Select the Visual Basic 6.0 Wizard project type.

Welcome Panel
The Visual Basic Wizard allows you to import Visual Basic projects into your setup project. The wizard scans your Visual Basic project, detects any dependencies, and lets you determine which files you want added to your setup. Click Next to begin using the wizard.

Specify Setup Project File Panel


If you do not have a setup project open when you launch the Visual Basic Wizard, this panel prompts you to create a new project or specify an existing project.

Panel Options
Create a new project Type the file name for a new setup project. The new project will be located in your default setup project location.

1644

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Visual Basic Wizard

Task

To change this location: 1. 2. 3. 4.

Select Options from the Tools menu. Click the File Locations tab. Type a new path in the Project Location field, or use the browse button to navigate to a new project location. Click OK.

Open a recent project Click the down arrow on the right side of this field to view a drop-down list of recently opened .ism files. Select a file from this list. Open an existing project Type the complete path, or click the Browse button to navigate to an existing .ism file.

Specify Visual Basic Project File Panel


The Specify Visual Basic Project File panel enables you to specify the Visual Basic project (.vbp or .vbg) that you would like to import into your project.
Table 42-31: Specify Visual Basic Project File Panel Settings Setting Visual Basic Project Description There are three different ways to specify the project that you want to import:


Rebuild project before scanning

Select a recently used project from the list by clicking the arrow next to the list. This list shows recently used Visual Basic projectsnot necessarily the projects recently used by the Visual Basic Wizard. Enter the fully qualified path to the project that you want to import. Click the browse button and navigate to the project.

Select this option if you want to rebuild your project before the wizard scans it for dependencies. It is a good practice to rebuild the project just in case you have made changes since the last time that you rebuilt it. The Visual Basic Wizard may list as dependencies certain files that you do not want added to your installation. For example, common system files that are already present on target machines usually do not need to be reinstalled. To avoid having these files added to your installation when you run the scanner, select the Filter files check box. To learn how to customize the list of files that are excluded from scans, see Filtering Files in Dependency Scanners.

Filter files

InstallShield 2010 User Guide

ISP-1600-UG00

1645

Chapter 42: Visual Basic Wizard

Table 42-31: Specify Visual Basic Project File Panel Settings (cont.) Setting Add files from Microsofts Package and Deployment Wizard Description Select this check box to add files from a specified .dep file. Enter the fully qualified path to the .dep file or use the browse button to navigate to the .dep file.

Note: The Visual Basic Wizard does not offer the option to compare the files detected by the scan to only the files in selected installation features.

Location of Visual Basic Panel


If the wizard cannot detect Visual Basic on your systembut it is installedyou can manually locate the Visual Basic executable file.

Panel Options
Visual Basic executable Enter the full path to the Visual Basic executable, or click the Browse button to navigate to the file.

Note: You cannot import Visual Basic projects if Visual Basic is not installed on your system. If you do not have Visual Basic installed, exit the wizard and run the Visual Basic setup. After installed Visual Basic on your system, you can reopen the wizard and import your Visual Basic project into your setup project.

Scanning Progress Panel


This panel displays the progress of the wizard. When the wizard has completed its action, click Next to display the Scanned Dependencies Selection panel.

Scanned Dependencies Panel


This panel lists all of the dependencies found by the Visual Basic Wizard. The list contains the file name, the path, and the dependency relationship. You can select the files that you want to add to your setup project. (Note that the files are displayed in a flat list rather than a nested tree control.)

Panel Options
File To add dependency files to your setup, select the check boxes in front of the appropriate files. If you did not deselect Filter Files in the Specify Visual Basic Project File panel, you should be able to safely include all files listed. See Filtering Files in Dependency Scanners for more information.

1646

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET

Deselect All Click this button to clear the selection of all displayed files. You can manually select the files you want added to your setup. Select All Click this button to select all of the displayed files. You can manually deselect the files you do not want added to your setup. Click Next to view the Scan Results panel.

Scan Results Panel


This panel displays a summary of the scan results. It lists all the files that will be added to your setup, as well as any components that will be created. Click Next to add these files to your setup project.

Completing the Visual Basic Wizard Panel


This panel confirms that your Visual Basic project was successfully added to your setup project. Click Finish to return to the IDE.

Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET
The Visual Studio .NET Wizard for Visual Basic .NET, C# .NET, and Visual C++ .NET creates a new InstallShield installation project and adds it to a Microsoft Visual Studio solution.

Note: The Visual Studio .NET Wizard is available only if Microsoft Visual Studio is installed on your system.

When you are creating the InstallShield installation project, the Visual Studio .NET Wizard does the following:

Creates a new InstallShield project (with the file name specified on the New Project dialog box) and adds it to the solution (.sln file). If you have the Scan at Build option set to Dependencies and Properties (on the .NET tab of the Options dialog box), the wizard adds all dependencies to your project at build time. Adds the primary outputs from every project in the solution to the InstallShield project. Updates the release settings to deploy the appropriate version of the .NET Framework via download.

To launch the wizard, select the appropriate project type in the New Project dialog box. The following panels are associated with this wizard:

Welcome Panel

InstallShield 2010 User Guide

ISP-1600-UG00

1647

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Solution Panel

Welcome Panel
The Visual Studio .NET Wizard enables you to add an InstallShield installation project to a Microsoft Visual Studio .NET solution.

Note: The Visual Studio .NET Wizard is available only if Microsoft Visual Studio is installed on your system.

Click Next to select a solution.

Solution Panel
In this panel, type the path or browse to the Visual Studio solution to which you want to add the InstallShield installation project. Click Finish to create a new InstallShield project and add it to the selected solution.

Windows Mobile Wizard/Smart Device Setup Wizard


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

When you launch this wizard from the Mobile Devices view, it is called the Windows Mobile Wizard. When you launch this wizard by creating a new Smart Device project, it is called the Smart Device Setup Wizard.

Using the Windows Mobile Wizard


Use the Windows Mobile Wizard to create an installation package for Windows Mobilepowered devices such as smartphones and PDAs. The package installs the necessary Windows Mobile .cab files to the end users desktop computer first, and then launches the Application Manager or uses either Microsoft Windows Mobile Device Center (for Windows Vista) or Microsoft ActiveSync (for Windows XP) to copy the correct files onto the Windows Mobilepowered device. It can also optionally register an icon file on the desktop computer with Mobile Device Center or ActiveSync, so that the icon is displayed within the Application Manager window.

1648

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Note: ActiveSync 3.x or later or Windows Mobile Device Center must be installed on the desktop computer in order to run a desktop-to-device installation. Active Sync 4.x or Windows Mobile Device Center is required for Windows Mobile 5.x and later devices.

Using the Smart Device Setup Wizard


Use the Smart Device Setup Wizard to create a dedicated installation for a smart device application. This installation type should be used only for straight-to-device installations that do not use ActiveSync, Windows Mobile Device Center, or any other desktop component.

Note: You can also use the Smart Device Setup Wizard with purely native code if you are targeting a storage card.

Wizard Panels
The following panels are associated with the Windows Mobile Wizard and the Smart Device Setup Wizard:

Welcome Application Information Desktop Settings (Windows Mobile Wizard only) Add CABs (available only if Existing Mobile Device Cabinets is selected in the Project Type list of the Application Information panel in the Windows Mobile Wizard) Destination Folder Project Outputs (available only if either wizard is launched from Microsoft Visual Studio and the solution contains one or more Smart Device Application projects) Device Files (called Additional Files if the Project Outputs panel is displayed) Shortcuts Setup DLLs File Associations (available only if an .exe file is selected to be installed) Registry Information Desktop Icon Information (Windows Mobile Wizard only) XML Files Sign the cab files .NET Compact Framework Features (Windows Mobile Wizard only) Summary

InstallShield 2010 User Guide

ISP-1600-UG00

1649

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Welcome Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Welcome panel provides a brief introduction to the wizard. The wizard helps you build and customize installations for Windows Mobile devices.

Note: When you launch this wizard from the Mobile Devices view, it is called the Windows Mobile Wizard. When you launch this wizard by creating a new Smart Device project, it is called the Smart Device Setup Wizard.

Click Next to begin using the wizard.

Application Information Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Application Information panel is used to specify information needed to install the application onto the Windows Mobile or smart device.
Table 42-32: Application Information Panel Settings Setting Project Type Description Select the type of application that you want to support in your project.

Note: You cannot change this option once you complete the wizard. You will have to create a new application via the wizard to add to your project. Application Name Company Name Application Description Provide the name of your application for Windows Mobile devices or smart devices. Provide the name of your company or the company that produced the application. Provide a brief description of your application.

Caution: Because of the algorithm used to name .cab files in the installation, using very long application names and/or company names can cause problems with the installation, especially if you are targeting numerous platforms.
1650 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Desktop Settings Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Select the location to which you want to copy the mobile devices application files.
Table 42-33: Desktop Settings Panel Settings Setting Target Desktop Directory Description Select a target directory from this list or click the folder button to launch the Browse for Directory dialog box. Select this check box to delete the Windows Mobile media files from the desktop when the desktop installation is uninstalled.

Delete device media from desktop during desktop setup uninstall

Add CABs Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Add CABs panel enables you to add cabinet (.cab) files to your Windows Mobile installation. You must add at least one file in order to continue with the wizard.

Note: If you would like to add more than one .cab file to a single Windows Mobile installation, see Special Considerations for Adding Multiple .cab Files. This panel is displayed only if you select Existing Mobile Device Cabinets in the Project Type list on the Application Information panel of the Windows Mobile Wizard. It is not displayed if you are using the Smart Device Setup Wizard.

Adding Existing .cab Files for a Windows Mobile Device

Task

To add a .cab file: 1. 2.

Click Add or right-click anywhere in the .cab box and select Add. The Open dialog box opens. Browse to the file you want and click Open. The file is added to the list of .cab files.

InstallShield 2010 User Guide

ISP-1600-UG00

1651

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Removing Existing .cab Files for a Windows Mobile Device

Task

To remove a .cab file, do one of the following:

Select the file and click Remove. Right-click the file and select Remove.

Destination Folder Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

In the Destination Folder panel, you specify a default destination folder on the Windows Mobile or smart device. This is usually the folder in which your main executable file resides. Specifying a destination directory gives end users control over the entire directory structure under the default destination folder and enables them to choose to install your application to a storage card, thus conserving device resources.

Windows Logo Guideline: The recommended location for the destination folder is the following:
Program Files Folder\Company Name\Application Name

where Company Name and Application Name are the values set on the Application Information panel. This folder is created and selected by default for new Windows Mobile installations.

Specifying Folders

Task

To specify a destination folder:

Select the folder that you want to serve as the destination and then click Next. The folder that is highlighted when you click Next becomes the destination folder for your application.

Adding Folders

Task

To add a new folder to be used as the default destination: 1. 2.

Select the folder under which you want to add a new folder. Click New. A new folder is created directly beneath the existing folder.

1652

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

3.

Type a name for the new folder.

Note: You can also add a new folder by right-clicking an existing folder and selecting New Folder.

Renaming Folders

Task

To rename a folder: 1. 2.

Select the folder and then click Rename. Type the new name.

Note: You can also rename a folder by right-clicking it and selecting Rename.

Removing Folders

Task

To remove a folder, do one of the following:

Select the folder and click Delete. Right-click the folder and click Delete.

Some folders are predefined by the Windows Mobile operating system and cannot be renamed or removed. Only user-defined folders can be renamed or removed.

Project Outputs Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Project Outputs panel enables you to include outputs from your Microsoft Visual Studio solution in your installation project.

InstallShield 2010 User Guide

ISP-1600-UG00

1653

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Note: This panel is displayed only if the Windows Mobile Wizard or Smart Device Setup Wizard is launched in Visual Studio and the solution contains one or more Smart Device Application projects. Table 42-34: Project Outputs Panel Settings Setting Project Outputs Description Use this box to specify which project output groups you want to associate with your smart device installation. In most cases, you would select the Primary output group. For each output group, click Properties to display the property sheet for the selected group. The property sheet lets you to set various attributes for the installation, including whether the application should be installed to the Global Assembly Cache (GAC).

Device Files Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

Note: This panel is called Additional Files if the Project Outputs panel is displayed. Table 42-35: Device Files Panel Settings Setting Files Description The Files box is where you add application files to your Windows Mobile installation or your Smart Device project. When you add a file to this box, you also need to specify its properties, such as which platforms and processors support it. You must add at least one file in order to continue with the wizard.

Note: Each file added should be at least 1 byte in size. Compress CAB If you want to InstallShield to compress the .cab files that it creates for the Windows Mobile powered devices at build time, select this check box.

1654

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Table 42-35: Device Files Panel Settings (cont.) Setting Suppress Display Warning Description Some legacy mobile device platforms include support for portrait mode but not landscape mode. Therefore, in some circumstances, the installation for a mobile device displays the following warning:
The program you have installed may not display correctly because it was designed for a previous version of Windows Mobile software.

To prevent this warning from ever displaying, select this check box. For more information, see Suppressing the Display Warning for Legacy Mobile Device Applications.

Adding Files

Task

To add a file: 1. 2. 3. 4. 5.

Click Add or right-click in the Files box and click Add. The Open dialog box opens. Browse to the file that you want to add and click Open. The Path Variable Recommendation dialog box opens. Indicate whether you want to use a path variable or an absolute path. Click OK to close the Path Variable Recommendation dialog box. The Device Files dialog box opens. Specify the properties for the file you are adding and then click OK.

Note: To change the properties of a file after you have added it, select the file and then click Properties. The Device Files dialog box opens.

Note: Microsoft ActiveSync has a 4-MB limit on file transfers. If your application files exceed this limit, you may need to break your installation into smaller subcomponents in order to get it to transfer and install correctly.

Modifying File Properties

Task

To modify the properties of a file, do one of the following:

In the Files box, select the file and click Properties. Right-click the file and click Properties.

The Device Files dialog box opens, enabling you to change any of the settings for the file.

InstallShield 2010 User Guide

ISP-1600-UG00

1655

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Removing Files

Task

To remove a file from the Files box, do one of the following:

In the Files box, select the file and click Remove. Right-click the file and click Remove.

Shortcuts Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Shortcuts panel lets you specify shortcuts to your application files. Although you are not required to create any shortcuts during installation, it is recommended that you create a shortcut to your main application executable on the Start menu. This will make it easier for the end user to locate and start the application.

Adding Shortcuts

Task

To add a shortcut: 1. 2.

Click Add or right-click in the Shortcuts box and select Add. The Shortcut Properties dialog box opens. Specify the settings for the shortcut that you are adding and then click OK.

Modifying Shortcut Properties

Task

To modify the properties of a shortcut, do one of the following:

In the Shortcuts box, select the shortcut and click Properties. Right-click the file and click Properties.

The Shortcut Properties dialog box opens, enabling you to change any of the settings for the shortcut.

1656

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Removing Shortcuts

Task

To remove a shortcut from the Shortcuts box, do one of the following:

In the Shortcuts box, select the shortcut and click Remove. Right-click the shortcut and click Remove.

Setup DLLs Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Setup DLLs panel is where you to add a custom ISV setup .dll file to your installation. An ISV setup .dll file lets you perform custom actions during installation to and uninstallation from a Windows Mobile or smart device. For more information about how to write these setup .dll files, refer to the Windows Mobile SDK.

Adding .dll Files

Task

To add a setup .dll file: 1. 2. 3.

Click Add or right-click in the Setup DLLs box and select Add. The Open dialog box opens. Browse to the file that you want to add and click Open. The Setup DLL Properties dialog box opens. Specify the properties for the file you are adding and then click OK.

Modifying .dll File Properties

Task

To modify the properties of a .dll file, do one of the following:

In the Files box, select the file and click Properties. Right-click the file and click Properties.

The Setup DLL Properties dialog box opens, enabling you to change any of the settings for the file.

Note: The Properties button is available for Windows Mobile devices only.

InstallShield 2010 User Guide

ISP-1600-UG00

1657

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Removing .dll Files

Task

To remove a file from the Setup DLLs box, do one of the following:

In the Setup DLLs box, select the file and click Remove. Right-click the file and click Remove.

File Associations Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

A file association is actually nothing more than a series of registry entries. When the end user doubletaps a file, the Windows Mobile operating system looks in the registry to determine which application if anyshould be used to open it, based on the file extension. The operating system also looks in the registry to determine what icon to display for the file when it is displayed in the Windows Explorer or Open dialog boxes, for example. The File Associations panel lets you easily create the registry entries needed to associate your application executable with a file extension. This enables your application to be launched whenever an end user opens a file with the associated extension. For example, if you double-tap a file with a .pwd file extension, Pocket Word is launched to view the document. This is because Pocket Word has been associated with the .pwd file extension.

Note: Only executable files with an .exe file extension can be associated with a document type. This panel is displayed only if you have at least one executable file set to be installed into the folder specified on the Destination Folder panel.

When you add a file association to your project, a series of registry entries is automatically created on the Registry Information panel under HKEY_CLASSES_ROOT. You could make all the necessary registry entries yourself, but it is much easier to create them using this panel.

Caution: Windows CE Version 2.x has a limit on the amount of registry data that can be created in a single installation. If you experience problems with registry entries being created incorrectly, you may need to decrease the number of file associations and other registry entries. You can also use a setup .dll file with your installation to create the registry entries.

1658

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Adding Associations

Task

To add a file association to the File Associations box: 1. 2.

Click Add or right-click in the File Associations box and click Add. The File Association Properties dialog box opens. Specify the properties for the file association that you are adding and then click OK.

Modifying Associations

Task

To modify the properties of a file association, do one of the following:

In the File associations box, select the file association and click Properties. Right-click the file association and click Properties.

Removing Associations

Task

To remove a file association from the File associations box, do one of the following:

In the File associations box, select the file association and click Remove. Right-click the file association and click Remove.

Registry Information Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The Registry Information panel has been designed to closely resemble the widely recognized Windows Registry Editor (Regedit.exe). This panel simplifies the process of creating registry keys and setting registry values during installation onto a Windows Mobilepowered device. Since this panel lacks buttons, all configuration is accomplished using context menus available by right-clicking various items, as detailed below.

Caution: Windows CE Version 2.x has a limit on the amount of registry data that can be created in a single installation. If you experience problems with registry entries being created incorrectly, you may need to decrease the number of file associations and other registry entries. You can also use a setup .dll file with your installation to create the registry entries.

InstallShield 2010 User Guide

ISP-1600-UG00

1659

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Note: Some registry keys and values are created by the Windows Mobile installation mechanism, or by any file associations you have added to your project. Since these keys and values are created automatically, you will not be able to delete, rename, or modify them in this panel.

Working with Registry Keys


As with the standard Windows registry editor, the explorer window on the left side of this panel displays the hierarchy of keys in the Windows Mobile devices registry. Registry keys can be added or removed by right-clicking and selecting the appropriate item on the context menu. Adding Keys

Task

To add a registry key:

Right-click an existing key, point to New, and click Key. A new key is added under the selected key, and you are prompted for the key name. Removing Keys

Task

To remove a registry key:

Right-click the key that you would like to remove and click Delete. The selected key, all of its values, and all of its subkeys are removed. Renaming Keys

Task

To rename a key:

Right-click the key and select Rename. Type the new name.

Working With Registry Values


The box on the right side of this panel displays information about the values that will be created under the currently selected key. It is divided into two columnsone for the name of the value, and the other for the data that the registry value contains. Adding Values

Task

To add a value under a registry key, do one of the following:

Right-click the appropriate key, point to New, and click String Value, Binary Value, or DWORD Value.

1660

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Right-click an empty area in the box on the right, point to New, and click the appropriate type of value.

Depending on which type of value you select, the Edit String Value dialog box, the Edit Binary Value dialog box, or the Edit DWORD Value dialog box opens. Removing Values

Task

To remove a value:

Right-click the value and click Delete. Renaming Values

Task

To rename an existing value:

Right-click the value and select Rename. Modifying Values

Task

To modify a value:

Right-click the value and select Modify. Depending on what type the value is, the Edit String Value dialog box, the Edit Binary Value dialog box, or the Edit DWORD Value dialog box opens.

Desktop Icon Information Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Desktop Icon Information panel enables you to specify an icon to be associated with your application. This icon will be installed on the desktop computer so that it can be displayed in the Windows Mobile Application Manager and Mobile Devices Explorer windows.

Note: Because the icon must be installed onto the desktop computer before it can be displayed in the Windows Mobile Application Manager and Mobile Devices Explorer windows, this option is useful for desktop-to-device installations only.

InstallShield 2010 User Guide

ISP-1600-UG00

1661

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Specifying the Application Icon


You can either click the Select Icon and then select a custom icon using the Select Icon dialog box, or you can use the default icon provided. If the icon you select resides within a .dll or executable file, it will be extracted and saved as an .ico file in the projects output folder to save space. When the application is installed, the icon you have selected is displayed next to the application name in the Windows Mobile Application Manager window.

Associating a File with the Application Icon


In the Device file list, you can specify a file on the Windows Mobile device to be associated with the icon. When the file is viewed in the Mobile Devices Explorer on the desktop computer, the icon will be displayed.

Note: Only files with an .exe extension can be associated with the icon.

XML Files Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

In the XML Files panel, you have the option to add acceptable configuration XML to the .cab file. The XML must follow the appropriate WAP provisioning format for the Smartphone development environment. The /prexml and /postxml flags are useful if the metabase needs to be updated during the installation of an application.

Panel Settings
Specify Pre XML and Post XML files To add XML to the .cab file, select this check box. Pre XML file Click the folder button to specify the appropriate file. The file that you select is placed before the translated instructions in the .inf file. Post XML file Click the folder button to specify the appropriate file. The file that you select is placed after the translated instructions in the .inf file.

1662

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

No Uninstall Select this check box only if you are performing an upgrade of an existing installation. Never select this check box if you are not upgrading.

Sign the .cab Files Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

To provide a secure method of packaging and delivering applications, mobile devices support .cab files signed with Authenticode certificates. Certificates are attached to signed .cab files as a certificate chain when the file goes through the signing process. To sign a .cab file for use on a device, you must have an Authenticode certificate that is already installed on, or will be distributed to, the device on which the .cab file is to be installed.

Note: The options in the Sign the cab files panel are not mandatory but recommended for security. Table 42-36: Settings on the Sign the cab files Panel Setting Sign CAB Digital Certificate Files (CER, SPC, or PFX) Description To sign a .cab file, select this check box. Specify the location of your digital certificate file (.cer, .spc, or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file. Corresponding Private Key File (PVK) If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you would like to pass the password for the certificate file to ISCmdBld.exe to digitally sign your application while building the release from the command line, type the password in this box. InstallShield encrypts this password and stores it in your project (.ism) file. If you do not specify a password in this box but you are digitally signing the release while building it from the command line, you will need to manually enter the password when you are prompted each time that you build the release from the command line.

Certificate Password

InstallShield 2010 User Guide

ISP-1600-UG00

1663

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Table 42-36: Settings on the Sign the cab files Panel (cont.) Setting Generate setup launcher (Autorun.exe) Description Select the Generate setup launcher (Autorun.exe) check box to include
Autorun.exe, which provides you with the ability to run installations from storage cards. The Autorun.exe file that InstallShield generates is currently

limited to running on Pocket PC devices only.

Note: The Generate setup launcher (Autorun.exe) check box is available in the Smart Device Setup Wizard only.

.NET Compact Framework Panel


Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

The .NET Compact Framework panel enables you to specify .NET Compact Framework information, SQL information, or both types of information for your mobile device installation.

CE .NET and SQL support


Select the .NET Compact Framework and SQL redistributables that you want to include in your installation.

Generate Setup Launcher (Autorun.exe)

Note: This Generate Setup Launcher (Autorun.exe) option is available in the Smart Device Setup Wizard only.

Select this option to include Autorun.exe, which provides you with the ability to run installations from storage cards. The Autorun.exe file that InstallShield generates is currently limited to running on Pocket PC devices only.

Advanced
You can include the .NET Compact Framework and SQL redistributables for only specific processor and platform combinations. Click this button to launch the Target Devices dialog box, which lists the processor and platform combinations. Select the combinations that you want your installation to support and click OK.

1664

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

Features Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Note: The Features panel is displayed only if you are using the Windows Mobile Wizard.

In the Features panel, select the feature or features to which your Windows Mobile installation belongs.

Summary Panel
Project: This information applies to the following project types:

Basic MSI InstallScript MSI Smart Device

In the Summary panel, you can review the settings for your Windows Mobile or smart device installation before you add it to your project. If you need to change any of the settings, click Back until you reach the appropriate panel, and then make the necessary changes. When you are done, click Finish. If you are creating a desktop-to-device installation, a component is created for your mobile device installation, and it is added to all of the features that you selected to associate with the mobile device application in the Features panel. The appropriate installation files are automatically generated the next time that you build your InstallShield project.

InstallShield 2010 User Guide

ISP-1600-UG00

1665

Chapter 42: Windows Mobile Wizard/Smart Device Setup Wizard

1666

ISP-1600-UG00

InstallShield 2010 User Guide

43
View Reference
The InstallShield installation development environment (IDE) is organized into views that incorporate various areas of functionality. The View Reference section describes each of those views in the InstallShield interface.

Installation Information View


Project: The Installation Information view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

The Installation Information view contains links to other views that you can use to specify general properties about your installation.

General Information

Project: The General Information view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object


ISP-1600-UG00 1667

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Merge Module MSI Database MSM Database Transform

The General Information view contains basic information about your project, your company, and your product. Some of the information that you enter in this view is for your reference only, some (in Basic MSI, InstallScript MSI, and Merge Module projects) is necessary to comply with Windows logo requirements, and the rest is for setting basic project settings.

Update Notifications

Project: The Update Notifications view is available in the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

In the Update Notifications view, you can add FLEXnet Connect to your installation project. FLEXnet Connect enables you to provide automatic application updates to your end users.

Trialware

Project: The Trialware view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

In the Trialware view, you can protect your product from piracy by including a license with it. The license enables you to create a fully functional trial version of your product that expires after a predetermined number of days or uses. No changes to your products source code are required.

Edition: Trialware functionality is available in the Premier edition of InstallShield.

General Information View


Project: The General Information view is available in the following project types:


1668

Basic MSI InstallScript InstallScript MSI


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

InstallScript Object Merge Module MSI Database MSM Database Transform

The General Information view contains basic information about your project, your company, and your product. Some of the information that you enter in this view is for your reference only, some is necessary to comply with Windows logo requirements, and the rest is for setting basic project properties. When you create a new installation project, you must configure its General Information view settings. InstallShield creates new projects with default settings, but you should set your own values so that your project includes data that is specific to your needs. The General Information view consists of the following elements:

A row of buttons A grid of settings

The following table describes the buttons that are displayed in the General Information view.
Table 43-1: Controls in the General Information View Name of Control Categorized Icon Description Sorts the settings according to categories.

Alphabetical

Sorts the settings alphabetically.

For descriptions of each of the settings in the General Information view, see General Information View Settings.

General Information View Settings

Project: The General Information view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

The General Information view settings are organized into the following main categories:

InstallShield 2010 User Guide

ISP-1600-UG00

1669

Chapter 43: View Reference Installation Information View

General Summary Information Stream Add or Remove Programs

General Settings
Use the General area of the General Information view to specify details such as product name and product version. The following settings are available in this area.
Table 43-2: General Settings Setting Project File Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description This read-only setting displays the path and name of the InstallShield project file (.ism). It also shows the type of project. To learn more, see Project Types.

Project File Format

Select the file format that you want to use for your project file (.ism). Available options are:

BinaryTo save the .ism file as a database file, select this option. This format is best for the speed of opening and saving the project file. This is the default format for Basic MSI, InstallScript MSI, and Merge Module projects. If you select this project file format for these project types, you can modify the .ism file in a Windows Installer database editor. You can also modify the .ism file by using the Windows Installer API or its automation interface.

XMLTo save the .ism file as a hierarchical text-based format, select this option. This project file format is best for use with source code control systems. It enables you to modify the project file using XML tools. This is the default format for InstallScript and InstallScript Object projects.

Note: Both project file formats let you build releases from the command line.

1670

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Setup Languages Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description

Project: The behavior of this setting varies, depending on whether the project type is Windows Installer based (a Basic MSI, InstallScript MSI, or Merge Module project) or InstallScript based (an InstallScript or InstallScript Object project). In Basic MSI, InstallScript MSI, and Merge Module projects, the Setup Languages setting lets you specify the languages that you want to be listed in the UI Languages setting in the Releases view. Therefore, if a language is not listed for this Setup Languages setting at the project level, you cannot include that particular UI language in your projects releases. In InstallScript and InstallScript Object projects, the Setup Languages setting lets you specify the languages that you want to be listed in the Languages setting in the Components and Releases views in your project. In general, if a language is not listed for this setting at the project level, you cannot designate that a particular component in your project is targeted for that language; in addition, you cannot designate that the components and UI strings for a particular language are included in your projects releases. When you add a supported language to your project through this setting, InstallShield adds string entries for that language to your project. The string entries include the built-in user-interface string resources that are already translated. For more information, see Selecting the Installation Languages.

Default Language

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module InstallScript, InstallScript Object

Select the default language for your project. The localizable strings that you specify throughout various views in InstallShieldsuch as the Display Name setting for a feature or the Description setting for a shortcutare all from the default language's string entries. For more information, see Setting the Default Project Language. This setting lets you specify the platforms that you want to be available when you select operating system requirements for components or releases in your project. In general, if a platform is not listed for this setting at the project level, you cannot designate that a particular component or release in your project is targeted for that platform. To change the platforms for your project, click the ellipsis button (...) in this setting. The Platforms dialog box opens, enabling you to select the platforms for your project.

Platform Filtering

Note: Specifying platforms at the project level does not create target system requirements for running the installation. If you want to create target system requirements in an InstallScript or InstallScript Object project, use the SYSINFO structure to identify the operating platform of the target system.

InstallShield 2010 User Guide

ISP-1600-UG00

1671

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Maintenance Experience Project Type InstallScript Description Select the behavior that occurs when a target machine already has your product installed and the end user reruns your installation. Valid options are:

StandardIf the maintenance user interface should be displayed when a target machine already has your product installed and the end user reruns your installation, select this option. Only one entry for the product is listed in Add or Remove Programs. Multi-InstanceIf end users should be able to rerun an installation multiple times as a first-time installation rather than as a maintenance installation, select this option. Each time that an end user runs the installation, a separate entry is added to Add or Remove Programs. By default, this option lets end users install the product to a different location each time that they run the installation. This is useful for a product that an end user may want to install to different locations in order to experiment with different product configurations and then later remove only specific instances. The maintenance user interface is displayed only if an end user reruns the installation from Add or Remove Programs. No uninstall or maintenanceIf end users should not be able to uninstall the product or run it in maintenance mode, select this option. No entry is created for the product in Add or Remove Programs.

To learn more, see Running an InstallScript Installation Multiple Times. Enable Maintenance InstallScript MSI Indicate whether you want the maintenance UI script events OnMaintUIBefore and OnMaintUIAfterinvoked when an end user attempts to install your product on a system where the product has already been installed. Valid options are:

YesThe installation calls the maintenance UI events in your script. When an end user attempts to reinstall your application, the ProgramMaintenance dialog is displayed. NoThe installation automatically adds the /removeonly parameter to the uninstall string, which sets the REMOVEONLY system variable during maintenance mode. As a result, the maintenance UI events show the uninstallation UI instead of the maintenance UI.

To learn more, see Setting the Enable Maintenance Mode.

1672

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting InstallScript User Interface Type Project Type InstallScript MSI Description Specify the type of InstallScript user interface (UI) that you want to use for your installation. Valid options are:

Traditional Style (Requires Setup.exe)If you want to use the InstallScript engine as an external UI handler for your InstallScript MSI installation, select this option. With this style, your installation must include a Setup.exe setup launcher. The setup launcher serves as a bootstrap application that initiates the InstallScript engine to display the UI and run the InstallScript code, and the Windows Installer to run the Execute sequence of the .msi package. This is the default option for this setting. New Style (Requires Windows Installer 4.5)If you want to use the InstallScript engine as an embedded UI handler for your InstallScript MSI installation, select this option. With this style, InstallShield embeds the InstallScript engine within the .msi package. The Windows Installer calls the InstallScript engine to display the UI. The Windows Installer also runs the Execute sequence of the .msi package. This option requires Windows Installer 4.5 on the target machine. This option also has some limitations that require careful planning if you decide to use this style.

For detailed information about these two styles, see Using the InstallScript Engine as an External vs. Embedded UI Handler for InstallScript MSI Installations. Project Comments Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module, MSI Database, MSM Database, Transform Enter comments about this project. These comments are not displayed to the end user. If you are going to save this project as a template, note that the comments are displayed as a description for the template in the New Project dialog box. Enter the name of the product, merge module, or object. For information on how the product name is used, see Specifying a Product Name.

Product Name

Project: For InstallScript and InstallScript Object projectsInstead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.) The product name is stored in the InstallScript system variable IFX_PRODUCT_NAME.

InstallShield 2010 User Guide

ISP-1600-UG00

1673

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Product Version Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module, MSI Database, MSM Database, Transform Description Enter the version number for your product. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projects, you can include a fourth field, making the product version format aaa.bbb.ccccc.ddddd, but Windows Installer does not use the fourth field. The maximum value for ddddd is 65,535. For more information, see Specifying the Product Version.

Project: For InstallScript and InstallScript Object projectsInstead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.) Application Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript MSI, MSI Database, Transform Select the type of application from the list or type the name of an application type if it is not listed. This information is stored in the project file and is for your reference only. It is never displayed to the end user.

Product Code

Enter a GUID that uniquely identifies this product. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. Since this code uniquely identifies your product, changing the product code after you have already distributed your release is not recommended. For more information, see Setting the Product Code.

Product GUID

InstallScript, InstallScript Object

Enter a GUID that uniquely identifies this product. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The product GUID is used to associate uninstallation or maintenance with the original installation. A new GUID is automatically generated for each new project that you create, including copies of existing projects. Once you have changed a projects product GUID, its previous GUID cannot be recovered. For these reasons, changing a projects product GUID is typically not necessary and should be approached with caution. For more information, see Setting the Product GUID.

1674

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Upgrade Code Project Type Basic MSI, InstallScript MSI, MSI Database, Transform Description Enter a GUID that can be used for your products upgrade code. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The upgrade code is a GUID that identifies a related set of products. The Windows Installer uses a product's upgrade code when performing major upgrades of an installed product. The upgrade code, stored in the UpgradeCode property, should remain the same for all versions of a product. For more information, see Setting the Upgrade Code. Install Condition Basic MSI, InstallScript MSI, MSI Database, Transform This setting lets you specify one or more conditions that must be true in order for your installation to run. For example, you can test for a specific operating system or minimum system requirements. If the conditions do not evaluate to True at run time, an error message is displayed and the product is not installed. To specify one or more conditions, click the ellipsis button (...) in this setting. For more information, see Setting Product Conditions. When you add a condition, InstallShield adds two new settings under the Install Condition setting:

ConditionThis setting displays the conditional statement that you added. To edit the conditional statement, click the ellipsis button (...) in this setting. To delete the condition and its message, click the Delete this condition button in this setting. MessageThis setting displays the run-time error message that is configured to be displayed at run time if the corresponding condition is not met on the target system. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Module Language

Merge Module, MSM Database

Select the language of the merge module, or select Language Independent.

InstallShield 2010 User Guide

ISP-1600-UG00

1675

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting INSTALLDIR Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Specify the value of the Windows Installer property INSTALLDIR, which indicates the destination directory where most of the files of the product or merge module will be installed at run time. Instead of hard-coding a path, you can enter a directory property as part of the path. To select a directory property, click the ellipsis button (...) in this setting. This enables you to select the appropriate directory from a list, or to create a new directory within a predefined directory. Separate further levels of subdirectories with a backslashfor example, [ProgramFilesFolder]MyApp\Bin.

Windows Logo Guideline: To comply with the Certified for Windows Vista Program, your product's default destination should be a subfolder of the Program Files folder ([ProgramFilesFolder]), which can vary depending on the systems locale and user settings.

Project: In Basic MSI, InstallScript MSI, MSI Database, and Transform projects, the default value is as follows:
[ProgramFilesFolder]My Company Name\My Product Name

For more information, see Setting the Default Product Destination Folder (INSTALLDIR). In Merge Module and MSM Database projects, the default value is as follows:
[TARGETDIR]

For more information, see Setting the Default Destination Folder for a Merge Module. TARGETDIR InstallScript, InstallScript Object Specify the default value for the main target directory for your product. Typically this value is set to a value such as the following one:
<FOLDER_APPLICATIONS>\<IFX_COMPANY_NAME>\<IFX_PRODUCT_N AME>

For more information, see TARGETDIR.

1676

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Module ID GUID Project Type Merge Module, MSM Database Description This read-only setting displays a GUID that uniquely identifies the merge module. Whenever you create a new merge module InstallShield generates a new GUID for the merge module. The module ID GUID is appended to all merge module GUID foreign keys. For example, if you create a component in a merge module project, that component is listed in the Direct Editor and in the built .msm file as ComponentName.MergeModuleGUID. If you want to change this GUID, you can use the Direct Editor view to edit the ModuleID field of the ModuleSignature table. Note that if you change this value, you must also update the value in all of the tables in your project; you can do this from within the Direct Editor view. Module Dependencies Merge Module, MSM Database This setting lets you specify one or more merge modules that are required for your merge module. To add one or more dependencies that are available in your redistributables gallery, click the ellipsis button (...) in this setting. The Module Dependencies dialog box opens, enabling you to select the modules that your merge module requires. To add a dependency that is not present on your machine, click the Add a new module dependency button, and then specify its version, language, and module GUID. Name Merge Module, MSM Database This read-only setting shows one of the following values:

If you selected a dependency that is available in your redistributables gallery, this setting shows the name of that dependency. If you chose to add a dependency that is not present on your machine, this setting indicates [Merge Module Added by Setup Author].

This setting is displayed only if you have added a merge module dependency to your project. If you want to remove this dependency from your project, you can click the Delete this module dependency button in this setting. Version Merge Module, MSM Database If the merge module that you are creating requires a particular version of the dependency, specify the version number. If any version of the dependency is acceptable, you can leave the Version setting blank. This setting is displayed only if you have added a merge module dependency to your project. Language Merge Module, MSM Database If the merge module that you are creating requires a dependency of a particular language, specify the language. If any language of the dependency is acceptable, select Language Independent. This setting is displayed only if you have added a merge module dependency to your project.

InstallShield 2010 User Guide

ISP-1600-UG00

1677

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Module ID Project Type Merge Module, MSM Database Description If you selected a dependency that is available in your redistributables gallery, this setting indicates the module ID of that dependency. If you chose to add a dependency that is not present on your machine, enter the module ID of the dependency. The module ID must be in the following format:
ModuleName.ModuleGUID

For example, if the name of the merge module is MyDependency and the GUID is {2560C1ED-E2F7-4FE6-A0E6-15A9DA4CE9B9}, enter the following in this setting:
MyDependency.2560C1ED-E2F7-4FE6-A0E6-15A9DA4CE9B9

This setting is displayed only if you have added a merge module dependency to your project. Module Exclusions Merge Module, MSM Database This setting lets you specify one or more merge modules that are incompatible with the merge module that you are creating. This may be necessary, for example, if an earlier version of your merge module is not compatible with your new module. To add one or more exclusions that are available in your redistributables gallery, click the ellipsis button (...) in this setting. The Module Exclusions dialog box opens, enabling you to select the modules that are incompatible with your merge module. To add an exclusion that is not present on your machine, click the Add a new module exclusion button, and then specify the requirements for the version, language, and module GUID. Name Merge Module, MSM Database This read-only setting shows one of the following values:

If you selected an exclusion that is available in your redistributables gallery, this setting shows the name of that exclusion. If you chose to add an exclusion that is not present on your machine, this setting indicates [Merge Module Added by Setup Author].

This setting is displayed only if you have added a merge module exclusion to your project. If you want to remove this exclusion from your project, you can click the Delete this module exclusion button in this setting. Max. Version Merge Module, MSM Database Specify the maximum version number of the merge module that should be excluded. If you leave this setting blank, all versions after the value that you specify in the Min. Version setting are excluded. If you leave both the Max. Version and Min. Version settings blank, there is no exclusion based on version. This setting is displayed only if you have added a merge module exclusion to your project.

1678

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Min. Version Project Type Merge Module, MSM Database Description Specify the minimum version number of the merge module that should be excluded. If you leave this setting blank, all versions before the value that you specify in the Max. Version setting are excluded. If you leave both the Max. Version and Min. Version settings blank, there is no exclusion based on version. This setting is displayed only if you have added a merge module exclusion to your project. Language Merge Module, MSM Database If you want to exclude merge modules that have a specific language or change the current value of this setting, click the ellipsis button (...) in this setting. The Exclusion Languages dialog box opens, enabling you to specify whether you want to exclude a particular language or all of the languages except a particular language. This dialog box also lets you select Language Independent, which indicates that the language should not be used to exclude a merge module. This setting is displayed only if you have added a merge module exclusion to your project. Module ID Merge Module, MSM Database If you selected an exclusion that is available in your redistributables gallery, this setting indicates the module ID of that exclusion. If you chose to add an exclusion that is not present on your machine, enter the module ID of the exclusion. The module ID must be in the following format:
ModuleName.ModuleGUID

For example, if the name of the merge module is MyExclusion and the GUID is {2560C1ED-E2F7-4FE6-A0E6-15A9DA4CE9B9}, enter the following in this setting:
MyExclusion.2560C1ED-E2F7-4FE6-A0E6-15A9DA4CE9B9

This setting is displayed only if you have added a merge module exclusion to your project.

InstallShield 2010 User Guide

ISP-1600-UG00

1679

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Locked-Down Permissions Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Select the type of permissions that you want to use for securing files, folders, and registry keys for end users who run your product in a locked-down environment. Available options are:

Custom InstallShield handlingInstallShield uses a custom ISLockPermissions table and adds custom actions to your project to set permissions on the target system. This option is the default value. Traditional Windows Installer handlingInstallShield uses the LockPermissions table in the .msi database to store permission information for your product.

It is often more advantageous to use the custom InstallShield handling than the traditional Windows Installer handling. For example:

The custom option includes support for many well-known security identifiers (SIDs) that are not supported by the traditional option. The custom option supports the use of localized user names for many well-known SIDs, unlike the traditional option. With the traditional option, if you try to use a localized name to set permissions on a non-English system, the installation may fail. The custom option lets you specify that you want to deny a user or group from having the permissions that you are specifying. The traditional handling does not allow you to do this. That is, with the traditional handling, you can only set specific permissions; you cannot deny permissions.

This is a project-wide setting that affects all new permissions that you set for files, folders, and registry keys in your project. If you have already configured some permissions in your project and then you change the value of this setting, InstallShield lets you specify whether you want to use the alternate handling method for those alreadyexisting permissions. For more information about configuring this setting, as well as information about InstallScript support for setting permissions, see Securing Files, Folders, and Registry Keys in a Locked-Down Environment.

1680

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Project Type Description Specify whether you want to give end users the option of installing your product for all users or for only the current user. This run-time option is available only on Windows 7 and later systems, and on Windows Server 2008 R2 and later systems. Available options are:

Show Per-User Option Basic MSI

NoDo not include the buttons that let end users specify how they want to install the product. YesIf the target system has Windows 7 or Windows Server 2008 R2, InstallShield adds buttons to the ReadyToInstall dialog. The buttons let end users specify how they want to install the product. If elevated privileges are required, the shield icon is included on the all-users button. If an end user selects the all-users button, the ALLUSERS property is set to 2, and the MSIINSTALLPERUSER property is set to 1. If an end user selects the per-user button, the ALLUSERS property is set to 1, and the MSIINSTALLPERUSER property is not set. If the target system has Windows Vista or earlier, or Windows Server 2008 or earlier, the ReadyToInstall dialog does not show the buttons that let end users specify how they want to install the product.

The default value is No.

Note: Selecting No does not prevent end users from setting MSIINSTALLPERUSER from the command line when they run your installation. If your installation does not support this, you may want to add a launch condition or other run-time check to prevent this from occurring. To learn more, see Per-User vs. Per-Machine Installations.

InstallShield 2010 User Guide

ISP-1600-UG00

1681

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Create MSI Logs Project Type Basic MSI, InstallScript MSI, MSI Database, Transform Description To specify whether Windows Installer 4.0 or later should log your installation, click the ellipsis button (...) in this setting, which launches the Logging Options for Windows Installer 4.0 and Later dialog box. This dialog box is where you specify whether Windows Installer should log your installation. You can also use this dialog box to customize the types of messages that are logged. There are three possible values for this setting:

NoInstallations are not logged. This is the default value. YesInstallShield populates the MsiLogging property with the default value of voicewarmupx. CustomInstallShield populates the MsiLogging property with the value that you specified on the Logging Options for Windows Installer 4 and Later dialog box.

If the value of this setting is Yes or Custom, and if the installation is run with Windows Installer 4.0 or later, as well as Windows Vista or later or Windows Server 2008 or later, the following occurs:

The installer creates a log file according to the appropriate logging mode: either voicewarmupx (if the Create MSI Logs value is Yes) or whatever custom value you specified on the Logging Options for Windows Installer 4.0 and Later dialog box. The installer populates the MsiLogFileLocation property with the log files path. A Show the Windows Installer log check box is added to the SetupCompleteSuccess, SetupCompleteError, and SetupInterrupted dialogs. If the end user selects that check box and then clicks Finish, the log file is opened in a text file viewer or editor.

Create MSI Logs (continued)

The Create MSI Logs setting applies to installations that are run with Windows Installer 4.0 or later on Windows Vista and later systems or Windows Server 2008 and later systems. The Show the Windows Installer log check box is not visible in run-time dialogs that are displayed on earlier systems that are running earlier versions of Windows Installer.

Note: If the value of this setting is Custom and you change it to Yes, any custom parameters that you defined for the MsiLogging property in the Property Manager will be overwritten with the default value. If you change it to No, InstallShield deletes any custom parameters from the MsiLogging property. For more information, including details on how to customize the types of messages that are logged, see Specifying Whether Windows Installer Installations Should Be Logged.

1682

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Fast Install Project Type Basic MSI, InstallScript MSI, MSI Database, Transform Description If you want to reduce the time that is required to install a large Windows Installer package, consider selecting the check boxes for one or more of the following options:

No system restore point is saved for this installation Perform only File Costing and skip checking other costs Reduce the frequency of progress messages

This setting configures the Windows Installer property MSIFASTINSTALL, which can be set at the command line. Windows Installer 5 includes support for this setting. Earlier versions of Windows Installer ignore it. Company Name InstallScript, InstallScript Object Enter the name of your company. This value is used in the default script to set TARGETDIR (if the string entry COMPANY_NAME does not exist); it can be retrieved at run time by calling the MediaGetData function.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.) Executable File InstallScript, InstallScript Object Enter the name of the applications main executable file. This value can be retrieved at run time by calling the MediaGetData function.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.) URL InstallScript, InstallScript Object Enter a product URL. This information is stored in the project file and is for your reference only. It is never displayed to the end user.

Tip: Instead of hard-coding a value, you can use a path variable that is defined in the Path Variables view. At build time, InstallShield replaces the path variable with the appropriate value. (To use a path variable: On the Project menu, click Settings. Then select the appropriate path variable on the Application tab.)

InstallShield 2010 User Guide

ISP-1600-UG00

1683

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Server Locations Project Type Transform Description If you are storing the installation package and its related files for the product on a network server or Web site, click the ellipsis button (...) in this setting to specify the server or Web site locations. The locations should have the .msi package, as well as all of the files that might be required to, for example, repair the product or advertise a feature. The validity of the server location that you specify is determined when the installation needs to access the server remotely. That is, if a server is not available, or if you added an invalid server, the entry will be ignored if the resource is needed, and errors might be generated. Each location that is specified must have the complete source for the installation. The entire directory tree at each source location must be the same and must include all of the required source files, including any .cab files. Each location must have an .msi file with the same file name and product code.

Tip: Server paths can contain environment variables that are identified with a percent sign (%). For example, the following path uses the Home environment variable:
\\Server1\%Home%\Office

The paths that you specify are stored in the SOURCELIST property. Windows Installer appends this list to the end of an end users existing source list for the product at run time. Register Object InstallScript Object Specify whether you want the InstallScript object to be registered on your machine when you build a release for it. Registering an object on your development machine enables you to include the object in InstallScript projects that you create on that machine.

Tip: If the object is not registered when you build it, you can register it from within an InstallScript project. To learn more, see Registering Objects in InstallScript Projects.

1684

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-2: General Settings (cont.) Setting Object Wizard Project Type InstallScript Object Description Select the type of wizard, if any, that you would like to use for your objects default language. Available options are:

No WizardIf your object does not require a wizard, select this option. Use InstallShield Object Stock WizardIf you want InstallShield to create a wizard based on the properties that you are creating for your object, select this option. With the stock wizard, all read-only properties are displayed but are not editable. All read/write properties can be changeable by the user. Write-only properties are not displayed.

As an alternative, you can click the ellipsis button (...) in this setting if you want to select a custom wizard that you created for your object. To learn more about creating a custom wizard and using the InstallShield stock wizard, see Designing an Objects Wizard. Register Custom Wizard InstallScript Object Specify whether you want InstallShield to register the custom object wizard for this object when you build a release for the object.

Note: This setting is applicable only if you specify a custom wizard in the Object Wizard setting. Font Registration InstallScript, InstallScript Object If you want all of the font files in your project to be registered on the target system at run time, select Enabled. Static file links have an individual setting for font registration as well. This setting must be used to set the behavior for dynamically linked font files. To enable DIFx support in your project for installing device drivers on 32-bit systems, select Enabled. If you select Enabled, InstallShield adds the DIFxAPI libraries to your project when you build a release. For more information, see Installing Device Drivers. DIFx Support (for 64bit Itanium platforms) InstallScript, InstallScript Object To enable DIFx support in your project for installing device drivers on 64-bit Itanium systems, select Enabled. If you select Enabled, InstallShield adds the DIFxAPI libraries to your project when you build a release. For more information, see Installing Device Drivers. DIFx Support (for 64bit AMD platforms) InstallScript, InstallScript Object To enable DIFx support in your project for installing device drivers on 64-bit AMD systems, select Enabled. If you select Enabled, InstallShield adds the DIFxAPI libraries to your project when you build a release. For more information, see Installing Device Drivers.

DIFx Support (for 32bit platforms)

InstallScript, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

1685

Chapter 43: View Reference Installation Information View

Summary Information Stream


Windows Installer databases are implemented as COM structured storage, and COM structured storage files usually contain a Summary Information Stream. The Summary Information Stream contains information about your company and the product that is being installed. The following settings are available in the Summary Information Stream area in the General Information view.
Table 43-3: Summary Information Stream Settings Setting Title Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Specify the type of database that you are creating. For a product installation, the default value is Installation Database, which is the recommended value. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Subject Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Enter the name of the product. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Specify your company name. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Specify keywords that describe the Windows Installer database for your product. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties.

Author

Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

Keywords

Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

1686

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-3: Summary Information Stream Settings (cont.) Setting Package Code Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database Description This setting identifies the package code, which is the GUID for your installation package or merge module. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting.

Note: Because Windows Installer requires that any two .msi databases with identical package codes to have identical contents, you should change the package code before releasing a modified package. In the Releases view, you can use the Generate Package Code setting for a product configuration to specify whether you want InstallShield to generate a new package code every time that you build a release. The default value for this setting is Yes. Template Summary Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Specify the processor type and default language that your installation supports. List the processor type first, followed by your installations default language, and separate them with a semicolon. If you have multiple entries in the language category, separate them with a comma. For example, if your installation runs only on Intel processors and English-based systems, enter Intel;1033. If your product runs on x64 processors and supports English and German, enter x64;1033,1031. For the language portion of this setting, use the number 0 if your installation is language neutral. Valid processor values include:

Alpha (Alpha is supported by Windows Installer 1.0 only.) Intel Intel64 (Intel64 is supported by Windows Installer 2.0 only.) x64

Note that you can specify only one processor value. For more information, see Using the Template Summary Property. If the target machine does not meet the requirements that you specify for this setting, an error message is displayed and the installation exits.

InstallShield 2010 User Guide

ISP-1600-UG00

1687

Chapter 43: View Reference Installation Information View

Table 43-3: Summary Information Stream Settings (cont.) Setting Summary Information Stream Comments Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Enter any comments about your product. A typical value for this setting is as follows:
This installer database contains the logic and data required to install MyProduct.

The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Schema

Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

This setting lets you specify the integer that identifies the minimum Windows Installer version that is required for your installation package. For a minimum of Windows Installer 2.0, enter 200. For a minimum of Windows Installer 3.0, enter 300. For a minimum of Windows Installer 3.1, enter 301. For a minimum of Windows Installer 4.5, enter 405. If the end users system has a Windows Installer version earlier than the minimum requirement that you specify for the Schema settingfor example, if you specify a schema value of 405 because your installation uses Windows Installer 4.5 features, but an end user has Windows Installer 3.1the installation displays an error message and exits. The value that you enter for the Schema setting is used for the Page Count Summary property of your Windows Installer database.

Note: You can override this value for all of the releases that are associated with a particular product configuration in your project by setting the Schema setting for the product configuration in the Releases view.

1688

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-3: Summary Information Stream Settings (cont.) Setting Require Administrative Privileges Project Type Basic MSI, MSI Database Description Specify whether your .msi package requires administrative privileges for the execute sequence of your installation. The default is Yes. If you set this to No, InstallShield sets bit 3 in the Word Count Summary property to indicate that elevated privileges are not required to install the .msi package. Note that if you select No but your .msi package tries to perform a task for which it does not have adequate privileges, Windows Installer may display a run-time error. This setting applies to installations that are run with Windows Installer 4.0 or later on Windows Vista and later systems or Windows Server 2008 and later systems. Earlier versions of Windows Installer and Windows ignore this setting. Note that an end users installation experience is more secure when installations are run with only the permissions that they need. Unless an application is designed to be run only by system administrators, it should be run with the least privilege. To learn how this setting and other InstallShield settings affect whether Windows Vista displays a User Account Control prompt to elevate privileges, see Minimizing the Number of User Account Control Prompts During Installation.

Add or Remove Programs


Add or Remove Programs (which is called Programs in the latest versions of Windows) in the Control Panel provides end users with technical support links and telephone numbers, product update information, and information about a products manufacturer. Depending on how the installation is configured, the end user may have the option of removing, repairing, or changing the installation with the click of a button. You can specify this information in your project by configuring the Add or Remove Programs settings in the General Information view.

Project: In a Basic MSI projectTo prevent your product from appearing in the Add or Remove Programs, you can set the Windows Installer property ARPSYSTEMCOMPONENT to 1 in the Property Manager. Note that setting this property simply suppresses the display of your product in Add or Remove Programs. An end user can still remove your product by running the installation in maintenance mode or from the command line.

InstallShield 2010 User Guide

ISP-1600-UG00

1689

Chapter 43: View Reference Installation Information View

In an InstallScript MSI projectTo prevent your product from appearing in the Add or Remove Programs, select Yes for the Hide Add/Remove Panel Entry setting in the Releases view. Table 43-4: Add or Remove Programs Settings Setting Display Icon Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Description

Project: The value that you should enter for this setting depends on what project type you are using. In Basic MSI, InstallScript MSI, MSI Database, and Transform projects: Enter the path on your development system to the icon file (.ico or .exe) that you want to be used for your product's entry in Add or Remove Programs. Instead of manually typing the path and file name, you can click the ellipsis button (...) in this setting to browse to the file. For InstallScript and InstallScript Object projects: Enter the path on the target system to the icon file (.ico or .exe) that you want to be used for your product's entry in Add or Remove Programs. You can specify a path relative to a system variable that is enclosed by angle bracketsfor example:
<TARGETDIR>\icon.ico

Display Icon Index

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

If the icon file that you specify contains more than one icon resource, specify the index in this setting.

A nonnegative integer refers to the order of the icon resources in the executable file. For example, 0 refers to the first icon in the file, 1 refers to the second icon, and 2 refers to the third icon. Use a negative number to refer to a specific resource ID. For example, the icon index -12 refers to the icon with a resource ID of 12.

Disable Change Button

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform

Specify whether you want to disable the Change button for your products entry in Add or Remove Programs. The Change button enables end users to change installation options after the product has been installed. End users can remove or add features as needed.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target system's registry. Also in an InstallScript project, you can specify a combined Change/ Remove button (the default behavior in Windows 9x, Windows Me, and pre-Windows 2000 operating systems) by setting the Disable Change Button and Disable Remove Button settings to Yes and setting the system variable ADDREMOVE_COMBINEDBUTTON to TRUE in your script before the MaintenanceStart function is called. (MaintenanceStart is called by the default code for the OnMoveData event handler.)

1690

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-4: Add or Remove Programs Settings (cont.) Setting Disable Remove Button Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Description Specify whether you want to disable the Remove button for your products entry in Add or Remove Programs. The Remove button enables end users to remove the product by clicking one button, which runs your uninstaller with a reduced user interface.

Project: For Basic MSI, InstallScript MSI, MSI Database, and Transform projectsIf the end user clicks the Remove button to remove your product, actions in the User Interface sequence of the project are executed. In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target system's registry. Disable Repair Button Basic MSI, MSI Database, Transform Specify whether you want to disable the Repair button for your products entry in Add or Remove Programs. The Repair button enables end users to run the Windows Installer repair option if any files have been deleted or corrupted. Specify the name of the company that created the product. This information is displayed for your products entry in Add or Remove Programs. The value that you enter is stored in the Windows Installer Manufacturer property. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Publisher

Basic MSI, InstallScript MSI, MSI Database, Transform

Windows Logo Guideline: If you want to meet the requirements of the Certified for Windows Vista program, you must specify the publisher. Publisher/Product URL Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Enter a general URL for your company or productfor example, http:/ /www.installshield.com. On some versions of Windows, the publisher name on the Support Info dialog box is a hyperlink to this URL. The Support Info dialog box is displayed when an end user clicks the support information hyperlink for your products entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry.

InstallShield 2010 User Guide

ISP-1600-UG00

1691

Chapter 43: View Reference Installation Information View

Table 43-4: Add or Remove Programs Settings (cont.) Setting Support Contact Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Description Enter the name of the person or department that end users should contact for technical support. On some versions of Windows, this information is displayed on the Support Info dialog box for your products entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry. Support URL Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Enter the URL that you would like end users to visit for technical support information for your product. This URL is displayed for your products entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Windows Logo Guideline: If you want to meet the requirements of the Certified for Windows Vista program, you must enter a valid URL.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry. Support Phone Number Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Enter the technical support phone number for your product. On some versions of Windows, this information is displayed on the Support Info dialog box for your products entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry.

1692

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-4: Add or Remove Programs Settings (cont.) Setting Read Me Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Description Enter the name or path of the Readme file for your product. As an alternative, you can link to a Readme file located on the Internet by specifying a valid URL. For more information, see Specifying a Readme File. On some versions of Windows, this information is displayed on the Support Info dialog box for your product's entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry. Product Update URL Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Specify a URL where end users can get information about product updates or download the latest version. On some versions of Windows, this information is displayed on the Support Info dialog box for your product's entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry. Add or Remove Programs Comments Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Enter comments about your product. This information is displayed for your product's entry in Add or Remove Programs. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: In an InstallScript project, the OnMoveData event handler writes the data for this setting to the target systems registry.

InstallShield 2010 User Guide

ISP-1600-UG00

1693

Chapter 43: View Reference Installation Information View

Table 43-4: Add or Remove Programs Settings (cont.) Setting English or Japanese IDE Settings Project Type InstallScript Object Description These areasEnglish IDE Settings and Japanese IDE Settingslet you specify information that should be available to InstallShield users when they view your object in the Objects view of the English and Japanese versions of InstallShield. If this setting is for a language other than the default language, specify whether you want to use the default language settings values for this language. If you select Yes, the other settings under the Use Default setting become disabled. If you select No, the other settings under the Use Default setting become enabled so that you can specify languagespecific values. This setting is disabled for the default language. Display Name InstallScript Object Enter the name of your object as you would like it to appear in the Objects view. Enter a shortened version of your objects name, if desired. You can enter the same name that you entered for the Display Name setting. Specify the objects help file, which must consist of a single Web file; this file is displayed in the right pane when the object is selected in the Objects view. Type an explicit path or path variable. The icon is displayed next to your object in the Objects view. The icon must be 16 pixels by 16 pixels with a maximum of 16 colors. The icon can be loaded from a DLL, .exe, or .ico file. When the file is a DLL or .exe, the icon index or resource ID can be specified after the path and file name separated by a comma. If a resource ID is specified rather than an index, it must be preceded by a dash (-). If no index is specified, the number 0 is assumed.

Use Default

InstallScript Object

Short Name

InstallScript Object

HTML Help

InstallScript Object

Icon File

InstallScript Object

Update Notifications View


Project: The Update Notifications view is available in the following project types:

Basic MSI InstallScript MSI

For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.

FLEXnet Connect provides a mechanism that enables you to automatically notify your Web-connected end users when patches, updates, and product information for your application are ready for release. Using FLEXnet Connect is simple. When you enable FLEXnet Connect, InstallShield includes the Software Manager in your installation. This desktop tool ships with your application and provides a tool for your end users to view available updates. To publish updates to your end users, you need to use a Web-based management portal called the FLEXnet Connect Publisher site.

1694

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

FLEXnet Connect includes a variety of options that can be purchased together for a complete solution, or separately for a customized solution. To learn more, visit the Acresso Web site. To access the FLEXnet Connect documentation, see the FLEXnet Connect Help Library.

Trialware View
Project: The Trialware view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

Note: Trialware functionality is available in the Premier edition of InstallShield.

With the Trialware view, you can configure a license for trialware. InstallShield uses the license to wrap a trialware shell around your products executable file (.exe, .dll, .ocx, or .scr file). The file can be unwrapped and used only according to the license settings that you configure, such as the trial limit (a specified number of days or a specified number of uses). To obtain a license for an executable file in your project, you begin by right-clicking the Trialware Files explorer in the Trialware view and then clicking New File Configured for Trial Usage. Two tabs are associated with the file selected in the Trialware Files explorer:

General Advanced

Two different types of icons are available for files in the Trialware Files explorer:
Table 43-5: Icon Types in Trialware Files Explorer Icon Description InstallShield displays this icon for a file in the Trialware Files explorer if a corresponding executable file (.exe, .dll, .ocx, or .scr file), trialware type, and license have been specified on the General tab. InstallShield displays this warning icon for a file in the Trialware Files explorer if the file still needs to be configured: a corresponding executable file (.exe, .dll, .ocx, or .scr), trialware type, or license needs to be specified on the General tab. If you build your project when this warning icon is displayed, a build error occurs (unless you have chosen to exclude trialware protection from the release).

General Tab
The Trialware view has a General tab. InstallShield displays this tab when an item is selected in the Trialware Files explorer.
InstallShield 2010 User Guide ISP-1600-UG00 1695

Chapter 43: View Reference Installation Information View

The General tab is where you select an executable file (.exe, .dll, .ocx, or .scr file), a trialware type, and a corresponding license for your trialware.
Table 43-6: Trialware View General Tab Settings Setting Trialware File (.exe, .dll, .ocx, or .scr) Description Select the .exe, .dll, .ocx, or .scr file in your project that you would like to protect. InstallShield will wrap a trialware shell around this file. The file can be unwrapped and used only according to the license settings that you configure on the Advanced tab. Select the type of trialware. For detailed information about the different types, see Types of Trialware. Select the license that should be used to protect the selected executable file. If you do not have a license, click the Acquire button to obtain one.

Trialware Type

License(s)

Once you have configured the above settings for a trialware file, the icon in the Trialware Files explorer changes from a warning icon ( ) to a protected trialware icon ( ). If you build your project when the warning icon is displayed, a build error occurs (unless you have chosen to exclude trialware protection from the release).

Advanced Tab
The Trialware view has an Advanced tab. InstallShield displays this tab when an item is selected in the Trialware Files explorer. The Advanced tab is where you configure settings such as the trial limit (number of trial days or number of uses) for your trialware. It is also where you set the hyperlinks for the trialware run-time dialogs.

Note: The default values for the URL-related properties listed below are for pages on the InstallShield Web site. You must change these default values or delete them before releasing your trialware. Otherwise, hyperlinks to the InstallShield Web site will be included in your trialware run-time dialogs. Table 43-7: Trialware View Advanced Tab Settings Property Manage Licenses Online Description Double-click the Manage Licenses Online property to access the Publisher Web Site for the InstallShield Activation Service. You can set up an account on this Web site in order to acquire licenses for your Try and Die products. Specify the name that you want to be displayed for your product in the trialware runtime dialogs. If you leave this setting blank, the name that is specified in the Product Name setting in the General Information view is used in the trialware run-time dialogs.

Product Name

1696

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-7: Trialware View Advanced Tab Settings (cont.) Property Type of Trial Limit Description Select the type of trialware limit: either number of days or number of uses. The type of trial limit that you select here is used as the unit of measure for the Trial Limit Quantity and Extension Limit Quantity properties. Note that it is impossible to have an extension trial limit type that does not match the standard trial limit type. For example, if you set the trial limit to a specific number of days, you cannot set the extension trial limit to a specific number of uses. For the Try and Die type of trialware, end users can continue using the product only if trial extensions are allowed and they enter the correct extension serial number. Trial Limit Quantity Specify the number of days or the number of uses (depending on the value of the Type of Trial Limit property) for the trial limit:

If the Type of Trial Limit property is set to Days, the trial period starts on the day that the end user launches your trialware product for the first time. The trial period starts on that first day even if the end user clicks the Cancel button on one of the trialware run-time dialogs and does not start using the product. If the Type of Trial Limit property is set to Uses, the countdown for the number of trial uses starts with the first time that the end user launches your product. If an end user clicks the Cancel button on one of the trialware run-time dialogs and does not start using the product, the number of uses does not change.

Note: Note that it is impossible to have an extension trial limit type that does not match the standard trial limit type. For example, if you set the trial limit to a specific number of days, you cannot set the extension trial limit to a specific number of uses. Serial Number Format Specify the format for your products trialware serial number andif trial extensions are allowedthe extension serial number:

Type a question mark (?) to represent each character in your products trialware serial number. For example, if a serial number consists of seven characters, type seven question marks in this field. To split the serial number into groups of characters, type a dash (-) between each group of question marks. The dash indicates a break in the serial number, where one group of characters ends and another begins.

For a serial number format of ???-????, the serial number field on the trialware runtime dialog would consist of two boxes; end users would be able to type only three characters in the first box and only four characters in the second box. If you allow trial extensions, the serial number that you specify for the Extension Serial Number property must fit the format specified in the Serial Number Format property.

InstallShield 2010 User Guide

ISP-1600-UG00

1697

Chapter 43: View Reference Installation Information View

Table 43-7: Trialware View Advanced Tab Settings (cont.) Property Allow Trial Extension Description Specify whether end users are allowed to extend the trial for your product. If you select Yes, enter values for the Extension Limit Quantity and Extension Serial Number properties.

Note: Note that if you allow trial extensions, end users can extend the trial only once. They cannot continually extend the trial. Extension Limit Quantity Specify the number of days or the number of uses (depending on the value of the Type of Trial Limit property) that an end user is allowed to extend the trial if they enter the correct extension serial number. If the Type of Trial Limit property is set to Days, the countdown for the number of days in the trial extension period starts the day after the initial trial period ends. This occurs even if the end user does not immediately extend the trial, but instead waits several days after the trial period is over to extend it. For more details, see Trial Limits and Extensions.

Note: Note that it is impossible to have an extension trial limit type that does not match the standard trial limit type. For example, if you set the trial limit to a specific number of days, you cannot set the extension trial limit to a specific number of uses. Extension Serial Number Specify the serial number that end users need to enter if they want to extend the trial. Use a dash (-) to indicate a break in the serial number, where one group of characters starts and another begins. The serial number that you specify must fit the format specified in the Serial Number Format property. You can set an expiration date to prevent evaluations or activations of your product after a certain date. To specify an expiration date, double-click this property, select the I want my trial to expire on this date option, and then select the appropriate date. If you do not want the trialware version of your product to expire after a predetermined date when end users have not yet activated it, leave the default value of (Does not expire) for this field. Expiration dates are often used for beta versions of a product. For example, you may want to set the expiration date to the last day of the beta trial period. When the beta trial period is over, end users can no longer use the trialware version of your product, even if they have additional days or uses remaining in their trial. Product Purchase URL Specify the URL for a page on your Web site that end users can visit to find information about purchasing your product. Note that the default value for this property is a page on the InstallShield Web site. You must change this default value or delete it before releasing your trialware. When an end user clicks the hyperlink for more information on purchasing your product on one of the trialware run-time dialogs, this Web page is opened in a Web browser. If you delete the URL in this box, the purchasing link is not displayed in the trialware run-time dialogs.

Expiration Date

1698

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Installation Information View

Table 43-7: Trialware View Advanced Tab Settings (cont.) Property Feedback URL Description Specify the URL for a page on your Web site that end users can visit to submit feedback to you. Note that the default value for this property is a page on the InstallShield Web site. You must change this default value or delete it before releasing your trialware. When an end user clicks the Feedback hyperlink on one of the trialware run-time dialogs, this Web page is opened in a Web browser. If you leave this box empty, the Feedback link is not displayed in the trialware run-time dialogs. If you want end users to submit feedback through email messages instead of through your Web site, you can configure this property with a mailto URL. If an end user clicks a mailto URL hyperlink in one of the trialware run-time dialogs, a new email message is opened in the end users email application, and the destination address is populated in the To field. For example, if you type the following text in this property, an email message will open with feedback@mycompany.com in the To field.
mailto:feedback@mycompany.com

You can also specify the text for the Subject line with the following code, using %20 in place of spaces:
mailto:feedback@mycompany.com?Subject=My%20Subject

Serial Number Information URL Help URL

This setting does not apply to the Try and Die type of trialware.

Specify the URL for a page on your Web site that end users can visit to learn more about the trial of your product. Note that the default value for this property is a page on the InstallShield Web site. You must change this default value or delete it before releasing your trialware. When an end user clicks the Help hyperlink on one of the trialware run-time dialogs, this Web page is opened in a Web browser. If you delete the URL in this box, the Help link is not displayed in the trialware run-time dialogs.

Privacy Policy URL

Specify the URL for a page on your Web site that end users can visit to learn more about your companys privacy policy. Note that the default value for this property is a page on the InstallShield Web site. You must change this default value or delete it before releasing your trialware. When an end user clicks the Privacy Policy hyperlink on one of the trialware run-time dialogs, this Web page is opened in a Web browser. If you delete the URL in this box, the Privacy Policy link is not displayed in the trialware run-time dialogs.

Offline Activation Email Offline Activation Phone

This setting does not apply to the Try and Die type of trialware. This setting does not apply to the Try and Die type of trialware.

InstallShield 2010 User Guide

ISP-1600-UG00

1699

Chapter 43: View Reference Organization View

Organization View
The first step in building anything is to lay a solid foundation. The base of your project is formed by specifying application information through the General Information view andfor installation projectscreating features in the Features view.

Setup Design

Project: The Setup Design view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

The most important step in designing any setup is to lay out the various elements, the building blocks of the installation. You need to think both from your users perspective as well as your own. The Setup Design view gives you a full look at your setup and all the features, components, and redistributables associated with it.

Features

Project: The Features view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

Features are the building blocks of your installation. They represent a distinct piece of your application such as program files, help files, or clip artto your end users. You can create features and subfeatures in the Features view.

Components

Project: The Components view is available in the following project types:


1700

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

MSI Database MSM Database Transform

Components are setup-authoring tools that help you organize similar application data, such as files, registry entries, and shortcuts, into logical groups. Unlike features, they constitute the developers view of a project.

Setup Types

Project: The Setup Types view is available in the following project types:

InstallScript InstallScript MSI

Setup types offer your customers multiple configurations of your applications. Generally, these configurations include Complete and Custom. Setup types allows your users to choose the best configuration for their needs. This view is available only for InstallScript and InstallScript MSI setup projects.

DIM References

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

Within InstallShield, you can use the DIM References view to manage all DIM references in your project. DIM references are created with InstallShield Collaboration; they are a grouping of similar application data items such as files, shortcuts, and registry entries organized from the developers perspective.

Setup Design View


Project: The Setup Design view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

The most important step in designing any installation is to lay out the various elements, the building blocks of the installation. You need to think both from the end users perspective, as well as your own. You can design the entire installation hierarchy for your application visually under the Setup Design view. This is the only view in which you can associate components with features and subfeatures.
InstallShield 2010 User Guide ISP-1600-UG00 1701

Chapter 43: View Reference Organization View

Features
Features are the building blocks of your application from the end users perspective. They can be installed or uninstalled based on the end users selections. Your entire application should be divided into discrete features that perform a specific purpose. Features can be created in both the Setup Design view and the Features view.

Components
Components enable you to group your application data together. Unlike features, components constitute the developers view of a projectcontaining data such as files, registry entries, and shortcuts. Components are associated with features in the Setup Design view, and a component may belong to more than one feature. Components can be created in both the Setup Design view and the Components view.

Tip: The Components section contains the Files, Registry Entries, and Shortcuts nodes, in addition to the Advanced Settings for the component. If you do not want to see the subordinate nodes when they do not contain data, right-click Setup Design and select Show Only Nodes with Data. When this option is selected, only the nodes that contain data are displayed.

Redistributables
Redistributables enable you to install distinct, pre-existing pieces of functionality. For example, if your application requires Visual Basic run-time .dll files, you can include the Visual Basic Virtual Machine merge module, rather than add a file to your installation project and trying to determine its installation requirements.

Note: Redistributablesincluding merge modules and objectscan be added to your installation in the Redistributables view (or the Objects view in InstallScript projects).

Files, Registry Data, and Shortcuts


Files, registry data, and shortcuts are elements that are added to a component to complete the hierarchy.

Advanced Settings
Advanced Component Settings let you handle installation of components with special requirements. By specifying the advanced settings, you can publish your component and register COM servers, file extension servers, MIME types, and so on. You can also use the components advanced settings to create an application paths entry in the registry.

Features View
Project: The Features view is available in the following project types:


1702

Basic MSI InstallScript

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

InstallScript MSI InstallScript Object MSI Database Transform

A feature is the smallest installable part of a product, from the end users perspective. It represents a specific capability of your productsuch as its help files or a part of a product suite that can be installed or uninstalled based on the end users selections. Your entire installation should be divided into features, each of which performs a specific purpose. Subfeatures are further divisions of a feature. Because features should be self-contained elements of a product or product suite that an end user can selectively install, it might make sense for you to organize portions of your installation as subfeatures of a parent feature.

Tip: Although you can create many levels of subfeatures, you should keep the design as simple as possible for organizational purposes.

Features Settings

Project: Feature settings are available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform

The settings in the Features view (and the feature settings in the Setup Design view) are organized into the following main categories:

General Feature Events Run-Time Settings

InstallShield 2010 User Guide

ISP-1600-UG00

1703

Chapter 43: View Reference Organization View

General
When you select a feature in the Features view or the Setup Design view, the following settings are available in the General area:
Table 43-8: General Settings for a Feature Setting Display Name Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform Description Enter the name that you want to be displayed for this feature in the CustomSetup dialog. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Enter a brief description of the feature. A features description is displayed in the CustomSetup dialog when the end user clicks a feature or subfeature. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Indicate the default install state for the feature. Valid options are:

Description

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, MSI Database, Transform

Remote Installation

Basic MSI, InstallScript MSI, MSI Database, Transform

Favor SourceThe files in this feature are set to be run directly from the source medium, such as a CD-ROM or a network location, by default. Favor LocalThe files in this feature are set to be installed on the target system by default. Favor ParentThe subfeature has the same default state as its parent feature. This option is available only if the feature is a subfeature.

For more information, see Setting a Features Remote Installation Setting.

Caution: If any of the features components contain a Windows service, select Favor Local. Although an end user could change the installation state through the CustomSetup dialog, the Windows Installer cannot install a service remotely.

1704

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting Destination Project Type Basic MSI, InstallScript MSI, MSI Database, Transform Description Select the folder on the target system into which the feature's files should be installed, or click the ellipsis button (...) to select or create a directory.

Note: If you want the destination to be configurable at run time, the destination folder that you select must be a public property (containing all uppercase letters). For more information, see Setting a Features Destination. Install Level Basic MSI, InstallScript MSI, MSI Database, Transform Enter an integer for this feature's install level. Unless the end user deselects features in the CustomSetup dialog, all features with an install level less than or equal to the value of the package's INSTALLLEVEL property are installed. You can change the INSTALLLEVEL property for the entire project in the Property Manager. The Install Level setting for a feature is compared against the INSTALLLEVEL property at run time to determine which features are available for installation. You can use this setting to create specific feature configurations.

Project: For InstallScript MSI installations, this setting is used only if no setup types are defined for the project. Display Basic MSI, InstallScript MSI, MSI Database, Transform Indicate how you want the feature presented to the end user in the CustomSetup dialog (in Basic MSI, MSI Database, and Transform projects) or the feature selection dialog (in InstallScript MSI projects).

Visible and CollapsedThe feature is displayed in the runtime dialog with its subfeatures collapsed by default. Visible and ExpandedThe feature is displayed in the runtime dialog with its subfeatures expanded by default. Not VisibleThe feature and subfeatures are not displayed in the run-time dialog.

This setting does not have any direct impact on whether a feature is installed. A feature is not automatically installed if it is not visibleit just cannot be deselected if it would otherwise be installed, or selected if it should not be installed. For more information, see Displaying Features to End Users.

InstallShield 2010 User Guide

ISP-1600-UG00

1705

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting Visible Project Type InstallScript Description Specify whether the feature should be visible in the feature selection dialog during installation. This setting does not have any direct impact on whether a feature is installed. A feature is not automatically installed if it is not visibleit just cannot be deselected if it would otherwise be installed, or selected if it should not be installed.

Note: Since the only way for end users to change the selection status of an invisible feature is by selecting or deselecting a visible feature that requires the invisible feature, you should make every invisible feature a required feature for one or more visible features. Otherwise, end users will not be able to select or install features that are initially deselected. Advertised Basic MSI, MSI Database, Transform Select the appropriate advertisement option for this feature. Available options are:

Allow AdvertiseEnd users have the ability to select the advertisement option for this feature in the CustomSetup dialog. Although advertisement is allowed, it is not the default option when the installation is run. Favor AdvertiseThe feature is advertised by default. End users can change the advertisement option for a feature in the CustomSetup dialog. Disallow AdvertiseAdvertising is not allowed for this feature. End users cannot elect to have the feature advertised in the CustomSetup dialog. Disable Advertise if Not SupportedAdvertisement works only on systems with Internet Explorer 4.01 or later. If the target system does not meet this criterion, advertising is not allowed. If the target system can support advertisement, advertising is allowed.

For more information, see Advertising Features. Required Basic MSI, InstallScript MSI, MSI Database, Transform Indicate whether the feature is required on the target system; if the feature is required, end users cannot deselect it in the CustomSetup dialog (in Basic MSI, MSI Database, and Transform projects) or the feature selection dialog (in InstallScript MSI projects).

Project: For InstallScript MSI projects, tis setting pertains only to root-level features. If a subfeature should be installed to the target system, use the Required Features setting to make the subfeature a required feature of the parent feature. The value for the parent feature's Required setting must be Yes.

1706

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting Release Flags Project Type Basic MSI, InstallScript MSI Description If you want to use release flags to be able to selectively include and exclude this feature from different builds of your installation, enter one or more release flags to identify this feature. Separate multiple flags with a comma. For more information, see Assigning Release Flags to Features. Condition Basic MSI, InstallScript MSI, MSI Database, Transform This setting lets you specify one or more conditional install levels. If a condition is true on the target system, the feature is given the corresponding install level. At run time, the features install level value is compared to the value of the global public property INSTALLLEVEL to determine whether the feature should be selected for installation by default. To specify one or more conditions, click the ellipsis button (...) in this setting. For more information, see Setting Feature Conditions. When you add a condition, InstallShield adds a new row to the grid of feature settings. The new row shows the install level for the feature, as well as the corresponding conditional statement that you added. Comments Basic MSI, InstallScript, InstallScript MSI, InstallScript Object InstallScript, InstallScript MSI, InstallScript Object Enter comments to help you track the changes you make to a feature, or for any future reference. The features comments are stored only in the project file and are not used in the installation at any time. If one or more other features must be installed whenever the selected feature is installed, click the ellipsis button (...) and specify the other required features. For more information, see Using the Required Features Setting. Specify the status text for the feature. Your end users will see this text in the uppermost line of the progress indicator during the transfer of this feature. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Required Features

Status Text

InstallScript, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

1707

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting File Need Project Type InstallScript, InstallScript Object Description Indicate the severity of allowing end users to deselect the feature in a Custom setup type. Available options are:

StandardEnd users should be allowed to deselect the feature; no error messages are displayed. Highly RecommendedEnd users should be advised that the feature is highly recommended. CriticalEnd users should be warned that the feature should not be deselected.

Your script can read this setting using the InstallScript function FeatureGetData with the FEATURE_FIELD_FILENEED constant. Depending on the return value, your script can display a message to alert the end user if a critical or highly recommended feature is deselected. Include in Build InstallScript, InstallScript Object Specify whether the feature should be included in your release when you build it. Note that in the Features panel of the Release Wizard, you can override this setting for any of the features in your project. Password InstallScript If you want to password-protect the feature, enter a password. You can specify a different password for each feature. You can also specify a password for the entire installation (in the Media Password setting on the Setup.exe tab in the Releases view). Note that the default script does not automatically validate a features password. You must modify the script to validate the password by inserting a dialog function (such as AskText) that prompts the end user to enter a password, and then calling the FeatureValidate function from within the script.

Caution: Experienced hackers may be able to extract this password from your release. If security is a critical issue, it is recommended that you not depend solely on this password protection functionality.

1708

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting Encryption Project Type InstallScript Description Specify whether the files for the feature should be encrypted. Encrypted files can be read only by the InstallScript engine (or by an experienced hacker). If you plan to offer end users the option of running your product directly from the distribution media, do not encrypt the relevant files. InstallShield decrypts files only during installation to the end users hard drive. Encryption is not the same as password protection. Encrypting a file scrambles it so that if someone opens it in a text editor, they cannot read strings and other data to get confidential information about your product. Password-protecting a feature prevents it from being installed by someone who does not know the password. You can encrypt a features files or you can passwordprotect the featureor, for maximum security, you can do both. If a features files are encrypted but neither the feature nor the release is password-protected, the feature can be installed by anyone who obtains your distribution media (or a copy). If a feature is password-protected but its files are not encrypted, someone can open the files in a text editor and read confidential informationpossibly including the feature's password. CD-ROM Folder InstallScript, InstallScript Object Specify the folder in the disk image in which the features files should be placed if the CD_ROM Folder(s) option is selected in the Media Layout panel of the Release Wizard, or if the features check box is selected on the Custom Media Layout panel of the Release Wizard. If either of these conditions are met but no folder is specified, the feature is placed in the root of the disk image or, if it is a subfeature, in the same folder as its parent feature. Folder names on CD-ROMs should conform to ISO 9660 (Level 1) standards. That is, folder names should be no more than eight characters long (with no extensions), and use only the characters A-Z, 0-9, and _ (underscore). By putting a folder structure on your CD-ROM, you can allow your product to be run from the CD-ROM. The folder structure on the CD-ROM does not need to mirror the folder structure that would be installed to a hard drive. All that is necessary is that your product be able to work with either folder structure. This functionality is typically used only for CD-ROM distribution; for other distribution media, you usually want to compress all features into .cab files.

Project: For InstallScript Object projects, the value of this setting has no effect on where the objects files are placed when the object is included in an installation project.

InstallShield 2010 User Guide

ISP-1600-UG00

1709

Chapter 43: View Reference Organization View

Table 43-8: General Settings for a Feature (cont.) Setting Included Components Project Type InstallScript, InstallScript Object Description This read-only setting lists the components that are associated with the feature. It is essential to an installation that components be associated with features; otherwise, no files will be installed. Use the Setup Design view to associate components with features. For more information, see Component-Feature Associations. GUID InstallScript, InstallScript Object Enter a GUID that uniquely identifies this feature. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The feature GUID identifies the feature in the installations log file; if you change a features GUID in an upgrade, the InstallScript engine treats it as a new feature rather than an update to an existing feature.

Feature Events
When you select a feature in the Features view or the Setup Design view of an InstallScript, InstallScript MSI, or InstallScript Object project, the following settings are available in the Feature Events area:
Table 43-9: Feature Event Settings for a Feature Setting OnInstalling Project Type InstallScript, InstallScript MSI, InstallScript Object Description This setting lets you specify an InstallScript function to be called before this feature is installed. Select the desired function from the list. Only exported functions appear in the list. Exported functions have this prototype:
export prototype FunctionName( );

OnInstalled

InstallScript, InstallScript MSI, InstallScript Object

This setting lets you specify an InstallScript function to be called after this feature is installed. Select the desired function from the list. Only exported functions appear in the list. Exported functions have this prototype:
export prototype FunctionName( );

OnUninstalling

InstallScript, InstallScript MSI, InstallScript Object

This setting lets you specify an InstallScript function to be called before this feature is uninstalled. Select the desired function from the list. Only exported functions appear in the list. Exported functions have this prototype:
export prototype FunctionName( );

1710

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-9: Feature Event Settings for a Feature (cont.) Setting OnUninstalled Project Type InstallScript, InstallScript MSI, InstallScript Object Description This setting lets you specify an InstallScript function to be called after this feature is uninstalled. Select the desired function from the list. Only exported functions appear in the list. Exported functions have this prototype:
export prototype FunctionName( );

Run-Time Settings
When you select a feature in the Features view or the Setup Design view of an InstallScript, InstallScript MSI, or InstallScript Object project, the following settings are available in the Run-Time Settings area:
Table 43-10: Run-Time Settings for a Feature Setting FTP Location Project Type InstallScript, InstallScript MSI, InstallScript Object Description If you want to associate an FTP location with the feature, enter the FTP address in the following format:
ftp.domain.com

The address that you enter can be accessed from within the script using the FeatureGetData function with the FEATURE_FIELD_FTPLOCATION constant. HTTP Location InstallScript, InstallScript MSI, InstallScript Object If you want to associate an HTTP address with the feature, enter the HTTP address in the following format:
http://www.domain.com

The address that you enter can be accessed from within the script using the FeatureGetData function with the FEATURE_FIELD_HTTPLOCATION constant. Miscellaneous InstallScript, InstallScript MSI, InstallScript Object If you want to associate a text string with the feature, enter the text string. The text string that you enter can be accessed from within the script using the FeatureGetData function with the FEATURE_FIELD_MISC constant.

Components View
Project: The Components view is available in the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1711

Chapter 43: View Reference Organization View

InstallScript Object Merge Module MSI Database MSM Database Transform

Components are installation-authoring elements that help you organize similar application data, such as files, registry entries, and shortcuts, into logical groups. Unlike features, components constitute the developers view of a project. You can create and modify components in the Setup Design view (for installation projects) or the Components view.

Tip: The Components explorer contains nodes for the files, registry data, and so on for each component. If you do not want to see the subordinate nodes when they do not contain data, right-click the top-level explorer and then click Show Only Nodes with Data. When this command is selected, only the nodes that contain data are displayed.

Note: To improve performance, the list displayed in the Files view truncates when there are more than a predefined number of files in a dynamically linked file with subfolders. **List Truncated** appears as the first item in the file list when this occurs. All files contained in the subfolders are built into your project.

Component-Feature Relationships
Components are associated with features in the Setup Design view. For more information, see Associating New Components with Features.

Component Settings
For descriptions of each of the settings that are displayed when you click a component, see Component Settings.

Advanced Settings for a Component


For information about advanced settings that you can configure for a component, see Advanced Settings for a Component.

Component Settings

Project: Component settings are available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database

1712

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

MSM Database Transform

The settings in the Components view (and the component settings in the Setup Design view) are organized into the following main categories:

General Target Machine .NET Settings Run-Time Settings

InstallShield 2010 User Guide

ISP-1600-UG00

1713

Chapter 43: View Reference Organization View

General
When you select a component in the Components view or the Setup Design view, the following settings are available in the General area:
Table 43-11: Component Settings Setting Destination Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module, MSI Database, MSM Database, Transform Description Select the folder on the target system into which the components files should be installed, or click the ellipsis button (...) to select or create a directory. To install the files to the products default destination folder, select the appropriate location, depending on which project type you are using:

[INSTALLDIR]in a Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, or Transform project <TARGETDIR>in an InstallScript or InstallScript Object project

Project: In Basic MSI, InstallScript MSI, MSI Database, and Transform projects, if you want the destination to be configurable at run time, the destination folder that you select must be a public property (containing all uppercase letters). Note that in some project types (Basic MSI, InstallScript MSI, MSI Database, and Transform), you can also set the destination folder of a components feature. For information on the effects of setting the destination for a feature as well as its components, see Component Destination vs. Feature Destination. In InstallScript and InstallScript Object projects, if you are installing files to WINSYSDIR64, you must first disable file system redirection using WOW64FSREDIRECTION. Otherwise, files being installed to WINSYSDIR64 are incorrectly redirected to the 32-bit Windows system folder. Since some Windows functionality that could be used by the installation requires that redirection be enabled to work, Windows documentation recommends that you disable redirection only for as long as necessary. It is recommended that you then enable file system redirection as soon as you have completed installing the necessary files to WINSYSDIR64. For more information, see Disable and Enable. Destination Permissions Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform To set permissions for the components destination folder, click the ellipsis button (...) in this setting.

Note: Unless you need to designate specific permissions, it is recommended that you leave this setting undefined so that normal user permissions can apply to the destination folder.

1714

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Component Code Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module, MSI Database, MSM Database, Transform Description Enter a GUID that uniquely identifies this component. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting.

Shared

Project: The behavior of this setting varies slightly, depending on whether the project type is Windows Installer based (Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, or Transform project) or InstallScript based (InstallScript or InstallScript Object project).

For a Windows Installerbased projectSpecify whether you want to mark this components key file as shared. If the installation installs the key file and Yes is selected for its components Shared setting, a reference count is created in the registryif it does not already existand incremented. For an InstallScript-based projectSpecify whether you want to mark this component as shared. If the installation installs the components files and Yes is selected for the components Shared setting, a reference count for each of the components files is created in the registryif it does not already existand incremented.

Note that the installation increments any existing reference count for any file in a component regardless of whether you mark the component as shared. However, if no reference count exists, the installation does not create one unless you select Yes for this Shared setting. For more information, see Managing Reference Counts for Shared Files. Permanent Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Specify whether you want to mark this component as permanent. If you select Yes, none of the component's data (such as files, registry entries, and shortcuts) are removed from the target system when the component's feature is uninstalled. Validation rules require that you select Yes for any component being installed to [SystemFolder].

Note: If you are installing a font, it is recommended that you select Yes.

InstallShield 2010 User Guide

ISP-1600-UG00

1715

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Uninstall Project Type InstallScript, InstallScript Object Description Specify whether the components files, registry entries, and other data should be uninstalled when the components feature is uninstalled. This setting is useful for preventing the uninstallation of files that may be used by other products. If the components files are not used by other products, the Uninstall setting should typically be set to Yes. Condition Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform This setting lets you enter a statement that the installation must evaluate before setting up your components data on the target system. The component is not installed if its condition evaluates to false. However, the component is installed or advertised if its condition evaluates to true, assuming that its feature is selected for installation. To create a condition for the component, click the ellipsis button (...) in this setting. For more information, see Configuring Component Conditions. Remote Installation Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Indicate the default install state for the component. Valid options are:

Favor SourceThe files in this component are set to be run directly from the source medium, such as a CD-ROM or a network location, by default. Favor LocalThe files in this component are set to be installed on the target system by default. OptionalThe component uses the Remote Installation setting of its feature.

For more information, see Setting a Components Remote Installation Setting.

Caution: If the component contains a Windows service, select the Favor Local option. Although an end user could change the features installation state through the CustomSetup dialog, the Windows Installer cannot install a service remotely.

1716

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting COM Extract at Build Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify whether you want InstallShield to extract COM data from this components key file at build time. Available options are:

NoInstallShield does not extract the COM information at build time. YesInstallShield extracts the COM information every time that you build a release. If your COM server's interfaces are subject to change, this option is preferable to maintaining statically acquired or provided data in the COM Registration area under the components Advanced Setting area.

Select the No option if you want InstallShield to register the file according to the information that is statically contained in the COM Registration area under the components Advanced Setting area. This advanced setting stores information about the files COM classes, ProgIDs, and so on, that were either extracted in the Component Wizard or entered manually in the Advanced Setting area.

Best Practice: If you have marked a file for this component as self-registering, you should select No for the COM Extract at Build setting. Note, however, that calling self-registration functions is a violation of setup best practices. To learn more about COM registration, see Extracting COM Registration at Build Time.

InstallShield 2010 User Guide

ISP-1600-UG00

1717

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Languages Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description The Languages setting for a component enables you to specify the languages for which the component is intended, for use in build-time filtering. By default, components are language independent, meaning that none of the components data (such as files and registry entries) are specific to a particular language.

Project: In InstallScript and InstallScript Object projects, if a language is not selected in the General Information view of a project, it is not listed as one of the available languages for the projects components. To designate that the component is intended for only certain languages, click the ellipsis button (...) in this setting. The Languages dialog box opens, enabling you to select the appropriate languages for the component. For more information, see Marking Components as Language Dependent.

Tip: To learn how to specify which language-dependent components are installed at run time, see Installing Components Based on Language. Reevaluate Condition Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Specify whether you want the Windows Installer to reevaluate the components condition when the product is reinstalled. This setting is useful for authoring transitive components components that can replace each other when a product is reinstalled, for example, after an operating system upgrade. For more information, see Reevaluating Component Conditions During Reinstallation.

1718

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Never Overwrite Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Specify whether you want your installation to avoid overwriting a file if it already exists on the target system:

If you select Yes, the fileif it exists on the target system is never overwritten, regardless of the file version. Selecting Yes for this setting overrides file versioning rules. If you select No and the file version on the target system is newer than the version being installed, the file on the target system is not overwritten. However, if the version being installed is newer, the file on the target system is overwritten.

Important: The Windows Installer checks for the existence of the components key file when determining if it should install the component. If the components key file does not exist on the target system, Windows Installer installs the component as if No were selected for the Never Overwrite setting. For more information on how the Windows Installer determines whether a component should be installed, see Overwriting Files and Components on the Target System. 64-Bit Component Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Specify whether you want to mark this component as 64 bit. If a 64-bit component is included in your installation, the installation cannot be run on 32-bit machines. If the component is 64 bit and it is replacing a 32-bit component, be sure to specify a new GUID for the component in the Component Code setting. If you want to install data to 64-bit file and registry locations, the component must be marked as 64-bit. Note that this is also required for self-registration of 64-bit COM servers. Note that 64-bit support requires Windows Installer 2.0 or later. For more information about 64-bit support, see Targeting 64-Bit Operating Systems.

InstallShield 2010 User Guide

ISP-1600-UG00

1719

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Source Location Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify the name of a subfolder where the components files should be stored in the source disk images if the components files are not compressed. When you build a release, InstallShield copies the components files to this subfolder in your disk image. This setting enables you to create unique folders for each components files, which is necessary if you have different files with the same name in more than one component. If you do not specify a value for Source Location setting, you run the risk of overwriting files with the same name when you build an uncompressed release. This setting does not require a value, and in most cases, may be left blank. If you do enter a value, it must be a valid Windows folder name. For more information, see Installing Files of the Same Name. Disable Registry Reflection Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Registry reflection keeps the 32-bit registry view and the 64-bit registry view in sync on the target machine. To enable registry reflection for all existing and new registry keys that are affected by the selected component, select No, which is the default value. To disable registry reflection on all existing and new registry keys that are affected by this component, select Yes. Windows Installer calls the RegDisableReflectionKey function on each key being accessed by the component. This function disables registry reflection for the specified key. Disabling reflection for a key does not affect reflection of any subkeys.

Note: Only 64-bit systems with Windows Installer 4 or later support this setting. In addition, only Windows Vista and later and Windows Server 2008 and later support it. Other systems ignore this setting. For more information about registry reflection, see Registry Reflection in the MSDN Library.

1720

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Multiple Package Shared Component Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description To enable shared component patching for the selected component, select Yes; otherwise, select No, which is the default value. If this multiple-package sharing feature were enabled in at least one package that is installed on the target system, Windows Installer 4.5 treats the component as shared among all of those packages. If a patch that shares this component is uninstalled, Windows Installer can continue to share the highest version of the component's files on the system. The purpose of this multiple-package component sharing is to prevent files from being downgraded during the uninstallation of a patch that contains a component that is shared with one or more other installed packages. The intent is to keep the highest version of the component's files present on the machine after uninstallation of that patch. The following scenario helps to illustrate the behavior:


Multiple Package Shared Component

Install product A with shared file 1.0.0.0. Install product B with shared file 1.1.0.0. Apply an uninstallable patch for product A with shared file 1.2.0.0. Uninstall the patch for product A.

Either of the following results may occur:

If the value of the Multiple Package Shared Component setting is Yes for either product A or product B and if Windows Installer 4.5 is present, uninstalling the patch from product A could restore version 1.1.0.0 to the target system. If the value of this setting is No for product A and product B, the file would be downgraded to version 1.0.0.0, even though product B used 1.1.0.0. As a result, if product B requires version 1.1.0.0, product B may no longer work properly.

Note: If the DisableSharedComponent policy is set to 1 on a target system, Windows Installer ignores this setting for all packages. Windows Installer 4.0 and earlier ignore this setting. To learn more about this setting, see Specifying Whether Shared Component Patching Should Be Enabled for a Component.

InstallShield 2010 User Guide

ISP-1600-UG00

1721

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Uninstall Superseded Component Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description This setting determines how Windows Installer handles the selected component during installation of a superseding patch under certain conditions. It is designed to prevent the components feature from being changed to an advertised state if a patch that is installed or uninstalled changes the component count for the feature. If the feature state changes to advertised, none of the features remaining components can be maintained. To specify that this component in the current patch should be flagged for uninstallation in order to avoid leaving this component orphaned on the target system after a superseding patch is applied, select Yes. If a subsequent patch is installed and it is flagged to supersede the first patch (that is, if Yes is selected in the Supersede column for the patch's family on the Sequence tab for the patch configuration in the Patch Design view), Windows Installer can unregister and uninstall this component if appropriate. If you select No, the superseding patch can leave an orphaned component on the target system. The default value for this setting is No. If you select No and the superseded patch installs a component for the product but the superseding patch removes that component, the component's feature state is changed to advertised, and it is not reinstalled. In addition, none of the remaining components associated with that feature can be maintained. If you select Yes, Windows Installer unregisters and uninstalls the component when the superseding patch is applied.

Note: Windows Installer 4.5 includes support for this Uninstall Superseded Component setting. Earlier versions of Windows Installer ignore it.

Tip: Setting the MSIUNINSTALLSUPERSEDEDCOMPONENTS property has the same effect as selecting Yes for the Uninstall Superseded Component setting of all components in the patch. REG File to Merge at Build Basic MSI, InstallScript MSI, Merge Module If you want to merge a .reg file with the components registry entries at build time, enter the complete path for the .reg file. As an alternative, you can click the ellipsis button (...) in this setting to browse to the .reg file.

1722

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Self-Register Project Type InstallScript, InstallScript Object Description Specify whether the components files are self-registering. (A selfregistering file is an OLE server that can place information about itself in the registry so that it is seen by other OLE applications. Such a file can also remove this information from the registry when it is uninstalled.)

Important: If you select Yes but one or more files in the component are not self-registering, an error occurs when the installation runs.

Project: InstallScript and InstallScript Object projects support self-registration of .dll files, .exe files, and type librariesthat is, .tlb and .olb files. In Basic MSI and InstallScript MSI projects, self-registration is set at the file level, rather than the component level. Potentially Locked InstallScript, InstallScript Object Specify whether already-installed versions of the components files may be lockedthat is, in use by another productduring installation. If a file is locked during installation or uninstallation, and that file is in a component whose Potentially Locked setting is set to Yes, the file operation is automatically performed after restart. If a file is locked during installation or uninstallation, and that file is in a component whose Potentially Locked setting is set to No, the OnFileLocked event handler function is called. (The default code for this function automatically performs the file operation after restart.) Note that InstallShield always treats shared files as potentially locked files. Compressed InstallScript, InstallScript Object Specify whether you want to compress the files in the component if its files are built into a .cab file at build time. This setting has no effect if you select the check box for the components feature in the Custom Media Layout panel of the Release Wizard.

InstallShield 2010 User Guide

ISP-1600-UG00

1723

Chapter 43: View Reference Organization View

Table 43-11: Component Settings (cont.) Setting Overwrite Project Type InstallScript, InstallScript Object Description This setting indicates the installations behavior when it encounters an existing file with the same name as the one being installed; you can selectively replace each file in a component based on its version number or modification date. To change the behavior, click the ellipsis button (...) in this setting. The Overwrite dialog box opens, enabling you to specify the appropriate runtime behavior.

Tip: If the component consists of filessuch as data and configuration filesthat end users may have updated, consider selecting the Never Overwrite option. Files that are associated with a component that has the Never Overwrite option selected for the Overwrite setting are logged for uninstallation; that is, even if such a file is not copied to the target system, because a file with the same name already exists there, that file is removed when the application is uninstalled. To prevent an already existing file from being uninstalled, select Yes for the Shared setting of the files component. Difference InstallScript, InstallScript Object Specify whether you want InstallShield to include the components files in a release when you are building a differential release. (When you define a differential release, you specify one or more existing releases to which the current project should be compared when the new differential release is built.) Available options are:

Include If AppropriateInstallShield excludes a file in this component from the differential release if the same file (with the same date, time, size, and attributes) exists in each of the specified comparison releases. This is the default option. Include AlwaysInstallShield includes all of the components files in the differential release, even if the same file (with the same date, time, size, and attributes) exists in each of the specified comparison releases.

Link Type

InstallScript, InstallScript Object

Specify whether the components file links are static or dynamic and, if the latter, how the links are determined at the time of the release build. Enter comments about this component. Your comments are saved in the project file for your reference and are not used in the installation at any time.

Comments

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

1724

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Target Machine
When you select a component in the Components view or the Setup Design view of an InstallScript, InstallScript MSI, or InstallScript Object project, the following settings are available in the Target Machine area:
Table 43-12: Component Settings Setting Operating Systems Project Type InstallScript, InstallScript MSI, InstallScript Object Description If a component is specific to one or more operating systems, use this setting to indicate those operating systems. If the target machines operating system does not match one of the operating systems that are specified for this setting, the component is not installed. By default, components are operating system independent, meaning that none of the components data are specific to certain operating systems. To change the value of this setting, click the ellipsis button (...) in this setting. Platform Suite(s) InstallScript, InstallScript Object If a component is specific to one or more platform suites, use this setting to indicate the suites. If you specify more than suite, you can indicate whether all or any of the suites must be present on the target machine in order for the component to be installed. By default, components are platform suite independent, meaning that none of the components data are specific to a particular platform suite.

Tip: This setting provides an additional layer of filtering beyond the Operating Systems setting. Select platform suites for the Platform Suite(s) setting only if necessary, and be sure to select only those platform suites that are required for the proper functioning of your application. For example, if a component should be installed on both the Home and Professional editions of Windows XP, you can leave Suite Independent as the value for this setting; selecting Windows XP for the Operating Systems setting encompasses both editions. You can control the platform suites that your installation supports at run time by calling the FeatureFilterOS function. In the OnFilterComponents event handler, the framework typically calls this function with the platform suites that match the target system so that only the appropriate components are installed. By calling FeatureFilterOS, you can override this default behavior to install or prevent the installation of components based on any platform suite criteria that you specify.

InstallShield 2010 User Guide

ISP-1600-UG00

1725

Chapter 43: View Reference Organization View

.NET Settings
When you select a component in the Components view or the Setup Design view, the following settings are available in the .NET Settings area:
Table 43-13: Component Settings Setting .NET COM Interop Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify whether you want to use COM interoperation (the ability to call .NET objects from COM) for the component. For example, if you have a Visual Basic .NET class library that defines the ComClass attribute and contains at least one public (COM-callable) function, you can select Yes for this setting; InstallShield extracts the COM Interop information at build time and adds it to the Registry table of your .msi database. At run time, registry entries that allow COM objects to call your .NET assembly are created on the target system.

Note: This setting is applicable only if the components key file is a .NET assembly. .NET Precompile Assembly Basic MSI, InstallScript MSI, Merge Module Specify whether you want the installation to create a native image from the .NET assembly at run time and install it to the native image cache on the target system. This allows the assembly to load and execute faster, because it restores code and data structures from the native image cache rather than from just-intime (JIT) compilation. Specify whether the components files should be installed as local .NET assemblies or not installed as assemblies.

.NET Assembly

InstallScript, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

.NET Scan at Build

Project: The functionality for this setting depends on whether the project type is Windows Installer based (Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, or Transform project) or InstallScript based (InstallScript or InstallScript Object project).

For a Windows Installerbased projectIndicate whether you want the key file of this component to be scanned for .NET dependencies, properties, or both at build time. For an InstallScript-based projectIndicate whether you want the files of this component to be scanned for .NET dependencies at build time.

For more information, see Scanning for .NET Dependencies and Properties.

1726

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-13: Component Settings (cont.) Setting .NET Application File Project Type Basic MSI, InstallScript MSI, Merge Module Description This setting is used when this component is scanned at build time (based on the .NET Scan at Build setting) or by the Static Scanning Wizard. The scanner uses this settingalong with the component destinationto determine the value of the File Application setting for the assembly. For optimal advertising and repair, select the .NET executable file that uses the assembly in this component. The key file of the component is displayed in this setting if the .NET Scan at Build setting is set to Dependencies and Properties or Properties. You can select any other key or portable executable file in the project.

Note: This setting is applicable only if the components key file is a .NET assembly. The value for this setting is ignored if the file that is selected is not a .NET assembly file. .NET Installer Class Basic MSI, InstallScript MSI, Merge Module

Note: This setting is applicable only if the components key file is a .NET assembly that contains a class that is derived from System.Configuration.Install.Installer. If the assemblys Install, Commit, Rollback, and Uninstall methods should be called at the appropriate times at run time, select Yes.

.NET Installer Class Arguments

Basic MSI, InstallScript MSI, Merge Module

To specify arguments that should be passed to the .NET installer class, click the ellipsis button (...) in this setting. The .NET Installer Class Arguments dialog box opens, enabling you to specify arguments for the Install, Commit, Rollback, and Uninstall methods. For sample code, see Reading Properties Passed to the .NET Installer Class.

Note: This setting is applicable only if the components key file is a .NET assembly.

InstallShield 2010 User Guide

ISP-1600-UG00

1727

Chapter 43: View Reference Organization View

Run-Time Settings
When you select a component in the Components view or the Setup Design view of an InstallScript or InstallScript Object project, the following settings are available in the Run-Time Settings area:
Table 43-14: Component Settings Setting FTP Location Project Type InstallScript, InstallScript Object Description If you want to associate an FTP location with the component, enter the FTP address. The location that you enter cannot be accessed from within a script. Note that this same setting is also available for features; however, the location that you specify for the feature setting can be accessed from within a script. HTTP Location InstallScript, InstallScript Object If you want to associate an HTTP address with the component, enter the HTTP address. The location that you enter cannot be accessed from within a script. Note that this same setting is also available for features; however, the location that you specify for the feature setting can be accessed from within a script. Miscellaneous InstallScript, InstallScript Object If you want to associate a text string with the component, enter the text string. The location that you enter cannot be accessed from within a script. Note that this same setting is also available for features; however, the location that you specify for the feature setting can be accessed from within a script.

Advanced Settings for a Component

Project: The Advanced Settings area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Advanced Settings area under a component in the Components view (and in the Setup Design view) enables you to fulfill installation requirements for special component types. For example, when you copy an .ocx file to the target system, you must register its classes, ProgIDs, and type libraries so that the files methods can be properly accessed. Advanced settings use Windows Installers built-in functionality for registering COM servers; setting up ODBC drivers, data sources, and translators; installing or controlling Windows services; and registering a file association.

1728

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

By specifying the advanced settings, you can publish your component and register COM servers, file extension servers, and MIME types. If the component is selected, an advanced setting is made on the target system when the component is installed or advertised. That way, the file is ready to execute once it is installed. Publishing componentsa type of advertisingis accomplished through the Publishing advanced setting.

Categories of Advanced Settings


The Advanced Settings area under a component in the Components view (and in the Setup Design view) is organized into the following main categories:
Table 43-15: Categories for the Advanced Settings of a Component Category Application Paths Description Use this advanced setting to specify the paths to your components files and folders. When you run your installation, it will create an App Paths key for your component under the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ProgramName.exe. Assembly Use this advanced setting to install a Win32 or .NET assembly when its component is installed. In the COM Registration area, you can enter or modify registration information for the COM server that you have set as your components key file. The COM Registration advanced setting is intended to replace self-registration, which is a violation of Setup Best Practices. The recommended way to specify file registration is to use the Component Wizard and have it automatically extract the necessary information for you. Use the COM Registration explorer only if you need to make advanced modifications. File Types This advanced setting registers information about a file type on the target system when the component is installed or advertised. Use the Services area to install, configure start, stop, and uninstall Windows services during installation and uninstallation. Use this advanced setting to publish your component. Publishing is a type of advertising (just-intime installation) in which no user-interface elements are created for the component during installation, but the component can be installed through the Add or Remove Programs or when an installed component requests the published component from the installer. The Device Driver advanced setting enables you to specify whether the current component includes a device driver, the type of driver, and the order in which the projects device drivers (not just the current components device drivers) should be installed. The Other Data advanced setting lists various Windows Installer tables that are related to the component.

COM Registration

Services

Publishing

Device Driver

Other Data

Application Path Settings

Project: The Application Paths area for a component is available in the following project types:

InstallShield 2010 User Guide

ISP-1600-UG00

1729

Chapter 43: View Reference Organization View

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The following columns are available in the Application Paths area under the Advanced Settings node of the Components view and the Setup Design view:
Table 43-16: Assembly Settings Column Check Box Description To add an application path for the component, select the check box for the executable file whose application path you want to define. This read-only column shows the executable files that are in the selected component. Enter a sequence of directories that the executable file should use as a search path for its DLLs (whether linked to the executable at build time, or loaded with the LoadLibrary API). Separate multiple directories with a semicolon (;). Do not use hard-coded paths, such as C:\MyDir, for one of your paths. Instead, use Windows Installer folder properties in square brackets, as in [INSTALLDIR]MyDir and [CommonFilesFolder]MyProgram, or the name of the component after a dollar sign, such as [$ComponentName]. The Windows Installer resolves these values and writes the resulting locations to the application path key.

File

Application Path

Assembly Settings

Project: The Assembly area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

1730

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

The following settings are available in the Assembly area under the Advanced Settings node of the Components view and the Setup Design view:
Table 43-17: Assembly Settings Setting Manifest Description For a .NET assembly, this setting is automatically set to the first .exe or DLL file in the component. For a Win32 assembly, this setting is automatically set to the first file in the component with the .manifest extension. The file name of the manifest is the application executable name, followed by the .manifest extension. This setting should be left blank if Global Assembly Cache is selected for the assembly's File Application setting. The Manifest setting cannot be deleted. File Application For a .NET assembly, this setting lets you specify whether to install the assembly in the global assembly cache. Select the appropriate file to install the assembly in your application's private cache, or select Global Assembly Cache to install the assembly in the global assembly cache. For a Win32 assembly, this setting lets you specify whether to install the assembly privately for the selected .exe or to install the assembly to the global assembly cache. If you select Global Assembly Cache, the assembly can be used by any .NET application on the target system. The File Application setting cannot be deleted. The value of this setting affects the components Destination setting. If the File Application setting is set to Global Assembly Cache, the components Destination setting is also set to Global Assembly Cache. For optimal advertising and repair, select the executable file that uses the assembly in this component.

Note: To install a .NET assembly to the global assembly cache, the assembly must meet certain criteria. For details, consult Microsoft's .NET documentation. To install a Win32 assembly to the global assembly cache, your files must be signed and have catalog (.cat) files. For details, see Creating Signed Files and Catalogs in the Platform SDK help.

InstallShield 2010 User Guide

ISP-1600-UG00

1731

Chapter 43: View Reference Organization View

Table 43-17: Assembly Settings (cont.) Setting Properties Description Enter the property names and values. To create a new entry, right-click in the grid and click New. For a Win32 assembly, you must enter values for the following properties: type, name, version, language, publicKeyToken, and processorArchitecture. For a private .NET assembly, you must enter values for the following properties: Name, Version, and Culture. For a global .NET assembly, you must enter values for the following properties: Name, Version, Culture, and PublicKeyToken. InstallShield adds the property name and value that you enter to the MsiAssemblyName table of your Windows Installer database. You can view the records in this table using the Direct Editor.

Note: The property and values that you enter for your assembly must match the information in the assemblys manifest file. If they do not match, the assembly might be left on the target system when your product is uninstalled.

COM Registration Settings

Project: The COM Registration area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The COM Registration area under the Advanced Settings node of the Components view and the Setup Design view is organized into the following categories:

COM Classes ProgIDs Type Libraries

1732

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

COM Classes
When you select a COM class in the COM Registration area of the Components view or the Setup Design view, the following settings are available:
Table 43-18: COM Class Settings Setting ProgID Description Select a ProgID for this COM class from the list of ProgIDs created for this COM server. You can also create a ProgID by typing a new name; if you do this, InstallShield adds the new ProgID under the ProgIDs node. File Type Mask Enter the file type mask in the format offset, cb, mask, value: offset, cb, mask, value

offsetThe position, in bytes, from the beginning of the file, indicating where the byte range begins. Number of bytes from the end of the file if the offset value is a negative integer. cbThe number of bytes in the file, starting from the offset value, that will be used to perform a logical AND operation with the mask. maskA value that is used to perform a logical AND operation with the bits in the file so that the result can be compared with a specified value (the next entry). If you leave this value empty, it is assumed to be all ones. valueThe bytes that will be compared with the result of a logical AND operation between the mask and the byte range in a file in order to determine the file's class ID.

A file type mask is part of a pattern registered under HKEY_CLASSES_ROOT\FileType\CLSID\pattern. Windows APIs such as OleCreateFromFile and GetClassFile can retrieve a class ID for a file by comparing information in this key to the bytes in the file. For example, 0,4,FFFFFFFF,AABBCCDD would mean that the first four bytes in the file must be AA BB CC DD for the system to use this components class ID for a specified file. You can specify more than one mask that the file has to match. Separate multiple patterns with a semicolon (;). When the installation creates these keys, the subkeys for each pattern are automatically numbered sequentially starting with the number 0. Icon File Enter the fully qualified path to the file that contains the icon associated with this COM class, or click the ellipsis button (...) in this setting to browse to the path. You can specify an .ico, .exe, or .dll file. An icon will be extracted from the file for you if you browse for an executable file or DLL and select a specific icon. Icon Index If there is more than one icon resource in the file, enter the index for the appropriate icon. A nonnegative integer refers to the order of the icon resources in the executable file. For example, 0 is for the first icon in the file, 1 for the second, 2 for the third, and so on. Use a negative number to refer to a specific resource ID. For example, the icon index -12 points to the icon with a resource ID of 12.

InstallShield 2010 User Guide

ISP-1600-UG00

1733

Chapter 43: View Reference Organization View

Table 43-18: COM Class Settings (cont.) Setting AppID Description Select an AppID for this DCOM or COM+ class from the list of AppID names that you have already created for this file's registration. An AppID is a GUID that is registered under HKEY_CLASSES_ROOT\AppID used for grouping all of the security and configuration options of distributed COM objects. To create a new AppID, you need to use the Direct Editor: Navigate to the AppID table and enter the information for your new AppID. Once you have created an AppID, you can select it from the list in this setting. To permanently delete an AppID, delete its row in the AppID from within the Direct Editor. Description Enter a description for this COM class. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Relative Path Specify whether you want to register a relative path to the file under its class ID. Available options are:

NoThe installation registers the fully qualified path to the file under its class ID. Then, when any client application instantiates an object from this class, the system always points to the registered COM server. This is the default option. YesThe installation registers only the name of the file without any path. Doing so allows you to install side-by-side components, meaning that the operating system uses the copy of the COM server in the current directory and that other applications can maintain separate copies of the file in their respective folders.

Note: If the path is relative and the file is not in the systems path, the operating system will not be able to find the class when a client attempts to create an object outside of the server's current directory.

When you select a LocalServer32, LocalServer, or InprocServer32 context type under a COM class in the COM Registration area of the Components view or the Setup Design view, the following settings are available:
Table 43-19: COM Class Context Settings Setting Default Inproc Handler Description Select the InprocHandler value for this LocalServer or LocalServer32 context type. Enter the argument that OLE will use when calling this COM server.

Argument

1734

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

ProgIDs
When you select a ProgID in the COM Registration area of the Components view or the Setup Design view, the following settings are available:
Table 43-20: ProgID Settings Setting COM Class Description Select the COM class, if any, to which this ProgID refers. If you later change the class ID (CLSID) for the COM class, you will need to select it again from the list to restore the association. Description Enter a description of this ProgID. The description is registered as the default value for the ProgID under the registry key HKEY_CLASSES_ROOT\class.object when this component is installed. When the user right-clicks a file associated with your file extension and then clicks Properties, the General tab displays the description that you enter here. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Icon File Enter the fully qualified path to the file that contains the icon associated with this ProgID, or click the ellipsis button (...) in this setting to browse to the path. You can specify an .ico, .exe, or .dll file. An icon will be extracted from the file for you if you browse for an executable file or DLL and select a specific icon. Icon Index If there is more than one icon resource in the file, enter the index for the appropriate icon. A nonnegative integer refers to the order of the icon resources in the executable file. For example, 0 is for the first icon in the file, 1 for the second, 2 for the third, and so on. Use a negative number to refer to a specific resource ID. For example, the icon index -12 points to the icon with a resource ID of 12.

InstallShield 2010 User Guide

ISP-1600-UG00

1735

Chapter 43: View Reference Organization View

When you select a version-independent ProgID in the COM Registration area of the Components view or the Setup Design view, the following settings are available:
Table 43-21: Version-Independent ProgID Settings Setting Description Description Enter a description of this version-independent ProgID. The description is registered as the default value for the version-independent ProgID under its root key (HKEY_CLASSES_ROOT\version-independent ProgID) when this component is installed. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Type Libraries
When you select a type library in the COM Registration area of the Components view or the Setup Design view, the following settings are available:
Table 43-22: Type Library Settings Setting Locale ID Description Enter the decimal value of the type library's locale ID. Since type libraries are usually language-neutral, the number zero is the most common language of type libraries. Version Provide the version number of the type library. If this setting is left blank, Windows Installer automatically determines the version of the type library at run time. Windows Installer requires the type library version to be in the format x.y, where x and y are decimal (base-10) integers. Cost Enter the cost that is associated with registering this type library. Use nonnegative numbers only. Enter the number 1 if no specific value is available. Select the destination folder where the help file for this type library will be installed, or click the ellipsis button (...) to select or create a directory. To use the components default destination directory, select [INSTALLDIR]. Description Enter a description of this type library. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Help Path

1736

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

File Type Settings

Project: The File Types area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The File Types area under the Advanced Settings node of the Components view and the Setup Design view is organized into the following categories:

Extension Verbs MIME Type ProgIDs

Extension
When you select an extension in the File Types area of the Components view or the Setup Design view, the following settings are available:
Table 43-23: Extension Settings Setting ProgID Description Select the ProgID that should be registered for this file extension. You can also create a ProgID by typing a new name; if you do this, InstallShield adds the new ProgID under the ProgIDs node. A file types ProgID is an arbitrary string, but it should be unique on the target system. One ProgID naming convention is to append the word file to your extension without a dotthe .ext extension might use the ProgID extfile. Another convention is to name a file-type ProgID after the application used to open the file type, as in SampleApp.Document. MIME Type Select the MIME type, if any, that is associated with this file extension. To create a new MIME type for your extension, right-click its icon and click New MIME Type.

InstallShield 2010 User Guide

ISP-1600-UG00

1737

Chapter 43: View Reference Organization View

Verbs
When you select a verb under a file extension in the File Types area of the Components view or the Setup Design view, the following settings are available:
Table 43-24: Verb Settings Setting Command Sequence Description Enter a sequence number for the command verb. If this file extension has more than one verb associated with it, the sequence numbers determine the order in which the verbs are displayed on the context menu (also known as a right-click menu or pop-up menu). If you do not specify a sequence number, or if more than one verb has the same sequence number, the verbs are listed alphabetically. The first verb in the command sequence is displayed in bold as the default option on the file types context menu. Display Name Enter the text that you want to display for this verb on the context menu that Windows Explorer displays when an end user right-clicks a file with the current extension. For example, to display Open with SampleApp (with an underlined letter O) on the context menu for this file extension, enter &Open with SampleApp. This setting is optional. If you do not specify a display name, the name of the verb as it appears in the Extensions tree is used on the file-types context menu on the target system. Note that if you use one of the canonical verbssuch as open, print, or find, and you do not specify a display name, Windows automatically localizes the verb on each system. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Argument Enter the command-line arguments for this verb. Use %1 in the argument in place of the selected file name. For example, suppose an end user right-clicks C:\File.ext and -p %1 is the argument for the verb, the command-line argument becomes -p C:\File.ext. In some cases, it may be necessary to place quotation marks around the %1 argumentthat is, enter "%1" as the argumentto correctly handle file names that contain spaces.

1738

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

MIME Types
When you select a verb under a file extension in the File Types area of the Components view or the Setup Design view, the following settings are available:
Table 43-25: Mime Type Settings Setting Class ID Description Enter the class ID that is associated with this MIME type. You can use copy (CTRL+C) and paste (CTRL+V) keyboard shortcuts to copy and paste the GUID from another location.

ProgIDs
When you select a ProgID in the File Types area of the Components view or the Setup Design view, several settings are available. For descriptions of each setting, see ProgIDs.

Services Settings

Project: The Services area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Services settings are organized into the following main categories:

Install Settings Control Settings Configure Settings

Tip: You must be familiar with the technical details of your service before you can configure its settings.

InstallShield 2010 User Guide

ISP-1600-UG00

1739

Chapter 43: View Reference Organization View

Install Settings
Use the Install Settings area to specify whether you want the installation to install your service. If the service should be installed, also use these settings to specify information such as the display name and description, as well as when the service should be started.
Table 43-26: Install Settings Setting Enable Service Install Description Specify whether the service should be installed at run time. If you select No for this setting, any values that you entered for the remaining settings in the Install Settings section are deleted from the project. Note that when No is selected for this setting, the remaining settings in the Install Settings section are read-only. Key Name Enter a key name for the service. The key name is a database key; it is not displayed to end users. Enter the name that you want to be displayed in the service control manager for this service. If you leave this setting blank, the services name (that is, the text that is used for the name of your services subnode under the Advanced Settings node) is used. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Description Enter a description of the service. This description is registered on the target system when the service is installed, and it is displayed in the service control managers Description column. It is also displayed in the Description box on the General tab of the services Properties dialog box. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Service Type Select the type of service that you are installing. Available options are:

Display Name

Win32 that runs in its own process Win32 that shares a process

The WIN32_OWN_PROCESS type of service contains the code for only one service. The WIN32_SHARE_PROCESS type of service contains code for more than one service, enabling them to share code. Interact with Desktop Specify whether the service interacts with the desktop. If your service has a user interface, select Yes. If you select Yes, The User Name setting must be left blank, since the service will be installed to run in the built-in LocalSystem account.

1740

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-26: Install Settings (cont.) Setting Start Type Description Specify when to start the service. Available options are:

AutomaticThe service starts automatically when the system starts. On DemandThe service starts when the service is requested through the Service Control Manager. DisabledThe service cannot be started.

Note that some services may support other start types (that is, during operating system initialization or by the operating system loader). However, these options are not available for the Start Type setting because the Windows Installer does not include support for them. Error Control Select the appropriate action that the Service Control Manager should perform if the service fails to start. Available options are:


Abort Install on Failure

Log the error and continue Log the error, display a message, and continue Log the error and restart

Specify whether the entire installation should fail if the service cannot be installed on the target system. The default value is No.

Note: If you select Yes for this setting and end users run the installation in silent or basic UI mode, Windows Installer 3 or later must be present on the target system. Load Order Group Enter the name of the load-ordering group, if any, of which this service is a member. Enter any service or load-ordering groups that this service requires. The system attempts to start the dependent service or at least one member of the load-ordering group before starting this service. Separate multiple dependencies with a comma (,). You must precede the name of each load-ordering group with the SC_GROUP_IDENTIFIERwhich is typically the plus sign (+)so that the Service Control Manager can distinguish it from a service.

Dependencies

InstallShield 2010 User Guide

ISP-1600-UG00

1741

Chapter 43: View Reference Organization View

Table 43-26: Install Settings (cont.) Setting User Name Description Enter the account under which the service will be logged on. To install the service under the local system account, leave this setting blank. (Microsoft does not recommend installing services that impersonate the privileges of a single user.) If the service type is Win32 that runs in its own process, the value that you enter should use the following format:
DomainName\UserName

If the service will be logged on under the built-in domain, you can use the following format:
.\UserName

Password

Enter a password for this service. Leave this setting blank if the User Name setting is emptythat is, when the service is logged on under the local system account. The password is not used if you have not specified a user name. Enter any command-line parameters or properties that are required to run the service.

Start Parameters

Control Settings
Use the Control Settings area to specify how you want to control the service when this component is installed or uninstalled. For example, before updating a running service, your installation may need to delete it.
Table 43-27: Control Settings Setting Events Description This setting lets you specify one or more control events that are required for your service. To add an event, click the Add New Service Control Event button. InstallShield adds a new event setting, plus additional rows of related settings under it. Configure each of the settings as necessary. You can place all of your control options in a single event. However, you might need to create additional events if, for example, you want to pass different arguments during installation and uninstallation. Key Name Enter a key name for the control event. The key name is an internal name; it is not displayed to end users.

1742

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-27: Control Settings (cont.) Setting Operation Time Description To specify how you would like to schedule the operation that occurs for the service at run time, select the appropriate option for each of the following settings:

Install StartSpecify whether you want to start the service during installation. If you select Yes, the service starts when the installation reaches the StartServices action in the Installation sequence. Install StopSpecify whether you want to stop the service during installation. If you select Yes, the service stops when the installation reaches the StopServices action in the Installation sequence. Install DeleteSpecify whether you want to delete the service during installation. If you select Yes, the service is deleted when the installation reaches the DeleteServices action in the Installation sequence. Uninstall StartSpecify whether you want to start the service during uninstallation. If you select Yes, the service starts when the uninstallation reaches the StartServices action in the Installation sequence. Uninstall StopSpecify whether you want to stop the service during uninstallation. If you select Yes, the service stops when the uninstallation reaches the StopServices action in the Installation sequence. Uninstall DeleteSpecify whether you want to delete the service during uninstallation. If you select Yes, the service is deleted when the uninstallation reaches the DeleteServices action in the Installation sequence.

Wait Type

Specify how Windows Installer should proceed after initiating the control event. Available options are:

Wait for the event to completeWindows Installer waits for the event starting, stopping, or deletingto finish, up to a maximum of 30 seconds, before proceeding. Select this option if the event is critical to the installation and you want to allow additional time for the event to return a failure error. Wait for the SCMWindows Installer waits for the Service Control Manager to report that the service is in a pending state.

The Service Control Manager maintains the systems database of services and exposes an interface for controlling these services. Service Argument Specify the arguments that you want to be passed to the service. Separate multiple arguments with a comma (,).

Configure Settings
Use the Configure Settings area to specify how to customize the service that is included in the selected component.

InstallShield 2010 User Guide

ISP-1600-UG00

1743

Chapter 43: View Reference Organization View

Note: The configuration settings are supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore these settings. Table 43-28: Configure Settings Setting Events Description This setting lets you specify one or more configuration changes that are required for your service. To add an event, click the Add New Service Configuration Event button. InstallShield adds a new event setting, plus additional rows of related settings under it. Configure each of the settings as necessary.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Key Name Enter a key name for the configuration event. The key name is an internal name; it is not displayed to end users.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Run Time To specify when you would like the service configuration event to occur at run time, select the appropriate option for each of the following settings:

During InstallSpecify whether you want the event to occur during installation. During UninstallSpecify whether you want the event to occur during uninstallation. During ReinstallSpecify whether you want the event to occur during reinstallation.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting.

1744

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-28: Configure Settings (cont.) Setting Configuration Type Description Specify what configuration change should be made to the service. The change takes effect the next time that the system is started. Available options are:

Configure time delay of an auto-startThis option is applicable if the service is an installed auto-start service, or if Automatic is selected for the Start Type setting in the Install Settings area. If you select this option, click the ellipsis button (...) in the Arguments setting to indicate the time delay. Configure when to run recovery actionsIf you select this option, click the ellipsis button (...) in the Arguments setting to specify when to run the recovery actions for the selected service. Add a service SID type to the process tokenIf you select this option, click the ellipsis button (...) in the Arguments setting to indicate the appropriate security identifier (SID) type that you want to add for the service. Change list of required privilegesIf you select this option, click the ellipsis button (...) in the Arguments setting to select the appropriate privileges. Configure SCM pre-shutdown delayIf you select this option, enter the length of the time delay (in milliseconds) in the Arguments setting. To reset the time delay to the default of 3 minutes, leave the Arguments setting blank. The Service Control Manager waits for the specified period of time after sending the SERVICE_CONTROL_PRESHUTDOWN notification to the service.

Note that each option has its own set of corresponding values for the Arguments setting. Therefore, if you change the value for the Arguments setting and next change the value for the Configuration Type setting, you may need to change the value for the Arguments setting again.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Arguments To specify the value that corresponds with the configuration change that you selected in the Configuration Type setting, click the ellipsis button (...).

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Recovery Actions This setting lets you specify one or more recovery actions that are to be run after the service fails. To add a recovery action, click the Add New Recovery Action button. InstallShield adds a new recovery action setting, plus additional rows of related settings under it. Configure each of the settings as necessary.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting.

InstallShield 2010 User Guide

ISP-1600-UG00

1745

Chapter 43: View Reference Organization View

Table 43-28: Configure Settings (cont.) Setting Key Name Description Enter a key name for the recovery action. The key name is an internal name; it is not displayed to end users.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Run Time To specify when the system should run the recovery action after the service has failed, select the appropriate option for each of the following settings:

During InstallRun the action when the services component is being installed. During UninstallRun the action when the services component is being uninstalled. During ReinstallRun the action when the services component is being reinstalled.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Reset Period Specify the amount of time (in seconds) between the reset intervals for the services failure count. The Service Control Manager counts the number of times that the service has failed since the system was last restarted. When this interval has elapsed, the count is reset to the number 0 if the service has not failed during the reset period. When the service fails, the system performs an action that is specified for the SCM Actions setting. The appropriate action is determined by subtracting the number 1 from the number of failures since the last system restart. For example, if the action fails a sixth time, the system performs the fifth action type that is listed in the SCM Actions setting. If actions are not specified in the SCM Actions setting, the Reset Period setting is ignored. To indicate that the failure count should never be reset, leave this setting blank.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting.

1746

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-28: Configure Settings (cont.) Setting Reboot Message Description Specify the message that should be displayed before the computer is restarted in response to a Service Control Manager action of Reboot Computer. Note that Reboot Computer must be listed as one of the action types for the SCM Actions setting; otherwise, the Reboot Message setting is ignored. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Run Command Specify the command line that should be run in response to a Service Control Manager action of Run Command. Use the absolute path; UNC paths are not supported. For example, enter C:\myscripts\recovery.cmd, rather than \\computername\c$\myscripts\recovery.cmd. Programs or scripts that you specify should not require input from end users. The command line that you specify is used by a new process that runs under the same account as the service. Note that Run Command must be listed as one of the action types for the SCM Actions setting; otherwise, the Run Command setting is ignored. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. SCM Actions This setting lets you specify one or more Service Control Manager actions that should occur if the service fails. The actions are performed in the order that they are listed under this setting. To add an action, click the Add New SCM Action Event button. InstallShield adds a new Type setting, plus a Delay setting under it. Configure both of the settings as necessary.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting.

InstallShield 2010 User Guide

ISP-1600-UG00

1747

Chapter 43: View Reference Organization View

Table 43-28: Configure Settings (cont.) Setting Type Description Specify the type of action that the Service Control Manager should perform if the service fails. Available options are:

Restart Service Run Command Reboot Computer Take No Action

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting. Delay Specify the time (in milliseconds) that the Service Control Manager should wait before performing the action that is specified in the Type setting.

Note: This setting is supported beginning with Windows Installer 5. Earlier versions of Windows Installer ignore this setting.

Publishing Settings

Project: The Publishing area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

You can add the following types of items to the Publishing explorer in the Publishing area under the Advanced Settings node of the Components view and the Setup Design view:
Table 43-29: Publishing Settings Setting ComponentID Description The componentID, a GUID, is a category identifier that represents the category of components that are being grouped together as a qualified component. Each componentID must have at least one qualifier.

Note: Do not confuse the componentID with the GUID that is entered in the Component Code setting for the component; they must be unique values.

1748

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-29: Publishing Settings (cont.) Setting Qualifier Description The qualifier is a string that you can use to distinguish this language or version of the component from any other (for example, to specify a language). It must be unique for the component.

The following settings are available when you select a qualifier in the Publishing area:
Table 43-30: Qualifier Settings Setting Application Data Description Enter the application data that corresponds with its qualifier. The application data is a text string that may be displayed to end users. This setting is optional. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Device Driver Settings

Project: The Device Driver area for a component is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The following tabs are available in the Device Driver area under the Advanced Settings node of the Components view and the Setup Design view:

Common tab Sequence tab

Common Tab
The Common tab contains the following run-time settings for device drivers:
Table 43-31: Device Driver Settings on the Common Tab Options Always overwrite any existing device driver Description Replace any existing driver for the device with this driver. If this check box is cleared and a driver already exists for the device, your driver is not installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1749

Chapter 43: View Reference Organization View

Table 43-31: Device Driver Settings on the Common Tab (cont.) Options Do not show Connect Device to Computer dialog Description To prevent the Connect Device to Computer dialog from being displayed during the installation of a device driver if a device matching the driver is not connected to a computer, select this option. If you select this check box, the installation does not create an Add or Remove Programs entry for the device driver. If you clear this check box, the installation does create an Add or Remove Programs entry. DIFxApp does not support this feature on Windows Vista. Install unsigned driver files and drivers with missing files By default, DIFxApp does not install unsigned driver packages or driver packages that have missing files. To override this default behavior, select this check box. Selecting this check box enables you to fully test drivers more easily before shipping final signed versions. By default, when DIFxApp uninstalls a driver package, DIFxApp does not remove the binary files that were copied to the system when it installed the driver. To override this default behavior, select this check box. If you select this check box, DIFxApp removes a binary file from the system only if the binary file is identical to the corresponding binary file in the driver store.

Do not create Add or Remove Programs entry for device driver

Remove binary files associated with driver during uninstall

Caution: Select the Remove binary files associated with driver during uninstall check box only if you can verify that the drivers binary files are not required by any other driver package or application.

1750

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Table 43-31: Device Driver Settings on the Common Tab (cont.) Options Include all localized installation runtime dialogs Description When this check box is selected, the installation uses a custom action runtime .dll that includes dialogs and text for the following languages:

Arabic (Saudi Arabia) Chinese (Peoples ROC) Chinese (Taiwan) Czech (Czech Republic) Danish (Denmark) Dutch (Netherlands) English (United States) Finnish (Finland) French (France) German (Germany) Greek (Greece) Hebrew (Israel) Hungarian (Hungary) Italian (Italy) Japanese (Japan) Korean (Korea) Norwegian (Bokml) (Norway) Polish (Poland) Portuguese (Brazil) Portuguese (Portugal) Russian (Russia) Spanish - Modern Sort (Spain) Swedish (Sweden) Turkish (Turkey)

If you clear this check box, the installation uses runtime dialogs for English only. The English runtime .dll file is smaller than the localized .dll file, so if space is an issue and you do not need the extra language runtime dialogs, clear this check box. This check box applies to all of the components in the project that contain device drivers. Device driver machine architecture This area has several options. Select the appropriate option.

Device driver targets 32 bit machines Device driver targets Itanium 64 bit machines Device driver targets AMD 64 bit machines

This setting applies to all of the components in the project that contain device drivers.

InstallShield 2010 User Guide

ISP-1600-UG00

1751

Chapter 43: View Reference Organization View

Sequence Tab
The Sequence tab enables you to specify the order in which the projects device drivers (not just the current components device drivers) should be installed.

Other Data Settings

Project: The Other Data area for a component is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Other Data area for a component is available in the Components view and the Setup Design view.

Task

Using the Other Data node:

Click the Other Data node to view a list of Windows Installer tables that are related to the component. The list also includes the name of any SQL script files associated with a component. In addition, the Other Data node lists the number of records found in the Complus, DuplicateFile, Environment, IniFile, MoveFile, RemoveIniFile, RemoveRegistry, and ReserveCost tables. To go to a table in the Direct Editor, click the table name.

Setup Types View


Project: The Setup Types view is available in the following project types:

InstallScript InstallScript MSI

To create setup types for a Basic MSI project, use the features Install Level property.

Setup types enable you to provide different versions of your product to your end users. For example, the default setup types are Complete and Custom for an InstallScript project and Minimal, Typical, and Custom for an InstallScript MSI project. The Complete and Typical setup types install all of the files included in your installation. Minimal installs only those files necessary for your product to run. Such things as multimedia demos are not installed in order to preserve hard disk space. The Custom setup type lets the end user select which features are installed.

1752

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

Setup types are based on features. You select the features that you would like to associate with each setup type. Then, when an end user selects a certain setup type, only those features that you associated with that setup type are installed. By default, each project that you create contains predefined setup types. In the Setup Types view, you can add or remove setup types, rename existing setup types, and change which features are associated with each one.

Default Setup Types


Table 43-32: Default Setup Types Setup Type Complete Typical Project Type InstallScript InstallScript MSI Description The Complete setup type includes all of your installation programs features. The Typical setup type normally includes most, if not all, of a programs features. For example, if your installation includes multimedia tutorials, they would be included as part of the Typical setup. The Minimal setup type usually only includes those features absolutely necessary in order for your application to run. This setup type is designed for those people who have limited disk space, such as notebook computers. The Custom setup type lets end users select which features they would like to install. Required features should be marked as such, so that they are always installed. However, features such as the online help may not need to be installed. In these cases, the end user can select which of the optional features to install.

Minimal

InstallScript MSI

Custom

InstallScript, InstallScript MSI

Additional Setup Types


You can create additional setup types in this view. To learn how to add setup types to your project, see Working with Setup Types.

InstallShield 2010 User Guide

ISP-1600-UG00

1753

Chapter 43: View Reference Organization View

Setup Type Settings


When you select a setup type in the Setup Types view, the following settings are available:
Table 43-33: Setup Type Settings Setting Display Name Description Enter the name of the setup type. This is the name that is displayed to end users when they run your installation. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Description Type a description for the setup type.

Note: This description is displayed to end users during the installation process only if you call SdSetupTypeEx in your script. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Comment Type comments about the setup type. The comments are for your use only and do not appear in the installation. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

DIM References View


Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

The InstallShield Collaboration solution is an alternative to the traditional model of installation authoring in which a single release engineer creates an installation for an entire team of software developers. In the traditional model, the burden is on the release engineer to understand the requirements for the overall installation architecture and user experience. However, the release engineer must rely on each developer to provide the installation requirements of the developers software module after the design phase. Collaboration enables software developers to contribute at an earlier stage of the installation process. Now, developers can communicate installation requirements in an XML-structured file that is authored and maintained alongside other source code that make up a software module. These files are Developer Installation Manifest files (.dim), and they can be authored using InstallShield Collaboration, a tool that
1754 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Organization View

is available for Visual Studio development environments, or InstallAnywhere Collaboration, a tool that is available for Eclipse development environments. Both tools enables a developer to create or edit a .dim file in the built-in editor. The software developer can also edit a .dim file using a third-party XML editor. In any case, once the developer creates a .dim file, then you, the release engineer, can reference it in an installation and wrap the package with a chosen installer technology. Within InstallShield, you can use the DIM References view to manage all DIM references in your project. DIM references are a grouping of similar application data items such as files, shortcuts, and registry entries organized from the developers perspective. Your users will never see DIM references during the installation; the data will be set up on their systems depending on which features are selected for installation.

Project: In Basic MSI projects, DIM references must be associated with a feature. Merge Module projects do not contain features. If you add a merge module that contains DIM references to an installation project, InstallShield associates the DIM references with the feature in the installation project that contains the merge module.

Several tabs are associated with the DIM reference that is selected in the DIM References view:

General Variables Meta Info Data Dependencies

Understanding the Difference Between the DIM References View and the Setup Design View in Basic MSI Projects
Although the DIM References view appears to be an exact subset of the Setup Design view, and, in fact, you can create and modify DIM references in precisely the same way in both views, there is one major difference between them. The Setup Design view is different because it allows you to associate DIM references with features.

General Tab

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1755

Chapter 43: View Reference Organization View

The General tab in the DIM References view displays the following properties associated with a particular DIM reference:
Table 43-34: Settings on the General Tab in the DIM References View Setting Name Description This required property represents the name of the feature or subsystem that this DIM represents. The name of your DIM defaults to the value of this property, that is, Name.dim. This property is required. A default universally unique identifier (UUID) is automatically generated in this field for the DIM. This required property represents the version of this DIM. The default value is 1.0, which means that this is the first version. You can specify up to four places for this value, for example, 1.0.0.0. This optional property is a description of the functionality or subsystem that this DIM represents. This optional property is the name of the author of this DIM. This optional property is the name of your company.

UUID

Version

Description Author Company

Note: You will need to add SQL scripts and virtual directories that you have defined in a DIM to your installation project and maintain them in the SQL Scripts and Internet Information Services views. For more information, see Inserting SQL Script Files Associated with a Referencing DIM File and Inserting DIM Virtual Directories.

Variables Tab

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

The Variables tab in the DIM References view displays all of the build and run-time variables defined in a DIM. All of the values in the Value field are writable and should be set in order for them to be resolved properly. Changing the value overrides the value for the Unit Test Value setting. The Unit Test Value setting is read-only and is the value set by the DIM author in the DIM.

Meta Info Tab

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

1756

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

The Meta Info tab displays all of the meta tags defined in a DIM. The information on this tab is readonly. Meta information is optional and can describe the content, dependencies, and version of the DIM. The information you specify here is added to the metaInfo element, which is a child of the root element in the DIM.

Data Tab

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

The Data tab in the DIM References view displays a listing of all installation elements included in a particular DIM. It shows the name of an element and the total number of records associated with it. The information in this tab is read-only.

Dependencies Tab

Project: The DIM References view is available in the following project types:

Basic MSI Merge Module

The Dependencies tab in the DIM References view displays all of the DIMs that are required by a particular DIM reference. Each dependency is identified by its UUID and Version property values. The Source Path column indicates the path to each required DIM file. To learn how to specify the source path, see Identifying the Location of DIM Dependencies.

Application Data View


Project: The Application Data view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

Application data includes all of the files that you add to your project.
InstallShield 2010 User Guide ISP-1600-UG00 1757

Chapter 43: View Reference Application Data View

Files and Folders

Project: The Files and Folders view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

The Files and Folders view lets you add files to your project. This view behaves similarly to Windows Explorer, enabling you to drag and drop files into your project. For installation projects, you can select which feature and component you would like your files associated with and the destination directory for those files.

Redistributables

Project: The Redistributables view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

The Redistributables view enables you to add InstallShield objects and merge modules to Windows Installerbased projects. Including redistributables to your project lets you add distinct pieces of functionality to your installation. Examples of these types of functionality include Visual Basic run-time .dll files and the Microsoft C run-time libraries. You can also use the Redistributables view to add InstallShield prerequisites to Basic MSI and InstallScript MSI projects. An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects. Including InstallShield prerequisites in your project enables you to chain multiple installations together, bypassing the Windows Installer limitation that permits only one Execute sequence to be run at a time. The Setup.exe setup launcher serves as a bootstrap application that manages the chaining.

Prerequisites

Project: The Prerequisites view is available in InstallScript projects.

The Prerequisites view enables you to add InstallShield prerequisites to InstallScript projects.

1758

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

Objects

Project: The Objects view is available in the following project types:

InstallScript InstallScript Object

The Objects view enables you to add objects and merge modules to InstallScript and InstallScript Object projects.

Mobile Devices

Project: The Mobile Devices view is available in the following project types:

Basic MSI InstallScript MSI

If your installation requires that a desktop component be installed along with a mobile device component, use the Mobile Devices view to add the mobile device components to your project.

Files and Folders View


Project: The Files and Folders view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

The main purpose of most installation programs is to transfer files from the source medium to the target destination. With InstallShield, adding files to your project is a simple drag-and-drop process.

Note: The Files and Folders view from within Microsoft Visual Studio differs from the Files and Folders view in InstallShield. For more information, refer to Adding References to Visual Studio Solutions.

Adding Files
You can add files to your installation project in one of three different ways. Each of these methods is described below:

InstallShield 2010 User Guide

ISP-1600-UG00

1759

Chapter 43: View Reference Application Data View

Dragging and Dropping Files You can add files to your project using the Files explorer in the Files and Folders view. The top two panes in this view are functionally equivalent to Windows Explorer. The bottom two panes represent the destination for your files. You can drag source files from the top pane to the destination folder in the bottom pane. InstallShield also provides a context menu with additional drag and drop options that allow you to drag folder only and to preserve the source structure. Dynamic File Linking The second way to add files to your setup is by linking to the contents of an entire folder, or to specific files in the folder. This method allows you to point to a specific folder, either locally or on a network, that contains files for your installation. Every time you build your installation, the contents of the folder are added to your feature. Additionally, you can use wildcards to filter which files are added to your installation. For more information, see Creating a Dynamic Link.

Note: To improve performance, the list displayed in the Files and Folders view truncates when there are more than a predefined number of files in a dynamically linked file with subfolders. **List Truncated** appears as the first item in the file list when this occurs. All files contained in the subfolders are built into your setup project.

Dependency Scanning The final way to add files to your setup is accomplished through the Dependency Scanners view. This view contains three wizards that can scan your setup project, a running application, or a Visual Basic project for all dependency files and add them to your setup. All three of these wizards can also be launched from the Project menu. Working with Key Files A key file is a file that the Windows Installer uses to detect the components presence. Each component can have a key file. The key file is differentiated from non-key files by the key icon. You can set a key file in either the Components view or Setup Design view. To navigate to one of these views, right-click on a component in the Destination pane of the Files and Folders view and select Go to Advanced Components view. Extracting and Refreshing COM Data for Key Files The Files and Folders view also offers the option to extract and refresh COM data for key files. These options are available from the context menu when you select a file.

Note: The Extract COM Data for Key File and Refresh COM Data for Key File options are enabled only if the file is a self-registering .dll, .ocx, or .exe file, and if the file is the components key file.

1760

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

Creating Folders on the Target System

Task

To create a new folder: 1. 2.

Right-click on a folder in the Destination computers folders pane and select New Folder. Type a name for the folder.

Note: To change the folders location in the Destination computers folders tree structure, drag and drop the folder to a different location.

Following Setup Best Practices


When you add files to your setup in this view, components are created according to Setup Best Practices. For example, all portable executable files (.exe, .dll, .ocx files) are given their own component. All other files are added to the default component for each destination directory. However, if you drag files directly to one of the components listed under a destination folder, the Setup Best Practices rules are ignored.

Automatically Creating New Components When You Add Files


New components can be created for you to properly handle the files as you add them to your setup project. To accommodate this, select the feature (or, in InstallScript projects, the component) with which you want to associate any newly created components. To set the feature, select it from the list box at the top of the Files and Folders view.

Note: This list box is only for selecting the feature (or component) with which new components will be associated. It is not used to associate files directly with a specific feature.

If no features exist, you have the option of creating one when you first add files in this view.

Changing the Component/Feature Relationship


You can change the component/feature relationship by right-clicking a component and selecting Properties. Then, click the Features tab to make the necessary changes.

Note: To display components in the Files and Folders view, right-click on a destination folder (in the lower-left pane of the view) and select Show Components from the context menu.

Redistributables View
Project: The Redistributables view is available in the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1761

Chapter 43: View Reference Application Data View

InstallScript MSI MSI Database Transform

Note that you can use the Prerequisites view and the Objects view to add redistributables to InstallScript projects.

The Redistributables view contains all of the InstallShield objects and third-party merge modules that are included with InstallShield. In Basic MSI and InstallScript MSI projects, this view also contains InstallShield prerequisites that you can add to your project.

InstallShield Prerequisites (Basic MSI and InstallScript MSI Projects)


An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects. Including InstallShield prerequisites in your project enables you to chain multiple installations together, bypassing the Windows Installer limitation that permits only one Execute sequence to be run at a time. The Setup.exe setup launcher serves as a bootstrap application that manages the chaining. InstallShield includes a base set of InstallShield prerequisites. You can also use the InstallShield Prerequisite Editor in InstallShield to define custom InstallShield prerequisites or to edit settings for any existing InstallShield prerequisites. InstallShield includes support for two types of InstallShield prerequisites:

Setup prerequisiteThe installation for this type of prerequisite runs before your installation runs. Feature prerequisiteThis type of prerequisite is associated with one or more features. It is installed if the feature that contains the prerequisite is installed and if the prerequisite is not already installed on the system. Thus, if a feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed.

Project: Basic MSI projects include support for feature prerequisites.

Merge Modules
A merge module (or .msm file) contains all of the logic and files needed to install distinct pieces of functionality. For example, many applications require Microsoft Visual Basic run-time .dll files. Instead of having to include the file in a component and figure out its installation requirements, you can simply attach the Visual Basic Virtual Machine merge module to one of your projects features.

Note: Many of the merge modules included in the Redistributables view are authored by Microsoft or another third party. InstallShield distributes these modules as a courtesy to assist you in creating your installation project. However, InstallShield cannot modify or fix any problems that may exist within third party-authored modules. You are encouraged to contact the vendor regarding issues with specific third party-authored modules.

1762

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

InstallShield Objects
Like merge modules, objects contain logic and files needed to install distinct pieces of functionality. Some objects, such as the Microsoft Access object included with InstallShield, require customization through a wizard. As soon as you add such an object to your installation, its customization wizard opens. You can either customize your object at the time you add it, or cancel the wizard and customize your object later by right-clicking the object and then clicking Change Objects Settings.

Live Redistributables Gallery


Because the file size of many of the redistributables is so large, some that are available for use in your projects are not added to your computer when you install InstallShield. However, these redistributables are still available for download from the Internet to your computer. In addition, a newer version of a redistributable that you have on your computer may be available for download.

Configurable Merge Modules


A configurable redistributable is a merge module or an object that has at least one row in the ModuleConfiguration table that is referenced by at least one row in the ModuleSubstitution table. This enables you to change a value in the redistributable. When you select a configurable module in the Redistributables view, the Merge Module Configurable Values dialog box is displayed to enable you to configure the module at the time you add it. To customize the merge module later, right-click it and click select Configure merge module.

Working with the Redistributables View


The Redistributables view consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A list of redistributables A details pane, which shows information about the selected redistributables

The following table describes all of the buttons and other controls that are displayed in the Redistributables view.
Table 43-35: Controls in the Redistributables View Name of Control Expand All Groups Icon Description Shows all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Hides all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Shows or hides the right pane in this view, which shows details about the InstallShield prerequisite, merge module, or object that is selected in the list of available redistributables. This details pane provides information such as which files a redistributable installs.

Collapse All Groups

Show Details

InstallShield 2010 User Guide

ISP-1600-UG00

1763

Chapter 43: View Reference Application Data View

Table 43-35: Controls in the Redistributables View (cont.) Name of Control Show Group Box Icon Description Shows or hides the group box area below the row of buttons in this view. Dynamically filters the redistributables that are displayed in the Redistributables view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Displays the help for the Redistributables view.

Type a string to filter by

Redistributables View Help Drag a column header here to group that column

Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views.

The following table describes each of the columns in the Redistributables view.
Table 43-36: Columns in the Redistributables View Column Check Box Description This column shows a check box for each redistributable. To add a redistributable to your project, select its check box. This column shows an icon that represents the type of redistributable, as well as its status. For details about each icon, see Managing the Redistributables Gallery. This column shows the name of each redistributable. This column shows the version number of the redistributable. This column lists the type of redistributable. This column indicates whether the redistributable is installed locally on your machine or it needs to be downloaded. For more information, see Downloading Redistributables to Your Computer.

Type/Status

Name Version Type Location

Prerequisites View
Project: The Prerequisites view is available in InstallScript projects. Note that you can use the Redistributables view to add InstallShield prerequisites to Basic MSI and InstallScript MSI projects.

1764

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

The Prerequisites view contains all of the InstallShield prerequisites that are included with InstallShield. An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects. InstallShield includes a base set of InstallShield prerequisites. You can also use the InstallShield Prerequisite Editor in InstallShield to define custom InstallShield prerequisites or to edit settings for any existing InstallShield prerequisites. InstallShield includes support for two types of InstallShield prerequisites:

Setup prerequisiteThe installation for this type of prerequisite runs before your installation runs. Feature prerequisiteThis type of prerequisite is associated with one or more features. It is installed if the feature that contains the prerequisite is installed and if the prerequisite is not already installed on the system. Thus, if a feature has a condition that is not met on the target system, or if the end user chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed.

Project: Basic MSI projects include support for feature prerequisites.

Live Redistributables Gallery


Because the file size of many of the redistributables is so large, some that are available for use in your projects are not added to your computer when you install InstallShield. However, these redistributables are still available for download from the Internet to your computer. In addition, a newer version of a redistributable that you have on your computer may be available for download.

Working with the Prerequisites View


The Prerequisites view consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A list of redistributables A details pane, which shows information about the selected redistributables

The following table describes all of the buttons and other controls that are displayed in the Prerequisites view.
Table 43-37: Controls in the Prerequisites View Name of Control Expand All Groups Icon Description Shows all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Hides all of the rows in the groups if you are using groups to organize the rows in a hierarchical format.

Collapse All Groups

InstallShield 2010 User Guide

ISP-1600-UG00

1765

Chapter 43: View Reference Application Data View

Table 43-37: Controls in the Prerequisites View (cont.) Name of Control Show Details Icon Description Shows or hides the right pane in this view, which shows details about the InstallShield prerequisite that is selected in the list of available redistributables. This details pane provides information such as which files a redistributable installs. Shows or hides the group box area below the row of buttons in this view. Dynamically filters the redistributables that are displayed in the Prerequisites view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Displays the help for the Prerequisites view.

Show Group Box

Type a string to filter by

Prerequisites View Help Drag a column header here to group that column

Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views.

The following table describes each of the columns in the Prerequisites view.
Table 43-38: Columns in the Prerequisites View Column Check Box Description This column shows a check box for each redistributable. To add a redistributable to your project, select its check box. This column shows an icon that represents the type of redistributable, as well as its status. For details about each icon, see Managing the Redistributables Gallery. This column shows the name of each redistributable. This column shows the version number of the redistributable. This column indicates whether the redistributable is installed locally on your machine or it needs to be downloaded. For more information, see Downloading Redistributables to Your Computer.

Type/Status

Name Version Location

Objects View
Project: The Objects view is available in the following project types:

1766

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Application Data View

InstallScript InstallScript Object

Note that you can use the Redistributables view to add merge modules to Basic MSI and InstallScript MSI projects.

The Objects view contains all of the InstallScript objects and third-party merge modules that are included with InstallShield.

Merge Modules
A merge module (or .msm file) contains all of the logic and files needed to install distinct pieces of functionality. For example, many applications require Microsoft Visual Basic run-time .dll files. Instead of having to include the file in a component and figure out its installation requirements, you can simply attach the Visual Basic Virtual Machine merge module to one of your projects features.

Note: Many of the merge modules included in the Objects view are authored by Microsoft or another third party. InstallShield distributes these modules as a courtesy to assist you in creating your installation project. However, InstallShield cannot modify or fix any problems that may exist within third party-authored modules. You are encouraged to contact the vendor regarding issues with specific third party-authored modules.

InstallScript Objects
InstallShield enables you to create your own InstallScript objects that can be used in any of your installation projects or distributed for use by other installation developers.

Live Redistributables Gallery


Because the file size of many of the redistributables is so large, some that are available for use in your projects are not added to your computer when you install InstallShield. However, these redistributables are still available for download from the Internet to your computer. In addition, a newer version of a redistributable that you have on your computer may be available for download.

Mobile Devices View


Project: This view and its subviews appear in the following project types:

Basic MSI InstallScript MSI

Use the Mobile Devices view if you are creating an installation that requires a desktop component to be installed along with a mobile device component. When you add a mobile device installation to your project through this view, InstallShield automatically creates a corresponding component and adds that component to all of the features that you selected to associate with the mobile device application. This view enables you to do the following:

Create an installation package for Windows Mobilepowered devices such as smartphones and PDAs. The package installs the necessary Windows Mobile .cab files to the end users desktop computer first, and then launches the Windows Mobile Application Manager or uses either Microsoft Windows Mobile Device Center (for Windows Vista) or Microsoft ActiveSync (for
ISP-1600-UG00 1767

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Windows XP) to copy the correct files onto the Windows Mobilepowered device. It can also optionally register an icon file on the desktop computer with ActiveSync or Mobile Device Center, so that the icon is displayed within the Windows Mobile Application Manager window.

Create an installation package for Palm OS devices. The application files can be deployed via HotSync to the Palm OS device. You can target either the devices memory or a storage card. Add .cab files that have already been built from a Basic MSI or InstallScript MSI project. The .cab files can be created by using the Smart Device Setup Wizard, or they can be some other Windows Mobilecompatible .cab files that you have on your machine.

The Windows Mobile Wizard or the Palm OS Wizard launches when you add a mobile device installation to your project. These wizards help you to customize the settings for the devices that you want to target.

Note: ActiveSync 3.x or later or Windows Mobile Device Center must be installed on the desktop computer in order to run a desktop-to-device installation. Active Sync 4.x or Windows Mobile Device Center is required for Windows Mobile 5.x and later devices.

Tip: To create a straight-to-device installation (one that does not require Windows Mobile Device Center, Microsoft ActiveSync, or any other desktop component), use the Smart Device project type.

System Configuration View


Project: The System Configuration view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

Every installation changes the target system in some way. The simplest installations might only copy files. More in-depth installations make registry changes, edit .ini files, or create shortcuts. InstallShield provides the following views for making advanced configurations.

Shortcuts

Project: The Shortcuts view is available in the following project types:


1768

Basic MSI InstallScript


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

InstallScript MSI Merge Module MSI Database MSM Database Transform

Shortcuts offer quick access to your installed application. You can create shortcuts and program folders on the desktop, the Start menu, and various other locations.

Registry

Project: The Registry view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform QuickPatch

In the Registry view, you can create registry entries or import existing registry data into your setup.

ODBC Resources

Project: The ODBC Resources view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

In the ODBC Resources view, you can add drivers, translators, and data sources to one or more of your applications features. Select from installed ODBC resources or add new ones to the list, associate them with features, and then customize their attributes.

INI File Changes

Project: The INI File Changes view is available in the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1769

Chapter 43: View Reference System Configuration View

Merge Module MSI Database MSM Database Transform

The InstallScript language includes several initialization file functions for manipulating .ini files.

Although editing system .ini files is not recommended in Windows 2000 or later, you can edit these files in the INI File Changes view. This view enables you to create sections and keywords, or edit an .ini file on the target system.

Environment Variables

Project: The Environment Variables view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The InstallScript language includes the GetEnvVar function for retrieving the current value of an environment variable, and it enables you to create an environment variable.

If you need to create, modify, or remove environment variables from the target system, you can define their properties in the Environment Variables view.

XML File Changes

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

Sometimes you need to modify XML files that store settings related to your product as well as standard configuration files like web.config and machine.config. You can use the XML File Changes view in InstallShield to specify any XML file changes that should be made on the target system.

Text File Changes

Project: The Text File Changes view is available in the following project types:

Basic MSI InstallScript MSI

1770

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

MSI Database Transform

The InstallScript language includes string functions for finding and modifying string variables and literals.

The Text File Changes view is where you configure search-and-replace behavior for content in text files for example, .txt, .htm, .xml, .config, .ini, and .sql filesthat you want to change at run time on the target system. The text files can be part of your installation, or they can be files that are already present on target systems.

Tip: The Text File Changes view enables you to modify XML files without using MSXML (which is a run-time requirement if you use the XML File Changes view to modify XML files).

Shortcuts View
Project: The Shortcuts view is available in the following project types:

Basic MSI InstallScript InstallScript MSI Merge Module MSI Database MSM Database Transform

The Shortcuts view provides a simple, visual way to create shortcuts to your application on the target system. This view contains a Shortcuts explorer that shows a set of predefined destination folders under which you can create shortcuts and subfolders. InstallShield offers the following standard shortcut destinations.
Table 43-39: Standard Shortcut Destinations Shortcut Destination Programs Menu and Startup Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description The Programs Menu and Startup folders are located on the Start menu. The Programs Menu folder is the industry-standard place for installing product shortcuts. The Startup folder should contain shortcuts to only those items that need to be launched whenever Windows starts.

InstallShield 2010 User Guide

ISP-1600-UG00

1771

Chapter 43: View Reference System Configuration View

Table 43-39: Standard Shortcut Destinations (cont.) Shortcut Destination Send To Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description The Send To folder is available when an end user right-clicks a file; the context menu that is displayed contains a command called Send To. If you create a shortcut for your program in this folder, an end user can click any file and send it to your product. For example, you might want your end users to be able to open an HTML page in Notepad. If you created a shortcut to Notepad in the Send To folder in the Shortcuts view, end users could right-click an HTML file and click Notepad from your Send To menu. The source file for that page opens in Notepad. The Desktop folder contains shortcuts for the end users desktop. When you create a shortcut in the Desktop folder, your products icon is displayed on the end users desktop.

Desktop

Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

Note: The desktop is the most visible place to put a shortcut, but too many shortcut icons can clutter the end users desktop.

When you add a new shortcut, InstallShield adds it as a new node to the Shortcuts explorer in this view. The new shortcut node is displayed with the same icon that is selected in the Icon File setting for the shortcutwhich is the icon that is used when the shortcut is added to target systems at run timeunless either of the following conditions is true:

The project type is InstallScript. The shortcut is for a preexisting file on the target system.

For both of the aforementioned conditions, the icon file is not known until run time. Therefore, InstallShield shows the following icon for each shortcut in the Shortcuts explorer, instead of displaying the icon that is used at run time on target systems.

InstallShield also uses this icon for a shortcut in the Shortcuts explorer if the icon file does not contain an icon.

Note: You cannot create shortcuts to a dynamically linked file. For more information, see Limitations of Dynamic File Linking.

For details about each of the settings that you can configure for shortcuts and folders, see:

Shortcut Settings Folder Settings

1772

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Shortcut Settings

Project: The Shortcuts view is available in the following project types:

Basic MSI InstallScript InstallScript MSI Merge Module MSI Database MSM Database Transform

The settings for a shortcut are organized into the following main categories in the Shortcuts view:

Appearance Behavior General

Appearance
Use a shortcuts Appearance settings to specify details such as the display name and the icon for the shortcut.
Table 43-40: Appearance Settings Setting Display Name Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Enter the name of the shortcut as it should appear on the target system. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsYou must enter a value for this setting; otherwise, a build error occurs. The display name is of the Windows Installer Filename data type. If the display name that you enter is not already in the 8.3 format, InstallShield uses the ShortName|LongName format for this setting. For example, if you enter My Product Name as the value in this setting, InstallShield sets the value to MyProd~1|My Product Name, or something similar, so that a short name is available at run time if needed.

InstallShield 2010 User Guide

ISP-1600-UG00

1773

Chapter 43: View Reference System Configuration View

Table 43-40: Appearance Settings (cont.) Setting Display Resource Project Type Description

Basic MSI, If you are preparing an installation for a multilingual application and you InstallScript MSI, are separating language-neutral portable executable files from .mui files Merge Module, MSI for the display name of your shortcut, use the following settings: Database, MSM Display ResourceClick the ellipsis button (...) in this setting if Database, Transform you want to browse to the DLL file that contains the multilingual user interface (MUI) manifest. InstallShield lists the path and file name in this setting if you do either of the following: you select a DLL file by browsing for it, or you manually enter a path and file name in the Display Resource DLL setting. InstallShield also lists the resource index that is specified in the Display Resource Index setting. If this setting contains a value, the value for the Display Name setting is ignored. If you leave this setting blank, Windows Installer uses the value for the Display Name setting.

Display Resource DLLIf you want to manually specify the path and file name of the DLL file that contains the MUI manifest, enter it. You can include Windows Installer directory propertiesfor example, [INSTALLDIR]MyResource.dllinstead of hard-coded directory paths. If you click the ellipsis button in the Display Resource setting to browse to the DLL file, InstallShield uses the format [#filekey] in the Display Resource DLL setting to identify the DLL file.

Display Resource IndexSpecify the display name index for the shortcut. This must be a non-negative number.

Note: If you specify a DLL, you must also enter a value for the Display Resource Index setting. These settings enable you to separate language-neutral portable executable files from .mui files, which contain all of the languagedependent resources, and later add resources for additional languages without having to recompile or relink the application. Windows Vista and later and Windows Server 2008 and later include support for the display resource. Earlier systems ignore it. Description Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Enter a description of the shortcut. The text that you enter is displayed as a tooltip when the end user places the mouse pointer over the shortcut. It is also displayed in the Description field of the shortcuts Properties dialog box. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

1774

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Table 43-40: Appearance Settings (cont.) Setting Description Resource Project Type Description

Basic MSI, If you are preparing an installation for a multilingual application and you InstallScript MSI, are separating language-neutral portable executable files from .mui files Merge Module, MSI for the description of your shortcut, use the following settings: Database, MSM Description ResourceClick the ellipsis button (...) in this setting Database, Transform if you want to browse to the DLL file that contains the multilingual user interface (MUI) manifest. InstallShield lists the path and file name in this setting if you do either of the following: you select a DLL file by browsing for it, or you manually enter a path and file name in the Description Resource DLL setting. InstallShield also lists the resource index that is specified in the Description Resource Index setting. If this setting contains a value, the value for the Description setting is ignored. If you leave this setting blank, Windows Installer uses the value for the Description setting.

Description Resource DLLIf you want to manually specify the path and file name of the DLL file that contains the MUI manifest, enter it. You can include Windows Installer directory propertiesfor example, [INSTALLDIR]MyResource.dllinstead of hard-coded directory paths. If you click the ellipsis button in the Description Resource setting to browse to the DLL file, InstallShield uses the format [#filekey] in the Description Resource DLL setting to identify the DLL file.

Description Resource IndexSpecify the description index for the shortcut. This must be a non-negative number.

Note: If you specify a DLL, you must also enter a value for the Description Resource Index setting. These settings enable you to separate language-neutral portable executable files from .mui files, which contain all of the languagedependent resources, and later add resources for additional languages without having to recompile or relink the application. Windows Vista and later and Windows Server 2008 and later include support for the description resource. Earlier systems ignore it.

InstallShield 2010 User Guide

ISP-1600-UG00

1775

Chapter 43: View Reference System Configuration View

Table 43-40: Appearance Settings (cont.) Setting Icon Project Type Description

Basic MSI, To specify the icon that you want to be displayed for the shortcut, use InstallScript, the following settings: InstallScript MSI, IconSpecify the file that contains the icon for the shortcut that Merge Module, MSI you are creating. You must specify an .ico file or the executable file Database, MSM (.dll or .exe) that contains the icon resource. InstallShield lists the Database, Transform icon path and index in the Icon setting if you do either of the following: you select a file by browsing for it, or you manually enter a path and file name in the Icon File setting. The method that you use to specify the file depends on the type of project that you are using.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsClick the ellipsis button (...) in this setting if you want to browse to the .ico file or the .exe or .dll file that contains the icon resource. For InstallScript projectsClick the ellipsis button (...) in this setting if you want to browse to the location on the target system of the .ico file or the .exe or .dll file that contains the icon resource.

Icon FileIf you want to manually specify the path and name of the file that contains the icon, enter it. Icon IndexIf the icon file that you specify contains more than one icon resource, enter the index in this setting. A nonnegative integer refers to the order of the icon resources in the executable file. For example, 0 refers to the first icon in the file, 1 refers to the second icon, and 2 refers to the third icon. Use a negative number to refer to a specific resource ID. For example, the icon index -12 points to the icon with a resource ID of 12.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsNote that because Windows Installer requires a separate icon file when the component is to be advertised, InstallShield extracts the first icon from the .exe or .dll file unless an icon index is specified. If you do not specify an icon file, the key file of this component is automatically used for the shortcut's icon.

1776

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Behavior
Use a shortcuts Behavior settings to specify details such as the target and keyboard shortcut.
Table 43-41: Behavior Settings Setting Advertised Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Specify whether you want to create an advertised shortcut. If you select Yes and the end user advertises the product or the feature that contains the shortcut, the shortcut is created but the components files are not installed until the end user launches the shortcut. The first time that the shortcut is launched, the Windows Installer installs the components files and other data, and then the shortcut launches the target file. Every time that the shortcut is used from then on, it behaves like a normal shortcut.

Note: To create an advertised shortcut, the shortcuts component must have a key file. The key file is the shortcuts target. Target Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Enter the path to the file on the target system that should be launched when end users launch the shortcut. As an alternative to manually entering a value, you can click the ellipsis button (...) to browse to the shortcut target.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsUse Windows Installer directory propertiesfor example, [INSTALLDIR]File.exeinstead of hard-coded directory paths. If the shortcut is an advertised shortcut, this setting is read-only. The key file of the shortcuts component is automatically set as the shortcuts target. If the shortcuts component does not have a key file, the shortcut will not function properly on the target system. For InstallScript projectsUse system variablesfor example, <TARGETDIR>\File.exeinstead of hard-coded directory paths.

InstallShield 2010 User Guide

ISP-1600-UG00

1777

Chapter 43: View Reference System Configuration View

Table 43-41: Behavior Settings (cont.) Setting Arguments Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Enter the command-line arguments for the shortcut. The arguments are added to the Target value on the shortcuts Properties dialog box on the target system. These arguments work in the same way as any other command-line arguments. For example, you can link a file to an executable file or cause an executable file to run silently by passing command-line arguments.

Note: Verify that the syntax is correct because InstallShield does not do this.

Tip: Use %1 in the argument for the selected file name. For example, if the end user right-clicks the file C:\File.ext and -p %1 is the argument for this shortcut, the command-line argument becomes -p C:\File.ext. In some cases, it is necessary to enclose the %1 argument in quotation marksas in "%1"to correctly handle file names that contain spaces. Working Directory Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Select the working directory for the shortcut target, or click the ellipsis button (...) to select or create a directory. The directory that you specify is displayed as the Start in field on the shortcuts Properties dialog box on the target system. The working directory is the default directory that is displayed in standard file-opening and file-saving dialog boxes, as well as the current directory used by the product.

Project: For example, in Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projects, if you want your working directory to be set to a subdirectory of INSTALLDIR called Files, select [INSTALLDIR] from the list and add the subdirectory name Files to the end of it. When you are finished, it should read [INSTALLDIR]Files. In an InstallScript project, if you want your working directory to be set to a subdirectory of TARGETDIR called Files, select <TARGETDIR> from the list and add the text \Files to the end of it. When you are finished, it should read <TARGETDIR>\Files.

1778

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Table 43-41: Behavior Settings (cont.) Setting Hot Key Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description This setting contains the decimal value of the keyboard shortcut that is assigned to your shortcut. You can assign a keyboard shortcut to your products shortcut so that end users can press the appropriate hot keys to launch the shortcut. If you want InstallShield to calculate the decimal value of the keyboard shortcut, click the ellipsis button (...) in this setting. For more information, see Specifying a Keyboard Shortcut for Accessing a Shortcut.

Caution: It is recommended that you avoid configuring keyboard shortcuts for your shortcuts because they may conflict with existing keyboard shortcuts on the target system. Run Basic MSI, Select the style of window that the target file should use when end users InstallScript, launch the shortcut. Available options are: InstallScript MSI, Normal WindowThe file is launched in a standard-sized window. Merge Module, MSI Maximized WindowThe file is launched in full-screen view. Database, MSM Database, Transform Minimized WindowThe file is launched in a minimized window, visible only on the taskbar.

General
Use a shortcuts General settings to specify details such as the component that contains the shortcut.
Table 43-42: General Settings Setting Key Name Project Type Description

Basic MSI, Enter a key name for the shortcut. The key name is an internal name; it is InstallScript MSI, not displayed to end users. Merge Module, MSI Database, MSM Database, Transform InstallScript Enter an internal name for the shortcut. The internal name is not displayed to end users.

Internal Name

InstallShield 2010 User Guide

ISP-1600-UG00

1779

Chapter 43: View Reference System Configuration View

Table 43-42: General Settings (cont.) Setting Component Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description This setting indicates the component that contains the shortcut. Click the ellipsis button (...) to display the Browse for a Component dialog box, which lets you create new components or select an existing component for the shortcut. The shortcut is created on the target system if the selected component is installed.

Project: In InstallScript projects, you can select more than one component for the shortcut. Feature Basic MSI, This setting indicates the feature or features with which the shortcut InstallScript MSI, MSI component is associated. If there is no feature-component association, Database, MSM this setting is blank. Database, Transform InstallScript Specify whether the shortcut should be removed when the product is uninstalled. Specify whether the shortcut should overwrite an already existing shortcut with the same display name in the same location on the target system. Specify whether the shortcut is an Internet shortcut. The default setting is No; if you select Yes, the Target setting for the shortcut should be a valid URL. Specify whether the shortcut points to a Visual Studio project output.

Uninstall

Replace Existing (If Found)

InstallScript

Internet Shortcut

InstallScript

VS .NET Project Output Type

InstallScript

InstallScript

Specify how the shortcut should be created. Available options are:

AutomaticThe installation automatically determines where the shortcut should appear based on the value of the ALLUSERS system variable. If ALLUSERS is non-zero, the shortcut is created in the All Users profile so that it is available on the target system for all end users. If ALLUSERS is FALSE, the shortcut is created in the current users profile.


Comments

PersonalThe shortcut is created in the current users profile. CommonThe shortcut is created in the All Users profile.

Basic MSI, Enter comments for this shortcut. Comments are saved in the project file InstallScript, for your reference and are not displayed to the end user. InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform

1780

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Table 43-42: General Settings (cont.) Setting Shell Properties Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description This setting lets you specify one or more shortcut properties that need to be set by the Windows Shell at run time. To specify one or more properties, click the Add new Shell Shortcut Property button in this setting. InstallShield adds a new Key Name setting, plus additional rows of related settings under it. Configure each of the settings as necessary.

Note: Windows Installer 5 introduced support for the Shell property settings. Earlier versions of Windows Installer ignore these settings. For more information, see Setting Shell Properties for a Shortcut. Key Name Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform This setting is displayed if you have used the Shell Properties setting to add one or more Shell properties to your shortcut. Enter a key name for the Shell shortcut property. The key name is an internal name; it is not displayed to end users.

Note: Windows Installer 5 introduced support for the Shell property settings. Earlier versions of Windows Installer ignore these settings. For more information, see Setting Shell Properties for a Shortcut. Property Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform This setting is displayed if you have used the Shell Properties setting to add one or more Shell properties to your shortcut. Enter the shortcut property that you want the Windows Shell to set at run time.

Note: Windows Installer 5 introduced support for the Shell property settings. Earlier versions of Windows Installer ignore these settings. For more information, see Setting Shell Properties for a Shortcut. Value Basic MSI, This setting is displayed if you have used the Shell Properties setting to InstallScript MSI, add one or more Shell properties to your shortcut. Merge Module, MSI Enter the value for the Shell shortcut property. Database, MSM Database, Transform Note: Windows Installer 5 introduced support for the Shell property settings. Earlier versions of Windows Installer ignore these settings. For more information, see Setting Shell Properties for a Shortcut.

InstallShield 2010 User Guide

ISP-1600-UG00

1781

Chapter 43: View Reference System Configuration View

Folder Settings

Project: The Shortcuts view is available in the following project types:

Basic MSI InstallScript InstallScript MSI Merge Module MSI Database MSM Database Transform

The following settings are available for a folder in the Shortcuts view.
Table 43-43: Folder Settings Setting Key Name Project Type Description

Basic MSI, Enter a key name for the folder. The key name is the internal name that is InstallScript MSI, used for the folder in the Directory column of the Directory table; it is Merge Module, MSI not displayed to end users. Database, MSM Database, Transform InstallScript Enter an internal name for the folder. The internal name is not displayed to end users.

Internal Name

1782

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Table 43-43: Folder Settings (cont.) Setting Display Name Project Type Basic MSI, InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Description Enter the name of the folder as it should appear on the target system. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Project: For Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, and Transform projectsYou must enter a value for this setting; otherwise, a build error occurs. The display name is of the Windows Installer DefaultDir data type. If the display name that you enter has more than eight characters, InstallShield uses the ShortName|LongName format for this setting. For example, if you enter My Product Name as the value in this setting, InstallShield sets the value to MyProd~1|My Product Name, or something similar, so that a short name is available at run time if needed. For InstallScript and InstallScript MSI projectsYou can enter the group name system variable <SHELL_OBJECT_FOLDER> as the display name for your folder. You can then define the display name of this folder at run time by setting the system variable SHELL_OBJECT_FOLDER in InstallScript. To use this functionality in an InstallScript MSI installation, any letters that are specified for the Key Name setting of the folder must be all uppercase (for example, NEWFOLDER1). For more information, see SHELL_OBJECT_FOLDER. Description Basic MSI, Enter a description of the folder. InstallScript, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform InstallScript Specify whether this file is shared with other installations:

Shared

YesIf this folder contains any subfolders or files that were not created by the installation, the folder is not removed from the target system when your product is uninstalled. NoWhen your product is uninstalled from the target system, this folder is removed.

Registry View
Project: The Registry view is available in the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1783

Chapter 43: View Reference System Configuration View

InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform QuickPatch

The Registry view enables you to define registry keys and values to be created by your installation. This view has four different panes. The two top panes show the registry data contained on your development system, and the two bottom panes are where you set up the registry data to be created on the target system. For Windows Installer projects only, you can use the View Filter list at the top of the view to select the component whose registry data you want to display. All registry data (except the <Default> registry set in a InstallScript project) must be associated with a component. This way, for installation projects, if the components feature is selected for installation, the components registry data are set up on the target system. In InstallScript projects, groups of registry keys and values are called registry sets. There is no limit to the number of registry sets you can create (or the number of keys and values inside a single registry set). The installer automatically creates certain registry entries based on values you provide in the General Information view. These informational keys are required by Windows logo guidelines. Also, all of a components advanced settings are used to register files on the target system.

ODBC Resources View


Project: The ODBC Resources view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

One of the more complex areas of system configuration involves setting up ODBC drivers, data source names (DSNs), and translators. The ODBC resource must be properly registered on the system with all of the required attributes and, in the case of drivers and translators, install the necessary files, including any installation .dll files. This process is simplified in the ODBC Resources view, in which you can select the drivers, data sources, and translators installed on your development system.

Project: For installation projects: The ODBC Resources view is exclusively for installing ODBC-related resources. To install the core ODBC files, select the MDAC 2.5 merge module in the Redistributables (Objects) view.

1784

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

For merge module projects: The Merged Feature check box in the upper-right corner of this view is selected when you add an item and cleared when you remove an item in the ODBC Resources pane. It does not affect your project.

INI File Changes View


Project: The INI File Changes view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The INI File Changes view enables you to specify changes that should be made to initialization (.ini) files on the target system. These types of files serve as a database in which you can store and retrieve information between the uses of your applications. Some .ini files, such as Boot.ini and Wininit.ini, are used by the operating system. Although you can edit any .ini file found on the target system, editing system .ini files is not recommended.

Task

Editing an .ini file involves three steps: 1. 2. 3.

Create an .ini file reference. Add a section to the .ini file. Add a keyword to the .ini file.

Before you can create an .ini file reference, you must have at least one component in your project. If no components exist when your .ini file reference is created, the Create a New Component dialog box is displayed, enabling you to create a component.

Tip: InstallShield lets you import an existing .ini file into your project. Once you have imported the .ini file, you can use the INI File Changes view to configure the changes that you want to be made on the target system as needed. To learn more, see Importing an Existing .ini File.

For details about each of the settings that you can configure for .ini file changes, see:

.ini File Settings Section Settings for an .ini File Keyword Settings for an .ini File

InstallShield 2010 User Guide

ISP-1600-UG00

1785

Chapter 43: View Reference System Configuration View

.ini File Settings


When you add an .ini file to your project, configure the following settings:
Table 43-44: .ini File Settings Setting Display Name Description Enter the name of the .ini file, including the file extension, that you would like to editfor example, INIFile.ini. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Note: The display name is of the Windows Installer Filename data type. If the display name that you enter is not already in the 8.3 format, InstallShield uses the ShortName|LongName format for this setting. For example, if you enter My File Name.ini as the value in this setting, InstallShield sets the value to MyFile~1.ini|My File Name.ini, or something similar, so that a short name is available at run time if needed. Component Select the component with which you want to associate this .ini file by using one of the following methods:

To select from a list of components that are already in your project, click the arrow. To browse to the component that you want to use or to create a new component for the .ini file changes, click the ellipsis button (...).

If the selected component is installed at run time, the .ini file is changed. The .ini file is not modified if the component is not installed. Target Specify the location of the .ini file on the target system. Instead of entering a hard-coded path, you can select a Windows Installer folder property from the list.

Tip: Do not separate subfolders from the folder property with a backslash, but separate further levels of subfolders with a backslashfor example, [ProgramFilesFolder]MyCompany\Subdirectory.

1786

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Section Settings for an .ini File


When you select a section in the INI File Changes view, the following setting is displayed.
Table 43-45: .ini File Section Settings Setting Display Name Description Enter the section name of the .ini file that you would like to edit. Although the section name has square brackets around it in the .ini file, you do not need to include square brackets when you type the section name in this setting. For example, to make a change to the [INISection] section of an .ini file, you could type INISection in this setting. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Keyword Settings for an .ini File


When you select a keyword in the INI File Changes view, several settings are displayed.
Table 43-46: .ini File Keyword Settings Setting Display Name Description Enter the name of the keyword that you would like to edit, exactly as it should appear in the target .ini file. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Action Select the action that you would like to perform. Valid options are:

Replace Old ValueThe existing value is replaced with the value that you enter in the Data Value setting. If it does not exist, the installation creates it. Do Not OverwriteYour value is added to the .ini file if the keyword does not already exist. No changes are made if the keyword is already present in the .ini file. Append TagSelect this option if you would like to add an additional tag to an keyword value. Tags are comma separated. If the keyword to which you would like to append a tag does not exist, no changes are made. Remove Whole ValueThe keyword and its value are both removed from the .ini file. If the specified keyword does not exist, no changes are made. If you select this option, leave the Data Value setting blank. Remove TagMultiple values for a keyword are known as tags. Tags are separated by commas. To remove a tag from a keywords value, select this option. In the Data Value setting, enter the tag that you want to be removed.

InstallShield 2010 User Guide

ISP-1600-UG00

1787

Chapter 43: View Reference System Configuration View

Table 43-46: .ini File Keyword Settings (cont.) Setting Data Value Description Enter the value for the keyword. If you are adding or appending a value, enter the new value. If you are removing a tag, enter the tag that you would like to remove. If you are removing the keyword and value, leave this setting blank. You can use Windows Installer properties in your keywords value. To do this, surround the property with square bracketsfor example, [INSTALLDIR].

Environment Variables View


Project: The Environment Variables view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The InstallScript language includes the GetEnvVar function for retrieving the current value of an environment variable, and it enables you to create an environment variable.

Environment variables are variables that can be accessed by multiple applications on the target system. In the Environment Variables view, you can create new environment variables, modify the values of existing variables, and remove variables. The environment variable creation, modification, or removal takes place on the target system when the component that is associated with the environment variable is installed.

Environment Variable Settings

Project: The Environment Variables view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The InstallScript language includes the GetEnvVar function for retrieving the current value of an environment variable, and it enables you to create an environment variable.

1788

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

By specifying environment variable properties, you indicate how you want to affect existing variables on the target system and create new variables. Each environment variable property is described below:
Table 43-47: Environment Variable Settings Setting Component Description Select the component with which you want to associate this environment variable by using one of the following methods:

To select from a list of components that are already in your project, click the arrow. To browse to the component that you want to use or to create a new component for the environment variable, click the ellipsis button (...).

The environment variable creation, modification, or removal takes place on the target system when the component that is associated with the environment variable is installed. Value Enter the path or value for this environment variable. You can use a predefined folder as part of this valuesuch as [INSTALLDIR]Bin. To enter multiple paths, separate the paths with a semicolon (;).

Note: If you select Remove for the On Install setting, InstallShield clears any value entered in the Value setting, and the Value setting becomes read-only. On Install Indicate the action that you want to take place when the associated component is installed to the target system. Available options are:

CreateThe installation creates the specified environment variable on the target systemif it does not already existand sets its value. SetIn conjunction with the Placement setting, this option sets the value of an existing environment variable. If you select this option and the environment variable does not already exist on the target system, the installation creates it and then sets its value. If the environment variable exists on the target system, the installation sets its value. RemoveThe installation removes the specified environment variable from the target system.

Note: If you select Remove for the On Install setting, any value entered in the Value setting is cleared, and the Value setting becomes read-only.

InstallShield 2010 User Guide

ISP-1600-UG00

1789

Chapter 43: View Reference System Configuration View

Table 43-47: Environment Variable Settings (cont.) Setting Placement Description Select the action that you would like to perform. Available options are:

AppendThe installation appends the new value that is entered in the Value setting to the end of the existing value. PrefixThe installation adds the new value that is entered in the Value setting to the beginning of the existing value. ReplaceThe installation replaces the value of the specified environment variable with the new value that is entered in the Value setting.

Note: If you select Create for the On Install setting and the specified environment variable already exists on the target system, the Placement setting indicates how the new value should be added to the existing environment variables value or if it should replace the existing environment variables value. However, ifin this scenariothe specified environment variable does not exist on the target system, it is created and the Placement setting is ignored. On Uninstall Indicate whether this environment variable or the value that is appended or prefixed to an existing variable should be removed from the target system when the associated component is uninstalled. Available options are:

RemoveThe installation removes the environment variable or its appended value from the target system if the associated feature is uninstalled. If you select Create for the On Install setting and the environment variable did not exist on the target system at installation time, Remove removes the entire environment variable that was created. If you select Create for the On Install setting and the environment variable did exist on the target system at installation time, Remove removes only the value that was appended or prefixed to the existing variables value. If you select Set for the On Install setting, Remove removes only the value that was appended to the existing variables value.

Type

LeaveThe installation leaves the environment variable or its appended value on the target system if the associated component is uninstalled.

Indicate whether the environment variable name refers to a system or user environment variable. Available options are:

SystemThe installation creates, modifies, or removes the specified system environment variable. UserThe installation creates, modifies, or removes the environment variable from the end users environment. The specified environment variable is available only to the end user who is logged on at the time of installation.

XML File Changes View


Project: The XML File Changes view is available in the following project types:

1790

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The XML File Changes view is where you add references for nodes and node sets of XML files that you want to change at run time. The XML files can be part of your installation, or they can be files that are already present on target systems. Two key parts of this view are the View Filter (a list of the projects features and components) and the XML Files explorer (a tree view):

The View Filter enables you to filter data by feature or component. The XML Files explorer is where you add references to XML files and XML data that you want to create, modify, or remove at run time. Each node represents an XPath expression that your installation carries out at run time to select existing nodes or node sets in an XML file.

Important: The XML File Changes view is not designed to list a node for every node in an XML file. To improve performance, the XML File Changes view should show only the settings that differ from the base XML file:

If the XML file that you are modifying is part of your installation, the XML File Changes view should list only the nodes and node sets that should be added, changed, or deleted after the XML file is installed at run time. If the XML file that you are modifying is a file that is already present on the target system, the XML File Changes view should list only the nodes that need to be added, changed, or deleted at run time.

Therefore, when you are importing a file, import only the nodes in the XML file that you want to modify at run time. Note that the XML File Changes view does not enable you to specify the order in which new elements should be listed in the XML file. Therefore, importing only the nodes that you want to modify at run time helps to avoid issues that may occur if your product requires that the elements be listed in a particular order.

The XML File Changes view also displays different tabs in the right pane, depending on what is selected in the XML Files explorer. For reference information about each of the settings on these tabs, see the following:

General Tab for an XML File Advanced Tab for an XML File Namespace Tab for an XML File General Tab for an XML Element Advanced Tab for an XML Element

To learn more about how to use the XML Files Changes view and configure XML file changes, see Modifying XML Files.

InstallShield 2010 User Guide

ISP-1600-UG00

1791

Chapter 43: View Reference System Configuration View

General Tab for an XML File

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The General tab exposes the following settings for an XML file in the XML File Changes view:
Table 43-48: General Tab Settings for a File in the XML File Changes View Setting File Name Description The file name represents the XML file name as it appears in the explorer. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) next to this setting to select an existing string. For more information, see Using String Entries in InstallShield. XML File Destination Specify the location of the XML file on the target machine. Click Browse to locate an existing directory or to add or create a new one. Select or clear the features that you want to associate with the XML file. InstallShield automatically associates a feature with an XML file when it is added to the XML File Changes view.

Select the Features the XML File Belongs to

Advanced Tab for an XML File

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The Advanced tab exposes the following settings for an XML file in the XML File Changes view.

1792

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

XML file options


The following file settings are available at run time:
Table 43-49: XML File Settings Available at Run Time Setting Always create XML file if it does not already exist Remove XML file on uninstall Format XML after changes Description If an XML file does not exist on the target system at run time, then one will be created based on the specifications for that file in the XML File Changes view. Select this check box if you want to remove the XML file on the target system upon uninstallation. If you want the XML file to be formatted after the run-time changes are made to the file, select this check box. When formatting the file, the installation adds indentations to the file and replaces empty-element tags with start tags and end tags. Note that the formatting may cause problems for web.config files, so you may want to clear this check box for the XML file. Encoding used for a new file Specify the encoding that should be used for a new XML file. Note that if the XML file is already present on the target machine, or if it is being installed as part of your installation, the installation uses the encoding that is specified in the XML file, rather than the encoding that is specified in this setting. The encoding value that you specify is used only if you have used the XML File Changes view to create the entire XML file.

XPath Query
This read-only grid displays the XPath expressions to be executed on the target machine at run time based on the XML changes you have configured in the XML File Changes view.

Tip: For more information about XPath expressions, consult the World Wide Web Consortium (W3C) Web site. Another relevant article entitled Things to Know and Avoid When Querying XML Documents with XPath can be found in the MSDN Library.

Namespace Tab for an XML File

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

InstallShield 2010 User Guide

ISP-1600-UG00

1793

Chapter 43: View Reference System Configuration View

The Namespace tab contains a table with the following settings for an XML file in the XML File Changes view.
Table 43-50: XML Namespace Settings Setting Prefix Description Specify the prefix that should be added to elements that are associated with this namespace. Specify the uniform resource identifier that identifies the Internet resource for the namespace. The URI can be a URL or a string of characters.

URI

Note: The MSXML parser does not use the URI to look up information about the namespace. The only purpose of the URI is to give the namespace a unique name within the XML file.

General Tab for an XML Element

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform

The General tab exposes the following settings for an XML element in the XML File Changes view.

Element Name
The element name represents the declared element type for the XML file. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) next to this setting to select an existing string. For more information, see Using String Entries in InstallShield.

1794

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Attributes
Table 43-51: Settings for XML Element Attributes Setting Drag a column header here to group that column Description Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views. Attribute Enter the name of an XML element attribute to created, updated, or removed at run time. You can add Windows Installer properties for the attribute. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Value Enter the value for the attribute type. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Operation Select from the following run-time operations:


Scheduling

CreateAdds the attribute to the element at run time. RemoveRemoves the attribute from the element at run time. AppendAppends the attribute value that you specify to the end of the existing value.

Specify when to apply the attribute changes by selecting from the following scheduling options: Install, Uninstall, and Both.

Tip: You can use dynamic values from Windows Installer properties or text substitution to store different values into the XML file.

Advanced Tab for an XML Element

Project: The XML File Changes view is available in the following project types:

Basic MSI InstallScript InstallScript MSI MSI Database Transform


ISP-1600-UG00 1795

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

The Advanced tab exposes the following settings for an XML element in the XML File Changes view.
Table 43-52: XML Element Settings Setting Update first matching element only Always create this element if it does not already exist Description To modify only the first matching element in the target XML file, select this check box. If you clear this check box, every matching element in the target XML file is changed. To always create this element on the target machine if it does not already exist, select this check box. Note that if this check box is cleared for an element that is not present in the target file, its child elements are not created at run time. Thus, for an XML file such as //A/B/C, C is not created on the target system if B is neither present nor set to be created. To remove this element from the XML file when the component containing this XML file change is uninstalled, select this check box. To add text content to the element, select this check box and enter the text in the Content box. In the following XML example, feature is the content for the element product:
<product>feature</product>

Remove element on uninstall Set Element Content

Content

Enter a string with which to update the element. There is a 255-character limitation. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) next to this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Text File Changes View


Project: The Text File Changes view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This view is not available in InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals.

The Text File Changes view is where you configure search-and-replace behavior for content in text files for example, .txt, .htm, .xml, .config, .ini, and .sql filesthat you want to modify at run time on the target system. The text files can be part of your installation, or they can be files that are already present on target systems.

1796

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Task

Configuring text file changes involves the following steps: 1. 2.

Create a text file reference. Specify the search-and-replace criteria for the text file.

Note: Each text file reference must be associated with a component in your project. Therefore, before you can create a text file reference, your project must have at least one component. If no components exist when you are creating a text file reference, the Create a New Component dialog box is displayed, enabling you to create a component.

Tip: The Text File Changes view enables you to modify XML files without using MSXML (which is a run-time requirement if you use the XML File Changes view to modify XML files).

For details about each of the settings that you can configure for text file changes, see:

Replacement Set Settings Replacement Settings

Replacement Set Settings

Project: The Text File Changes view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This view is not available in InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals.

InstallShield 2010 User Guide

ISP-1600-UG00

1797

Chapter 43: View Reference System Configuration View

When you select a replacement set item in the Text File Changes explorer of the Text File Changes view, the following settings are available for you to configure.
Table 43-53: Replacement Set Settings Setting Target Folder Description Specify the location of the text file (that is, any non-binary file, such as a .txt, .htm, .xml, .config, .ini, or .sql file) on the target system. Instead of entering a hard-coded path, you can select a Windows Installer folder property from the list.

Tip: Do not separate subfolders from the folder property with a backslash, but separate further levels of subfolders with a backslashfor example, [ProgramFilesFolder]MyCompany\Subdirectory. Include Files Specify one or more text files that you want to be searched. Separate multiple files with a semicolon (;). To indicate a wild-card character, use an asterisk (*). For example, if you want to search all .xml and .config files in the specified directory, enter the following:
*.xml;*.config

Tip: You can use Windows Installer public properties to specify the names of the text files that you want to include in or exclude from your search. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files. Exclude Files Specify the file or files that you want to be excluded from the search. Separate multiple files with a semicolon (;). To indicate a wild-card character, use an asterisk (*). For example, if you want to exclude all .htm and .html files in the specified directory, enter the following:
*.htm;.html

Tip: You can use Windows Installer public properties to specify the names of the text files that you want to include in or exclude from your search. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files. Include Subfolders Specify whether you want the installation to search the subfolders of the location that you specified in the Target Folder setting. Specify whether you want the search-and-replace behavior to occur when the replacement sets component is installed on the target system. Specify whether you want the search-and-replace behavior to occur when the replacement sets component is removed from the target system.

Run on Install

Run on Uninstall

1798

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference System Configuration View

Table 43-53: Replacement Set Settings (cont.) Setting Component Description Select the component with which you want to associate this text file by using one of the following methods:

To select from a list of components that are already in your project, click the arrow. To browse to the component that you want to use or to create a new component for the text file changes, click the ellipsis button (...).

Replacement Settings

Project: The Text File Changes view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This view is not available in InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals.

When you select a replacement item in the Text File Changes explorer of the Text File Changes view, the following settings are available for you to configure.
Table 43-54: Replacement Settings Setting Find What Description Enter the string that you want to replace.

Tip: You can use Windows Installer public properties to specify the search strings and the replacement strings. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files. Replace With Enter the new string that should replace the existing string that is found.

Tip: You can use Windows Installer public properties to specify the search strings and the replacement strings. This enables you to use data that end users enter in dialogs, or other configuration information that is determined at run time, when your products text files are modified at run time. To learn more, see Using Windows Installer Properties to Dynamically Modify Text Files.

InstallShield 2010 User Guide

ISP-1600-UG00

1799

Chapter 43: View Reference Server Configuration View

Table 43-54: Replacement Settings (cont.) Setting Match Whole Word Only Description Specify whether you want to find only whole-word instances of the value that you have entered for the Find What setting. For example, if you specify Yes and you enter install for the Find What setting, the installation searches only for instances of install; it does not search for other forms of the word, such as installs, installation, or uninstall. Specify whether you want to restrict your search to strings with the same capitalization that you use in the Find What setting. For example, if you specify Yes and you enter install for the Find What setting, the installation searches only for all-lowercase instances of that string. If you select No, the installation searches for install, as well as INSTALL, Install, and other mixed-case instances. Replace Only Once Specify whether you want the installation to replace only the first occurrence of the search string. If you specify No, the installation replaces all instances of the search string.

Match Case

Server Configuration View


Project: This view and its subviews do not appear in the following project types:

InstallScript Object QuickPatch Smart Device

InstallShield makes it easy to configure server side installations by providing the following sub-views under Server Configuration in the view list.

Internet Information Services (IIS)


If you want to create an IIS Web site, application, virtual directory, application pool, or Web service extension on the target machine upon installation, you can configure it in the Internet Information Services view.

Component Services
To add component services to your installation project, go to the Component Services view.

SQL Scripts
The SQL Scripts view provides a central location for managing and organizing all SQL scripts by connections and settings.

1800

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Internet Information Services View


Project: The Internet Information Services view is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The Internet Information Services view enables you to create and manage new IIS Web sites, applications, virtual directories, application pools, and Web service extensions. The Internet Information Services view contains several areas:

Web Sites (This area lets you add Web applications and virtual directories. For more information, see Application and Virtual Directory Settings.) Application Pools Web Service Extensions

The following table describes the buttons that are displayed above the settings in the Internet Information Services view. The buttons are displayed if a Web site, application, virtual directory, application pool, or Web service extension is selected in the center pane.
Table 43-55: Controls in the Internet Information Services View Name of Control Categorized Icon Description Sorts the settings according to categories.

Alphabetical

Sorts the settings alphabetically.

Tip: You can configure an IIS setting dynamically at run time through the use of Windows Installer public properties (in Basic MSI or InstallScript MSI projects) or text substitution string variables (in InstallScript projects). This enables you to let end users specify the name of the virtual directory, the TCP port, the site number, or other IIS settings for the Web sites, applications, virtual directories, application pools, and Web service extensions that they are installing on the target machine. To learn more, see Using Windows Installer Properties to Dynamically Modify IIS Settings and Using InstallScript Text Substitution to Dynamically Modify IIS Settings.

Web Site Settings

Project: The Internet Information Services view is available in the following project types:

Basic MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1801

Chapter 43: View Reference Server Configuration View

InstallScript InstallScript MSI

Use the Web Sites item in the Internet Information Services view to add and delete Web sites, and to configure system-wide settings for the Web server.

Web Server Settings that Apply to All Web Sites in a Project


When you select the Web Sites explorer in the Internet Information Services view, the following Web server settings are displayed.
Table 43-56: Web Server Settings Setting Restart Web Server After Configuring IIS (IIS 6 and earlier only) SSIEnableCmdDirective Registry Value Description To restart IIS after each time the installation is done making IIS changes to the system, select Yes. Some applications may require IIS to be restarted. This setting applies to IIS 6 and earlier. IIS 7 ignores this setting. Specify how you want the SSIEnableCmdDirective registry value for the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters registry key to be set on the target system. The SSIEnableCmdDirective registry value controls whether the Web server allows the #exec CMD directive of server-side includes (SSIs) to be used to execute shell commands. Valid options are:

IgnoreDo not change the SSIEnableCmdDirective registry value on the target system. This is the default option. FALSE (0)Set the SSIEnableCmdDirective registry value on the target system to 0. This prevents the #exec CMD directive of server-side includes to be used to execute shell commands. Note that if you select this value and an IIS Web server has applications that rely on #exec CMD directives, those applications may stop working properly after your installation project's Web site and virtual directory are installed. TRUE (1)Set the SSIEnableCmdDirective registry value on the target system to 1. This allows the #exec CMD directive of server-side includes to be used to execute shell commands.

If you select the FALSE or TRUE options, InstallShield stores the valueeither 0 for FALSE or 1 for TRUEin the INSTALLSHIELD_SSI_PROP property. Because of security concerns, the default SSIEnableCmdDirective registry value is FALSE (0); the FALSE (0) value prevents end users from running unauthorized server-side executable files.

Note: If your product is uninstalled from a target system, the SSIEnableCmdDirective registry value is not changed, even if its value was changed during installation. For more information, see Specifying Whether a Web Server Should Allow the CMD Command to Be Used for SSI #exec Directives.

Note: The aforementioned Web server settings are not updated on a target system at installation run time if no IIS items (Web sites, applications, virtual directories, application pools, or Web service extensions) are installed.

1802

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Settings that Are Configurable for Each Web Site in a Project


When you select a Web site in the explorer, many settings are displayed. The Web site settings are organized into several main categories:

Identification General Home Directory Application Settings Security Advanced

Identification Settings The following settings are available in the Identification area for a Web site in the Internet Information Services view.
Table 43-57: Identification Settings for a Web Site Setting Name Description Enter a name for the Web site. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. IP Address To target a specific IP address, enter it. As an alternative, you can leave an asterisk (*), which is the default value. An asterisk or a blank value for this setting indicates that any unused IP address should be used. TCP Port The TCP Port setting for an IIS Web site indicates the port number on which the service is running on the target machine. Some versions of the IIS Web server can host multiple Web sites. Each Web site is associated with a unique port number. If you do not know what the port number on the target system should be, you can enter 0 for this setting. To learn which port and site numbers are used for the Web site when it is installed, see Configuring the TCP Port and Site Numbers. Host Header Name To specify the host header name that identifies the IIS Web site that is installed during your installation, type it in this box. For example:
www.mycompany.com

Host headers (also known as domain names) enable you to assign more than one Web site to an IP address on a Web server.

InstallShield 2010 User Guide

ISP-1600-UG00

1803

Chapter 43: View Reference Server Configuration View

Table 43-57: Identification Settings for a Web Site (cont.) Setting Site Number Description The Site Number setting indicates the number in the path at which the Web site will be created (that is, w3svc/3). The default value is 0. If you do not know what the site number on the target system should be, you can enter 0 for this setting. To learn which port and site numbers are used for the Web site when it is installed, see Configuring the TCP Port and Site Numbers.

General Settings The following settings are available in the General area for a Web site in the Internet Information Services view.
Table 43-58: General Settings for a Web Site Setting Component Description Select the component with which the Web site is associated. You can also click the ellipsis button (...) to locate an existing component or create a new one. To set the ASP.NET version for the Web site, enter the complete version number, or select it from the list. For example, to specify version 2 of ASP.NET, type 2.0.50727. To specify version 1.1 of ASP.NET, type 1.1.4322. If you specify an ASP.NET version for a Web site, IIS uses that same version number for any of the Web sites virtual directories.

ASP.NET Version

Important: If your installation may be run on a Windows Vista system, you may not want to set the ASP.NET version. Also note that if you specify version 3 of ASP.NET, an error occurs at run time. For more information, see Setting the ASP.NET Version for a Web Site, Application, or Virtual Directory. ASP.NET Platform If the installation may be run on a 64-bit version of Windows with the .NET Framework, specify which ASP.NET platform should be used to map the Web site, application, or virtual directory to the ASP.NET version:

32-bitThe 32-bit version of the ASP.NET IIS Registration tool should be used. Select this option if Yes is selected for the application pools Enable 32-Bit Applications setting; otherwise the installation fails. 64-bitThe 64-bit version of the ASP.NET IIS Registration tool should be used. Select this option if No is selected for the application pools Enable 32-Bit Applications setting; otherwise the installation fails.

For more information, see Considerations for Supporting IIS 6 on 64-Bit Platforms. Delete on Uninstall Specify whether you want to delete the selected Web site during uninstallation. For more information, see Uninstalling Web Sites, Applications, and Virtual Directories.

1804

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Table 43-58: General Settings for a Web Site (cont.) Setting Default Documents Description Type the name of the default page on your Web site. To specify multiple pages, separate each with a comma. A Web site serves a default page whenever a browser request does not specify a document name.

Home Directory Settings The following settings are available in the Home Directory area for a Web site in the Internet Information Services view.
Table 43-59: Home Directory Settings for a Web Site Setting Content Source Path (Local or UNC) Description This setting identifies the local path or network directory path that stores your Web site files.

If the content for the Web site is on the target system, click the ellipsis button (...) in this setting to specify a local path. The Browse for Directory dialog box opens. In a Basic MSI or InstallScript MSI project, this dialog box enables you to select a Windows Installer property (such as [IISROOTFOLDER]) or create a new one. In an InstallScript project, this dialog box enables you to select an InstallScript variable (such as <IISROOTFOLDER>) or create a new one. By default, the files are stored in IISROOTFOLDER. If the content for the Web site is not on the target system, click the UNC button in this setting to specify a network location. Following is an example: \\server\share

Tip: Each Web site should have a unique physical path, especially if the Web site is going to be installed on a Windows Vista or Windows Server 2008 system. To learn more, see Run-Time Requirements for IIS Support. Script Source Access Specify whether you want to allow end users to access source code if either read or write permissions are set. Source code includes scripts in ASP applications. Specify whether you want to provide end users with read access to the Web site. Specify whether you want to provide end users with write access to the Web site. This means that end users can change the Web sites properties on the target machine. Specify whether you want to allow end users to see all the virtual directories and subdirectories below this Web site. Specify whether you want to record visits to this Web site in a log file. Visits are recorded only if logging is enabled for this Web site.

Read Access Write Access

Directory Browsing

Log Visits

InstallShield 2010 User Guide

ISP-1600-UG00

1805

Chapter 43: View Reference Server Configuration View

Table 43-59: Home Directory Settings for a Web Site (cont.) Setting Index this Resource Description Specify whether you want to allow Microsoft Indexing Service to include this directory in a full-text index of your Web site. This setting applies to IIS 6 and earlier. IIS 7 ignores this setting.

Application Settings The following settings are available in the Application Settings area for a Web site in the Internet Information Services view.
Table 43-60: Application Settings for a Web Site Setting Application Pool Description To associate the selected Web site with an application pool, select its name in the list. As an alternative, you can click the ellipsis button (...) to select or create a string entry for the application pool. For more information, see Using String Entries in InstallShield. This setting applies to IIS 6 and later. Earlier versions of IIS ignore this setting.

Important: The application pool that you specify should be on the target system at run time or part of your installation; otherwise, the server may generate an error such as error 403.18. Application Mappings To customize the directorys application mappings, click the ellipsis button (...) in this setting. This opens the Application Mappings dialog box, which enables you to add, edit, and delete a mapping between a file name extension and the application that processes those files. Specify the number of minutes that a session can remain idle before the server terminates it automatically. If the end user does not refresh or request a page within the timeout period, the session ends. The default value is 20 minutes. Specify the length of time in seconds that .asp pages will allow a script to run before terminating and writing an event to the Windows Event Log. The minimum value for this property is 1 second; the default value is 90 seconds.

Session Timeout (minutes)

ASP Script Timeout (seconds)

Security Settings When you select a Web site in the Internet Information Services view, InstallShield displays several security-related settings in the Security area. The Security area lets you configure your Web server to verify the identify of users. You can authenticate users to prevent unauthorized ones from establishing a Web (HTTP) connection to restricted content. For more information, refer to the IIS documentation. The Security area contains several categories of settings:


1806

Anonymous Connection Authenticated Access Secure Communication


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

The settings in the Anonymous Connection area are as follows.


Table 43-61: Anonymous Connection Settings in the Security Settings Area Setting Enable Anonymous Access Description Specify whether you want to allow users to establish an anonymous connection. If you do want to allow anonymous connections, also enter the appropriate Windows user account information. If you do not need the Web server to confirm the identity of end users before they can access the content, select No for this setting. IIS Controls Anonymous Password Specify whether you want to automatically synchronize your anonymous password settings with those set in Windows on the target system. If the password that you type for the anonymous account differs from the password that Windows has, anonymous authentication will not work.

Note: Password synchronization should be used only with anonymous user accounts defined on the local computer, not with anonymous accounts on remote computers. Anonymous User Name Anonymous Password If you are enabling anonymous connections, type the name of the anonymous account. If you have selected No for the IIS Controls Anonymous Password setting, type the anonymous user account password. The password is used only within Windows. Anonymous users do not log on by using a user name and password.

The settings in the Authenticated Access area are as follows.


Table 43-62: Authenticated Access Settings in the Security Settings Area Setting Basic authentication Description Specify whether you want to enable the basic authentication method for collecting user name and password information for end users who access the Web site.

Important: With the basic method of authentication, user names and passwords are not encrypted when they are transmitted across the network. An unscrupulous end user who has network monitoring tools could intercept user names and passwords. Integrated Windows authentication Specify whether you want to enable integrated Windows authentication. Integrated Windows authentication uses a cryptographic exchange with the end user's browser to confirm the identity of the user. When integrated Windows authentication is enabled, the Web site will use it only under the following conditions:

Anonymous access is disabled. Anonymous access is denied because Windows file system permissions have been set, requiring end users to provide a Windows user name and password before establishing a connection with restricted content.

InstallShield 2010 User Guide

ISP-1600-UG00

1807

Chapter 43: View Reference Server Configuration View

The settings in the Secure Communication area are as follows.


Table 43-63: Secure Communication Settings in the Security Settings Area Setting SSL certificate Description To specify a server certificate that should be installed on the target system, click the ellipsis button (...) in this setting, and then select the appropriate security certificate file (.cer or .pfx). As an alternative, you can select a certificate from the list if your project already contains one or more certificates. InstallShield stores the .cer file in the Binary table. If no certificate is configured to be installed, this setting is blank. SSL certificate password If the certificate that you specified has a password, enter it in this setting.

Advanced Settings The following settings are available in the Advanced area for a Web site in the Internet Information Services view.
Table 43-64: Advanced Settings for a Web Site Setting Custom Errors Description To customize HTTP errors that are sent to clients when Web server errors occur, select the ellipsis button (...) in this setting. The Custom Errors dialog box opens, enabling you to specify the page that should be displayed for one or more HTTP errors. Administrators can use generic HTTP 1.1 errors, detailed custom error pages that IIS provides, or your own custom error pages that are you including in the installation. Other IIS Properties To specify values for IIS settings that are not displayed in the other areas in this view, select the ellipsis button (...) in this setting. The Other IIS Properties dialog box opens, enabling you to set the value of one or more IIS properties. To learn more, see Configuring Advanced IIS Settings. The advanced settings apply to IIS 6 and earlier. IIS 7 ignores these settings. For help on specific settings, see Metabase Property Reference on the MSDN Web site.

Application and Virtual Directory Settings


You can add applications and virtual directories to your Web site in the Internet Information Services view. When you select an application or virtual directory in this view, many settings are displayed. The settings are organized into several main categories:


1808

General Virtual Directory Application Settings Security


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Advanced

General Settings
The following settings are available in the General area for an application or a virtual directory in the Internet Information Services view.
Table 43-65: General Settings for an Application or a Virtual Directory Setting Name Description Enter a name for the application or virtual directory. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Component Select the component with which the application or virtual directory is associated. You can also click the ellipsis button (...) to locate an existing component or create a new one. To set the ASP.NET version for the application or virtual directory, enter the complete version number, or select it from the list. For example, to specify version 2 of ASP.NET, type 2.0.50727. To specify version 1.1 of ASP.NET, type 1.1.4322. If you specify an ASP.NET version for a Web site, IIS uses that same version number for any of the Web sites applications and virtual directories.

ASP.NET Version

Important: If your installation may be run on a Windows Vista system, you may not want to set the ASP.NET version. Also note that if you specify version 3 of ASP.NET, an error occurs at run time. For more information, see Setting the ASP.NET Version for a Web Site, Application, or Virtual Directory. ASP.NET Platform If the installation may be run on a 64-bit version of Windows with the .NET Framework, specify which ASP.NET platform should be used to map the Web site, application, or virtual directory to the ASP.NET version:

32-bitThe 32-bit version of the ASP.NET IIS Registration tool should be used. Select this option if Yes is selected for the application pools Enable 32-Bit Applications setting; otherwise the installation fails. 64-bitThe 64-bit version of the ASP.NET IIS Registration tool should be used. Select this option if No is selected for the application pools Enable 32-Bit Applications setting; otherwise the installation fails.

For more information, see Considerations for Supporting IIS 6 on 64-Bit Platforms. Default Documents Type the name of the default page on your application or virtual directory. To specify multiple pages, separate each with a comma. A application or virtual directory serves a default page whenever a browser request does not specify a document name.

InstallShield 2010 User Guide

ISP-1600-UG00

1809

Chapter 43: View Reference Server Configuration View

Virtual Directory Settings


The following settings are available in the Virtual Directory area for an application or a virtual directory in the Internet Information Services view.
Table 43-66: Virtual Directory Settings for an Application or a Virtual Directory Setting Content Source Path (Local or UNC) Description This setting identifies the local path or network directory path that stores the default files for your application or virtual directory.

If the content for the application or virtual directory is on the target system, click the ellipsis button (...) in this setting to specify a local path. The Browse for Directory dialog box opens. In a Basic MSI or InstallScript MSI project, this dialog box enables you to select a Windows Installer property (such as [IISROOTFOLDER]) or create a new one. In an InstallScript project, this dialog box enables you to select an InstallScript variable (such as <IISROOTFOLDER>) or create a new one. By default, the files are stored in IISROOTFOLDER. If the content for the application or virtual directory is not on the target system, click the UNC button in this setting to specify a network location. Following is an example: \\server\share

Tip: Each application or virtual directory should have a unique physical path, especially if it is going to be installed on a Windows Vista or Windows Server 2008 system. To learn more, see Run-Time Requirements for IIS Support. Script Source Access Specify whether you want to allow end users to access source code if either read or write permissions are set. Source code includes scripts in ASP applications. Specify whether you want to provide end users with read access to the application or virtual directory. Specify whether you want to provide end users with write access to the application or virtual directory. This means that end users can change the applications or virtual directorys properties on the target machine. Specify whether you want to allow end users to see all the virtual directories and subdirectories below this application or virtual directory. Specify whether you want to record visits to this application or virtual directory in a log file. Visits are recorded only if logging is enabled. Specify whether you want to allow Microsoft Indexing Service to include this application or virtual directory in a full-text index. This setting applies to IIS 6 and earlier. IIS 7 ignores this setting.

Read Access

Write Access

Directory Browsing

Log Visits

Index this Resource

1810

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Application Settings
The following settings are available in the Application Settings area for an application or a virtual directory in the Internet Information Services view.
Table 43-67: Application Settings for an Application or a Virtual Directory Setting Application Name Description To associate the selected virtual directory with an application, specify the application name. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Note: This setting is available for virtual directories, but not for applications. If the virtual directory was created in InstallShield 2009 or earlier and then upgraded to the current version of InstallShield, this setting is displayed. Otherwise, this setting is not included. Application Pool To associate the selected application or virtual directory with an application pool, select its name in the list. As an alternative, you can click the ellipsis button (...) to select or create a string entry for the application pool. For more information, see Using String Entries in InstallShield. This setting applies to IIS 6 and later. Earlier versions of IIS ignore this setting.

Important: The application pool that you specify should be on the target system at run time or part of your installation; otherwise, the server may generate an error such as error 403.18. Application Mappings To customize the directorys application mappings, click the ellipsis button (...) in this setting. This opens the Application Mappings dialog box, which enables you to add, edit, and delete a mapping between a file name extension and the application that processes those files. Specify the number of minutes that a session can remain idle before the server terminates it automatically. If the end user does not refresh or request a page within the timeout period, the session ends. The default value is 20 minutes. Specify the length of time in seconds that .asp pages will allow a script to run before terminating and writing an event to the Windows Event Log. The minimum value for this property is 1 second and the default value is 90 seconds. Specify what level of program execution is allowed for the selected application or virtual directory. Available options are:

Session Timeout (minutes)

ASP Script Timeout (seconds)

Execute Permissions

NoneOnly static files such as HTML and image files can be accessed. Scripts OnlyOnly scripts such as ASP scripts can be run. Scripts and ExecutablesAll file types can be accessed or run.

InstallShield 2010 User Guide

ISP-1600-UG00

1811

Chapter 43: View Reference Server Configuration View

Table 43-67: Application Settings for an Application or a Virtual Directory (cont.) Setting Application Protection Description Specify the level of protection:

HighThe application is run in an isolated process that is separate from other processes. MediumThe application is run in an isolated pooled process with other applications. LowThe application is run in the same process as Web services.

This setting applies to IIS 5 and earlier. Later versions ignore this setting.

Security Settings
When you select an application or a virtual directory in the Internet Information Services view, InstallShield displays several security-related settings in the Security area. The Security area lets you configure your application or virtual directory to verify the identify of users. You can authenticate users to prevent unauthorized ones from establishing a Web (HTTP) connection to restricted content. For more information, refer to the IIS documentation. The Security area contains the following categories of settings:

Anonymous Connection Authenticated Access

The settings in the Anonymous Connection area are as follows.


Table 43-68: Anonymous Connection Settings in the Security Settings Area Setting Enable Anonymous Access Description Specify whether you want to allow users to establish an anonymous connection. If you do want to allow anonymous connections, also enter the appropriate Windows user account information. If you do not need the Web server to confirm the identity of end users before they can access the content, select No for this setting. IIS Controls Anonymous Password Specify whether you want to automatically synchronize your anonymous password settings with those set in Windows on the target system. If the password that you type for the anonymous account differs from the password that Windows has, anonymous authentication will not work.

Note: Password synchronization should be used only with anonymous user accounts defined on the local computer, not with anonymous accounts on remote computers. Anonymous User Name Anonymous Password If you are enabling anonymous connections, type the name of the anonymous account. If you have selected No for the IIS Controls Anonymous Password setting, type the anonymous user account password. The password is used only within Windows. Anonymous users do not log on by using a user name and password.

1812

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

The settings in the Authenticated Access area are as follows.


Table 43-69: Authenticated Access Settings in the Security Settings Area Setting Basic authentication Description Specify whether you want to enable the basic authentication method for collecting user name and password information for end users who access the application or virtual directory.

Important: With the basic method of authentication, user names and passwords are not encrypted when they are transmitted across the network. An unscrupulous end user who has network monitoring tools could intercept user names and passwords. Integrated Windows authentication Specify whether you want to enable integrated Windows authentication. Integrated Windows authentication uses a cryptographic exchange with the end user's browser to confirm the identity of the user. When integrated Windows authentication is enabled, the Web site will use it only under the following conditions:

Anonymous access is disabled. Anonymous access is denied because Windows file system permissions have been set, requiring end users to provide a Windows user name and password before establishing a connection with restricted content.

Advanced Settings
The following settings are available in the Advanced area for an application or a virtual directory in the Internet Information Services view.
Table 43-70: Advanced Settings for an Application or a Virtual Directory Setting Custom Errors Description To customize HTTP errors that are sent to clients when Web server errors occur, select the ellipsis button (...) in this setting. The Custom Errors dialog box opens, enabling you to specify the page that should be displayed for one or more HTTP errors. Administrators can use generic HTTP 1.1 errors, detailed custom error pages that IIS provides, or your own custom error pages that are you including in the installation. Other IIS Properties To specify values for IIS settings that are not displayed in the other areas in this view, select the ellipsis button (...) in this setting. The Other IIS Properties dialog box opens, enabling you to set the value of one or more IIS properties. To learn more, see Configuring Advanced IIS Settings. The advanced settings apply to IIS 6 and earlier. IIS 7 ignores these settings. For help on specific settings, see Metabase Property Reference on the MSDN Web site.

InstallShield 2010 User Guide

ISP-1600-UG00

1813

Chapter 43: View Reference Server Configuration View

Application Pool Settings

Project: The Internet Information Services view is available in the following project types:

Basic MSI InstallScript InstallScript MSI

Note: Application pools are available only on machines with IIS 6.0 or later installed.

Use the Application Pools item in the Internet Information Services view to add and delete application pools. When you select an application pool in the explorer, many settings are displayed. The application pool settings are organized into several main categories:

General CPU Settings Process Model Recycling

General Settings
The following settings are available in the General area for an application pool in the Internet Information Services view.
Table 43-71: General Settings for an Application Pool Setting Name Description Provide a display name for the application pool that you want to configure. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Component Select the component with which the application pool is associated. You can also click the ellipsis button (...) to locate an existing component or create a new one. Specify whether you want the component that contains the application pool to be removed when the component's feature is uninstalled. If you want the component to be marked as permanent so that it is not uninstalled, select Yes. If appropriate, select the .NET Framework version that the application pool should load. This setting applies to IIS 7 and later. Earlier versions of IIS ignore this setting.

Mark Component as Permanent

.NET Framework Version

1814

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Table 43-71: General Settings for an Application Pool (cont.) Setting Queue Length Description Specify the maximum number of requests that HTTP.sys should queue for the application pool. The default value is 4000. Specify the appropriate request-processing pipeline mode for the selected application pool:

Managed Pipeline Mode

IntegratedThe ASP.NET request processing is integrated into the IIS 7 requestprocessing pipeline. This is the default option. ClassicIIS routes requests for code through ISAPI, which processes the requests as if the application were running in IIS 6.

This setting applies to IIS 7. Earlier versions of IIS ignore this setting. Enable 32-Bit Applications Specify whether you want to allow 32-bit applications in the selected application pool to be run on 64-bit systems. This setting applies to application pools that are installed on IIS 7 or later. Earlier versions of IIS ignore this setting. For more information, see Considerations for Supporting IIS 6 on 64-Bit Platforms.

CPU Settings
The following settings are available in the CPU area for an application pool in the Internet Information Services view.
Table 43-72: CPU Settings for an Application Pool Setting Limit Description Specify the maximum percentage of CPU time (in 1/1000ths of a percent) that the worker processes in the application pool are allowed to consume over the period of time that is indicated for the Limit Interval setting. To avoid limiting the worker processes to a percentage of CPU time, specify the number 0. If you leave this setting blank, InstallShield does not configure the CPU limit, and whatever value is set by default on the server is used for your application pool. Limit Action Specify the action that should occur if the CPU limit that is set for the application pool is exceeded. Available options are:


Limit Interval (minutes)

No actionAn event entry is added to the event log. No other action occurs. ShutdownAn event entry is added to the event log. In addition, the application pool is shut down for the remainder of the limit interval.

Specify the amount of time (in minutes) between the reset intervals for CPU monitoring and throttling limits on the application pool. When this time interval has elapsed, IIS resets the CPU timers for the logging and limit intervals. To disable CPU monitoring, specify the number 0. If you leave this setting blank, InstallShield does not configure the CPU limit interval, and whatever value is set by default on the server is used for your application pool.

InstallShield 2010 User Guide

ISP-1600-UG00

1815

Chapter 43: View Reference Server Configuration View

Process Model Settings


The following settings are available in the Process Model area for an application pool in the Internet Information Services view.
Table 43-73: Process Model Settings for an Application Pool Setting Identity Description Specify the account under which the application pools worker process should run. Available options are:

NetworkServiceThis account is a member of the Users group, and it has the fewest user rights that are required to run the application. This account provides the most security against an attack that might try to take over the Web server. LocalServiceThis account is a member of the Users group, and it has the same user rights as the NetworkService account. However, the LocalService account is limited to the local computer. LocalSystemThis account has all user rights, and it is part of the Administrators group. SpecificUserIf you do not want to use one of the predefined accounts, select this option, and also specify the user name and password for the account that you want to use.

Note: If you use a SpecificUser identity, ensure that the user account that you specify is a member of the IIS_IUSRS group on the Web server so that the account can access the appropriate resources. SpecificUser User Name SpecificUser User Password If you select SpecificUser for the Identity setting, enter the specific users user name. If you select SpecificUser for the Identity setting, enter the specific users password.

Project: In Basic MSI and InstallScript MSI projects, you can specify a Windows Installer property for the password. To prevent the password from being logged, set the value of the MsiHiddenProperties property to the name of the Windows Installer property that you are using for the password. For more information, see MsiHiddenProperties in the Windows Installer Help Library. Idle Timeout (minutes) Specify the amount of time (in minutes) for which a worker process should remain idle before it is shut down. Specify the maximum number of worker processes that can service requests for the application pool. If you specify a number greater than 1, the application pool is considered to be a Web garden.

Maximum Worker Processes

1816

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Recycling Settings
The Recycling settings for an application pool in the Internet Information Services view let you configure the recycling of worker processes. In worker process isolation mode, you can configure IIS to periodically restart worker processes in an application pool, enabling you to manage precisely those worker processes that are faulty. This helps to ensure that specified applications in those pools remain healthy and that system resources can be recovered. The following settings are available in the Recycling area for an application pool in the Internet Information Services view.
Table 43-74: Recycling Settings for an Application Pool Setting Regular Time Interval (minutes) Description Specify the amount of time (in minutes) after which the application pool should be recycles. To prevent the application pool from being recycled on a regular interval, enter the number 0. Request Limit Specify the maximum number of requests that the application pool can process before it is recycled. To allow the application pool to process an unlimited number of requests, enter the number 0. Specific Times To specify the time of day when the application pool should be recycled, click the ellipsis button (...) in this setting. The Recycling Specific Times dialog box opens, enabling you to configure the specific local time or times. When you specify a time, use the 24-hour format. For example, to specify 10:00 P.M., enter a time of 22:00. In this setting, InstallShield indicates the number of times that were specified, and also lists the times in square brackets. Times are separated with a vertical bar. For example, the following value indicates that the specific recycling times are 5:00 A.M. and 11:00 P.M.:
2 defined [05:00|23:00]

Web Service Extension Settings

Project: The Internet Information Services view is available in the following project types:

Basic MSI InstallScript InstallScript MSI

Note: Web service extensions are available only on machines with IIS 6.0 or later installed. On systems with IIS 7, Web service extensions require that the IIS Metabase and IIS 6 Configuration Compatibility feature be installed. For more information, see Version-Specific Information for IIS Support in InstallShield.
InstallShield 2010 User Guide ISP-1600-UG00 1817

Chapter 43: View Reference Server Configuration View

Use the Web Service Extensions item in the Internet Information Services view to add and delete Web service extensions. When you select a Web service extension in the explorer, the following settings are available for you to configure.
Table 43-75: General Settings for a Web Service Extension Setting Description Description Type the name of the new Web service extension file. The name is associated with a string ID, which can be translated. Click the Browse button to locate an existing string, or create a new one once the Select String dialog box has been launched. Select the component with which the Web service extension is associated. You can also click the ellipsis button (...) to locate an existing component or create a new one. Specify whether you want the component that contains the Web service extension to be removed when the component's feature is uninstalled. If you want the component to be marked as permanent so that it is not uninstalled, select Yes. Type the name of the Web service extension file.

Component

Mark Component as Permanent

Full Path to File

Tip: You can use directory IDs to specify a file. For example, you can specify a directory and a file as [INSTALLDIR]file.exe. Group ID Type the name of Web service extensions group ID. Group IDs enable you to classify different DLLs and common gateway interfaces (CGIs) and have dependencies for the applications.

Tip: You can use directory IDs to specify a group. Allow UI Deletable Specify whether you want to set the status of the Web service extension to Allow. Specify whether you want to allow the Web service extension file to be deleted from within IIS Manager. Specify whether you want to enable existing extensions to be overwritten.

Overwrite Existing Extensions

Component Services View


Project: The Component Services view is available in the following project types:

Basic MSI InstallScript MSI Merge Module

1818

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

The Component Services view enables you to manage COM+ applications and components for your installation package. You can manage both COM+ server applications and application proxies. A COM+ application proxy consists of a subset of the attributes of the server application, and it enables remote access from a client machine to the machine where the application resides. Note the following information regarding component services in InstallShield:

Only non-system COM+ applications can be added to your project. Therefore, InstallShield displays only non-system COM+ applications under the COM+ Applications explorer in the Component Services view. COM+ server applications can be installed on only Windows 2000 operating systems and later. COM+ server applications can be installed on only Windows 2000 operating systems and later. COM+ application proxies can be installed on any operating system that supports distributed component object model (DCOM); this includes machines that are running Windows NT or Windows 9x if DCOM is also installed. However, if DCOM is not installed, the application proxy will not work. InstallShield does not have the ability to check if DCOM is installed on a client machine. An application proxy is available for COM+ server applications only, not for library applications.

The Component Services view has several tabs: Installation General Security Identity Activation Queuing Advanced Dump Pooling/Recycling

The settings on the Installation tab are InstallShield-specific settings. The settings on the other tabs are similar to those in the Component Services administrative tool in the Control Panel. For details on each of the settings on the Installation tab, see Installation Tab. To learn about the settings on the other tabs, consult the Component Services help.

InstallShield 2010 User Guide

ISP-1600-UG00

1819

Chapter 43: View Reference Server Configuration View

Installation Tab
The Installation tab is one of the tabs that is displayed when you select a COM+ application in the Component Services view.
Table 43-76: Installation Tab Settings Setting Server Description To install the selected COM+ application on other machines, select this check box. The default destination location for COM+ applications is:
[ProgramFilesFolder]COMPlus Applications\{UID}

Destination (Server)

To install the COM+ files to a different location, select the target destination. If the destination that you want to specify is not available in the list, select the Browse, create, or modify a directory entry option. Condition (Server) Install user identities with roles Specify a condition for the COM+ server application if appropriate. To install the selected COM+ application with the user identities and roles that are configured for the COM+ application on your local machine, select this check box. The Component Services view shows COM+ settings that are available in Component Services on the local machine. To refresh the COM+ settings that are displayed in your project with the settings that are available from Component Services on the local machine, select this check box. InstallShield refreshes the settings each time that you build a release. Install after InstallFinalize action If the selected COM+ application contains .NET assemblies that need to be installed to the global assembly cache (GAC), select this check box. If you select this check box, the ISComponentServiceFinalize action installs the selected COM+ application after the InstallFinalize action. Windows Installer does not commit changes made in the in-script session to the GAC until InstallFinalize. To install the selected COM+ application as an application proxy, select this check box. A COM+ application proxy consists of a subset of the attributes of the server application, and it enables remote access from a client machine to the machine where the application resides. The default destination location for COM+ applications is:
[ProgramFilesFolder]COMPlus Applications\{UID}

Refresh the COM+ settings from the client machine at build

Proxy

Destination (Proxy)

To install the COM+ files to a different location, select the target destination. If the destination that you want to specify is not available in the list, select the Browse, create, or modify a directory entry option. Condition (Proxy) Specify a condition for the proxy server support if appropriate.

1820

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Table 43-76: Installation Tab Settings (cont.) Setting Remote Server Name Description Specify the name of the remote server computer where the application resides. You can type the exact name or use the default [REMOTESERVERNAME] property, which is automatically created when you select the Proxy check box for a COM+ application in your installation.

Note: The default value for the [REMOTESERVERNAME] property is the name of the machine used to add the COM+ application to the installation project in InstallShield. To change the value of the [REMOTESERVERNAME] property, use the Property Manager view. If you would like the end user to be able to specify the remote server, add a Remote Server edit field control to an end-user dialog in the Dialogs view. Set the Property value of this control to REMOTESERVERNAME. Enable distributed COM on the client machine Select this check box if appropriate. Clear this check box if you know that distributed component object model (DCOM) is already enabled on all client machines and you will not have administrative privileges on them. If you select this check box, Y is written at installation time to the EnableDCOM entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole registry key to enable DCOM.

Note: End users can enable or disable DCOM on their machines using the Component Services administrative tool in the Control Panel. However, the application proxy will not work on a client machine if DCOM is disabled on that machine. For this reason, you may want to select the Enable distributed COM on the client machine check box. If an end user uninstalls the application proxy support, the EnableDCOM registry entry is not changed, even if the installation process involved changing this registry entry to Y on the target machine. Features Select the feature that should contain the selected COM+ application. To add the COM+ application to a new feature, first create a feature in the Features view, and then select its check box in this list.

SQL Scripts View


Project: The SQL Scripts view is available in the following project types:

Basic MSI InstallScript InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1821

Chapter 43: View Reference Server Configuration View

The SQL Scripts view provides a central location for managing and organizing all SQL scripts by server connections and settings. The current implementation provides support for the latest versions of Microsoft SQL Server, MySQL, and Oracle. You will be able to perform most of the following major functions to configure your SQL servers from the SQL Scripts view. Some limitations may apply to certain server types.

Connect to SQL servers. Import catalog schema and/or data. Associate SQL scripts with features. Set required SQL server/script properties (server name, database name, authentication method, etc.). Set SQL script for execution during installation or uninstallation. Edit SQL scripts. Require and/or target specific versions of SQL Server, MySQL, or Oracle. Define SQL script text replacement. Open scripts in Microsoft SQL Query Analyzer.

Note: The import database functionality applies to the Microsoft SQL Server Database. Oracle users should refer to the Oracle Web page on Oracle Database Utilities for information on utilities that may work in conjunction with InstallShield. Microsoft SQL Query Analyzer is part of the Microsoft SQL Server installation. This tool can be run only on SQL Server databases.

SQL Connections
In the SQL Scripts view, scripts are organized by connection, since no script can run on a server until a connection has been established. Furthermore, the grouping of connections with corresponding scripts facilitates the sharing of connection settings to different scripts. When you create or select a SQL connection in the SQL Scripts view, the following tabs are available:

General tab Requirements tab Advanced tab

General Tab
You can configure the following properties for a SQL connection on the General tab in the SQL Scripts view.

1822

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Catalog Name

Note: Creating a new application catalog based on Oracle database settings is equivalent to creating a new database based on SQL Server settings in InstallShield. However, terminology is slightly different in reference to Oracle. In Oracle, the catalog is equivalent to the schema being used for every new application catalog. Therefore, note the semantic differences between catalog and database when understanding the differences between SQL Server and Oracle support in the help.

Enter the name of the SQL catalog to which you want to create a connection during the installation. If you leave this blank, the installation will attempt to connect to the default catalog during the connection test phase at run time. If the catalog you specify is not found at that time, then InstallShield 2010 will still create the specified catalog upon connection verification. This is because the Create Catalog If Absent option is selected in the InstallShield interface by default. Create Catalog If Absent This option is selected by default. If this option is selected, the installation creates the specified catalog upon connection verification at the SQLLogin dialog at run time.

Note: You should note that when the Create Catalog If Absent option is selected, different SQL commands are issued for the various supported server types. For Microsoft SQL Server and MySQL, selecting this option will issue the following:
CREATE DATABASECatalogName

CatalogName is what you specify in the Catalog Name box in the General tab at the connection level within the SQL Scripts view. For Oracle, selecting the Create Catalog If Absent option will issue the following:
CREATE USER CatalogName IDENTIFIED BY CatalogName DEFAULT TABLESPACE USERS QUOTA UNLIMITED on USERSGRANT CONNECT TO CatalogNameGRANT DBA TO CatalogNameALTER USER CatalogName DEFAULT ROLE ALL

Therefore, you should note that for Oracle the schema name serves as the user name and password for the selected catalog by default.

Tip: If you do not wish to use the Create Catalog If Absent option to create a catalog, you can run a customized script to create a catalog. When you run a custom script, you can schedule the execution of the script during login in the Runtime tab of the SQL Scripts view at the script level.

For more information about running a customized script, see the following help topics for instructions on creating sample projects that will create a SQL Server or Oracle catalogs and tables by running sample SQL scripts:

Creating a Sample Installation that Creates a SQL Server Database by Running Customized SQL Script Creating a Sample Installation that Creates an Oracle Schema by Running Customized SQL Script

In the case where the Create Catalog If Absent option is cleared during installation design and the catalog is not found at run time, then the installation behavior will slightly differ for the following project types at run time.

InstallShield 2010 User Guide

ISP-1600-UG00

1823

Chapter 43: View Reference Server Configuration View

For MSI projects: InstallShield will connect to the default catalog at the SQLLogin dialog during run time to test the connection. This enables the installation to run custom code during the InstallExecuteSequence. However, the presence of the catalog needs to be guaranteed when the SQL Scripts specified in your project are executed. The run time will re-establish the connection with the specified catalog to run the scripts. If the catalog is absent at this point, the connection will fail. For InstallScript projects: The catalog needs to be present at the SQLLogin dialog since the run time holds the connection until the installation ends, once the connection is established. In this scenario, you can run a custom InstallScript code to create the catalog before the SQLLogin dialog shows up to override the default behavior.

Default Target Server Name


For Microsoft SQL Server and MySQL, you can enter the machine name of the target SQL Server here. This setting is optional. For Oracle client machines with Oracle 10g client software installed, you will have to enter a SQL connect URL string in the following format:
//host: [port] [/service name]

The following is an example of what you would type to connect to a specified remote Oracle machine:
//sch01jsmithrxp.installshield.com:1521/ORCL

You can also specify a local net service name if you have tnsnames.ora configured on the client machine. Consult the Oracle Support Web site for more details.

Connect Using
Select the type of authentication you want to use to connect to the specified catalog. For SQL Server Authentication, you will need to enter login and password information for the targeted server.

Comments
Enter any comments you may have regarding this connection.

Requirements Tab
On the Requirements tab, you can select a database server and specify version requirements for the type of server that the installation should target at run time. You have the option to add, delete, or edit existing version requirements associated with a particular database server.

Task

To select a database server and specify version requirements for the type of server that InstallShield will target at run time: 1.

Select and highlight a database server. If you select both database servers, then InstallShield will establish a connection and perform the specified requirement checks on the selected server types based on the sequence of the server types as they appear in the table. In other words, if InstallShield finds a match after checking requirements against the first database server in the list, then a connection and a check will not be done on any selected subsequent database types in the table. The SQL scripts associated with the connection will be installed to that first database server verified.

1824

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

2.

Then click Add. This opens either the New Microsoft SQL Server Version Requirement or New MySQL Version Requirement dialog box.

3. 4.

Specify version requirements for the type of server that InstallShield will target at run time. After configuring settings in the version requirement dialog, click OK.

A new database server entry and its appropriate version information should appear in the table.

Task

To delete or edit an entry in the Database Servers table: 1. 2. 3. 4.

Select the database server that InstallShield is targeting at run time. Select the version requirement that you want to delete or edit. Click Delete or Edit. When you click Edit, either the Edit Microsoft SQL Server Version Requirement or Edit MySQL Version Requirement dialog box opens. Update the settings and click OK.

Note: Multi-selection of items in the version requirements section of the table applies only to the Delete operation.

Allow installation to continue when minimum requirements are not met


If you want to allow the installation to continue if the minimum database server requirements are not met, select this check box. If you select this check box and the minimum requirements are not met, the installation skips the SQL connection and all of its SQL scripts, and continues with the rest of the installation. If you clear this check box and the minimum requirements are not met, the installation does not allow the end user to continue with the rest of the installation. This check box is cleared by default.

Allow installation to Microsoft SQL Server Desktop Engine/SQL Server Express


Select this check box if it is true. Clear this check box if you want to prohibit installation to MSDE and SQL Server Express.

InstallShield 2010 User Guide

ISP-1600-UG00

1825

Chapter 43: View Reference Server Configuration View

Advanced Tab
This tab provides advanced settings that should only be set by expert users to expand and customize the default functionality provided by InstallShield.
Table 43-77: SQL Scripts View Advanced Tab Settings Setting Command Timeout (seconds) Description Specify the command timeout period. The default is 30 seconds. The valid range of this value is 0 to 2147483647. A value of 0 indicates no limit. Once this period of time has elapsed without completing the command, an error occurs and ADO cancels the command. Specify the appropriate batch separator for the selected connection. The batch separator is used for all SQL scripts that are associated with this connection. The default value is GO, which is the same default that is used in Microsoft products. Oracle utilities use a slash (/) as the default value. A batch separator is a command that is recognized by SQL utilities such as osql, isql, and SQL Query Analyzer, as well as InstallShield. The run time interprets a batch separator as a signal that it should send the current batch of SQL statements to a database server.

Batch Separator

Note: A semicolon (;) is the only batch separator that does not need to be on a separate new line by itself. All other batch separators must be on a separate line. For example, if you specify a slash as a batch separator and you have the following SQL script, the installation sends some statement to a SQL server as a batch first; then it sends another statement as another batch:
some statement / another statement /

If you have the following script, the installation sends all of the lines, including the slashes at the end of lines, as a batch:
some statement/ another statement/

Target Server Property Name Target Catalog Property Name Authentication Type Property Name Server Authentication Login ID Property Name Server Authentication Password Property Name

This setting enables you to select a property that determines the behavior of the target server. This setting enables you to select a property that determines the behavior of the target catalog. This setting enables you to select a property that determines the behavior of the authentication type. This setting enables you to select a property that determines the behavior of the server authentication login. This setting enables you to select a property that determines the behavior of the server authentication password.

1826

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

Note: The default properties for SQL login settings are as follows:

IS_SQLSERVER_SERVER IS_SQLSERVER_DATABASE IS_SQLSERVER_AUTHENTICATION IS_SQLSERVER_USERNAME IS_SQLSERVER_PASSWORD

If you want to hold different settings across the connections, then you will need to create new properties for each connection.

Note: If you change the SQL Properties in the Advanced tab of a SQL Connection, these values are not automatically updated in the corresponding SQL Login dialog in the Dialogs view. Therefore, you must manually change the values in the dialog to match the values entered into the Advanced tab of the SQL Connection.

SQL Script Level


When you click a SQL script in the SQL Scripts view, the following tabs are available:

General Tab

General tab Script tab Runtime tab Database Import tab Text Replacement tab

You can configure the following settings on the SQL script level in the General tab within the SQL Scripts view.

SQL Script File Name


Browse for the SQL script that your installation will execute at run time. You can also select the feature with which the SQL script is associated and view its component.

Schema Version
Specify a version number to enable script versioning. For more information on this setting, see Specifying a Version Number for a SQL Script File.

Tip: When you specify a number for the Schema Version setting and InstallShield adds the custom InstallShield table for storing the schema version number on the target database, the data is not automatically removed upon uninstallation.

InstallShield 2010 User Guide

ISP-1600-UG00

1827

Chapter 43: View Reference Server Configuration View

Therefore, if you want the installation to be able to roll back the changes, you need to create a custom script upon uninstallation to drop the InstallShield table.

Script Tab
This view is intended for advanced users. To create a script from an existing database with step-by-step instructions, use the Database Import Wizard.

Note: Currently, this feature applies to the Microsoft SQL Server Database.

Runtime Tab
You can configure the following options for SQL scripts in this tab:

Script Execution
Determine when you want the installation to execute a SQL script. You can select one of the following script execution options:

Run Script During InstallThis option enables you to run a custom script during installation. This

option is also associated with component state because each script is tied in with a feature by design. Therefore, you can specify conditional statements in conjunction with this setting in the Script Condition (only available for Basic MSI and InstallScript MSI projects) section of this tab. In Basic MSI and InstallScript MSI projects, the ISSQLServerInstall action is associated with this option. In InstallScript projects, the SQLRTComponentInstall script function is associated with this option.

Run Script During UninstallThis option enables you to run a custom script during uninstallation.

This option is also associated with component state because each script is tied in with a feature by design. Therefore, you can specify conditional statements in conjunction with this setting in the Script Condition (only available for Basic MSI and InstallScript MSI projects) section of this tab. In Basic MSI and InstallScript MSI projects, the ISSQLServerUninstall action is associated with this option. In InstallScript projects, the SQLRTComponentUninstall script function is associated with this option.

Run Script During RollbackThis option enables you to run a custom script during rollback.

InstallShield does not roll back the changes automatically. You will have to run a custom script allowing rollback when you select the Run Script During Rollback option. In Basic MSI and InstallScript MSI projects, the ISSQLServerRollback action is associated with this option.

Run Script During LoginThis option enables you to run your script during login. Some limitations

associated with the Run Script During Login option are:

When you set this option during installation design, you should be aware that the script changes are irreversible once the end user clicks Next in the SQLLogin dialog at run time, even when the

1828

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Server Configuration View

end user attempts to cancel the installation before clicking the Install button on the ReadyToInstall dialog.

The script is executed after credentials and requirements are verified and before a connection has been made to the catalog. Therefore, any schema version requirements that you set for the script during installation design will not have taken place at run time.

In Basic MSI projects, the ISSQLServerValidate action is associated with this option. In InstallScript MSI projects, the SQLRTServerValidate script function is associated with this option. In InstallScript projects, the SQLRTConnect script function is associated with this option.

Script Error Handling


This option gives you the following choices on handling SQL script errors when they come up at run time:

On Error, Go to Next Script On Error, Go to Next Statement On Error, Abort Installation

Script Condition
You can specify conditional statements for SQL scripts that are run during installation or uninstallation.

Database Import Tab

Tip: The Database Import functionality currently is only available for Microsoft SQL Server. Oracle users should refer to the Oracle Web page on Oracle Database Utilities for information on utilities that may work in conjunction with InstallShield.

You can run the Database Import Wizard from this tab to view and modify your import settings. The wizard will walk you through the process of generating a SQL script which recreates part or all of an existing Microsoft SQL Database. Once you complete the wizard, you can click the Regenerate button in this tab to refresh your script. The Regenerate SQL Script at Build option lets you indicate whether the script should be regenerated each time that you build the project. Regenerating a script every time you build your project can slow down the entire build project.

Text Replacement Tab


This tab allows you to specify a set of strings to replace in your SQL script at run time. You should only replace text that is unique and will not cause any script syntax errors. InstallShield will replace text by the replacement value you specify.

InstallShield 2010 User Guide

ISP-1600-UG00

1829

Chapter 43: View Reference Behavior and Logic View

Behavior and Logic View


Project: The Behavior and Logic view is not available in the following project types:

QuickPatch Smart Device

By adding custom actions; sequencing actions and dialogs; adding support files; using InstallScript; searching the target system for required files, folders, or other elements; or configuring Windows Installer properties, you can design any custom functionality that your installation requires.

InstallScript

Project: The InstallScript view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

InstallScript is an installation authoring language that is similar to the C programming language. The InstallScript view provides you with a script editor pane in which you can create and edit your scripts.

Custom Actions and Sequences

Project: The Custom Actions and Sequences view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Sequences direct all the actions that are performed during installation, from file transfer to displaying the user interface. Use the Custom Actions and Sequences view to sequence the actions and dialogs in your project. If Windows Installer does not directly support functionality that is required by your installation program, you can extend your installation program through the use of custom actions in the Custom Actions and Sequences view.

Custom Actions

Project: The Custom Actions view is available in the following project types:

Merge Module

1830

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

MSM Database

Although merge modules do support the use of custom actions, sequences are not defined through a dedicated view in merge module projects.

Tip: You can control the launch of custom actions in a merge module by modifying the ModuleInstallExecuteSequence table in the Direct Editor. When you add the merge module to your installation project, all custom actions and dialogs included in the merge module are available for you to insert in the installation's sequences via the Custom Actions and Sequences view.

Support Files/Billboards

Project: The Support Files view is available in the following project types:

Basic MSI InstallScript Object

The Support Files/Billboards view is available in the following project types: InstallScript InstallScript MSI

Support Files The Support Files view lets you add, sort, and delete support filesfiles that are required by your installation project only during the installation process. Billboards The Billboards area in the Support Files/Billboards view lets you add billboards to your project. Billboards are images that are displayed for a specified amount of time while your installation runs. You can use billboards to provide information about the product being installed or to entertain the end user during the installation process.

System Search

Project: The System Search view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

Use the System Search view to search for a particular file, folder, registry key, or .ini value on the target system prior to an installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1831

Chapter 43: View Reference Behavior and Logic View

Property Manager

Project: The Property Manager view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Property Manager view enables you to edit the Property table from within the InstallShield interface. Windows Installer properties give you access to many machine-specific variables such as the users name or company.

InstallScript View
Project: The InstallScript view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The InstallScript view enables you to customize your setup script using the InstallScript language.

Files and Functions Nodes


The InstallScript explorer in the center pane of the InstallScript view contains the following folders:
Table 43-78: Folders in the InstallScript View Folder Files Project Type Basic MSI, Merge Module, InstallScript MSI, InstallScript, InstallScript Object Basic MSI, Merge Module, InstallScript MSI, InstallScript, InstallScript Object Description The Files folder lists all of your script (.rul) files. Click a script file to display its contents in the script editor.

Functions

The Functions folder lists all of the InstallScript functions contained in all of the script files listed under the Files folder. Click a function to display that function in the script editor.

1832

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-78: Folders in the InstallScript View (cont.) Folder Properties Project Type InstallScript, InstallScript Object Description The Properties folder lists all of the InstallScript properties contained in all of the script files listed under the Files folder. Click a property to display that propertys declaration in the script editor. (The propertys procedures are listed under the Functions folder.) The Methods folder lists all of the InstallScript methods contained in all of the script files listed under the Files folder. Click a method to display that methods definition in the script editor.

Methods

InstallScript, InstallScript Object

Script Editor
Clicking an item under any of the folders in the InstallScript view displays the script editor in the right pane in the InstallShield interface. To learn more, see Script Editor.

Script Editor

Project: The script editor is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The script editor displays the text of the selected InstallScript file (in the InstallScript view) or the selected SQL script file (in the SQL Scripts view). You can modify or edit the script using commands from the Edit and Tools menus.

The Script Toolbar in the InstallScript view

Project: The script toolbar is not available in the following project types:

Basic MSI Merge module

InstallScript event handlers are not available in these project types because they use custom actions to run InstallScript.

The script toolbar is displayed across the top of the script editor in the InstallScript view; it contains an event category list box, as well as an event list box. The script toolbar lets you paste installation event handler function blocks in your script files. Event handlers in your script files override the default actions that are associated with installation events. You can modify the event handler code to change the actions performed during the installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1833

Chapter 43: View Reference Behavior and Logic View

Event Categories (list box, on the left) Select the category containing the installation event whose event handler function block you want to paste in a script file. Events in the selected category are displayed in the Events list box. Events (list box, on the right) Select the installation event whose event handler function block you want to paste in a script file. If you select a feature event, its event handler is pasted in FeatureEvents.rul. If this file does not exist in your project, selecting a feature event automatically creates the file. If you select some other type of installation event, its event handler is pasted in Setup.rul. If you change the default feature event handler code in FeatureEvents.rul, you must put the following statement in Setup.rul to include your changes in the installation:
#include "FeatureEvents.rul"

Default Keyboard Shortcuts


The following table lists the default keyboard shortcuts for the script editor.
Table 43-79: Keyboard Shortcuts Command BookmarkNext BookmarkPrev BookmarkToggle CharLeft CharLeftExtend CharRight CharRightExtend CodeList Copy Keyboard Shortcut F2 SHIFT+F2 CTRL+F2 LEFT ARROW SHIFT+LEFT ARROW RIGHT ARROW SHIFT+RIGHT ARROW CTRL+SPACE CTRL+C CTRL+INSERT Cut CTRL+X SHIFT+DELETE CutSelection Delete DeleteBack CTRL+ALT+W DELETE BACKSPACE SHIFT+BACKSPACE DocumentEnd CTRL+END Deletes the selected text and puts it in the clipboard. Deletes the selected text. Deletes the selected text. If no text is selected, the character to the left of the cursor is deleted. Moves to the end of the file. Deletes the selected text and puts it in the clipboard. Description Moves to the line containing the next bookmark. Moves to the line containing the previous bookmark. Toggles a bookmark on and off for the current line. Moves the cursor one character to the left. Extends the text selection one character to the left. Moves the cursor one character to the right. Extends the text selection one character to the right. Activates the keyword list control. Copies the selection to the clipboard.

1834

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-79: Keyboard Shortcuts (cont.) Command DocumentEndExtend DocumentStart DocumentStartExtend Find Keyboard Shortcut CTRL+SHIFT+END CTRL+HOME CTRL+SHIFT+HOME CTRL+F ALT+F3 FindNext FindNextWord FindPrev FindPrevWord FindReplace F3 CTRL+F3 SHIFT+F3 CTRL+SHIFT+F3 CTRL+ALT+F3 CTRL+H GoToLine GoToMatchBrace Home CTRL+G CTRL+] HOME Moves to a specified line. Finds the matching brace. Moves to either the start of the current line or the start of the text on that line. Extends the selection to either the start of the current line or the start of the text on that line. Indents the selected text to the right one tab stop. Deletes the selected line and places the text on the clipboard. Moves the cursor down one line. Extends the selection down one line. Moves the cursor to the end of the current line. Extends the selection to the end of the current line. Adds a line above the cursor. Moves the cursor up one line. Extends the selection up one line. Changes the selected text to all lowercase. Moves the cursor down one page. Finds the next occurrence of the specified text. Finds the next occurrence of the selected text. Finds the previous occurrence of the specified text. Finds the previous occurrence of the selected text. Displays the Find and Replace dialog box. Description Extends the selection to the end of the file. Moves to the beginning of the file. Extends the selection to the beginning of the file. Finds the specified text.

HomeExtend

SHIFT+HOME

IndentSelection LineCut

TAB CTRL+Y

LineDown LineDownExtend LineEnd LineEndExtend LineOpenAbove LineUp LineUpExtend LowercaseSelection PageDown

DOWN ARROW SHIFT+DOWN ARROW END SHIFT+END CTRL+SHIFT+N UP SHIFT+UP CTRL+U PAGE DOWN

InstallShield 2010 User Guide

ISP-1600-UG00

1835

Chapter 43: View Reference Behavior and Logic View

Table 43-79: Keyboard Shortcuts (cont.) Command PageDownExtend PageUp PageUpExtend Paste Keyboard Shortcut SHIFT+PAGE DOWN PAGE UP SHIFT+PAGE UP CTRL+V SHIFT+INSERT Properties RecordMacro Redo SelectAll SelectLine SelectSwapAnchor SentenceCut SentenceLeft SentenceRight SetRepeatCount TabifySelection ToggleOvertype ToggleWhitespaceDisplay Undo ALT+ENTER CTRL+SHIFT+R CTRL+Y CTRL+A CTRL+ALT+F8 CTRL+SHIFT+X CTRL+ALT+K CTRL+ALT+LEFT ARROW CTRL+ALT+RIGHT ARROW CTRL+R CTRL+SHIFT+T INSERT CTRL+ALT+T CTRL+Z ALT+BACKSPACE UnindentSelection UntabifySelection UppercaseSelection WindowScrollDown WindowScrollLeft WindowScrollRight WindowScrollUp WordDeleteToEnd SHIFT+TAB CTRL+SHIFT+SPACE CTRL+SHIFT+U CTRL+UP ARROW CTRL+PAGE UP CTRL+PAGE DOWN CTRL+DOWN ARROW CTRL+DELETE Outdents the selected text. Replaces the tabs in the selected text with spaces. Changes the selected text to all uppercase. Scrolls the file contents down one line. Scrolls the window to the left. Scrolls the window to the right. Scrolls the file contents up one line. Deletes the word to the right. Displays the Window Properties dialog box. Begins or ends the recording of the keystroke macro. Redoes the previously undone action. Selects all of the text in the entire document. Selects lines of text. Swaps the anchor and the cursor in a selection. Deletes the remainder of a sentence. Moves to the beginning of the previous sentence. Moves to the beginning of the next sentence. Sets the repeat count for the next command. Replaces the spaces in the selected text with tabs. Toggles between inserting and replacing text. Shows or hides the white-space indicators. Undoes the last action. Description Extends the selection down one page. Moves the cursor up one page. Extends the selection up one page. Inserts the clipboard contents at the insertion point.

1836

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-79: Keyboard Shortcuts (cont.) Command WordDeleteToStart WordLeft WordLeftExtend Keyboard Shortcut CTRL+BACKSPACE CTRL+LEFT ARROW CTRL+SHIFT+LEFT ARROW Description Deletes the word to the left. Moves backward to the start of the previous word. Extends the selection backward to the start of the previous word. Moves forward to the start of the next word. Extends the selection forward to the start of the next word.

WordRight WordRightExtend

CTRL+RIGHT ARROW CTRL+SHIFT+RIGHT ARROW

Script Editor Context Menu


The context menu appears when you right-click in the script editor pane. It includes the following commands.
Table 43-80: Commands Available from the Script Editor Context Menu Command Cut Copy Paste Description Moves the selected text from the script to the Windows clipboard. Copies the selected text to the Windows clipboard. Inserts the contents of the Windows clipboard at the location of the insertion point or, if text is selected, in place of the selected text. Opens a standard Find dialog box, in which you can specify text to search for. Opens a standard Find and Replace dialog box, in which you can specify text to search for and text with which to replace the found text. Switches the display of white space in the script. If a check mark appears next to this command, each space character in the script is displayed as a middle dot () and each tab character is displayed as a double angle bracket (>>). (If the script is displayed in Terminal font, special characters are displayed for spaces and tabs.) Converts characters in the selected text to uppercase. To use this command, select text, then right-click the selected text and click this command on the context menu. Converts characters in the selected text to lowercase. To use this command, select text, then right-click the selected text and click this command on the context menu. Undoes the previous editing action. This command is not available if the limit on undoing editing actions has been reached. The limit is set in the Undoable Actions field on the Misc tab of the Windows Properties dialog box. Redo Restores the previously undone editing action.

Find Replace

Show Whitespace

Make Uppercase

Make Lowercase

Undo

InstallShield 2010 User Guide

ISP-1600-UG00

1837

Chapter 43: View Reference Behavior and Logic View

Table 43-80: Commands Available from the Script Editor Context Menu (cont.) Command Properties Description Opens the Window Properties dialog box.

Custom Actions and Sequences View (or Custom Actions View)


Project: The Custom Actions and Sequences view is available in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

This view is called the Custom Actions view in the following project types: Merge Module MSM Database

The Custom Actions and Sequences view has three separate areas: a Custom Actions area, an Action Text area, and a Sequences area. The Custom Actions view has the Custom Actions area.

Custom Actions
Microsoft enables you to add flexibility to your installation that is not directly supported by Windows Installer. This additional functionality is achieved through the use of custom actions. InstallShield supports calling a .dll file function; launching an executable file (.exe); calling a public method in a managed assembly; running VBScript, JScript, or InstallScript code; displaying an error message; setting a directory or a property; and running another installation package as custom actions. The Custom Actions explorer in the Custom Actions and Sequences view behaves the same way as the Custom Actions explorer in the Custom Actions view. For descriptions of each type of custom action, see Custom Action Types. For a description of each custom action setting, see Custom Action Settings.

Action Text
To keep end users informed, installations commonly display text on the progress dialog to describe the installations current activity. This usually accompanies the progress bar as a means of installation status. As each standard action and custom action is encountered, a message about the action is displayed on the progress dialog. This may be especially useful for actions that take a long time to execute. The same action text is also written to a log file if one is created at run time. The Action Text explorer in the Custom Actions and Sequences view (for Basic MSI, InstallScript MSI, MSI Database, and Transform projects) lets you specify the action text for any action in your project. For a description of each action text setting, see Action Text Settings.

1838

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Important: The names of the action text items under the Action Text explorer should match the names of standard and custom actions that are in your project. If you change the name of a custom action, you must also change the name of its action text item; otherwise, the actions text is not displayed at run time or written to the installations log file.

Sequences
Sequences direct all of the actions that are performed during the installation processfrom file transfer to user interface display (for Basic MSI, MSI Database, and Transform projects). These actions are given a number in the sequence, which then executes from the lowest number to the highest. Rather than having to manually provide a numeric value for every action, you can use the Custom Actions and Sequences view to insert actions into a sequence, or edit the sequence timeline.

Project: In InstallScript MSI projects, the installations user interface is generated through the script; the dialogs are not inserted into sequences in the Custom Actions and Sequences view. If you are creating a custom action or custom dialog in a merge module, you need to first import that module into an installation project and then add it to a sequence through the Custom Actions and Sequences view of that installation project.

There are three main sequences into which you can insert your dialogs (in Basic MSI, MSI Database, and Transform projects) and custom actions.

Installation Sequence Advertisement Sequence Administration Sequence

Each of these sequences plays a different role. The Installation sequence is run during a normal installation. The Advertisement sequence runs when an application is being advertised rather than installed. The Administration sequence is run during an administrative installation.

Modifying Sequences, Actions, and Dialogs


The Custom Actions and Sequences view supports drag-and-drop editing and copying. The context menus in this view provide additional editing methods.

To sequence a new custom action, drag it from the Custom Actions explorer to the appropriate location in a sequence under the Sequences explorer. When you drop it, drop it onto the item that should be directly before it in the sequence. 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 and drop it onto the item that should be directly before it in the sequence. 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, and drop it onto the action or dialog that should be directly before it. When you select a dialog or standard action in the Sequences explorer, the Sequence tab on the right enables you to change the sequence number and add or modify the associated conditions.

InstallShield 2010 User Guide

ISP-1600-UG00

1839

Chapter 43: View Reference Behavior and Logic View

When you select a custom action in the Sequences explorer, more than one tab is displayed on the right:

Sequence tabUse this tab to change the sequence number and to add or modify any conditions for the action. Action tabUse this tab to change any settings for the custom action. Script tabThis tab is displayed for VBScript and JScript custom actions. It has a script editor that lets you edit your VBScript or JScript code.

To edit the layout or behavior of a dialog, right-click the dialog in the Sequences explorer and then click Edit Behavior or Edit Layout.

Note: A custom action cannot be called twice in the same sequence, since the custom action name is the key in the CustomAction table. Therefore, you cannot move or copy a custom action to a sequence that already contains that custom action. Dialogs and standard actions cannot be moved to a different type of sequence through a drag-and-drop operation.

Custom Action Types

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield includes support for several kinds of custom actions:


Table 43-81: Custom Actions Supported in InstallShield Icon Project Type Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Custom Action Behavior Run InstallScript code.

Launch an executable file.

1840

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-81: Custom Actions Supported in InstallShield (cont.) Icon Project Type Basic MSI, InstallScript MSI Custom Action Behavior Call a function in a standard DLL.

Project: This type of custom action is not available for merge module projects. Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, MSI Database, Transform Call a function in a DLL that was written specifically for Windows Installer. The entry point of the .dll file must have a predefined parameter and return value.

Call a public method in a managed assembly that is written in managed code such as Visual Basic .NET or C#. For more information, see Calling a Public Method in a Managed Assembly. Set a property in the Property table. This is useful if you need to get information from the end user and store it so that it can be used later in your installation.

Set a directory in the Directory table at run time. For example, if you want to create a temp directory that is a subdirectory of the installation directory selected by the end user, you can use this option to set that new temp directory for use later in the installation.

Launch another .msi package. This is also known as a nested installation.

Important: Nested installations is a deprecated feature of the Windows Installer. Applications installed with nested installations sometimes fail because they are difficult for end users to service correctly. Microsoft Corporation recommends that you avoid using nested installations and nested-installation custom actions to install products that are intended to be released to the public. To learn more, see Concurrent Installations in the Windows Installer Help Library.

Project: This type of custom action is not available for merge module projects. Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Run VBScript code or 64-bit VBScript code.

InstallShield 2010 User Guide

ISP-1600-UG00

1841

Chapter 43: View Reference Behavior and Logic View

Table 43-81: Custom Actions Supported in InstallShield (cont.) Icon Project Type Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Basic MSI, InstallScript MSI, Merge Module, MSI Database, MSM Database, Transform Custom Action Behavior Run JScript code or 64-bit JScript code.

Display a specified error message, return failure, and end the installation. For example, you may want to add an error custom action to your project to handle scenarios where an end user tries to install the current version of your product over a future major version. For more information, see Preventing the Current Installation from Overwriting a Future Major Version of the Same Product.

To help you differentiate between immediate, deferred, commit, and rollback custom actions in your project, InstallShield adds color-coded dots to some of the actions icons. The dots are displayed on the icons for actions that are listed under the Custom Actions explorer in the Custom Actions and Sequences view or the Custom Actions view. The following table shows the icon for the executable file custom action.
Table 43-82: Determining the In-Script Execution of a Custom Action by Viewing Its Icon Icon Description If a custom action does not have a dot, it indicates that the In-Script Execution setting is not applicable to that type of custom action, or one of the following values is selected:

Immediate Execution Immediate Execution (Terminal Service Aware)

If a custom action has a blue dot, one of the following values is selected for the actions InScript Execution setting:

Deferred Execution Deferred Execution (Terminal Service Aware) Deferred Execution in System Context

If a custom action has a green dot, one of the following values is selected for the actions InScript Execution setting:

Commit Execution Commit Execution (Terminal Service Aware) Commit Execution in System Context

1842

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-82: Determining the In-Script Execution of a Custom Action by Viewing Its Icon (cont.) Icon Description If a custom action has a red dot, one of the following values is selected for the actions InScript Execution setting:

Rollback Execution Rollback Execution (Terminal Service Aware) Rollback Execution in System Context

For details about each of the InstallShield custom actions that are added automatically to InstallShield projects to support different functionality, see InstallShield Custom Action Reference.

Windows Logo Guideline: If you are applying for the Windows Vista logo, any custom actions in your installation must follow best practices guidelines for custom action creation. You can use the InstallShield Certified for Windows Vista Validation Suite and the Full MSI Validation Suite to verify whether your installation package meets most of the custom actionrelated logo requirements. However, some of the requirements cannot be verified through the validation suite. To learn more, see Guidelines for Creating Custom Actions that Meet Requirements of the Certified for Windows Vista Program.

Custom Action Settings

Project: Use the Custom Actions and Sequences view to configure custom action settings in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

Use the Custom Actions view to configure custom action settings in the following project types: Merge Module MSM Database

InstallShield 2010 User Guide

ISP-1600-UG00

1843

Chapter 43: View Reference Behavior and Logic View

The following settings are available for custom actions.


Table 43-83: Custom Action Settings Setting DLL Filename Description Enter the path to the .dll file that you would like to use in your custom action. As an alternative, you can select it from the list of available .dll files in your Binary table, or select Browse for file to find it. The .dll file must comply with the required Windows Installer function signature.

Note: This setting applies to DLL custom actions. Function Name Enter the name of the function that you would like to call.

Note: This setting applies to DLL custom actions. Assembly File Specify the .NET assembly file that you want to use for your managed-code custom action. You can select the Browse to file option to specify the file, or select the file from the list of DLL and .exe files that will be stored in the Binary file. At build time, InstallShield adds the managed assembly to a C++ Windows Installer wrapper DLL and adds the wrapper DLL to the Binary table of your .msi package. The wrapper DLL contains the information that is required to mediate, load, and run your assembly.

Note: This setting applies to custom actions that use a managed assembly whose location is set to Binary table. Assembly Filekey To specify the managed assembly that you want to use for your custom action, select the file from the list of DLLs and .exe files that are included in your project.

Note: This setting applies to custom actions that use a managed assembly installed with the product. Assembly Property To specify the managed assembly that you want to use for your custom action, do one of the following:

Select a Windows Installer property in the list. Type the name of a new property. Type the name of a directory in the Directory table.

The property or directory name must be enclosed within square brackets ([]). You can add a string after the property if appropriate. The resulting path should indicate the location of the assembly file.

Note: This setting applies to custom actions that use a managed assembly whose path references a property or a directory in the Directory table.
1844 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-83: Custom Action Settings (cont.) Setting Method Signature Description Click the ellipsis button (...) to launch the Method Signature dialog box, which is where you specify arguments and return values for the managed method. When you have specified signature information on this dialog box, InstallShield uses it as the value of the Method Signature setting. To learn more, see Specifying the Signature for a Managed Method in an Assembly Custom Action.

Note: This setting applies to custom actions that use a managed assembly. Error Message Type the error message text that should be displayed when the custom actions conditions are met on the target system. As an alternative, you can type a property name whose value contains the error text. The property name must be enclosed within square brackets ([]).

Note: This setting applies to custom actions that trigger an error message. Return Processing Specify how the custom action thread should be processed. Valid options are:

Asynchronous (No wait for completion) Asynchronous (Wait for exit code) Synchronous (Check exit code) Synchronous (Ignores exit code)

These flags are used to specify that the main and custom action threads run synchronously (the installer waits for the custom action thread to complete before resuming the main installation thread) or asynchronously (the installer runs the custom action simultaneously as the main installation continues). Note that some options are not applicable to some types of custom actions. Only options that pertain to the selected type of custom action are available in this list. In-Script Execution Select which iteration of the sequence will trigger your action. For details about each option, see In-Script Execution. These options copy the action code into the execution, rollback, or commit script. If you select a Terminal Server Aware option, the custom action impersonates the user during per-machine installations on terminal server machines. Source If you chose to launch an executable file (.exe file), call a function in a Windows Installer .dll file, or execute a VBScript or JScript file, this property can contain the name of the table entry from tables such as the Binary table or the Property table. If you chose to set a property or directory, enter the property or directory name from the associated table entry. For more information on this property, see the Windows Installer Programmers Reference for the action type that you are calling.

InstallShield 2010 User Guide

ISP-1600-UG00

1845

Chapter 43: View Reference Behavior and Logic View

Table 43-83: Custom Action Settings (cont.) Setting Target Description Depending on the type of custom action that you are creating, the Target property can be a command-line argument, a function name, or a formatted text string. For executable files, this property will be a command-line argument, such as -s to run the executable file in silent mode. If you are calling a function from a Windows Installer .dll file or running JScript or VBScript code, this property should contain a function name. Enter a formatted text string that will evaluate to the new value of a property if you are setting a property or directory. Standard .dll files must have the function name, parameters, and return type in a specially formatted string. Enter the numeric value for the type of action that you want to create. In addition to the native Windows Installer custom action types, InstallShield supports custom action types for InstallScript custom actions and for calling a function in a standard .dll file. Comments Type comments about this action into the Comments field. These comments are for internal use and are never displayed to the end user. Click the ellipsis button (...) to browse to the file that describes the behavior of the custom action. The file should be a text-based file such as a .txt, .htm, or .rtf file. At build time for Basic MSI, InstallScript MSI, and merge module projects, InstallShield streams the contents of this file into the Description column of the ISCustomActionReference table. If you are working on a project in Direct Edit mode, InstallShield streams the contents of the file that you select into the Description column of the ISCustomActionReference table as soon as you select the help file. In addition, InstallShield makes this setting read-only and displays [Text Data] as the value for this setting.

Type

Help File Path

Windows Logo Guideline: The intended behavior of each custom action must be documented for the Certified for Windows Vista program. This is especially helpful if system administrators deploy your product to enterprise environments; they sometimes need to know what the custom actions do. If you validate your installation package but you have not specified a value for the Help File Path setting, InstallShield generates validation error ISICE10. For more information, see ISICE10. For any built-in InstallShield custom actions, InstallShield makes this setting read-only and displays InstallShield Custom Action as the value.

1846

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-83: Custom Action Settings (cont.) Setting Run During Patch Uninstall Project: If you are working on a project in Direct Edit mode, this setting is not applicable unless the database schema is a minimum of 405 (for Windows Installer 4.5 or later). Specify whether Windows Installer should run the custom action only when a patch is being uninstalled. You can select Yes for a custom action in an .msi package. You can also select Yes for a new custom action that is added by a patch. However, Yes should not be selected for a custom action that is being added or removed by a patch to an existing custom action. The default value for this setting is No. When Windows Installer 4.5 runs the patch uninstall custom action, it uses the custom action in the patch that is being uninstalled. Description

Note: Windows Installer 4.5 includes support for this setting, but Windows Installer 4.0 and earlier do not. Therefore, if you select Yes for this setting and some target systems may have Windows Installer 4.0 or earlier, add a condition to this custom action to prevent Windows Installer 4.0 and earlier from running it. Otherwise, Windows Installer 4.0 and earlier would call the custom action during the installation, repair, or update of the package. For the condition, use the MSIPATCHREMOVE property. For more information, see MSIPATCHREMOVE in the Windows Installer Help Library.

To learn about displaying action information on the progress dialog and in the installations log file, see Using Action Text. For more information about these settings, see CustomAction Table in the Windows Installer Help Library.

Action Text Settings

Project: Use the Custom Actions and Sequences view to configure action text settings in the following project types:

Basic MSI InstallScript MSI MSI Database Transform

To keep end users informed, installations commonly display text on the progress dialog to describe the installations current activity. This usually accompanies the progress bar as a means of installation status. As each standard action and custom action is encountered, a message about the action is displayed on the progress dialog. This may be especially useful for actions that take a long time to execute. The same action text is also written to the installations log file if one is created. The Action Text explorer in the Custom Actions and Sequences view lets you specify the action text for any action in your project.

InstallShield 2010 User Guide

ISP-1600-UG00

1847

Chapter 43: View Reference Behavior and Logic View

When you click a custom action item or a standard action item in the Action Text area of the Custom Actions and Sequences view, the following settings are available.
Table 43-84: Action Text Settings Setting Description Description Enter text that describes the selected action. For example, the default description for the InstallFiles action is:
Copying new files

When the Windows Installer launches this action, the text that you enter is displayed on the progress dialog. For more information, see Displaying Action Descriptions on the Progress Dialog. If a log file is created at run time, this description is written to the log file when the Windows Installer launches this action. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

1848

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Table 43-84: Action Text Settings (cont.) Setting Template Description Enter the template that should be used to format action data records. For example, the default template for the InstallFiles action is:
File: [1], Directory: [9], Size: [6]

When the Windows Installer launches this action, the action details may be displayed on the progress dialog. For the aforementioned InstallFiles example, the [1] property is replaced with the names of files as they are transferred to the target system. The [9] property is replaced with the directory that contains the file, and the [6] property is replaced with the files size in bytes. Note that by default, the action data is not displayed on the progress dialog. For more information, see Displaying Action Data on the Progress Dialog. If a template is not specified for the selected action, no data is displayed when the action is launched. In addition, the installation must be run with a full user interface; if the installation is run silently or with a reduced or basic user interface, the action data is not shown. To find out what data fields are available for use in the Template setting value of a particular standard action, see Standard Actions Reference in the Windows Installer Help Library, and then refer to the help for the specific action.

Project: InstallScript MSI installations cannot display action data on the status dialog. However, the template is written to the installations log file.

Note: The value of this setting must always be [1] for several standard actions: GenerateScript Rollback RollbackCleanup

Therefore, the Template setting is disabled for these actions. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Support Files View (Basic MSI and InstallScript Object Projects)


The Support Files view is where you can add support files to your project, and add files to disk image folders. The Support Files view contains the following main areas:

InstallShield 2010 User Guide

ISP-1600-UG00

1849

Chapter 43: View Reference Behavior and Logic View

Support Files
The Support Files area lets you add, sort, and delete support filesfiles that are required by your installation project only during the installation process. The installation removes the support files when the installation is complete. Add any language-dependent files to the appropriate language-specific area. Add language-independent files to the Language Independent area.

Splash Screen

Project: The Splash Screen area is available for Basic MSI projects.

The Splash Screen area lets you add to your project a startup graphicthe graphic that is displayed when the end user begins the installation. The graphic file must be a bitmap file (.bmp). Add the file to the appropriate language-specific or language-independent folder.

Note: In a single-language installation, the splash screen that is specified for the single language (or the languageindependent splash screen if no splash screen is specified for the single language) is displayed. In a multilanguage installation, the splash screen for the language in which the installation is running is displayed. If no splash screen is specified for the language in which the installation is running, the language-independent splash screen is used. Only one splash screen is displayed to the end user during the installation. If you have more than one splash screen file in the language-independent area or for a specific language, the first file in the list is displayed at run time.

Advanced Files

Project: The Advanced Files area is available for Basic MSI projects.

The Disk1 item in the Advanced Files area enables you to indicate files and folders that you want to go on Disk1 of your installation media. These files and folders are not automatically installed to the target system when your installation is run. Rather, you can link to the installation media from your application or from the installation. For example, you might include a large redistributable file with your application that you do not want included in the application installation. This file should be placed in the Disk1 folder.

Support Files/Billboards View (InstallScript and InstallScript MSI Projects)


The Support Files/Billboards view is where you can add support files and billboard files to your project, and add files to disk image folders. The Support Files/Billboards view contains the following main areas:

1850

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Support Files
The Support Files area lets you add, sort, and delete support filesfiles that are required by your installation project only during the installation process. Add any language-dependent files to the appropriate language-specific area. Add language-independent files to the Language Independent area. In your InstallScript code, support files are uncompressed into a temporary directory and then deleted when the installation is complete.

Billboards
The Billboards item enables you to specify image files (.bmp, .gif, .jpg, and .jpeg) that you want to display to the end user during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users.

Splash Screen

Project: In InstallScript projects, you can use .bmp and .gif files as splash screen files. In InstallScript MSI projects, only .bmp files can be used as splash screen files.

The Splash Screen area lets you add to your project a startup graphicthe graphic that is displayed when the end user begins the installation. Add the file to the appropriate language-specific or languageindependent folder.

Note: In a single-language installation, the splash screen that is specified for the single language (or the languageindependent splash screen if no splash screen is specified for the single language) is displayed. In a multilanguage installation, the splash screen for the language in which the installation is running is displayed. If no splash screen is specified for the language in which the installation is running, the language-independent splash screen is used. Only one splash screen is displayed to the end user during the installation. If you have more than one splash screen file in the language-independent area or for a specific language, the first file in the list is displayed at run time.

Project: In an InstallScript project, the splash screen file must be named Setup.bmp or Setup.gif. This file name requirement does not apply to InstallScript MSI projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1851

Chapter 43: View Reference Behavior and Logic View

Advanced Files
The Advanced Files item enables you to indicate files and folders that you want to go on a disk of your installation media. These files and folders are not automatically installed to the target system when your installation program is run. Rather, you can link to the installation media from your application or from the installation. For example, you might include a large redistributable file with your application that you do not want included in the application installation.
Table 43-85: Advanced File Items Item Disk1 Description Add files and folders that you want to go on the first disk of your installation media. Add files and folders that you want to go on the last disk of your installation media.

Last Disk

Project: This applies to InstallScript projects. Other Add files and folders that you want to go on a specific disk of your installation media; you specify the disk at build time in the General Options panel of the Release Wizard.

Project: This applies to InstallScript projects.

System Search View


Project: The System Search view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

InstallShield provides the Windows Installer capability in the System Search view to locate a particular file, folder, registry key, .ini file value, or .xml file value on a target system prior to installation. Essentially, this feature lets you perform application, version, and configuration data searches. The System Search view displays a grid listing each search that you want to conduct on the target system. You can use this view to add a predefined system searchwhether it is a search that is included with InstallShield or one that is stored in a repositoryto your project. You can also use the System Search view to customize any predefined searches or define your own system searches for your installation.

1852

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Behavior and Logic View

Whenever you define your own search, the System Search Wizard is launched. From there, you can select from a list of search options and specify search details, such as the number of subfolder levels to search. When you modify an existing search, you can alter your initial selections in the System Search Wizard.

Property Manager View


Project: The Property Manager view is available in the following project types:

Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform

The Windows Installer service maintains global information using properties. The Property Manager view displays a list of installer properties that are used by the project. You can modify, create, and delete installer properties in the Property Manager view. At build time, InstallShield writes the properties in the Property Manager view to the Property table of your Windows Installer database. Properties that appear in all uppercase letters are called public properties, and they can be changed by the end user on the command line at run time. All others must be set before the release is built orat run timethrough a custom action or dialogs behavior. Following is a list of some of the tasks that you can perform in this view:

View the properties that are defined in your project. Add, modify, and delete properties. Filter the properties that are shown in the view to hide ones that do not contain a specific string. Resize and reorder the columns in the view. Sort the rows in the view by any column by clicking the column heading. Drag and drop column headings on to the group box area (the area below the views buttons) to organize the rows in the view in a hierarchical format. Make a property localizable so that it can have different values based on the language that your installation uses.

Working with the Property Manager View


The Property Manager view consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A spreadsheetlike table

Each row in the table represents a property in your project.


InstallShield 2010 User Guide ISP-1600-UG00 1853

Chapter 43: View Reference Behavior and Logic View

The following table describes all of the buttons and other controls that are displayed in the Property Manager view.
Table 43-86: Controls in the Property Manager View Name of Control New Property Icon Description Adds a new property to your project. To create a localizable property, you can click the arrow next to this button, and then click Localizable Property. To learn more, see Creating a Localizable Property. Delete Selected Properties Clear Selected Properties Make Selected Properties Localizable Deletes the selected row or rows.

Deletes the value of the selected properties.

Adds a string identifier to the value of the selected properties, enabling you to set a different property value for every language that your project supports. To learn more, see Making an Existing Property Localizable. Shows all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Hides all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Dynamically filters the properties that are displayed in the Property Manager view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Displays the help for the Property Manager view.

Expand All Groups

Collapse All Groups

Type a string to filter by

Property Manager Help Drag a column header here to group that column

Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views.

The following table describes each of the columns in the Property Manager view.
Table 43-87: Columns in the Property Manager View Column Name Description This column shows the name of the Windows Installer property.

1854

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference User Interface View

Table 43-87: Columns in the Property Manager View (cont.) Column Value Description This column shows the value of the property. If the property is configured to be localizable, this column shows the string identifier in curly brackets before the string value. Comments This column contains an internal note about the properties. The comments are not displayed at run time.

User Interface View


Project: The User Interface view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

The appearance of your installation is one of the main aspects that differentiates your product from that of your competition. You can easily customize the way your installation looks through the views listed below.

Dialogs

Project: The Dialogs view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database Transform

In the Dialogs view, you can select dialogs to display at run time. The way in which you control a dialogs behavior depends on which engine controls the user interface: the Windows Installer engine displays the dialogs for Basic MSI projects, and the InstallScript engine displays the dialogs for InstallScript and InstallScript MSI projects. For more information, see:

InstallShield 2010 User Guide

ISP-1600-UG00

1855

Chapter 43: View Reference User Interface View

Dialogs View (InstallScript and InstallScript MSI Projects) Dialogs View (Basic MSI Projects)

Billboards

Project: The Billboards view is available in Basic MSI projects. For information about billboard support in InstallScript or InstallScript MSI projects, see Support Files/Billboards View (InstallScript and InstallScript MSI Projects).

Billboards are images or Adobe Flash application files that are displayed for a specified amount of time during the file transfer portion of your installation. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is a file that you or your companys graphics department creates for complete control over the look and feel of the file transfer.

String Editor

Project: The String Editor view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

To help streamline the process of localizing a project, all of the text strings that may be displayed at run time during the installation process are available in one consolidated view: the String Editor view. You can use this view to edit the strings for everything from button text to feature descriptions. You can also use this view to export each languages string entries to a file, translate the values that are listed in the file, and then import the translated file into your project.

Dialogs View (InstallScript and InstallScript MSI Projects)


Project: This information applies to the following project types:

InstallScript InstallScript MSI

The Dialogs view contains a list of the standard end-user dialogs. The dialogs are identified by their function names. Click a dialog in this view to view a sample dialog in the right pane. The dialog names in the list are ghosted until you edit the layout. A ghosted name means that the default dialog (from isres.dll) will be used in the user interface. If you edit the layout of a dialog, its name appears in bold in the list, and the dialog is pulled from isuser.dll at run time.

1856

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference User Interface View

If your installation project supports additional languages, those languages appear as nodes beneath the edited dialog. You can edit the layout for each language separately.

Tip: Selecting and editing a dialog in the Dialog Editor does not automatically place the dialog in the end-user interface. In order for a dialog to be displayed at run time, it needs to be included in the InstallScript code. For example, code for the dialogs that are displayed during a first-time installation are part of the OnFirstUIBefore and OnFirstUIAfter event handlers. To learn more, see Displaying Dialogs During InstallScript and InstallScript MSI Installations.

Dialog Resource Files


By default, all dialogs in InstallScript and InstallScript MSI projects are kept in a resource .dll file called _IsRes.dll. This .dll file is built into your distribution package when you build the installation. There is a separate _IsRes.dll for every supported language; they are located in the InstallShield folders Redist folder (for example, InstallShield Program Files Folder\Redist). None of the _IsRes.dll files should ever be modified. When you edit a dialog in the Dialog Editor, InstallShield makes a copy of the dialog from the original _IsRes.dll file. This copy is stored in your project file. When your project is built, all edited dialogs (and any new dialogs you have created) are built into a resource .dll file called _IsUser{CurrentLanguage}.dll. For English, a .dll file called _IsUser1033.dll. _IsUser{LanguageID}.dll is then built into your distribution package. At run time, the engine that displays the dialogs first looks for a dialog in _IsUser{LangId}.dll. If the dialog is not found, it then looks for the default version in _IsRes.dll. The engine looks for dialogs based on their resource identifier. You can see the resource identifier of a dialog by going to the Dialog table in the Direct Editor.

Dialogs View (Basic MSI Projects)


Project: This information applies to Basic MSI projects.

The Dialogs view contains a Dialogs explorer. The Dialogs explorer contains two main folders: Themes and All Dialogs.

Themes
The Themes folder contains a list of all of the dialog themes that you can use for the dialogs in your project. A dialog theme is a predefined set of images that give your end-user dialogs a unified and distinctive look.

All Dialogs
The All Dialogs folder contains a list of the dialogs in your project. Each dialog item in the Dialogs explorer contains a Behavior item, which enables you to configure the behavior that is associated with a dialog, and at least one language item, which displays the dialog in the Dialog Editor of the selected language. The Dialog Editor enables you to edit the layout for each language separately. When you create a new Basic MSI project, InstallShield provides a series of default dialogs for the two User Interface sequences in which a Windows Installer package typically displays dialogs: the Installation sequence (which runs when the installation is launched in the default mode, for example, by
InstallShield 2010 User Guide ISP-1600-UG00 1857

Chapter 43: View Reference User Interface View

double-clicking an .msi file)with separate dialogs depending on whether the package is being installed for the first time, reinstalled, or uninstalledand the Administration sequence (the list of actions that are executed when you launch the installation with the /a command-line option). (End-user dialogs are not usually displayed in the Advertisement sequence, which contains the list of actions that are executed when you launch the installation with the /j command-line option.)

Project: Although you can create dialogs in a merge module project, you cannot add them to a sequence until you associate your module with an installation project. Then, all the dialogs included in your module are available to be included.

Billboards View
Project: The Billboards view is available in Basic MSI projects.

You can add billboards to your projects to display information to end users during the installation process. The billboards can be used to communicate, advertise, educate, and entertain end users. For example, billboards can present overviews on new features of the product being installed or other products from your company. Each billboard is a file that you or your companys graphics department creates for complete control over the look and feel of the file transfer. If you add one or more billboards to your project, the billboards are displayed at run time as the SetupProgress dialog reports the modifications that Windows Installer is making to the system. You can control the length of time the billboard is shown and its position by configuring its settings in the Billboards view. To learn about the settings in the Billboards view, see:

Billboard SettingThis is a project-wide setting that applies to all billboards in a project. Settings for Adobe Flash Application File Billboards and Image BillboardsThese settings are displayed in the right pane in the Billboards view when you click a Flash billboard or image billboard in the center pane.

Billboard Setting

Project: The Billboards view is available in Basic MSI projects.

1858

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference User Interface View

When you click the Billboards explorer in the center pane of the Billboards view, InstallShield displays the Billboard Type setting in the right pane. This setting is a project-wide setting for billboards.
Table 43-88: Billboard Setting Setting Billboard Type Description Select the type of billboard that you want to use for your installation. Available options are:

Fullscreen with Small progress (displayed in lower right)When the installation displays the standard end-user dialogs, it also displays a full-screen background. During file transfer, the installation shows full-screen backgrounds, with billboards in the foreground, and a small progress box in the lower-right corner of the screen. Windowed with Standard progressDuring file transfer, the installation displays a standard-size dialog that shows the billboards. The bottom of this dialog shows the progress bar. The installation does not display a background for this style. Windowed with Small (displayed in lower right, no billboards)The installation displays a small progress box in the lower-right corner of the screen during file transfer, but it does not display any billboards or a background.

For more information, including sample screen shots of each billboard type, see Types of Billboards.

Settings for Adobe Flash Application File Billboards and Image Billboards

Project: The Billboards view is available in Basic MSI projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1859

Chapter 43: View Reference User Interface View

A Flash or image billboards settings determine which file is shown, how long it is displayed, and its position on the screen. To access these settings, open the Billboards view, and in the Billboards explorer, select the billboard that you want to configure.
Table 43-89: Settings for Adobe Flash Application File Billboards and Image Billboards Setting File Name Description Do one of the following:

For an Adobe Flash application file billboardEnter the path to the Flash application file (.swf) that you would like to use for the selected billboard, or click the ellipsis button (...) to browse to the file. Flash application files can consist of videos, movies, sounds, interactive interfaces, games, text, and moreanything that is supported by the .swf type of file. It is recommended that files such as Flash video files (.flv) and MP3 audio files be embedded in the .swf file so that they are available locally on the target system during file transfer. Although .swf files can reference external files that you can post on a Web site, this external implementation would require that end users have an Internet connection.

For an image billboardEnter the path to the image file (.bmp, .gif, .jpg, or .jpeg) that you would like to use for the selected billboard, or click the ellipsis button (...) to browse to the file. Note that animated .gif files are not supported. If you want to use animation in a billboard, consider using an Adobe Flash application file billboard.

Note: If the version of Flash or other tool that you use to create your .swf file is newer than the version of the Flash Player that is installed on a target system, it is possible that some of the Flash features may not work as expected on that target system. Duration Enter the amount of time, in seconds, that this billboard should be displayed. The number that you enter must be from 1 to 32767 (which is a little more than 9 hours). The effect that the duration has on the run-time behavior depends on whether the installation is displaying a Flash billboard or image billboards. To learn more, see RunTime Behavior of an Installation that Includes Billboards. Origin Select where on the screen you want your billboard to be anchored. Available options are:

Upper Right Upper Left Lower Right Lower Left Centered

The X and Y coordinates are measured from this point.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting.

1860

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference User Interface View

Table 43-89: Settings for Adobe Flash Application File Billboards and Image Billboards (cont.) Setting X Coordinate Description To change the horizontal location of your billboard relative to the location you selected for the Origin setting, enter the distance, in pixels. For example, if the billboards origin is Lower Left, an X Coordinate value of 100 places the left side of the billboard 100 pixels from the left side of the screen.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting. Y Coordinate To change the vertical location of your billboard relative to the location you selected for the Origin setting, enter the distance, in pixels. For example, if the billboards origin is Lower Left, a Y Coordinate value of 100 places the bottom of the billboard 100 pixels from the bottom of the screen.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting. Effect Select the transition effect for this billboard. Rather than just appearing on the screen and disappearing after an allotted amount of time, a transition effect makes the change between billboards much smoother.

Note: This setting is applies to image billboards, but not to Adobe Flash application file billboards. In addition, this setting is used only if the Windowed with Standard Progress option or the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting. Background Color This setting displays the currently selected background color for your billboard. To change this color, click the ellipsis button (...). InstallShield displays the Color dialog box, which lets you select a predefined color or define a custom color for the background.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting.

InstallShield 2010 User Guide

ISP-1600-UG00

1861

Chapter 43: View Reference User Interface View

Table 43-89: Settings for Adobe Flash Application File Billboards and Image Billboards (cont.) Setting Title Description Enter the title of this billboard, as you want it to appear in the upper-left corner of the background. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

Tip: The maximum number of characters that the installation can display for the title at run time varies, depending on the font, the font size, the font attributes, and the length of the title string that you specify for this setting. It also depends on the screen resolution on the target system. Therefore, if you specify a long title, preview the billboard using different screen resolutions to test whether the entire title will be displayed at run time.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting. Background Style Select the style of background that you would like to use. Available options are:

GradientThe background fades from dark to light. SolidThe background is displayed as one solid color.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting. Font Click the ellipsis (...) button to select the font that you want to use for the title in the selected billboards background. If the target machine does not have the font you selected, a default system font is used instead.

Note: This setting is used only if the Fullscreen with Small progress (displayed in lower right) option is selected for the Billboard Type setting.

String Editor View


Project: The String Editor view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

1862

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference User Interface View

Merge Module

In the String Editor view, you have complete and centralized control over the localizable text strings that are displayed at run time during the installation process. You can use this view to edit the strings for everything from button text to feature descriptions. The String Editor view shows the collection of language-independent identifiers and corresponding language-specific values for your project. Following is a list of some of the tasks that you can perform in this view:

View all of the strings in your project. Add, modify, and delete strings. Filter the strings that are shown to hide ones that do not contain a specific string. Resize and reorder the columns in the view. Sort the rows in the view by any column by clicking the column heading. Drag and drop column headings on to the group box area (the area below the views buttons) to organize the rows in the view in a hierarchical format. Export all of the string identifiers and their corresponding values into a text file (.txt). Import the translated strings from a .txt file into the project. Search the project to identify all of the instances in which a specific string identifier is used. Find out if a string is not used anywhere within a project.

Working with the String Editor View


The String Editor view consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A spreadsheetlike table

Each row in the table represents a string entry in your project. The following table describes all of the buttons and other controls that are displayed in the String Editor view.
Table 43-90: Controls in the String Editor View Name of Control New String Entry Icon Description Displays the String Entry dialog box, which lets you add a new string entry. Displays the String Entry dialog box, which lets you edit the selected string entry. Deletes the selected row or rows.

Edit Selected String

Delete Selected Strings

InstallShield 2010 User Guide

ISP-1600-UG00

1863

Chapter 43: View Reference User Interface View

Table 43-90: Controls in the String Editor View (cont.) Name of Control Expand All Groups Icon Description Shows all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Hides all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Displays the Find dialog box, which lets you search for instances of a string. This dialog box lets you specify criteria such as whether you want to match the case. Searches for the next occurrence of the specified string.

Collapse All Groups

Find String

Find Next

Find and Replace

Displays the Replace dialog box, which lets you search for instances of a string and replace them with a new string. This dialog box lets you specify criteria such as whether you want to find or ignore a string with specific capitalization. Searches the entire project for all instances of the string whose row is selected, and shows the search results in the Output window. Lets you export all of the strings for a particular language to a text file (.txt). You can provide that .txt file to a translator who can update the file with translated text. Lets you select the text file (.txt) that contains the strings that you want to import into your project. Also lets you specify the language for those strings. Dynamically filters the strings that are displayed in the String Editor view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Lets you view and change the default language for the project. Displays the help for the String Editor view.

Search for Selected Strings in Project Export Strings

Import Strings

Type a string to filter by

Default Language String Editor Help

Drag a column header here to group that column

Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views.

1864

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

The following table describes each of the columns in the String Editor view.
Table 43-91: Columns in the String Editor View Column Language Identifier Description This column shows the language of the string entry. This column contains the language-independent ID for the string. Each string identifier in a project is linked to one or more values. This column shows the run-time string.

Value

Project: In Basic MSI, InstallScript MSI, and Merge Module projects, some of the string values contain Windows Installer properties inside square bracketsfor example, Install [ProductName]. At run time, the property and brackets are replaced by the property value. String values in these same project types may also contain font information in curly bracketsfor example, {&MSSansBold8}OK. The font information indicates style details that should be used to display the strings at run time. Comments This column contains an internal note about the string entries. The comments are not displayed at run time. This column lists the date and time that the string entry was last modified.

Modified

Media View
Project: The Media view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The final step in creating your installation project is to build and test your installation. InstallShield provides you with many different media types to choose from, as well as the ability to test your installation from within InstallShield.

Path Variables

Project: The Path Variables view is available in the following project types:

Basic MSI InstallScript

InstallShield 2010 User Guide

ISP-1600-UG00

1865

Chapter 43: View Reference Media View

InstallScript MSI InstallScript Object Merge Module

With path variables, you can define commonly used paths in a central location so that you do not need to change every source files path each time you move the project or change the directory structure.

Upgrades

Project: The Upgrades view is available in the following project types:

Basic MSI InstallScript MSI

The Upgrades view provides a visual, integrated method for adding and authoring settings within the Upgrade table of your .msi database.

Releases

Project: The Releases view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The Releases view enables you to build different configurations of your installation, test the user interface, or launch your installation for a trial run.

Patch Design

Project: The Patch Design view is available in the following project types:

Basic MSI InstallScript MSI

In the Patch Design view, you can create a Windows Installer patch package (.psp) to update your application on an end users system.

Path Variables View


Project: The Path Variables view is available in the following project types:


1866

Basic MSI InstallScript


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Media View

InstallScript MSI InstallScript Object Merge Module

The traditional way to link to source files in an installation project is to create a reference to that file using a hard-coded path. For example, you might have a source file called Program.exe located at C:\Work\Files that you want to include in your installation.

Using Hard-Coded Paths


If you use hard-coded paths, you have to enter the entire path every time you want to associate a source file from that directory. If you move the file to another directory, you have to change the hard-coded path as it appears in your installation project. If your installation consisted of a small number of source files, this might not be a problem. Unfortunately, some installations contain thousands of files that all need to be remapped if you change the folder structure or migrate the project to a different machine.

Using Path Variables


With path variables, you can define commonly used paths in a central location so that you do not need to change every source files path each time you move the project or change the directory structure. In the previous example, if you keep all of your applications source files in various subfolders under C:\Work\Files, you could create one variable that points to the Files folder<MyFiles>. If you want to include a file that is in C:\Work\Files\Images, you enter <MyFiles>\Images. If you move your files to D:\Work\Files, you can go to one place, your variable <MyFiles>, and change the folder that it points to. All path variables can be viewed and modified in the Path Variables view. You can use path variables in almost any location in InstallShield where you link to source files, such as in the Dialog Editor, dynamic file links, and the release location. Instead of entering the path variables yourself, you can have InstallShield recommend them whenever you browse to a path.

Note: Path variables are used during the development of your installation project. These paths do not apply to the target machines where the application is being installed. Rather, they are used to link to source files for your installation project. When the project is built, those links are evaluated and the files they point to will be built into the installation.

Path Variables Types


There are four types of path variables that you can use. Each type functions somewhat differently from the others. Regardless of the path variable type you use, the variable name is provided in the same manner throughout InstallShield.
Table 43-92: Types of Path Variables Variable Type Description Predefined path variables are path variables that point to some of the most commonly used folders. Unlike other types of path variables, these values cannot be edited in InstallShield. For more information, see Predefined Path Variables. The values of registry-based path variables are derived from the registry keys you created. After creating the registry key, you need to set a path variable to this key. For more information, see Registry Path Variables.

InstallShield 2010 User Guide

ISP-1600-UG00

1867

Chapter 43: View Reference Media View

Table 43-92: Types of Path Variables (cont.) Variable Type Description Environment path variables are based on the values of your systems environment variables. You can set an environment path variable to an existing environment variable. For more information, see Environment Variables. Standard, or user-defined, path variables are defined through InstallShield. You can specify a path variable such as <MyFiles> with a value of C:\Work\Files. These variables do not rely on any outside sources, such as the registry or system paths. For more information, see Standard Path Variables.

You also have the option of converting existing static links to path variables with the Convert Source Paths Wizard. This wizard scans your installation project for static links and changes those links to path variables, which makes your project more easily portable.

Working with the Path Variables View


The Path Variables view consists of the following elements:

A row of buttons and other controls A group box area (below the row of buttons) A list of path variables that are defined in your project

The following table describes all of the buttons and other controls that are displayed in the Path Variables view.
Table 43-93: Controls in the Path Variables View Name of Control New Path Variable Icon Description Adds a new standard path variable to your project. To create a registry path variable or an environment variable, you can click the arrow next to this button, and then click the appropriate command. To learn more, see Creating and Defining a Path Variable. Delete Selected Path Variables Refresh Deletes the selected variable or variables.

Refreshes the list of variables in the view.

Expand All Groups

Shows all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Hides all of the rows in the groups if you are using groups to organize the rows in a hierarchical format. Shows or hides the group box area below the row of buttons in this view.

Collapse All Groups

Show Group Box

1868

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-93: Controls in the Path Variables View (cont.) Name of Control Type a string to filter by Icon Description Dynamically filters the path variables that are displayed in the Path Variables view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Displays the help for the Path Variables view.

Path Variables View Help Drag a column header here to group that column

Use this group box area to group rows in the view. The view supports multiple levels of grouping simply by dragging the column headings and dropping them onto the group box. InstallShield displays the rows in the view hierarchically according to column arrangement in the group box. To learn more, see Working with the Group Box Area in Various Views.

The following table describes each of the columns in the Path Variables view.
Table 43-94: Columns in the Path Variables View Column Name Description In this column, enter the name of your variable. You do not need to enter angle brackets, but the path variable is displayed in angle brackets whenever it is used in a path. For example, if your variable is named MyRegVar and a components files are linked to the folder contained in its value, the components Link To folder shows <MyRegVar>.

InstallShield 2010 User Guide

ISP-1600-UG00

1869

Chapter 43: View Reference Media View

Table 43-94: Columns in the Path Variables View (cont.) Column Defined Value Description In this column, define the value of the path variable. For Standard Path Variables For standard variables, enter the directory to which you would like your variable to point.

Note: You can also refer to other path variables in the defined value by enclosing the referenced path variable name in angled brackets. For example, if you have a path variable called MyRoot with a value of C:\, you can refer to it in a path variable definition for another variable, such as Games. The actual path for the Games variable might be C:\Programs\GameFiles, but you can define Games as <MyRoot>\Programs\GameFiles. However, if you attempt to self-reference a path variable, the literal string is used instead. For example, defining Games as <MyRoot>\Programs\<Games> actually results in Games defined as C:\Programs\<Games>. For Registry Path Variables Enter the complete registry key, with the final subkey being the name of the value whose data contains the folder. For example, define MyRegVar as follows:
HKEY_LOCAL_MACHINE\SOFTWARE\TestKey\TestValue

Assume that TestKey has the following subkey and values:


[HKEY_LOCAL_MACHINE\SOFTWARE\TestKey] @="C:\\MyPath1" "TestValue"="C:\\MyPath2" [HKEY_LOCAL_MACHINE\Software\TestKey\TestValue] @="C:\\MyPath3"

Even though HKEY_LOCAL_MACHINE\SOFTWARE\TestKey has a subkey called TestValue, MyRegVar points to the value TestValue, and the current value will be C:\MyPath2. (Note, however, that if a value named TestValue does not exist, InstallShield reads the default value (C:\MyPath3) of the subkey HKEY_LOCAL_MACHINE\SOFTWARE\TestKey\TestValue.) For Environment Path Variables For environment path variables, enter the name of the variable as it appears on the Environment dialog box. Current Value This is a read-only column that contains the actual path that the variable points to. This is a useful reference for environment and registry path variables, since they are defined outside InstallShield.

1870

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-94: Columns in the Path Variables View (cont.) Column Test Value Project: This column applies to the following project types: Basic MSI InstallScript MSI Merge Module Description

This column enables you to enter a hard-coded path that can be used when the registry path variable is resolved. To use test values in your release, you must select the Use path variable test values option on the Advanced Settings panel of the Release Wizard. This option is deselected by default. When this option is selected, the test value is used for all registry path variables. Otherwise, the test value is not used at all. Type This column shows the type of variable (predefined, standard, environment, or registry). Click a field in this column to change from one type of path variable to another. Note that you cannot change the type of a predefined path variable.

Upgrades View
Project: The Upgrades view is available in the following project types:

Basic MSI InstallScript MSI

The Upgrades view provides a visual, integrated method for adding and authoring settings within the Upgrade table of an .msi database. To add an upgrade item, right-click the Upgrade Windows Installer Setup node. Other available options are described below.
Table 43-95: Upgrades View Options Option Automatic Upgrade Item Note: This is the preferred method for configuring upgrade settings. This option takes into account any potential future changes in the product code and handles both major and minor upgrades. If you do not know the difference between upgrade types and/or do not care, then choose this upgrade option. When you add an automatic upgrade item, the build engine determines which settings need to be populated into your installation to perform a successful upgrade of your previous installation. This option does not require any additional authoring of advanced settings on your part. For more information, see Configuring InstallShield to Automatically Determine the Upgrade Type. Description

InstallShield 2010 User Guide

ISP-1600-UG00

1871

Chapter 43: View Reference Media View

Table 43-95: Upgrades View Options (cont.) Option Minor Upgrade Item Description Small updates and minor upgrades are functionally identical except the product version changes for a minor upgrade, but not a small update. A minor upgrade installs over an existing application while a major upgrade effectively uninstalls the existing installation of a product, and then installs the newer product version. The functionality required to install a minor upgrade is in the Setup.exe installation launcher, which you must include in your release in order for a minor upgrade to work properly. The installation specified at build time will also be used to perform upgrade validation. The build will also verify that the referenced installation can indeed be updated using a minor upgrade. Note that the build will warn you if you do not include Setup.exe when you build your release. For more information, see Creating Minor Upgrades. Major Upgrade Item A major upgrade will effectively uninstall the existing installation of a product, and then install the latest product version. A major upgrade is appropriate for substantial installation architecture changes that may or may not change the major version number of the product (such as upgrading version 1.1.0 to version 2.0.0). A major upgrade is required if any of the following are true:

The upgraded project contains new components in existing features. (This restriction does not apply to Windows Installer version 2.0 or later.) An existing components Component Code property has changed, or a component has been removed from the product tree. An existing feature has been moved in the product tree, or deleted from the product tree. The name of the .msi file has changed.

For more information, see Creating Major Upgrades. Validate All Items This option will allow you to perform validation on the latest release or browse for a particular package to validate against a different release. For more information, see Validating Upgrades, Patches, and QuickPatch Packages.

Note: You can individually validate each upgrade item separately when you rightclick on an upgrade item, and choose Validate Item from the context menu.

Tip: Whenever you make changes in the Upgrades view, remember to rebuild your package before performing validation.

Common Tab

Project: This information applies to the following project types:


1872

Basic MSI InstallScript MSI


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Media View

The Common tab exposes some global settings for both major and minor upgrades.

Small and Minor Upgrade Settings


The functionality required to install a minor upgrade is in Setup.exe. You must include Setup.exe for a minor upgrade to work properly. When Setup.exe detects different product codes for matching products, then it will display the do you want to continue dialog. This is an inherent feature of setup.exe. Choose from the following options to configure this setup.exe functionality:

Note: Small and minor upgrades are functionally identical except the product version does not change for a minor upgrade. A minor upgrade installs over an existing application while a major upgrade effectively uninstalls the existing installation of a product, and then installs the newer product version. Table 43-96: Small and Minor Upgrade Options Option Disable Description When you choose this option, you are required to detect the upgrade scenario and ensure that the latest version of your setup is running in upgrade mode. This option will automatically start the setup in minor upgrade mode.

Dont prompt the user; just install the upgrade Prompt

Choosing this option will prompt the do you want to continue dialog. If you choose yes, the setup will begin in upgrade mode. If you choose no, you will cancel the setup in upgrade mode.

Major Upgrade Settings


When you are performing a major upgrade, you can select how you want the upgrade to proceed. You can choose from the following options:
Table 43-97: Options for Performing a Major Upgrade Option Completely uninstall old setup before installing new setup Description This is the most reliable setting, however, it is the least efficient. It will first remove all the files, registry entries, shortcuts, and settings of the old setup. Then it will apply new data from the latest version of your setup This is the most efficient setting, but it requires that you follow certain authoring rules. This option will first install the setup, and then remove all unnecessary files, registry entries, shortcuts, and settings after installing the latest version of your setup.

Install setup then remove unneeded files

Caution: The removal of unnecessary resources relies on component reference counts being accurate. Keep in mind that reference counts occur at the component level. Therefore, you should be careful when you delete a component and move the associated resource to a different component. You do not want to choose this option if you have moved existing resources to different components.

InstallShield 2010 User Guide

ISP-1600-UG00

1873

Chapter 43: View Reference Media View

Table 43-97: Options for Performing a Major Upgrade (cont.) Option Rollback all changes if removal of old files fails Description In the event of upgrade failure, the machine will be returned to its previous good state. This option will undo the changes made by the uninstallation of a previous version and the installation of the latest version.

Note: This setting controls the sequencing of the RemoveExistingProducts action in the Install Execute Sequence. For more details, see RemoveExistingProducts in the Windows Installer Help Library.

Advanced Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Advanced tab presents specific settings for major and minor upgrades in addition to some shared settings.
Table 43-98: Advanced Properties in the Upgrades View Property Upgrade Code Description The upgrade code identifies a family of products for upgrade purposes. It is especially important for major upgrades. The functionality required to install a minor upgrade is in Setup.exe. You must include Setup.exe for a minor upgrade to work properly. When Setup.exe detects different product codes for matching products, then it will prompt the do you want to continue dialog. This is an inherent feature of Setup.exe. Choose from the following options to configure this Setup.exe functionality:

On Upgrade

Note: Small and minor upgrades are functionally identical except the product version does not change for a small update. A minor upgrade installs over an existing application while a major upgrade effectively uninstalls the existing installation of a product, and then installs the newer product version.

DisableWhen you choose this option, you are required to detect the upgrade scenario and ensure that the latest version of your setup is running in upgrade mode. Dont prompt the user; just install the upgradeThis option will automatically start the setup in minor upgrade mode. PromptChoosing this option will prompt the do you want to continue dialog. If you choose yes, the setup will begin in upgrade mode. If you choose no, you will cancel the setup in upgrade mode.

1874

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-98: Advanced Properties in the Upgrades View (cont.) Property Style Description Choose from the following options:

Install Then Remove Unused Files, with RollbackThis is the most efficient setting, but it requires that you follow certain authoring rules. This option will first install the setup, and then remove all unnecessary files, registry entries, shortcuts, and settings after installing the latest version of your setup.

Caution: The removal of unnecessary resources relies on component reference counts being accurate. Keep in mind that reference counts occur at the component level. Therefore, you should be careful when you delete a component and move the associated resource to a different component. You do not want to choose this option if you have moved existing resources to different components.

Note: In the event of upgrade failure, the Rollback option will return the machine to its previous good state. This option will undo the changes made by the uninstallation of a previous version and the installation of the latest version.

Install Then Remove Unused FilesThis is the most efficient setting, but it requires that you follow certain authoring rules. This option will first install the setup, and then remove all unnecessary files, registry entries, shortcuts, and settings after installing the latest version of your setup.

Caution: The removal of unnecessary resources relies on component reference counts being accurate. Keep in mind that reference counts occur at the component level. Therefore, you should be careful when you delete a component and move the associated resource to a different component. You do not want to choose this option if you have moved existing resources to different components.

Complete Uninstall Then ReinstallThis is the most reliable setting, however, it is the least efficient. It will first remove all the files, registry entries, shortcuts, and settings of the old setup. Then it will apply new data from the latest version of your setup.

Automatic Upgrade Item Properties

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

InstallShield 2010 User Guide

ISP-1600-UG00

1875

Chapter 43: View Reference Media View

Note: This is the preferred method for configuring upgrade settings. This option takes into account any potential future changes in the product code and handles both major and minor upgrades. If you do not know the difference between upgrade types and/or do not care, then choose this upgrade option.

When you add an automatic upgrade item, the build engine determines which settings need to be populated into your setup to perform a successful upgrade of your previous setup. This option does not require any additional authoring of advanced settings on your part. You can configure the following options for an automatic upgrade item in the Upgrades view:
Table 43-99: Options for Automatic Upgrade Items Option Setup to Upgrade Description Enter the path to the setup project that needs to be upgraded or click the browse button to browse for it. Associating a release flag with the automatic upgrade item will allow you to optionally exclude it from the build on a per release basis.

Release Flags

Minor/Small Upgrade Item Properties

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Minor and small upgrades are fundamentally the same except with minor upgrades, the product version changes. You need to apply a small/minor upgrade any time you are upgrading a setup that has the same product code as the latest version of your setup. You are not required to change the product code of a setup unless you delete a component from a feature or you delete a feature from a setup.

Note: If you move a component from one feature to another, you are essentially deleting that component from the first feature and therefore must change the product code.

For upgrade scenarios in which the setups product code has changed, you must apply a major upgrade.

1876

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

This tab exposes the following settings:


Table 43-100: Options for Minor and Small Upgrade Items Option Setup to Upgrade Description The functionality required to install a minor upgrade is in Setup.exe, which you must include in order for a minor upgrade to work properly. The setup specified at build time will also be used to perform upgrade validation. The build will also verify that the referenced setup can be updated using a minor upgrade. Note that the build will warn you if you do not include setup.exe when you build your release. Specify release flags to include and exclude features depending on the type of release.

Release Flags

Common Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

A major upgrade is required when the product code for a setup differs from the product code of the setup that it needs to upgrade. You are not required to change the product code of a setup unless you delete a component from a feature or you delete a feature from a setup.

Note: If you move a component from one feature to another, you are essentially deleting that component from the first feature list and therefore, must change the product code.

At run time, a major upgrade effectively uninstalls the previous version of your application before installing the newest version of your application. The Common tab exposes the most frequently used settings of a major upgrade item. For more detailed settings, use the Advanced tab.

Major Upgrade
Major upgrades use an upgrade code to detect previous versions of an application. The upgrade code for a setup groups that setup into a specific product family. If you want to target specific setups within that product family, you can configure the product version attribute of this upgrade item.
Table 43-101: Options for Major Upgrade Items Option Products Sharing My Upgrade Code Description When this option is selected, the upgrade code of this major upgrade item is read from the currently open project file.

InstallShield 2010 User Guide

ISP-1600-UG00

1877

Chapter 43: View Reference Media View

Table 43-101: Options for Major Upgrade Items (cont.) Option Products Having Another Upgrade Code Description When this option is selected, you will have the ability to edit the upgrade code that this major upgrade item will target. Selecting this option also enables a Browse button allowing you to browse for the setup that you intend to upgrade. In this case, the upgrade code will be extracted from the setup which you have selected in the browse dialog.

Product Version
Choose a particular product version to target or define a range. You can choose from the following selections:
Table 43-102: Options Associated with Product Version Option Any earlier version Description When you select this option, the major upgrade item will try to upgrade any setup in the specified product family that has a version number lower than the product version of the currently open project file. Selecting this option will allow you to specify a range of product versions that should be targeted for upgrade. For instance, a minimum version of 1.00 and a maximum version of 4.00 will result in a setup that will upgrade any existing setup in the specified product family that has a version number falling between 1.00 and 4.00. When you select this option, the range specified will include the upper and lower bounds. Selecting this option will allow you to target only a single previous version of a setup.

Within a specific range of versions

Version range Inclusive

With a specific version

Advanced Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

1878

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

The Advanced tab exposes more advanced level configurations, in addition to the settings in the Common tab. Click on each setting in the properties grid to configure the following settings.
Table 43-103: Advanced Properties for Major Upgrade Items Property Upgrade Code Description The upgrade code is a GUID representing a related set of products. It is used in the Upgrade Table to search for related versions of the product that are already installed. Enter the minimum product version that your setup should upgrade. Version numbers should be in the format xxxx.xxxx.xxxx. This setting is useful when you are specifying upper and lower bounds for a range of product versions which your upgrade will support. Choose Yes to include the min version value in the range of product versions to upgrade. Enter the maximum product version that your setup should upgrade. Version numbers should be in the format xxxx.xxxx.xxxx. This setting is useful when you are specifying upper and lower bounds for a range of product versions which your upgrade will support. Choose Yes to include the max version value in the range of product versions to upgrade. Specify a comma separated list of languages to upgrade. The language identifiers should be specified in decimal format. For example, specify 1033 for English. When set to No, the setup only will perform an upgrade if the target setup language matches one of the languages listed in the Language attribute. When set to Yes, the setup only will perform an upgrade if the target setup DOES NOT match one of the languages in the Language attribute. Detect Only If Detect Only is set to Yes, the setup will detect that an upgrade needs to occur, but it will not actually perform the upgrade. Additionally, the property specified in the Detect Property attribute will be set to the product code of the detected setup. When a product is detected, it will set the property specified in the Detect Property setting. You can use that property in a conditional statement to control the flow of the installation or even stop the installation altogether. This property will not be set until the FindRelatedProducts action is run in the installation sequences. This setting provides an alternative to doing a complete uninstall of an existing product by removing select features.

Minimum Version

Include Minimum Version

Maximum Version

Include Maximum Version

Language

Exclude Specified Languages

Detect Property

Only Remove Specified Features

Caution: If you author this setting, the Installer will not completely uninstall the previous setup. Therefore, you will be left with two entries in Add or Remove Programs. Continue On Failure Select Yes to continue an installation, even if the uninstallation of a previous version fails. Select No to stop the upgrade installation when it fails to uninstall a previous version.

InstallShield 2010 User Guide

ISP-1600-UG00

1879

Chapter 43: View Reference Media View

Table 43-103: Advanced Properties for Major Upgrade Items (cont.) Property Migrate Feature States Description When you select Yes, the upgrade will install using the feature states of the setup being upgraded. When you select No, the upgrade will use the default states for the setup.

Releases View
Project: The Releases view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

After you have completely designed your project in InstallShield, you are ready to build a release for testing and, ultimately, distribution to end users. The Releases view contains settings that indicate how InstallShield should build your release. When you build a release, InstallShield takes all of the information from your project and compiles it into a Windows Installer installation package (.msi file), merge module (.msm file), or an executable file and related files, depending on the project type, that are capable of installing your product onto any supported Windows platform.

Tip: You can also use the Release Wizard to configure the settings for your release.

Product Configuration Settings

Project: Product configurations are available in the following project types:

Basic MSI InstallScript MSI Merge Module

For Basic MSI, InstallScript MSI, and Merge Module projects, every release that you build belongs to a product configuration. A product configuration provides a means for grouping together releases that share similar properties, such as the product name, product code, and package code. Each product configuration has two tabs:


1880

General tab (available for Basic MSI, InstallScript MSI, and Merge Module projects) Multiple Instances tab (available for Basic MSI projects)

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

General Tab for a Product Configuration

Project: The General tab for a product configuration is available in the following project types:

Basic MSI InstallScript MSI Merge Module

The General tab of each product configuration has the following settings, primarily for overriding other settings in the resulting releases:
Table 43-104: Product Configuration Settings Setting Product Name Description To override the product name in each release that you build under this product configuration, enter a new name. For information on how the product name is used, see Specifying a Product Name. Changing the product name in this setting does not affect any built releases. You must rebuild each release to see the changes reflected in the product name and in the projects folders and files. Product Version To override the product version in each release that you build under this product configuration, enter the version number. The version number must contain only numbers, and it must be in the format aaa.bbb.ccccc, where aaa represents the major version number, bbb represents the minor version number, and ccccc represents the build number. The maximum value for the aaa and bbb portions is 255. The maximum value for ccccc is 65,535.

Note: You can include a fourth field, making the product version format aaa.bbb.ccccc.ddddd, but Windows Installer does not use the fourth field. The maximum value for ddddd is 65,535. For more information, see Specifying the Product Version. Package Code To override the package code that is entered in the General Information view, enter a new GUID. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting.

Note: This package code is ignored if Yes is selected for the Generate Package Code setting.

InstallShield 2010 User Guide

ISP-1600-UG00

1881

Chapter 43: View Reference Media View

Table 43-104: Product Configuration Settings (cont.) Setting Generate Package Code Description Specify whether you want InstallShield to generate a new package code every time that a release under this product configuration is built:

YesInstallShield generates a new package code at build time and includes it in the .msi package. The package code that is displayed in the Package Code setting in the General Information view does not change. NoInstallShield does not generate a new package code at build time. If you enter a package code for the product configuration, that package code is used. If you do not specify a package code for the product configuration, InstallShield uses the package code that is set in the General Information view.

Product Configuration Flags

Enter the release flags for the features, InstallShield prerequisites, and chained .msi packages that you would like to include in the releases that are associated with this product configuration. Separate multiple flags with a comma. Product configuration flags enable you to customize your installation by including or excluding certain features, InstallShield prerequisites, and chained .msi packages in each release that you build under this product configuration. Note that you can also specify release flags at the release level. For more information on filtering features, InstallShield prerequisites, and chained .msi packages, see Release Flags.

Project: This setting applies to installation projects. Subject To override the value of the Subject setting in the General Information view for every release you build under this product configuration, enter the name of the product. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield. Title To override the value of the Title setting in the General Information view for every release you build under this product configuration, enter a new title. The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

1882

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-104: Product Configuration Settings (cont.) Setting Template Summary Description To override the Template Summary setting in the General Information view for a specific product configuration, specify the processor type and default language that your installation supports. List the processor type first, followed by your installations default language, and separate them with a semicolon. If you have multiple entries in the language category, separate them with a comma. For example, if your installation runs only on Intel processors and English-based systems, enter Intel;1033. If your product runs on x64 processors and supports English and German, enter x64;1033,1031. For the language portion of this setting, use the number 0 if your installation is language neutral. Valid processor values include:

Alpha (Alpha is supported by Windows Installer 1.0 only.) Intel Intel64 (Intel64 is supported by Windows Installer 2.0 only.) x64

Note that you can specify only one processor value. For more information, see Using the Template Summary Property. If the target machine does not meet the requirements that you specify for this setting, an error message is displayed and the installation exits. Comments To override the Summary Information Stream Comments setting in the General Information view for a specific product configuration, enter any comments about your product. A typical value for this setting is as follows:
This installer database contains the logic and data required to install MyProduct.

The value that you enter is used on the Summary tab of the Properties dialog box that is displayed if you right-click the Windows Installer database and then click Properties. When you type a value for this setting, you are creating a string entry and setting its initial value for all of the languages that are currently in the project. As an alternative to typing a new value, you can click the ellipsis button (...) in this setting to select an existing string. For more information, see Using String Entries in InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

1883

Chapter 43: View Reference Media View

Table 43-104: Product Configuration Settings (cont.) Setting Schema Description The schema version is an integer that identifies the minimum Windows Installer version that is required for the installation package. To override the Schema setting in the General Information view for a specific product configuration, enter the appropriate integer. For a minimum of Windows Installer 2.0, enter 200. For a minimum of Windows Installer 3.0, enter 300. For a minimum of Windows Installer 3.1, enter 301. For a minimum of Windows Installer 4.5, enter 405. If the end users system has a Windows Installer version earlier than the minimum requirement that you specify for the Schema settingfor example, if you specify a schema value of 405 because your installation uses Windows Installer 4.5 features, but an end user has Windows Installer 3.1the installation displays an error message and exits. The value that you enter for the Schema setting is used for the Page Count Summary property of your Windows Installer database. Product Code To override the Product Code setting in the General Information view for a specific product configuration, enter a GUID that uniquely identifies this product. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. Since this code uniquely identifies your product, changing the product code after you have already distributed your release is not recommended. For more information, see Setting the Product Code.

Project: This setting applies to installation projects. Upgrade Code To override the Upgrade Code setting in the General Information view for a specific product configuration, enter a GUID that can be used for your products upgrade code. To have InstallShield generate a different GUID for you, click the Generate a new GUID button ({...}) in this setting. The upgrade code is a GUID that identifies a related set of products. The Windows Installer uses a product's upgrade code when performing major upgrades of an installed product. The upgrade code, stored in the UpgradeCode property, should remain the same for all versions of a product. For more information, see Setting the Upgrade Code.

Project: This setting applies to installation projects.

1884

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-104: Product Configuration Settings (cont.) Setting Preprocessor Defines Description To override the Preprocessor Defines setting on the Compile/Link tab of the Settings dialog box for a specific product configuration, specify any preprocessor definitions. Use the following format, with no spaces before or after equal signs or commas:
MYVARIABLE1=123,MYVARIABLE2=456

You can test those types of constants in your script by using #if and #ifdef statements that control the flow of the script. For example, type MYVARIABLE in this box, and the code in the following #ifdef loop will be executed:
#ifdef MYVARIABLE // Commands #endif

After you add or change a preprocessor definition in this box, you must compile your script for the addition or change to take effect.

Note: Many Windows API functions are declared in the header file ISRTWindows.h, which is automatically included when you include Ifx.h in your script. You can prevent the automatic definition of Windows APIs by placing the preprocessor constant ISINCLUDE_NO_WINAPI_H in the Preprocessor Defines box on the Compile/Link tab of the Settings dialog box.

Project: This setting applies to installation projects. MSI Package File Name Specify the file namewithout the period or the file extensionthat InstallShield should use for .msi, .cab, and .pdf files that it generates at build time. If this setting is blank, the product name is used. Specify the file namewithout the .exe file extensionthat InstallShield should use for the setup launcher file that it generates at build time. If this setting is blank, InstallShield uses the default value of Setup, and the setup launcher file is called Setup.exe.

Setup File Name

InstallShield 2010 User Guide

ISP-1600-UG00

1885

Chapter 43: View Reference Media View

Table 43-104: Product Configuration Settings (cont.) Setting Include Custom Action Help Description Specify whether InstallShield should stream the contents of each of the custom action help files into the .msi file every time that a release in the selected product configuration is built. The path to a custom actions help file is indicated in the Help File Path setting in the Custom Actions and Sequences view (in Basic MSI and InstallScript MSI projects) or the Custom Actions view (in Merge Module projects). Selecting Yes is helpful if system administrators deploy your product to enterprise environments; they sometimes need to know what the custom actions do. If you select Yes, the following tasks occur at build time:

InstallShield adds the ISCustomActionReference table to the .msi file that is being built. The contents of all of custom actions help files that are specified in the Custom Actions and Sequences view are streamed into the Description column of this table. If your project includes any merge modules that contain custom actions, the contents of the help files that are specified in the Custom Actions view of the merge module projects are also included in the ISCustomActionReference table.

For more information, see Documenting the Behavior of Custom Actions.

Multiple Instances Tab for a Product Configuration

Project: The Multiple Instances tab for a product configuration is available in Basic MSI projects. For information on multiple-instance support for InstallScript projects, see Running an InstallScript Installation Multiple Times.

Windows Installer allows only one instance of a product code to be installed in the machine context and only one instance to be installed in each user context. Windows Installer 3.x and later includes support for a product codechanging transform. This type of transformcalled an instance transformenables the same .msi package to be used to install multiple instances of the same product in the same context because it changes the product code for each instance. To create an installation that lets end users install multiple instances of your product, use the Multiple Instances tab. This tab is where you define different instances of your product and configure the properties that are associated with each instance. At build time, InstallShield creates an instance transform for each instance and streams the instance transforms into the .msi package. At run time, the installation typically displays an instance selection dialog that lets end users specify whether they want to install a new instance or maintain an existing one.

Caution: Creating an installation that lets end users install multiple instances of a product on the same machine and in the same context requires sophisticated authoring and serious commitment on the part of the installation developer. This functionality is recommended for only advanced installation developers.

1886

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Release Settings
The settings for a release are organized by category on several different tabs in the Releases view:

Build tab (available for Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module projects) Setup.exe tab (available for Basic MSI, InstallScript, and InstallScript MSI projects) Signing tab (available for Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module projects) .NET/J# tab (available for Basic MSI and InstallScript MSI projects) Internet tab (available for Basic MSI, InstallScript, and InstallScript MSI projects) Postbuild tab (available for Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, and Merge Module projects)

Build Tab for a Release

Project: The Build tab is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The Build tab is where you configure how InstallShield should package your release.
Table 43-105: Settings on the Build Tab Setting Release Location Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description Enter the path to the top-level directory where your release will start to be built, or click the ellipsis button (...) to browse to the location.

Media Format

This read-only setting enables you to view the type of media selected for this release. You can set the media type only through the Release Wizard's Media Type panel; for InstallScript object projects, you cannot set the media type.

InstallShield 2010 User Guide

ISP-1600-UG00

1887

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Compression Project Type Basic MSI, InstallScript MSI Description Specify whether the release should be compressed:

CompressedSelect this option to compress all of your product's files into either a single executable file (Setup.exe) or a single Windows Installer package (.msi file). UncompressedSelect this option if your product's files should not be compressed, and if they should be in a subfolder of the folder that contains your installation package.

As an alternative, you can use a custom compression method, which enables you to compress only the files that are associated with one or more features into .cab files. To set custom compression options, you must use the Release Configuration panel and the Custom Compression Settings panel in the Release Wizard. Note that when you use the Release Wizard to configure custom compression, InstallShield changes the Compression setting in the Releases view to a read-only value of Custom (One Cab per Feature) or Custom (One Cab per Component). To change the compression from a custom method to the standard compressed method or the uncompressed method, you must use the Release Wizard again; you cannot do this from the Compression setting in the Releases view.

Note: The output of the build process depends on your media type, compression, and spanning settings. Compress Script InstallScript, InstallScript Object InstallScript, InstallScript Object Specify whether the compiled script file (.inx file) is placed in a cabinet file (Yes) or is placed uncompressed in the Disk1 disk image folder (No).

Compiler Preprocessor Defines

Optionally specify any preprocessor variable definitions. Preprocessor variable definitions that are specified here apply only to the current release; they are not used when compiling the script for other releases. Use the following format, with no spaces before or after equals signs or commas: MYVARIABLE1=123,MYVARIABLE2 Such variables can be tested in the script by #if and #ifdef statements that control the flow of the script. If you are creating an InstallScript object, enter IFX_OBJECTS. Entering the name of a preprocessor variable for this setting defines the variable. For example if you enter MYVARIABLE for this setting, the script commands in the following #ifdef loop are executed:
#ifdef MYVARIABLE // Commands #endif

After you add or change a preprocessor variable definition for this setting, you must compile your installation for the addition or change to take effect.

1888

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Disk Spanning Project Type Basic MSI, InstallScript MSI Description Disk spanning allows you to specify how your installation should be spread across different disks. This property can be changed only in the Release Wizard. The available settings are:

AutomaticAutomatically split your release files over as many disks as necessary. Custom - Enforce disk sizeDisplay a warning and abort the build if any feature's files are larger than the disk size. Custom - Do not enforce disk sizeBuild the release to span as many disks as necessary.

This setting applies only to compressed release builds. File Name Format Basic MSI, InstallScript MSI, Merge Module The File Name Format is stored in your .msi package's Summary Information Stream, and it is used to determine how the paths of your files will be stored in the package. Select Short File Names if your installation will be distributed on media that does not support long file names, such as a UNIX server. Use this setting if you want to include certain components and exclude others based on the language that is selected for each component. If the language specified for a component does not match one of the languages that is selected for this setting, InstallShield does not include the component in the release. By default, releases are language independent; that is, none of the projects components are excluded from the release. UI Languages Basic MSI, InstallScript MSI, Merge Module This setting lets you specify which user interface languages you want to include in a release. Note that if a language is not selected in the Setup Languages setting in the General Information view of the project, it is not listed as one of the available languages for the UI Languages setting. If the release is specific to one or more platforms, use this setting to indicate the platforms: click the value of this setting, and then click the ellipsis (...) button to specify the appropriate platforms. If the platform specified for a component does not match one of the platforms that is selected for this setting, the component is not included in the release. The default value for this setting is Use Project Settings. This value indicates that the release supports the platforms that are specified at the project level.

Data Languages

Basic MSI, InstallScript MSI, Merge Module

Platform(s)

InstallScript, InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

1889

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Layout Project Type InstallScript Description This read-only setting indicates whether the project's files are stored in cabinet files or placed uncompressed in the disk image. You can modify this setting from the Media Layout panel in the Release Wizard.


Language(s) InstallScript, InstallScript Object

Cabinet File(s)All data files are placed into the data cabinet file or files by the build. CD-ROM Folder(s)All data files are placed in one or more CDROM folders by the build. CustomSome data files are placed into one or more data cabinet files, and others are placed in one or more CD-ROM folders by the build.

Use this setting if you want to include certain components and exclude others based on the language that is selected for each component. This setting also lets you specify which user interface languages you want to include in a release. If the language specified for a component does not match one of the languages that is selected for this setting, InstallShield does not include the component in the release. In addition, if a UI language that is included in the project does not match one of the languages that is selected for this setting, InstallShield does not include the UI strings in the release. By default, releases are language independent; that is, none of the projects components or UI strings are excluded from the release. Note that if a language is not selected in the General Information view of a project, it is not listed as one of the available languages for the Language(s) setting.

Default Language

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

To override the releases default project language that is configured in the General Information view or the String Editor view, select the appropriate default user interface language for your installation. For more information, see Setting the Default Project Language. Specify whether you want your installation to display the Choose Setup Languages dialog when it is run with a full user interface.

Languages Dialog

Tip: A Setup.exe setup launcher is required if you want the language selection dialog to be displayed. To learn more, see Creating a Setup Launcher.

1890

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Build UTF-8 Database Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify whether you want the Windows Installer database, along with any instance or language transforms, be built using the UTF-8 encoding. The UTF-8 encoding supports characters from all languages simultaneously, enabling you to mix and match, for example, Japanese and German, or Russian and Polish, both in text shown to end users and in file names and registry keys. These mixed languages work correctly regardless of the current language of the target system. However, some scenarios result in user interface issues. For example, if an end user specifies the /qb command-line option or uninstalls the product from Add or Remove Programs, Windows Installer uses very small fonts to display the user interface text in a UTF-8 database. If you specify No, InstallShield creates an ANSI database when you build your release. This option does not let you mix characters from languages in different code pages. The default value for this setting is No. Optimize Size Basic MSI, InstallScript MSI, Merge Module Specify whether you want InstallShield to use the LZX method of compression when building this releases cabinet files.

Important: Using compression generally decreases the size of your compressed files, but the build process may take more time to complete. Depending on the number and size of the files being compressed, the LZX compression and the build may take hours to complete. Therefore, if you select Yes for the Optimize Size setting, it is recommended that your build machine have the latest hardware to minimize the time that it takes for the build to complete. This setting is used only if your release is configured to compress some or all of its files. Previous Package Basic MSI, InstallScript MSI, Merge Module Enter the fully qualified path to a previous release (.msi file for an installation project, or .msm file for a merge module project) to minimize the size of future patch packages. This setting corresponds to the Patch Optimization setting in the Release Wizard.

Note: If your package uses dynamic file linking, it is recommended that you specify a previous package in this setting so that the file keys are consistent across releases. For more information, see Upgrade Considerations.

InstallShield 2010 User Guide

ISP-1600-UG00

1891

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Generate File Hash Values Project Type Basic MSI, InstallScript MSI, Merge Module Description Indicates whether to populate the MsiFileHash table for every unversioned file in your build.

YesPopulates the MsiFileHash table for every unversioned file in your build. NoDoes not populate the MsiFileHash table. If you select No, InstallShield builds any entries that are found in the project's MsiFileHash table (populated using the Direct Editor).

If you have already populated the MsiFileHash table for a particular file, the build uses that information instead of generating the information at build time. Shallow folder structure Basic MSI, InstallScript MSI If you want InstallShield to create the .msi file and related files directly in the location that is specified in the Release Location setting, without any of the subfolders, select Yes. To build the release if the release location is in <ISProjectDataFolder> or <ISProjectFolder>, click Build Tables & Refresh Files on the Build menu. Generate Autorun.inf Basic MSI, InstallScript MSI Select Yes if you are distributing your installation on a CD-ROM or DVD-ROM and want to support the AutoPlay feature. InstallShield creates a text file called Autorun.inf, which contains the instructions to autoplay your installation, in the root of your disk images folder. You can edit this file to add additional AutoPlay options or to pass commandline parameters to MsiExec.exe, Setup.exe, or Update.exe. Release Flags Basic MSI, InstallScript MSI Release flags enable you to customize your installation by including or excluding certain items in each release. Enter the flags that you would like to include in this release. Separate multiple flags with a comma. Once you have assigned release flags to your features InstallShield prerequisites, and chained .msi packages, you can create a release that includes features, InstallShield prerequisites, and chained .msi packages based on those flags. By default, all features, InstallShield prerequisites, and chained .msi packages are included in a release. Once you specify a flag in either the Releases view or the Release Wizard, only unflagged items and items that contain the specified release flag are included in your installation.

Note: If a release does not have release flags, it will include all items, including features, InstallShield prerequisites, and chained .msi packages that have release flags. To include only unflagged features items, specify a flag that does not exist. For example, you might use NoFlags. This way, only unflagged items are built into a release. Note that you can also specify release flags at the product configuration level. For more information, see Release Flags.

1892

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Use Path Variable Test Values Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module InstallScript, InstallScript Object Description If you used test values for any of your path variables, select Yes to set those variables to their actual values at this time.

Features

This read-only setting indicates which features are included in the built release. You can modify the value of this setting from the Features panel in the Release Wizard.

Use the "Include in Build" feature propertyIf this option is selected, each feature whose Include In Build setting is set to Yes is included in the built release, and each feature whose Include In Build setting is set to No is not included. Specify the features to be included directlySpecify for each feature whether the feature is included in the built release.

Specify Skin InstallScript

Select the dialog skin that is applied to this release. The default value, <Use Project Setting>, uses the skin that is selected in the Skins folder of the Dialogs view; selecting any other value for this setting overrides the Skins folder selection. Specify whether the current release (the release that is selected in the Releases view) is a differential releasethat is, a release that contains only those files that were absent from one or more of a specified set of existing releasesor a full release, which contains all your product's files, so that your product can be installed on a system on which no version of your product is currently installed. For more information, see Differential vs. Full Releases.

Differential Media

InstallScript

Object Difference

InstallScript

This setting is applicable only if Yes is selected for the Differential Media setting. Select the conditions for including InstallShield objects in your differential release.

Include AllThe differential release includes all objects that would be included in the equivalent full update release. Exclude AllThe differential release does not include any objects. Include If ChangedThe differential release includes those objects that would be included in the equivalent full update release and that are not found in, or are different from, the corresponding object in at least one of the comparison releases.

Support Version(s) InstallScript

This setting is applicable only if No is selected for the Differential Media setting. Optionally enter a semicolon-delimited list of version numbers (for example, 1.2.3;1.2.4) of the earlier versions of your product to which this release can be applied as an update. If you leave this setting blank, the installation can be run on a system on which any earlier version, or no version, of your product is currently installed.

InstallShield 2010 User Guide

ISP-1600-UG00

1893

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Keep Unused Directories Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify whether you want InstallShield to remove unused directories from the Directory table of the .msi file when you build this release. Available options are:

NoIf a directory that is listed in the Directory column of the Directory table is not referenced in any known location in the .msi file, InstallShield removes it from the Directory table of the .msi file that it creates at build time. For Basic MSI and InstallScript MSI projects, this occurs after any merge modules are merged, but only directories that are present in the .msi file are removed; therefore, if a merge module contains new unused directories in its Directory table, the new unused directories are added to the installation. YesInstallShield does not remove any directories from the Directory table of the .msi file that it creates at build time.

The default value is No.

Note: Under some conditions, predefined directories cannot be resolved, causing an installation to fail. Removing unused directories from the Directory table enables you to avoid unnecessary failures. Therefore, it is recommended that you select No for this setting. Publish Merge Module Merge Module Specify whether you want to copy the merge module to the Merge Modules folder or publish it to a repository.

To update the Merge Modules folder with this new merge module whenever you successfully build the release, select Copy to Merge Modules folder. If you would like to reuse the merge module in other projects or share it with other users, you can publish it to a repository when you build the release. Select the appropriate repository in this list. All of the repositories to which you have access are listed here. If you do not want the merge module to be published to a repository or copied to the Merge Modules folder when you build the release, select Do not publish.

To learn more, see Using a Repository to Share Project Elements. Display Name Merge Module Specify a display name for the merge module that you are publishing to the repository. When you select this merge module in the Redistributables view after it has been published to the repository, the display name is available in the details pane. Publisher Merge Module Type the name of the person publishing this merge module to the repository. This name will be displayed in the description pane when you select this merge module in the Redistributables view. When you select this merge module in the Redistributables view after it has been published to the repository, the publisher name is available in the details pane.

1894

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-105: Settings on the Build Tab (cont.) Setting Description Project Type Merge Module Description Type the description that should be displayed for this merge module. When you select this merge module in the Redistributables view after it has been published to the repository, the description is available in the details pane. Disable Trialware Build Build Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module To build a trialware release of your product, select No for this setting. This is the default setting. InstallShield will wrap a trialware shell around the executable file (.exe, .dll, .ocx, or .scr) specified in the Trialware view. The executable file can be unwrapped and used only according to the license settings that you configure, such as the trial limit (a specified number of days or a specified number of uses). To build a release of your product that does not have the trialware protection, select Yes for this setting. If you select Yes, you can use this release if you want to test the installation of your product but you do not want to test the trialware run time. You also may want to build a release without trialware protection if you distribute the Try and Die type of trialware to prospective customers. You can give them the unprotected release when they have finished evaluating your product and they purchase it from you. If you test a Try and Die product by running the protected trial version, it will expire at the end of the trial period; you will not be able to test your product further on the same test machine without removing the license. To learn how to remove a license from a test machine, see Testing a Trialware Release of Your Product. If you have not added a trialware file to your project in the Trialware view, the Disable Trialware Build setting has no effect on the release build. Validate DIMs Basic MSI, InstallScript MSI, Merge Module Specify whether you want the DIMs in the project to be validated whenever the selected release is built. If you select Yes, InstallShield checks the DIM files to determine whether they contain the required settings. Note that validating DIMs is time-consuming, so the default value is No. Hide Add/Remove Panel Entry InstallScript MSI Indicates whether to hide your application's entry in Add or Remove Programs in the Control Panel.

NoYour application's entry is displayed on the target machine in Add or Remove Programs. YesYour application's entry is not displayed on the target machine in Add or Remove Programs. The end user cannot use Add or Remove Programs to remove, modify, or view support information for your application.

To learn about how to indicate which information should be displayed for your applicationincluding how to hide buttons in the Add or Remove Programs see General Information View.

InstallShield 2010 User Guide

ISP-1600-UG00

1895

Chapter 43: View Reference Media View

Setup.exe Tab for a Release

Project: The Setup.exe tab is available in the following project types:

Basic MSI InstallScript InstallScript MSI

For more information on including Windows Installer redistributables in installations, see Adding Windows Installer Redistributables to Projects.

The Setup.exe tab is where you configure settings about your Setup.exe file. It is also where you specify whether you want to include redistributables for Windows Installer 3.1 or earlier. For more information on Windows Installer redistributables, see Adding Windows Installer Redistributables to Projects.
Table 43-106: Settings on the Setup.exe Tab Setting MSI Command Line Arguments Project Type Basic MSI, InstallScript MSI Description Indicate any command-line arguments that you want to pass to Windows Installer. Type a value here to be written to Setup.ini.
[Startup] CmdLine=Your Value

Note: Anything that you specify here is passed to the .msi file when Setup.exe launches it. If you want to set a property, you would enter MYPROPERTY="Some Value" for this setting. Generate Package Definition File Basic MSI, InstallScript MSI To create a package definition file (.pdf) that enables end users to run your installation as an SMS job, select Yes. If you select Yes, InstallShield creates a version 2.0 .pdf. This setting enables you to specify whether to create a Setup.exe setup launcher. If you choose to create a setup launcher, you can specify whether you want to include redistributables for Windows Installer 3.1 or earlier. To learn about scenarios that require a setup launcher, see Creating a Setup Launcher.

Setup Launcher

Basic MSI, InstallScript MSI

Note: For more information on Windows Installer redistributables, see Adding Windows Installer Redistributables to Projects.

1896

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting Setup Launcher Type Project Type Basic MSI Description Specify the type of setup launcher that you want InstallShield to create at build time:

UnicodeA Unicode setup launcher can correctly display double-byte characters in the setup launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the double-byte-character language. Windows 9x does not support Unicode setup launchers. ANSIAn ANSI setup launcher displays double-byte characters in the setup launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of doublebyte characters in those dialogs if the target system is not running the appropriate code page.

For more information on setup launchers, see Creating a Setup Launcher.

InstallShield 2010 User Guide

ISP-1600-UG00

1897

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting Required Execution Level Project Type Basic MSI, InstallScript, InstallScript MSI Description Use the Required Execution Level setting to specify the minimum level required by your installation's Setup.exe file for running the installation (the setup launcher, any InstallShield prerequisites, and the .msi file) on Windows Vista platforms. The available options are:

AdministratorSetup.exe requires administrative privileges to run. Administrators must authorize it; non-administrators must authenticate as an administrator. Highest availableSetup.exe prefers administrative privileges. Administrators must authorize it; non-administrators run it without administrative privileges. This is the default option for InstallScript and InstallScript MSI projects. InvokerSetup.exe does not require administrative privileges, and all users can run it without administrative privileges. Setup.exe does not display any UAC messages prompting for credentials or for consent. This is the default option for Basic MSI projects.

For InstallScript and InstallScript MSI projects, and for Basic MSI projects if the Setup Launcher setting is set to Yes, InstallShield embeds a Windows Vista application manifest in the Setup.exe launcher. This manifest specifies the selected execution level. Operating systems earlier than Windows Vista ignore the required execution level. If the Setup Launcher setting is set to No for a Basic MSI project, InstallShield does not embed the Windows Vista application manifest in the Setup.exe launcher. The benefit of elevating the required execution level is that privileges can be elevated only once if necessary to run Setup.exe, and that these privileges can be carried over to all of the installation's InstallShield prerequisites and the .msi file without requiring multiple prompts for approval. Thus, if two of your InstallShield prerequisites require administrative privileges, for example, you can change this setting to Administrator, and then end users are prompted only once during the installation, before Windows Installer runs the Setup.exe file. Note, however, that if you elevate the privileges and also launch the application at the end of the installation, the elevated privileges are carried over to the application. In most cases, running an application with elevated privileges on Windows Vista platforms is discouraged. For more information, see Minimizing the Number of User Account Control Prompts During Installation.

1898

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting Advertise If Prerequisites Are Elevated Project Type Basic MSI, InstallScript MSI Description In the following common scenario, you may want to advertise your .msi file to help end users avoid a second User Account Control (UAC) prompt during your product's installation on Windows Vista systems:

Your installation includes one or more InstallShield prerequisites that require elevation. In addition, your .msi file requires elevation. (That is, the Require Administrative Privileges setting in the General Information view is set to the default value of Yes.)

If this scenario does not apply to your installation, it is recommended that you leave the default value of No for the Advertise If Prerequisites Are Elevated setting because setting it to Yes would not avoid a second UAC prompt. The Advertise If Prerequisites Are Elevated setting applies to installations that are run on Windows Vista systems. Installations that are run on earlier versions of Windows ignore this setting. Valid options are:

Advertise: SilentIndicates that if InstallShield prerequisites in the installation are successfully installed with elevated privileges, the .msi file should be advertised and run silently (without a user interface). Then the main part of the installation does not require an additional UAC prompt for consent or credentials. Advertise: Full UIIndicates that if InstallShield prerequisites in the installation are successfully installed with elevated privileges, the .msi file should be advertised and run with a full user interface. Then the main part of the installation does not require an additional UAC prompt. NoIndicates that the .msi file should not be advertised. When end users run the installation, one or more UAC prompts may be displayed to install the InstallShield prerequisites. If the .msi file also requires elevation, an additional UAC prompt may be displayed before the main part of the installation occurs.

(cont.)

Note: The package must support advertisement in order for either of the advertise options to work. Advertisement is not instantaneous, and it adds extra delays to the installation. In addition, unexpected behavior may occur if the end user clicks Cancel after advertisement but before the main part of the installation has finished. For example, advertised shortcuts for your product may appear on the desktop before the main installation begins, and a confused user canceling the main installation may leave your package advertised but not fully installed. Therefore, in some cases, it may be better to leave this setting as No to allow the second UAC prompt and avoid product advertisement. In some cases, the .msi file is not advertised, and as a result, the second UAC prompt is displayed. For more information, see Specifying Whether a Product Should Be Advertised If Its InstallShield Prerequisites Are Run with Elevated Privileges.

InstallShield 2010 User Guide

ISP-1600-UG00

1899

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting MSI Engine Location Project Type Basic MSI, InstallScript MSI Note: This setting applies to redistributables for Windows Installer 3.1 and earlier. For information on different methods of adding various versions of Windows Installer redistributables to a project, see Adding Windows Installer Redistributables to Projects. Specify where the Windows Installer engine installers should be located. (The Setup Launcher setting lets you specify to include neither, one, or both of the Windows Installer engine installers.) Description

Select Copy from Source Media to leave the selected Windows Installer engine installers on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe. Select Extract Engine from Setup.exe to compress the selected Windows Installer engine installers into Setup.exe, to be extracted at run time. Select Download Engine from the Web to download the Windows Installer engine installer (if necessary) from a URL that you specify. If you select this setting, be sure to set the engine URL settings to the appropriate Web locations, or leave the default value.

MSI 2.0 Engine URL

Basic MSI, InstallScript MSI

This setting specifies the location from which the setup launcher can download InstMsiW.exe, the installer for the Windows Installer engine, if necessary. This setting is ignored unless the MSI Engine Location setting for the current release is set to Download Engine from the Web. Do not specify the file name in the URL.

Note: The default URL (http://www.installengine.com/Msiengine20) is a site maintained by Acresso for your convenience; the http:// www.installengine.com/cert02/Msiengine site is also maintained by Acresso. The 2.0 engines are available for download from the http:// www.installengine.com/Msiengine20 location. MSI 3.1 Engine URL Basic MSI, InstallScript MSI This setting specifies the location from which the setup launcher downloads the Windows Installer 3.1 or 3.0 engine, if needed. This property is ignored unless the MSI Engine Location setting for the current release is set to Download Engine from the Web. Do not specify the file name in the URL.

Note: The default URL (http://www.installengine.com/Msiengine30) is a site maintained by Acresso for your convenience. Both the 3.1 and 3.0 engines are available for download from this location. The appropriate versioneither 3.1 or 3.0is downloaded if needed, depending on what option is selected for the MSI Engine Version setting for the current release.

1900

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting MSI Engine Version Project Type Basic MSI, InstallScript MSI Note: This setting applies to redistributables for Windows Installer 3.1 and earlier. For information on different methods of adding various versions of Windows Installer redistributables to a project, see Adding Windows Installer Redistributables to Projects. Select the version of the Windows Installer engine that you want to include with your application. You must select one of the Yes options in the Setup Launcher setting to enable installing the Windows Installer engines with your package. The Version 3.1 or 2.0 (best fit for system) option installs Windows Installer 3.1 on target systems that are running Windows 2000 SP3 or later; it installs Windows Installer 2.0 on other target systems. Delay MSI Engine Reboot Basic MSI, InstallScript MSI Note: This setting applies to redistributables for Windows Installer 3.1 and earlier. For information on different methods of adding various versions of Windows Installer redistributables to a project, see Adding Windows Installer Redistributables to Projects. Specify whether you want to postpone any reboot associated with installing or updating the Windows Installer engine on the target system until after your installation has completed. Select Yes to postpone the reboot, if one is necessary. Select No to allow the system to reboot, if necessary, immediately after the Windows Installer engine has been installed or updated and before performing your installation. This option requires Windows Installer version 2.0 or later. Cache MSI Locally Basic MSI, InstallScript MSI Specifies whether the .msi file and other installation files for the current build should be cached on the target system. Description

YesCache the .msi file and other installation files on the target system for use with application maintenance and repair. The Cache Path setting for the current build specifies where files should be cached. NoDo not cache the .msi file and other installation files on the target system.

Note: This setting is enabled for releases that do not have the .msi file available in the same folder as the Setup.exe file on the target system.

InstallShield 2010 User Guide

ISP-1600-UG00

1901

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting Cache Path Project Type Basic MSI, InstallScript MSI Description Specifies where the cached .msi file and other cached installation files should be stored on the end users's system. You can enter a hard-coded value such as C:\CachedFiles, but it is recommended that you cache files on a path using a destination variable selected from the list. The default value is [LocalAppDataFolder]Downloaded Installations.

Note: This setting is used only if the Cache MSI Locally setting for the current release is set to Yes. Single Exe File Name InstallScript The file name (including extension) of a self-extracting executable file that runs the installation. This file is built to the Package subfolder of the folder that you specify in the Release Location setting. If you leave this setting empty, no self-extracting executable file is built. Optionally specify the fully qualified name of the file from which the executable file's icon is taken at build time; if no file is specified, a default icon is used. To specify a file, type an absolute path or a path relative to a path variable, or click the ellipsis button (...) to browse to the file from within the Change Icon dialog box. By default, the icon with index 0 is used; to specify a different icon, either select an icon in the Change Icon dialog box or append the icon's index or resource ID (preceded by a minus sign) to the file name. For example, C:\Temp\MyLibrary.dll,2 indicates the icon with an index of 2, and C:\Temp\MyLibrary.dll,-100 indicates the icon with a resource ID of 100. Setup Command Line Media Password InstallScript Enter any command-line parameters that you want to pass to Setup.exe when end users launch the installation. Enter the password that the end user must enter in order to run the installation. Leave this setting empty if you do not want to password protect your installation. This setting is applicable only if you specify a non-null password in the Media Password setting. Select Yes to set the SHOW_PASSWORD_DIALOG system variable to a non-zero value, which executes the password-checking code in the OnCheckMediaPassword event handler function's default code. If you select No, you must enter your own code in the script to request the password from the end user and check it by calling FeatureValidate. Small Initialization Dialog Basic MSI, InstallScript, InstallScript MSI Select Yes to display a small initialization dialog when end users run this release. When the installation initializes, by default, an initialization dialog is displayed. The standard initialization dialog is the same size as the Welcome dialog and contains initialization text, a progress bar, and a Cancel button. The small initialization dialog contains initialization text, progress and a Cancel button; however, it is smaller, it does not contain a bitmap, and its background is the window color of the end user's system.

Single Exe Icon File

InstallScript

InstallScript

Show Password Dialog

InstallScript

1902

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting Init Dialog Product Name Project Type InstallScript Description Optionally enter the product name to display in the setup initialization dialog. If you leave this setting empty, InstallShield uses the product name that you specify in the General Information view. Specify the minimum number of seconds that the installation should display the initialization dialog when end users run this release. InstallShield uses the value that you specify for this setting as the value of the SplashTime keyname in the Setup.ini file. When the installation initializes, by default, an initialization dialog is displayed. The splash screen, if provided, is also shown at this time. If you specify a minimum initialization time in this setting, the initialization dialog and splash screen are shown for at least the specified number of seconds. If initialization takes longer than the time specified, the dialog and splash screen are still displayed until the installation completes initialization. If initialization takes less time than the time specified, the installation continues to display the dialog and splash screen until the specified time has elapsed, and then the installation continues. Password Protect Launcher Basic MSI, InstallScript MSI Select Yes to password-protect your setup launcher. Type a password for the Launcher Password setting. This setting is applicable only to releases that meet the following criteria:

Minimum Initialization Time

Basic MSI, InstallScript, InstallScript MSI


Launcher Password Basic MSI, InstallScript MSI

Single-file Setup.exe Compressed files Network image media type

Type a password to protect your application. You must select Yes in the Password Protect Launcher setting to activate password protection. This setting is applicable only to releases that meet the following criteria:


Use My Copyright for Setup.exe Basic MSI, InstallScript MSI

Single-file Setup.exe Compressed files Network image media type

Specify whether you want to override the default copyright notice for Setup.exe with your own copyright notice. If you select Yes, enter your own copyright information in the Launcher Copyright setting. The copyright notice is used on the Version tab of the Properties dialog box that is displayed if you right-click the setup launcher and then click Properties.

Launcher Copyright

Basic MSI, InstallScript MSI

If you want to override the default copyright notice for Setup.exe with your products copyright notice, enter your products copyright notice. Note that you must also select Yes in the Use My Copyright for Setup.exe setting. The copyright notice is used on the Version tab of the Properties dialog box that is displayed if you right-click the setup launcher and then click Properties.

InstallShield 2010 User Guide

ISP-1600-UG00

1903

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting InstallShield Prerequisites Location Project Type Basic MSI, InstallScript, InstallScript MSI Description Specify where the InstallShield prerequisites that are selected in the Redistributables view (in Basic MSI and InstallScript MSI projects) or in the Prerequisites view (in InstallScript projects) should be located.

Project: The available options differ, depending on which project type you are using.

Follow Individual SelectionsUse the locations that are specified for each individual InstallShield prerequisites properties in the Redistributables or Prerequisites view. This option is available for Basic MSI, InstallScript, and InstallScript MSI projects.

Download From The WebDownload all of the InstallShield prerequisite files included in your project (if necessary) from the URL specified in the InstallShield prerequisite (.prq) file for each prerequisite. This option overrides the locations that are specified in the Redistributables or Prerequisites view for each InstallShield prerequisites properties. This option is recommended if your installation will be downloaded from the Internet and you want to minimize the package size and download time. An InstallShield prerequisite will not be downloaded if the correct version is already present on the target machine. This option is available for Basic MSI, InstallScript, and InstallScript MSI projects.

Extract From Setup.exeCompress the InstallShield prerequisite files into Setup.exe, to be extracted at run time, if necessary. This option overrides the locations that are specified in the Redistributables view for each InstallShield prerequisites properties. Select this option if the entire installation must be self-contained in Setup.exe. Note that the Download From The Web option results in smaller installations and shorter download time; however, the Extract From Setup.exe option provides for a completely self-contained installation. This option is available for Basic MSI and InstallScript MSI projects.

1904

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-106: Settings on the Setup.exe Tab (cont.) Setting InstallShield Prerequisites Location (cont.) Project Type Description

Copy From Source MediaStore the InstallShield prerequisite files on the source media. This option overrides the locations that are specified in the Redistributables view for each InstallShield prerequisites properties. Use this option if the installation will be run uncompressed from fixed mediaCD, DVD, or local network. This option is available for Basic MSI and InstallScript MSI projects.

Include with MediaStore the InstallShield prerequisite files on the source media or in Setup.exe, depending on how you configure the settings for the release. This option overrides the locations that are specified in the Prerequisites view for each InstallShield prerequisites properties. This option is available for InstallScript projects.

Note that if an InstallShield prerequisite is added to a project as a dependency of another prerequisite, the location for the prerequisite dependency follows the location setting of the prerequisite that requires it.

Tip: If you select the Extract From Setup.exe option, the Copy From Source Media option, or the Include with Media option and then build a release that includes an InstallShield prerequisite that is not available on your computer, one or more build errors are generated for every file that the prerequisite requires. To avoid these build errors, use the Redistributables view or the Prerequisites view to either download the InstallShield prerequisite from the Internet to your computer or remove it from your project before building the release. To learn more, see Specifying the Location for InstallShield Prerequisites at the Release Level.

Signing Tab for a Release

Project: The Signing tab is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1905

Chapter 43: View Reference Media View

The Signing tab is where you specify the digital signature informationincluding the digital signature files granted to you by a certification authoritythat InstallShield should use to sign your files. It is also where you specify which files in your installation should be digitally signed at build time.
Table 43-107: Settings on the Signing Tab Setting Certificate URL Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company.

Digital certificate file (SPC or PFX)

Specify the location of your digital certificate file (.spc or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file.

Private key file (PVK)

If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location.

Certificate password

If you would like to pass the password for the .pvk file or the .pfx file to ISCmdBld.exe to digitally sign your application while building the release from the command line, type the password in this box. InstallShield encrypts this password and stores it in your project (.ism) file. If you do not specify a password in this box but you are digitally signing the release while building it from the command line, you will need to manually enter the password when you are prompted each time that you build the release from the command line. If you want to sign your Windows Installer package (.msi file or .msm file), select this check box. This check box is enabled only if .spc and .pvk files are specified, or if a .pfx file is specified.

Sign Windows Installer Package

Basic MSI, InstallScript MSI, Merge Module

Note: You can sign the Windows Installer package only if version 2.0 or later is selected for the MSI Engine Version setting on the Setup.exe tab.

1906

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-107: Settings on the Signing Tab (cont.) Setting Sign media header (requires .spc and .pvk) Project Type InstallScript Description If you want to digitally sign the media header file (Data1.hdr), select this check box. This check box is enabled only if .spc and .pvk files are specified.

Project: InstallShield does not support using .pfx files to sign media header files (.hdr files), which are used for the One-Click Install type of installation for InstallScript projects. For this type of installation, consider one of the following alternatives: Use .spc and .pvk files instead of a .pfx file for your digital signature. Build a compressed installation, which would enable you to sign with a .pfx file.

Sign setup.exe

Basic MSI, InstallScript, InstallScript MSI

If you want to sign your Setup.exe file, select this check box. This check box is enabled only if .spc and .pvk files are specified, or if a .pfx file is specified. In addition, this setting is applicable only to releases that meet the following criteria:


Sign files in package Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Single-file Setup.exe Compressed files Network image media type

If you want to sign any of the files in your release, select this check box and then use the Include patterns and files and Exclude patterns and files boxes to indicate which files should be signed.

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

InstallShield 2010 User Guide

ISP-1600-UG00

1907

Chapter 43: View Reference Media View

Table 43-107: Settings on the Signing Tab (cont.) Setting Include patterns and files Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description Specify the files and file patterns that you want to be digitally signed at build time. Note the following guidelines:

You can type directly in the box. As an alternative, you can click the Files button, which launches the Browse for file dialog box. This dialog box lists all of the static files that are currently in your project. It also lists file patterns such as *.dll, which you can select. To indicate a wild-card character, use an asterisk (*). For example, if you want to sign all .exe files, specify the following: *.exe Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to sign all files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

Exclude patterns and files

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Specify any files and file patterns that you do not want to be digitally signed at build time. Note the following guidelines:

You can type directly in the box. As an alternative, you can click the Files button, which launches the Browse for file dialog box. This dialog box lists all of the static files that are currently in your project. It also lists file patterns such as *.dll, which you can select. To indicate a wild-card character, use an asterisk (*). For example, if you do not want to sign any .drv files, specify the following: *.drv Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to avoid signing any files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe in the Include patterns and files box and in the Exclude patterns and files box, InstallShield does not sign any .exe files.

1908

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-107: Settings on the Signing Tab (cont.) Setting Sign files that are already signed Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description If any of the files in your project are already digitally signed, determine whether you want InstallShield to replace those existing digital signatures with the digital signature that you specify on the Signing tab. Note that this affects only files that meet the requirements that are specified in the Include patterns and files and Exclude patterns and files boxes.

To use the digital signature information that you are providing on the Signing tab to sign a file instead of any existing digital signature information that is already included with the file, select this check box. To leave the existing digital signature information intact for any files that are already signed, clear this check box.

This check box is cleared by default. Sign files in their original location Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Determine whether you want InstallShield to sign your original files or just the files that are built into the release:

If you want InstallShield to sign a temporary copy of each file and then use that signed temporary copy to build a release, clear this check box. Note that if you clear this check box, InstallShield will not modify or sign your original files. If you want InstallShield to sign your original files, select this check box.

This check box is cleared by default.

Tip: The benefit of selecting this check box for a Basic MSI or InstallScript MSI project is that it helps create one patch that updates both compressed and uncompressed versions of a release that contains originally unsigned files.

.NET/J# Tab for a Release

Project: The .NET/J# tab is available in the following project types:

Basic MSI InstallScript MSI

The .NET/J# tab is where you add support for the 32-bit versions of the .NET Framework 1.0, 1.1, or 2.0. It is also where you add J# support to your project.

Note: To include .NET Framework 3.5, 3.0 SP1, 3.0, 2.0 SP1 (x86, x64, IA64), or 2.0 (only x64, IA64) redistributables in your project, use the Redistributables view to add the appropriate InstallShield prerequisite for the Microsoft .NET Framework to your project. To include one or more versions of the .NET Framework in an InstallScript or InstallScript Object project, use the Objects view to add the Microsoft .NET Framework object to your installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1909

Chapter 43: View Reference Media View

For more information, see Adding .NET Framework Redistributables to Projects. Table 43-108: Settings on the .NET/J# Tab Setting .NET Framework Location Project Type Basic MSI, InstallScript MSI Description Specify where the .NET Framework runtime should be located. The .NET Framework is required for applications that are using any .NET features.

Select Copy From Source Media to leave the .NET Framework runtime on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe. Select Extract From Setup.exe to compress the .NET Framework runtime into Setup.exe, to be extracted at runtime. Select Download from the Web to download the .NET Framework runtime (if necessary) from a URL that you specify. If you select this option, you must set the .NET and J# Framework URL setting to the appropriate Web location.

.NET Framework Version

Basic MSI, InstallScript MSI

Select the 32-bit version of the .NET Framework that you want to distribute with your installation.

Note: To include .NET Framework 3.5, 3.0 SP1, 3.0, 2.0 SP1 (x86, x64, IA64), or 2.0 (only x64, IA64) redistributables in your project, use the Redistributables view to add the appropriate InstallShield prerequisite for the Microsoft .NET Framework to your project. For more information, see Adding .NET Framework Redistributables to Projects. .NET 1.1/2.0 Core Language Basic MSI, InstallScript MSI If you selected .NET version 1.1 for the .NET Framework Version setting, you can specify one .NET core language that you want to distribute. This is the language that is used while the .NET 1.1 core redistributable is installed. If you selected version 2.0, the language options are all selected and disabled since they are all included with this version of the redistributable. Click the Download more Languages button in the lower-right pane of InstallShield to launch the Redistributable Downloader Wizard, which enables you to download third-party redistributables, merge modules, and other files to assist with your project's distribution. Command Line to pass to Dotnetfx.exe Basic MSI, InstallScript MSI Note: This setting applies only if .NET 1.1 is selected for the .NET Framework Version setting. Enter the command line that you want to pass to Microsoft's DotNetFx.exe.

1910

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-108: Settings on the .NET/J# Tab (cont.) Setting .NET 1.1/2.0 Language Packs Project Type Basic MSI, InstallScript MSI Description Select the .NET language packs that you want to include. The options that are available depend on the Microsoft language packs that you have installed on your build machine. To download additional language packs, click the Download More Languages button in the lower-right pane of InstallShield. Clicking the Download more Languages button launches the Redistributable Downloader Wizard, which enables you to download third-party redistributables, merge modules, and other files to assist with your project's distribution. Command line to pass to Language Packs Basic MSI, InstallScript MSI Note: This setting applies only if .NET 1.1 is selected for the .NET Framework Version setting. Enter the command line that you want to send to all of the Microsoft LangPack.exe files included with the installation. Display .NET Option Dialog Basic MSI, InstallScript MSI Indicates whether Setup.exe displays a Yes/No message box asking the end user if they want to install .NET Framework on the target system. This setting does not determine whether your installation includes the .NET Framework, only whether the end user has a choice to install it.

NoInstalls the .NET Framework, if required, without displaying a message box to the end user. YesDisplays the .NET option message box, which allows the end user to specify whether to install the .NET Framework.

If you select Yes, a message box is displayed on the target system at run time. The message box states that the installation optionally uses the Microsoft .NET Framework and asks if they would like to install it. Show full User interface when installing .NET framework Basic MSI, InstallScript MSI Specify whether you want the full interface for the .NET Framework installation to be displayed. If you select Yes, the Microsoft .NET Framework (English) Setup wizard appears when dotnetfx.exe installs the .NET Framework on the target system. This wizard shows the progress of the .NET Framework installation. If you select No, the InstallShield Wizard appears when dotnetfx.exe installs the .NET Framework on the target system. This InstallShield Wizard shows the progress of the .NET Framework installation. Delay .NET Reboot Basic MSI, InstallScript MSI 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. Select Yes to delay any prompts to reboot until after the installation is finished. The .NET Framework may not function until after this reboot. Therefore, it is strongly recommended that you set this property to No if the .NET Framework is used during the installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1911

Chapter 43: View Reference Media View

Table 43-108: Settings on the .NET/J# Tab (cont.) Setting .NET and J# Framework URL Project Type Basic MSI, InstallScript MSI Description Specify the location from which your installation downloads the .NET Framework runtime and the J# redistributable, if included. It is not necessary to specify the file name in the URL. This setting is required only if the .NET Framework Location or J# Redistributable Location setting (if included) for the current release is set to Download from the Web. The installation downloads and runs the InstallShield file Dotnetfx.exe, which in turn downloads Dotnetredist.exe from the Microsoft Web site. This behavior is hardcoded in Dotnetfx.exe, which can be hosted anywhere. J# Redistributable Location Basic MSI, InstallScript MSI Specify where the J# redistributable should be located. The .NET Framework is required for applications using any .NET features.

Select Copy from Source Media to leave the J# redistributable on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe. Select Extract from Setup.exe to compress the J# redistributable into Setup.exe, to be extracted at run time. Select Download from the Web to download the J# redistributable (if necessary) from the URL specified in the .NET and J# Framework URL setting.

Note: The J# version number that is used matches whatever version number that you select for the .NET Framework. You cannot install version 1.1 of one of these redistributables and version 2.0 of the other. Command Line to pass to the J# Redistributable Display J# Option Dialog Basic MSI, InstallScript MSI Specify a command-line parameter to pass to vjredist.exe. Consult Microsoft Support for valid command-line parameters.

Basic MSI, InstallScript MSI

Specify whether the installation should display a dialog that lets end users indicate if they want to install J# on the target system.

Note: If the .NET Framework 1.1 is also included in the installation, the dialog states that .NET Framework 1.1 will also be installed. Install J# if Installation Runs Silently Basic MSI, InstallScript MSI Select Yes to install J# on the target system if the J# Option dialog cannot be shown (for example, if the installation is run silently).

1912

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Internet Tab for a Release

Project: The Internet tab is available in the following project types:

Basic MSI InstallScript InstallScript MSI

The Internet tab is where you specify Web-related information.


Table 43-109: Settings on the Internet Tab Setting Web Type Project Type Basic MSI, InstallScript MSI Description Select the configuration of your Web installation package.

One ExecutableBuild this release as a single self-extracting Setup.exe file. This Web type is ideal for a package that is to be downloaded from many Web or FTP sites, since the installation package is self-contained. Note, however, that the entire installation package is downloaded, so the download time is longer than with the Install from the Web type that is described below. DownloaderBuild this release as a combination of Setup.exe and your .msi package, where the end user downloads and launches Setup.exe, which in turn downloads and runs the .msi database, which contains all of your files. Install from the WebBuild this release as a combination of Setup.exe, your .msi database, and external cabinet (.cab) files. The end user downloads and run Setup.exe, which in turn downloads and runs the .msi database; based on the end user's setup type and feature selections, only the requested .cab files are downloaded and installed, which minimizes download time.

For the Downloader and Install from the Web types, application maintenance and repair uses the URL that you specify in the URL for Your Files setting as the installation source. URL for your files Basic MSI, InstallScript MSI Specify the directory from where your data cabinet files will be downloaded. This setting accepts a URL in the form http://www.yourcompany.com/ download. This setting is used only if the Web Type setting for the current release is set to Install from the Web or Downloader. IFTW Cab Size in KB Basic MSI, InstallScript MSI Specify the size, in kilobytes, of the cabinet (.cab) files built for the Web media type. Specify the value 0 (zero) to build a separate cabinet file for each component. This setting is used only if the value of the Web Type setting for the current release is Install from the Web.

InstallShield 2010 User Guide

ISP-1600-UG00

1913

Chapter 43: View Reference Media View

Table 43-109: Settings on the Internet Tab (cont.) Setting Generate OneClick Install Project Type Basic MSI, InstallScript, InstallScript MSI Description Specify whether to create a One-Click Install, which is an installation program whose initial user interface is an HTML page. When an end user visits your Web page and clicks an Install button on it, the installation files are downloaded to the target system and then launched.

Project: For Basic MSI and InstallScript MSI projects: What files are downloaded to the user's system depends on the option that is selected for the Web Type setting for the current release. If you select Yes for the Generate One-Click Install setting, you must specify file names in the OneClick HTML Base Name setting and the One-Click Cab/Jar Base Name setting for this release. This setting is used only if you select Web for the release's Media Format setting. For InstallScript projects: If you select Yes for this setting, InstallShield includes with your installation an external setup player (Setup.ocx file) that downloads and then launches the Setup.exe file with the appropriate command line. For details, see One-Click Install Installations in InstallScript Projects. One-Click HTML Base Name Basic MSI, InstallScript MSI Specify the base file name of the HTML file generated by the build process. The .htm file name extension is appended to the base name that you specify, and the generated file is created in the Disk1 folder of the current release location. This setting is used only if the value of the Generate One-Click Install setting for the current build is Yes. One-Click Cab/ Jar Base Name Basic MSI, InstallScript MSI Specify the base file name for the cabinet file (.cab file, for Internet Explorer support) or applet archive file (.jar file, for Netscape Communicator support) that is generated by the build process for a One-Click Install installation. The .cab and/or .jar file name extension is appended to the name that you specify here, based on the Browsers to Support setting for the current release. The generated file (or files) are created in the Disk1 folder for the current release. The name that you specify for this setting is displayed at run time in the Digital Certificate when you digitally sign your installation. This setting is used only if the value of the Generate One-Click Install setting for the current build is Yes. Browsers to Support Basic MSI, InstallScript MSI Select the browsers that you like to support for your One-Click Install installation. If you want the installation to support Netscape Communicator, you must supply certificate information. This setting is applicable only to One-Click Web releases. Netscape Certificate ID Basic MSI, InstallScript MSI Enter your Netscape Certificate ID for this release. This setting is only applicable to One-Click Web releases and is required when supporting Netscape Communicator.

1914

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-109: Settings on the Internet Tab (cont.) Setting Netscape Certificate Password Netscape Path Project Type Basic MSI, InstallScript MSI Description Enter your Netscape Certificate Password for this release. This setting is only applicable to One-Click Web releases and is required when supporting Netscape Communicator. Enter your Netscape Certificate Database paththe directory containing cert7.db and key3.dbfor this release. This setting is applicable only to One-Click Web releases, and it is required when supporting Netscape Communicator. Create Default Web Page Netscape Support InstallScript Specify whether you want InstallShield to create a default Web page (.htm file) and place it in the Disk1 folder. Specify whether you want to include support for Netscape.

Basic MSI, InstallScript MSI

InstallScript

If you select Yes, InstallShield creates the files (Setup.zip and Setupapplet.jar) that Netscape requires in order to launch the installation from the Web page. These files are placed in the Disk1 folder. If you select No, the Setup.zip and Setupapplet.jar files are not created.

Web Page URL InstallScript

Do one of the following to indicate what URL should be launched if you click the Run From Web command on the Build menu:

To launch the Setup.htm file that InstallShield creates at build time and places in the Disk1 folder, leave this box blank. To launch a different Web page, type the URL in this box or click the browse button to select the Web file.

Tip: If you enter a URL, do not include the name of the page, and do not include an ending forward slash. For example, if the full URL for the Setup.htm file is http://www.mypages.com/setup/Setup.htm, enter the following as the Web page URL: http://www.mypages.com/setup When you click the Run from Web command on the Build menu, InstallShield launches the appropriate URL (http://www.mypages.com/setup/ Setup.htm, in the aforementioned example).

Postbuild Tab for a Release

Project: The Postbuild tab is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

1915

Chapter 43: View Reference Media View

Merge Module

The Postbuild tab lets you configure settings for distributing releases to a folder or FTP site automatically at build time.
Table 43-110: Settings on the Postbuild Tab Setting Copy to Folder Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description If you want to be able to automatically distribute your release to a folder, specify location. Existing folders with the same names as copied folders are overwritten, but no folders are deleted. Specify the folder path by entering the path in this setting, or click the ellipsis button (...) to browse to the location. If the media format of the selected release is a network image, which creates only one disk image folder, the contents of the disk image folder, rather than the folder itself, are copied. If you chose to create a self-extracting executable file, the executable file, rather than the disk image folders, is copied.

Project: For InstallScript and InstallScript Object projects, InstallShield automatically copies the release to the folder that you specify on the Postbuild tab every time that you build the release. For any of the following project types, InstallShield copies all of the relevant files for your release to the specified folder whenever you right-click the release in the Releases view and then click Distribute: Basic MSI InstallScript MSI Merge Module

If you want the build engine to copy your release to the specified folder after every build in a Basic MSI, InstallScript MSI, or Merge Module project, select Yes for the Distribute after build setting.

Note: If you specify a folder for this setting and you also specify an FTP location on the Postbuild tab, InstallShield copies the release to only the FTP location.

1916

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-110: Settings on the Postbuild Tab (cont.) Setting FTP Location Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Description If you want to be able to automatically distribute your release to an FTP server, specify the FTP URL for the location. Each release in your project can have a different FTP location.

Note: If you need to distribute your release to a path outside the FTP default folder, use a double slash (//). For example, to distribute your release to a root-level folder called myproduct, where the URL of the FTP server is ftp:/ /ftp.mydomain.com, enter ftp://ftp.mydomain.com//myproduct for the FTP location.

Project: For InstallScript and InstallScript Object projects, InstallShield automatically copies the release to the FTP location that you specify on the Postbuild tab every time that you build the release. For any of the following project types, InstallShield copies all of the relevant files for your release to the specified FTP location whenever you right-click the release in the Releases view and then click Distribute: Basic MSI InstallScript MSI Merge Module

If you want the build engine to copy your release to the specified location after every build in a Basic MSI, InstallScript MSI, or Merge Module project, select Yes for the Distribute after build setting. FTP Site User Name Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module If a user name is required to upload to the FTP location that you are specifying, enter the user name.

Project: If you enter a user name for one of the releases in a Basic MSI, InstallScript MSI, or Merge Module project, that same user name is used for other releases in the same project and in other Basic MSI, InstallScript MSI, and Merge Module projects. If a password is required to upload to the FTP location that you are specifying, enter the password.

FTP Site Password Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Project: If you enter a password for one of the releases in a Basic MSI, InstallScript MSI, or Merge Module project, that same password is used for other releases in the same project and in other Basic MSI, InstallScript MSI, and Merge Module projects.

InstallShield 2010 User Guide

ISP-1600-UG00

1917

Chapter 43: View Reference Media View

Table 43-110: Settings on the Postbuild Tab (cont.) Setting Distribute after build Project Type Basic MSI, InstallScript MSI, Merge Module Description Specify whether you want the build engine to automatically distribute your release after each build to the location that you specified.

Tip: To quickly distribute your release on demand, instead of after each build, right-click the release and click Distribute. Note that the Distribute command is available only if the release has been built at least once. Execute Batch File InstallScript, InstallScript Object To launch a batch file (.bat) or executable file (.exe) after the release has been built, enter the path to the file, or click the ellipsis button (...) to browse to the file. You can use path variables, enclosed within angle brackets (<>), as part of the path. If you specify a file for this, InstallShield sets environment variables with the same names (including the angle brackets) and values as the projects build variables. InstallShield also sets the environment variable <ISMEDIADIR>, whose value is the path to the folder in which the releases Disk Images, Log Files, and Report Files folders are created. You can refer to the value of an environment variable in a batch file by surrounding the variable name with percent signs (%); for example: set PATH = %<ISPROJECTDIR>%;%PATH% When the file is finished, InstallShield deletes the environment variables that it set.

Chained .msi Package Settings

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Windows Installer 4.5 includes support for installing multiple packages using transaction processing. The packages are chained together and processed as a single transaction. If one or more of the packages in the transaction cannot be installed successfully or if the end user cancels the installation, the Windows Installer initiates rollback for all packages to restore the system to its earlier state. The Chained .msi Packages area in the Releases view is where you identify .msi packages that you want InstallShield to include in your installation as chained packages. This area is also where you configure settings such as the properties that should be passed to the chained packages. The Windows Installer chaining functionality supports any packages that can be installed through MsiInstallProduct; it does not support the chaining of InstallScript MSI packages. Windows Installer 4.0 and earlier versions do not install any chained .msi packages.

Tip: To learn how to add Windows Installer 4.5 redistributables, see Adding Windows Installer Redistributables to Projects.
1918 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Media View

The following table describes the settings for chained .msi packages.
Table 43-111: Chained .msi Package Settings Setting Installation (run-time path) Description Specify the name of the Windows Installer package (.msi file), or click the Browse button to browse to it. If you click the Browse button, InstallShield automatically enters the product code for you. InstallShield also prompts you to specify whether you want to stream the .msi packageand its uncompressed files, if the .msi package is not compressedinto your products main .msi package:

If you specify that you want InstallShield to stream the files, InstallShield adds the name of the .msi package to the Installation (run-time path) setting. InstallShield also automatically adds either the file name (if it is a compressed .msi package) or the entry *.* (if it is an uncompressed .msi package) to the Streamed files box. For the *.* entry, InstallShield streams in the .msi package, all of the files in the same folder as the .msi package, and all of the subfolders and their files. The value that you use for this setting is relative to a temporary extraction path. That is, you could add a streamed supporting file as Support\File.ext, and refer to it in the chained package as [SourceDir]Support\File.ext.

If you specify that you do not want InstallShield to stream the files, InstallShield adds the following path to the Installation (run-time path) setting:
[SourceDir]FileName.msi

You can change this path if appropriate. For example, you may want to use a path such as the following one, and also clear the Delete streamed files after installation check box:
[LocalAppDataFolder]{ProductCodeGUID}\FileName.msi

In this example, the .msi package is cached on the local system, and it is available for maintenance.

Tip: You may not want to stream many or large files in the .msi package, since the Windows Installer has limitations for the file size of .msi packages. Product code This setting indicates the product code of the .msi package that is being chained to your main installation. The product code is used for uninstalling the chained package when appropriate. InstallShield automatically adds the product code for this setting if you use the Browse button for the Installation (run-time path) setting to select the .msi package.

InstallShield 2010 User Guide

ISP-1600-UG00

1919

Chapter 43: View Reference Media View

Table 43-111: Chained .msi Package Settings (cont.) Setting UI level Description Specify the user interface (UI) level that you want to be used for the chained .msi package. Valid options are:


Install condition

Basic UI (/qb)Display the built-in small progress dialog. Full UI (/qf)Display the modal and modeless dialogs that are available in the .msi package. No UI (/qn)Run the installation silently. Reduced UI (/qr)Display only modeless dialogs, such as the full-size progress dialog.

Enter any installation condition that you want to use for the chained .msi package. If the condition evaluates to True at run time, the Windows Installer launches the chained .msi package if the chained packages product has not already been installed. The default condition is:
Not Installed

You can modify this if necessary. For example, if you are adding the chained .msi package to a minor upgrade and you want the Windows Installer to launch the chained .msi package during a first-time installation and during an upgrade, consider adding a condition such as the following one:
Not Installed OR REINSTALL><"FeatureName"

In this example, FeatureName is the name of a feature that will be updated if the main installation is running in upgrade mode. It will also be updated during a repair.

Note: At run time, the installation evaluates the install condition; if it evaluates to False, the installation evaluates the removal condition. If the install condition always evaluates to True (even during uninstallation of the main product), the removal condition is never evaluated, and the chained .msi package is never uninstalled. Therefore, you may want to avoid specifying an install condition that will always evaluate to True. For information on condition syntax, see Conditional Statement Syntax in the Windows Installer Help Library. Install properties To pass one or more properties from the main installation to this chained .msi package during the installation, enter the properties and their corresponding values. For example, to install a specific feature of a chained package to a subfolder of the main installations INSTALLDIR location, you could enter the following string for this setting:
INSTALLDIR="[INSTALLDIR]Subfolder\" ADDLOCAL=Feature1

1920

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-111: Chained .msi Package Settings (cont.) Setting Removal condition Description Enter any uninstallation condition that you want to use for the chained .msi package. If the Install condition evaluates to False and the Removal condition evaluates to True, Windows Installer removes the chained packages product if it is present. The default condition is:
REMOVE="ALL"

For information on condition syntax, see Conditional Statement Syntax in the Windows Installer Help Library. Removal properties To pass one or more properties from the main installation to this chained .msi package during the uninstallation, enter the properties and their corresponding values. This setting is often left blank. Release flags You can assign one or more release flags to a chained .msi package that you want to include in only certain builds. For example, if you have a chained .msi package that should be included only in a special edition of your product that contains a special add-on that requires the chained .msi package, you can flag that chained package and include it only when it is needed. If you want to assign a release flag to this chained .msi package, enter it for this setting. The string that you enter can be any combination of letters or numbers. To have more than one flag on a chained package, use a comma to separate the flags. Streamed files This box indicates the files for the chained .msi package that are being streamed into the main installations package. Use the Add File and Add Folder buttons to add more files or entire folders to the list of streamed files. To specify an alternate extraction location, edit the entrys Run-time path value by selecting and then clicking it again. InstallShield highlights the entrys text, enabling you to edit it. The files are extracted to a temporary folder by default. To remove an entry in this box, select it and then click the Remove button. Delete streamed files after installation If you want the installation to delete the streamed files after installation, select this check box. If the streamed files should remain on the target system, clear this check box. It is generally most useful to let the files remain on the system only if you have extracted them to a non-temporary location, such as [LocalAppDataFolder]{PackageCode}\*.*, to cache an extracted package locally. This check box is selected by default for chained .msi packages that included one or more streamed files. This check box is disabled for chained .msi packages that do not include any streamed files.

InstallShield 2010 User Guide

ISP-1600-UG00

1921

Chapter 43: View Reference Media View

Patch Design View


Project: This view and its subviews appear in the following project types:

Basic MSI InstallScript MSI

Once you have added an upgrade item in the Upgrades view, you can use the Patch Design view to create a patch configuration for that upgrade so that you can deliver it as a patch. The patch can be applied to target systems that have an earlier version of the product. You can create multiple patch configurations in the Patch Design view. Each patch configuration contains the settings and data required to build a patch. Each patch configuration must contain at least one latest setup and one previous setup. With these minimal settings, you can create a patch.

Patch Configuration

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

To create a patch, you begin by right-clicking the Patch Design explorer in the Patch Design view and then clicking Add New Patch Configuration. A patch configuration consists of one latest setup and one or more previous setups. Before you specify the latest and previous setups, you can specify overall patch properties on the following tabs for your patch configuration:

Common Identification Digital Signature Sequence Advanced

Common Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click a patch configuration in the Patch Design view, InstallShield displays several tabs. The Common tab for a patch configuration exposes frequently used patch settings.

1922

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Patch Output Location


Specify where you want your patch file built or browse for an existing folder. InstallShield appends the following subdirectories to your output location:
\PatchConfigName\Patch

Note: InstallShield also adds a folder called Interim to your output directory. The Interim folder contains the following files after you build a patch:

.logcontains output from the patch creation process; this usually contains information that is useful for troubleshooting .pcppatch creation properties file; this contains all of the settings necessary to generate a patch package

Launcher Settings
In this area, you can configure the following launcher settings:
Table 43-112: Configurable Launcher Settings Setting Create Update.exe Description If you want to create an Update.exe update launcher for the current patch, select this check box. To learn when an Update.exe update launcher is required, see Patching Considerations. Include Windows Installer 2.0 Engine Select this check box to include the Windows Installer 2.0 engine with your patch package. To include only the Windows NT or Windows 9x engine, use the Advanced tab. Select this check box to include the Windows Installer 3.1 engine with your patch package. Select this check box to include the .NET Framework with your patch package.

Include Windows Installer 3.1 Engine Include .NET Framework

Patch Creation Cache


In this area, you can set the following:
Table 43-113: Patch Creation Cache Settings Setting Enable Description When you select this check box, InstallShield creates intermediate files that are used in subsequent builds to improve performance speed. These intermediate files are left indefinitely on your system. Do not select this check box if you have limited disk space.

InstallShield 2010 User Guide

ISP-1600-UG00

1923

Chapter 43: View Reference Media View

Optimize Patch for Large Files


Select this check box to create small bit-level patches for all application files larger than 4 MB in your installation project.

Allow Patch to be Uninstalled (Requires Windows Installer 3.0)


Select this check box if you would like the patch to be uninstallable without having to uninstall and reinstall the entire application and other patches. Note that uninstallation of patches works only under certain conditions. For example, versions of Windows Installer earlier than version 3.0 cannot remove just the patch from an application. For more information, see Removing Patches in the Windows Installer help.

Build Patch
Click this button to build your patch after you have configured all of the appropriate settings.

Note: You can also build your patch from the Patch Design explorer. Right-click the appropriate patch configuration, and then click Build Patch.

Identification Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click a patch configuration in the Patch Design view, InstallShield displays several tabs. The Identification tab exposes settings for display strings. The display strings are used to populate information about the patch in Add or Remove Programs. It is also used by the Windows Installer 3.0 (and later) APIs that interrogate and catalog patches applied to a target machine.

Tip: Every time that you change the latest setup for a patch configuration in the Patch Design view, 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. Table 43-114: Identification Tab Settings Setting Display name Support URL Description Specify the name of your patch. Specify the uniform resource locator (URL) that you would like your customers to visit for technical support. Specify a brief description of your patch. Specify the name of the applications manufacturer.

Description Manufacturer name

1924

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-114: Identification Tab Settings (cont.) Setting Target product name Classification Description Specify the name of the application or the target application suite. Specify the category of upgrade. Examples include Critical Update, Hotfix, and Service Pack.

Digital Signature Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click a patch configuration in the Patch Design view, InstallShield displays several tabs. The Digital Signature tab is where you specify settings if you want to digitally sign your patch.

Note: If you want to digitally sign the filessuch as your applications executable filesin your patch, you can specify which files should be signed through the Signing tab in the Releases view. Table 43-115: Digital Signature Tab Settings Setting Sign the patch package Sign update.exe URL Description Select this check box if you would like to digitally sign your patch package. Select this check box if you would like to digitally sign the Update.exe file. Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company. Specify the location of your digital certificate file (.spc or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file. Corresponding private key file If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. Password Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company.

Software publishing credentials file

InstallShield 2010 User Guide

ISP-1600-UG00

1925

Chapter 43: View Reference Media View

Sequence Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click a patch configuration in the Patch Design view, InstallShield displays several tabs. The Sequence tab is where you specify the order that Windows Installer version 3.0 and later should apply patches to an installed product, regardless of the order in which they are provided to the target machine. For versions of Windows Installer earlier than version 3.0, the patch sequence is ignored, and any patches are applied to the product in the order that they are provided to the target machine.

Use default patch sequencing


Select this check box if you want to use the default sequencing for the patches of your product. This default sequence accounts for obsolete patches, superseded patches, and patches that have already been applied to the product. If you clear this check box, you can add your own custom sequence. If you clear this check box but do not add a sequence, no sequencing information is built into your patch.

Advanced Tab

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click a patch configuration in the Patch Design view, InstallShield displays several tabs. The Advanced tab for a patch configuration exposes a comprehensive set of build settings that you can configure for a patch.

1926

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Patch Settings
In this area, you can configure the following settings for your patch:
Table 43-116: Patch Configuration Settings Property Patch Output Location Description Specify where you want your patch file built or browse for an existing folder. InstallShield appends the following subdirectories to your output location:
\PatchConfigName\Patch.

Note: InstallShield also adds a folder called Interim to your output directory. The Interim folder contains the following files after you build a patch: .logcontains output from the patch creation process; this usually contains information that is useful for troubleshooting .pcppatch creation properties file; this contains all of the settings necessary to generate a patch package

Generate Patch GUID

Specify whether you want a new GUID generated each time that you build your patch. If you select No, the GUID listed for the Patch GUID property is used. The default setting is Yes. The patch GUID is used to uniquely identify a patch package. InstallShield automatically generates a new GUID for this property every time you build the patch if the Generate Patch GUID property is set to Yes. Specify the minimum version of Windows Installer that is required by the patch. For example, to create a patch that targets the Windows Installer 2 engine, enter 200.

Patch GUID

Minimum Windows Installer Version

Note: If you specify an early version of Windows Installer, you will not be able to use any of the features that are supported by only the latest version of the Windows Installer engine.

Build Settings
In this area, you can configure the following build settings for your patch:
Table 43-117: Build Settings for a Patch Property Include Whole Files Description Specify whether to include whole files for every file included in the patch package.

Note: You can override this setting on a file-by-file basis in the Latest Setup settings.

InstallShield 2010 User Guide

ISP-1600-UG00

1927

Chapter 43: View Reference Media View

Table 43-117: Build Settings for a Patch (cont.) Property Validate at Build Description Specify whether you want to use the upgrading and patching validation every time you build a patch. Select Yes to leave all .msp file information in a temporary folder. This information can be useful when troubleshooting. If you do not want this information stored, select No. Select Yes if you want InstallShield to create intermediate files that are used in subsequent builds to improve performance speed. These intermediate files are left indefinitely on your system. Select No if you have limited disk space. The Patch Cache Folder is where you specify where the intermediate files should be created. Specify a directory where the temporary files from patch caching should be stored. These intermediate files are left indefinitely on your system. Specify whether to automatically generate entries for the MsiPatchOldAssemblyFile and MsiPatchOldAssemblyName tables, which allow a patch package that is running under Windows Installer 3.0 or later to patch an assembly in the global assembly cache (GAC) without making a run-time request for the original installation source. For more information, see Patching Assemblies in the Global Assembly Cache.

Leave Patch Components Decompressed

Enable Patch Creation Caching

Patch Cache Folder

Generate MsiPatchOldAssembly tables

Run-time Settings
In this area, you can configure the following run-time settings for your patch:
Table 43-118: Run-time Settings for a Patch Property Allow Product Codes to Differ Description Specify whether you want the patch creation executable to suppress build-time prompts if product codes differ between the original and latest installations. For a major upgrade, be sure to select . Specify whether you want the patch creation executable to suppress build-time prompts if product versions differ between the original and latest installations.

Allow Product Versions to Differ

List of Patch GUIDs to Replace To replace one or more earlier installed patches with the current patch, set this property to the patch GUIDs of those patches, and separate each with a comma. For example:
{C86838C9-DEDC-4451-B96F-94AFB9460F15},{C8633E5B-AC44-45d8-B487C68B3B1F60D6}

Setting this property is typically not required, even if you have several patch configurations in the Patch Design view. However, if your patch does not overwrite files added in an earlier patch, it may be necessary to set this property.

Note: This property affects only the installation portion of the patch. It does not revert files back to their original versions.

1928

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-118: Run-time Settings for a Patch (cont.) Property List of Target Product Codes Description Specify the product codes that you want to target with this patch, and separate each with a comma. If you set this property to an asterisk (*), it is replaced at build time by the product codes of the installations listed as previous images in this patch configuration. Specify whether you want to create an Update.exe update launcher for the current patch. To learn when an Update.exe update launcher is required, see Patching Considerations. Update Launcher Type Specify the type of update launcher that you want InstallShield to create at build time:

Create Update.exe

UnicodeA Unicode update launcher can correctly display double-byte characters in the update launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the double-byte-character language. Windows 9x does not support Unicode update launchers. ANSIAn ANSI update launcher displays double-byte characters in the update launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page.

For more information on update launchers, see Specifying the Update Launcher Type (Unicode or ANSI) for a Patch Package.

Project: Note that although the Update.exe bootstrapper for an InstallScript MSI project supports Unicode, the InstallScript engine, which manages the user interface for an InstallScript MSI patch package (.msp), does not support Unicode. Therefore, if you create a Unicode version of Update.exe for an InstallScript MSI patch, Unicode strings are displayed at run time in the user interface for the Update.exe bootstrapper; however, ANSI strings are displayed in the user interface for the .msp package. MSI Command Line Arguments Specify Windows Installer arguments to be written to Setup.ini.
[Startup] CmdLine=Your Value

The default value for this property is


REINSTALLMODE=omus REINSTALL=ALL

The REINSTALL property is a string that contains letters specifying the type of reinstallation to be performed. For more information, see REINSTALLMODE Property in the Windows Installer Library. Password Protect Launcher To password-protect your patch, select Yes, and then type a password for the Launcher Password setting. When you password-protect your patch, any end user who wants to apply your patch must enter a case-sensitive password to launch your update. This setting is applicable only to patches that use an Update.exe file.

InstallShield 2010 User Guide

ISP-1600-UG00

1929

Chapter 43: View Reference Media View

Table 43-118: Run-time Settings for a Patch (cont.) Property Launcher Password Description Type a password to protect your application. You must select Yes for the Password Protect Launcher setting to activate password protection. When you password-protect your patch, any end user who wants to apply your patch must enter a case-sensitive password to launch your update. This setting is applicable only to patches that use an Update.exe file. Minor Update to Target RTM Version (MSI 3.1 Required) If you want your minor-upgrade patch to essentially remove all of the patches up to the release to manufacturing (RTM) version of the product (or the most recent major upgrade of the product, if one has been installed) before applying the current minorupgrade patch, select Yes for this property. With this option, all patches (with or without sequencing data) are removed. You do not need to target additional baseline versions and thus increase the patch payload. All end users can successfully apply the patch without applying any intermediate patches. If you do not want your minor-upgrade patch to remove all of those earlier patches, select No. If you select this option, it may be necessary for your patch to contain the information needed to target each of the earlier minor upgrades that were created after the RTM (or the most recent major upgrade of the product, if one was created). For example, if you are creating a minor-upgrade patch for service pack 2 and you select No for this property, your patch needs to target the minor-upgrade patch for service pack 1. You could also optionally target other baselines (such as RTM); doing so would increase the patch payload. Note that if you do not target the RTM version, any end user who has the RTM version but not the service pack 1 minorupgrade patch would need to install service pack 1 before service pack 2. Versions of Windows Installer earlier than 3.1 ignore this setting. Optimized Install Mode (MSI 3.1 Required) If you want Windows Installer 3.1 to optimize the patching process so that it reduces the time that is required to apply the current patch, select Yes. If the patch only modifies a select list of tables, Windows Installer 3.1 ignores the actions that are associated with all other tables. For more information, including the list of tables, see Patch Optimization in the Windows Installer Help Library. If you select Yes for this property, Microsoft Corporation recommends that you test your patch extensively to ensure that it behaves as expected. If you do not want Windows Installer 3.1 to optimize the patching process for the current patch, select No. Windows Installer will run a complete repair of the application when the patch is applied to the target machine. Versions of Windows Installer earlier than 3.1 ignore this property. Windows Installer 3.0 optimizes patches if the patch only modifies the select list of tables. To avoid patch optimization by Windows Installer 3.0, you must use the DisableFlyWeightPatching policy. For more information, see DisableFlyWeightPatching in the Windows Installer Help Library. Versions of Windows Installer earlier than 3.0 run a complete repair of the installation when a patch is applied.

1930

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Windows Installer Engine


In this area, you can configure the following settings for the Windows Installer engine:
Table 43-119: Windows Installer Settings for a Patch Property Include Win9X Engine Description Specify whether the Windows Installer engine for Windows 9x should be included with your patch package. Specify whether the Windows Installer engine for Windows NT should be included with your patch package. Select the Windows Installer version to be installed by Update.exe. The Version 3.1 or 2.0 (best fit for system) option installs Windows Installer 3.1 on target systems that are running Windows 2000 SP3 or later; it installs Windows Installer 2.0 on other target systems. If you select the Version 3.1 (requires Windows 2000 SP3 or greater) option or the Version 3.0 (requires Windows 2000 SP3 or greater) option, and the target system does not support version 3.x but does have version 2.0 installed, your patch will run, since the differences between versions 2.0 and 3.x involve only the mechanics of patching. To prevent your patch from running on a system that does not have version 3.1 installed, set the Minimum Windows Installer Version property to 310. To prevent your patch from running on a system that does not have version 3.0 or later installed, set this property to 300. Note that these conditions are evaluated after Update.exe has had the opportunity to install version 3.1 or 3.0. Engine Location Select one of the following options:

Include WinNT Engine

Msi Engine Version\Schema

Download Engine From The WebIf the Windows Installer engine needs to be installed, it is downloaded at run time. Extract Engine From Update.exeThe build streams the Windows Installer engine into the Update.exe file, giving you a single file to distribute to your customers. At run time, the engine is extracted from the Update.exe file and installed if required. Copy From Source MediaThe build copies the Windows Installer engine into the same directory as the Update.exe file.

Windows Installer 2.0 engine URL for Win9X

Specify the uniform resource locator (URL) for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience. Specify the URL for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience.

Windows Installer engine URL for WinNT

InstallShield 2010 User Guide

ISP-1600-UG00

1931

Chapter 43: View Reference Media View

Table 43-119: Windows Installer Settings for a Patch (cont.) Property Windows Installer 3.1 engine URL Description Specify the URL for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience.

Note: Both the 3.1 and 3.0 engines are available for download from the default URL (http://www.installengine.com/Msiengine30). The appropriate versioneither 3.1 or 3.0is downloaded if needed, depending on what option is selected for the Msi Engine Version\Schema property.

Microsoft .NET Framework


In this area, you can configure the following settings for the Microsoft .NET Framework:
Table 43-120: Microsoft .NET Framework Settings for a patch Property Include in Build Description Specify whether to include the Microsoft .NET Framework in your patch. If you select Yes, the same version of the .NET Framework that was included in the latest release is included in this new patch. Select one of the following options:

Engine Location

Download Engine From The WebIf the .NET Framework needs to be installed, it is downloaded at run time. Extract Engine From Update.exeThe build streams the .NET Framework into the Update.exe file, giving you a single file to distribute to your customers. At run time, the engine is extracted from the Update.exe file and installed if required. Copy From Source MediaThe build copies the .NET Framework into the same directory as the Update.exe file.

Engine URL

Specify the URL for the location of the .NET Framework. This is the location that the Update.exe file uses at run time to download the .NET Framework. The default URL location is a live site maintained by Acresso for your convenience.

Latest Setup

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

The Latest Setup item for a patch configuration is where you specify settings for the latest version of your installation.

1932

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Latest Setup Path


The latest setup should be the latest version of your installation for which you want to create a patch. The default setting, <ISLatestRelease>, resolves to the last full release that you build. The release that you specify in this box should be an uncompressed release, ideally created with an administrative installation if the previous product versions were compressed.

Include Whole Files


Select the files that you want to include as whole files in your patch rather than have the build perform a bit-level difference of the files.

Note: To include all of your files as whole files, set the Include Whole Files property for the patch configuration to Yes.

Previous Setups

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Each patch configuration in the Patch Design view must contain at least one latest setup and one previous setup in order for you to create a patch. If your patch will target multiple earlier versions of your product, ensure that each target image has its own previous setup item. For example, if your company supports versions 1.0 and 1.1 of an application, you may want to create a patch that will upgrade both of these applications to version 2.0. To create a single patch to update both versions, you would add V1.0 and V1.1 as previous setups to the latest setup. Your latest setup would contain V2.0. When you click a previous setup item in the Patch Design view, the following tabs are available:

Common Advanced

InstallShield 2010 User Guide

ISP-1600-UG00

1933

Chapter 43: View Reference Media View

Common Tab
When you click a previous setup item in the Patch Design view, InstallShield displays different tabs. The Common tab exposes the basic previous setup configuration settings.
Table 43-121: Common Settings for Previous Setup Configuration Option Previous Setup Description Specify the installation (.msi file or Setup.exe file) that needs to be patched to update it to the latest version of your setup. Because the patch-creation process requires an uncompressed release, you will be prompted for a location to decompress the previous version, if necessary.

Caution: Keep the following in mind when specifying paths. You cannot decompress setups that span multiple disks from a local or network drive. You will need to find an alternate method of decompressing the setup. Ignore Missing Files If any files that are included in two separate versions cannot be found in a more recent version, then the files will be excluded from the patch package unless they have changed in the later version. The advantage of ignoring the files is that only the modified files need to be added to the package. A complete setup image is not required if you choose to ignore missing source files.

Advanced Tab
When you click a previous setup item in the Patch Design view, InstallShield displays different tabs. The Advanced tab contains the settings that are accessible on the Common tab, in addition to the following transform filter settings:
Table 43-122: Advanced Settings for Previous Setup Configuration Option Version Relationship Description Select the condition that describes the required relationship between the latest version of your product and the previous version whose settings you are specifying for the patch. InstallShield will create a transform between the selected previous setup and the latest setup only if the selected condition is met.

1934

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Media View

Table 43-122: Advanced Settings for Previous Setup Configuration (cont.) Option Version to Check Description Select what part or parts of the three-part version number should be used to determine whether a transform between the selected previous setup and the latest setup should be created, based on the option selected for the Version Relationship. Available options are:

Check Major, Minor, and Upgrade VersionsIf InstallShield should check all three parts of the previous setups version number with all three parts of the latest setups version number, select this option. Check Major and Minor VersionsIf InstallShield should check the first two parts of the previous setups version number with first two parts of the latest setups version number, select this option. The third part of the version number is ignored. Check Major Version OnlyIf InstallShield should check the first part of the previous setups version number with first part of the latest setups version number, select this option. The second and third parts of the version number are ignored. Do Not Check VersionsIf InstallShield should create the transform regardless of the relationship between the previous setup version number and the latest setup version number, select this option.

For example, if you select Check Major, Minor, and Upgrade Versions for this property and you select Previous Setup Version <= Latest Setup Version for the Version Relationship property, InstallShield will create a transform for the differences between the previous setup and the latest setup if the previous setup version number is 1.2.3 and the latest setup version number is 1.2.4. However, InstallShield will not create the transform if the previous setup version number is 1.2.0 and the latest setup version number is 1.1.0. For a version number of 1.2.3, 1 represents the major version number, 2 represents the minor version number, and 3 represents the upgrade version number. Match Product Code To create a transform only if the previous setup and the latest setup have the same product code, select Yes. If you select No, InstallShield will create a transform between the previous setup and the latest setup, regardless of the product code. To create a transform only if the previous setup and the latest setup have the same upgrade code, select Yes. If you select No, InstallShield will create a transform between the previous setup and the latest setup, regardless of the upgrade code. To create a transform only if the previous setup and the latest setup have the same language, select Yes. If you select No, InstallShield will create a transform between the previous setup and the latest setup, regardless of the language.

Match Upgrade Code

Match Language

Additional External Files

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

Patching an additional external file provides the ability to create a binary file patch against versions of an application file that have not been shipped as part of the previous installation.

InstallShield 2010 User Guide

ISP-1600-UG00

1935

Chapter 43: View Reference Additional Tools View

For example, if one of your application files was potentially updated by another installation, you should reference that file version so that the file-level patch can be applied successfully at run time.

External File

Project: This information applies to the following project types:

Basic MSI InstallScript MSI

When you click an external file that you added to Adding an External File in the Patch Design view, InstallShield displays two properties that need to be configured for that file. For the first box, browse for the file key with which you want to associate the external file, or type the File table key for that file. For the second box, browse for the external file to associate with the File key that you specified in the first box.

Additional Tools View


Project: The Additional Tools view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database QuickPatch Transform

The additional tools provide added functionality for your project. Not all of the items in this view apply to every project type. Click the following links to see the project types for which the items are available.

Dependency Scanners

Project: The Dependency Scanners view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

1936

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

The Dependency Scanners view includes three different scanning tools that add dependency files to your setup. These scanners include a Visual Basic project scanner, a static scanner that scans files already included in your project and adds their dependencies, and a dynamic scanner that scans a running application for any dependencies.

MSI Debugger

Project: The MSI Debugger view is available in the following project types:

Basic MSI MSI Database Transform

Debug your setup by setting breakpoints at any action or dialog in the User Interface sequence and watching and changing the Windows Installer properties at each step.

Direct Editor

Project: The Direct Editor is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database QuickPatch Transform

The Direct Editor is a view in InstallShield that lets you review all of the tables in your project file (.ism) or database file (.msi, .msm, or .mst). In some project types, this view also offers functionality for advanced users who are very familiar with the Windows Installer database format.

Dependency Scanners
Project: The Dependency Scanners view is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

A file often relies on functions in other files to perform a task. However, you may not be aware of all these other filesknown as dependencieswhen you include your applications files in your setup project.
InstallShield 2010 User Guide ISP-1600-UG00 1937

Chapter 43: View Reference Additional Tools View

To help you identify dependencies, InstallShield offers three dependency scanners that automatically add these files to your setup.
Table 43-123: Dependency Scanners Scanning Option Perform Static Scanning Description The Static Scanning Wizard looks at many of the files you have in your setup and checks for any dependencies they may require. The Dynamic Scanning Wizard monitors your system while an executable file is running. It then adds to your setup any .dll or .ocx files that are required by the application. The Visual Basic Wizard scans your Visual Basic project for all dependencies and adds them to your setup project.

Perform Dynamic Scanning

Import Visual Basic Project

Any files that are added to a Windows Installer based setup through one of these scanners are added in accordance with Setup Best Practices. To include all files needed by a .NET solution, open your project from within Microsoft Visual Studio and drag project outputs from your .NET project to the InstallShield project.

MSI Debugger
Project: The MSI Debugger view is available in the following project types:

Basic MSI MSI Database Transform

When you debug a release in the MSI Debugger, you can view and set Windows Installer properties as you step through the packages User Interface and Execute sequences.

Task

Follow the steps below to begin going through a setup in the MSI Debugger: 1. 2.

Build your release. However, there is one important restriction when you intend on debugging the release: You cannot debug a package that is compressed inside Setup.exe. Go to the MSI Debugger view. The debugger lists every standard action and custom action in the User Interface and Execute sequences as well as every dialog in your project. You can also click the Debug button on the toolbar or choose Debug from the Build menu to launch the MSI Debugger. Set a breakpoint on an action or dialog. Start the debugger.

3. 4.

The MSI Debugger runs through each action and dialog until it reaches your breakpoint, at which point it halts execution. Now, you can view and set properties in the Watch window and the Variable window. Finally, you can step through each of the remaining actions, or you can stop the debugger.
1938 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Note: The MSI Debugger supports deferred custom actions that delay the execution of a system change to the time when the installation script is executed. Do not confuse the MSI Debugger with the InstallScript Debugger, since they have completely separate purposes. You cannot debug a setup package with the InstallScript Debugger, and you cannot debug an InstallScript custom action with the MSI Debugger.

Tip: When InstallShield steps into one of the following types of custom actions (You can step into a custom action by pressing the F11 key.), it will give you the option to launch a registered debugger installed on a client machine. A dialog will appear allowing you to choose one of two options. Select Yes to launch a registered debugger. Select No to step over to the next action. The supported custom actions are as follows:

MSI DLL Standard DLL

Direct Editor
Project: The Direct Editor is available in the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database MSM Database QuickPatch Transform

Note that the following information includes additional project-specific details.

The Direct Editor is a view in InstallShield that lets you review all of the tables in your project file (.ism) or database file (.msi, .msm, or .mst). In some project types, this view also offers functionality for advanced users who are very familiar with the Windows Installer database format. For Windows Installerbased projects, the Direct Editor can run in two different modes:

Project edit modeThis mode lets you edit tables in the project file. The changes that are made in the Direct Editor are incorporated into the Windows Installer package that InstallShield creates at build time.

Any changes that you make in the other views within InstallShield are reflected in the Direct Editor; in addition, any changes that you make in the Direct Editor are also reflected in the other corresponding views (if available). For example, if you use the Features view to add a new feature to your project, InstallShield automatically adds that feature to the Feature table in the Direct Editor. If you use the Direct Editor view to add the feature, InstallShield automatically updates the Features view accordingly.
InstallShield 2010 User Guide ISP-1600-UG00 1939

Chapter 43: View Reference Additional Tools View

When you are working in any of the following Windows Installerbased project types, you are working in project edit mode: Basic MSI, InstallScript MSI, Merge Module, and QuickPatch.

Direct edit modeThis mode lets you edit tables in the Windows Installer database (.msi, .msm, or .mst file). When you save the changes that you have made in the Direct Editor, InstallShield updates the Windows Installer database.

Many of the other standard InstallShield views are not available in direct edit mode, since they require build-time functionality that is not available when you are directly editing the Windows Installer database. When you are working in any of the following Windows Installerbased project types, you are working in direct edit mode: MSI Database, MSM Database, and Transform.

Using the Direct Editor in Any Project Type


The Direct Editor has a Tables explorer that lists each table in your project or database. When you select a table in this explorer, the right pane shows the following elements:

A row of buttons and other controls A spreadsheetlike table

Each row in a table represents a record in your project or database. The parenthetical note in each column heading indicates the type and size of data that you enter in the column. For example, S255 indicates a string with up to 255 characters; I2 indicates a 2-byte integer. The following table describes all of the buttons and other controls that are displayed when you select a table in the Direct Editor.
Table 43-124: Controls in the Direct Editor View Name of Control New Record Icon Description Displays the Add Record to Table dialog box, which lets you adds a new row to the selected table. Displays the Edit Record in Table dialog box, which lets you edit the data in the selected row. Deletes the selected row or rows.

Edit Selected Record

Delete Selected Records Cut Selected Records

Removes the currently selected rows and places them on the Clipboard. Copies the currently selected rows to the Clipboard.

Copy Selected Records Paste Records

Inserts the rows that are saved to the Clipboard.

Find String

Displays the Find dialog box, which lets you search for instances of a string. This dialog box lets you specify criteria such as whether you want to search in the selected table, or all tables.

1940

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Table 43-124: Controls in the Direct Editor View (cont.) Name of Control Find Next Icon Description Searches for the next occurrence of the specified string.

Find and Replace

Displays the Replace dialog box, which lets you search for instances of a string and replace them with a new string. This dialog box lets you specify criteria such as whether you want to search in the selected table, or all tables. Dynamically filters the records that are displayed in the Direct Editor view according to the string that you specify in this search box. As you type a string in this box, InstallShield hides all of the rows that do not contain it. Displays the help for the Direct Editor view.

Type a string to filter by

Direct Editor Help

Using the Direct Editor with Project Edit Mode in Windows InstallerBased Projects
In Basic MSI, InstallScript MSI, Merge Module, and QuickPatch projects, advanced users can use the Direct Editor to perform tasks such as the following:

View all of the tables in the project file (.ism). Add and remove records from tables. Cut, copy, and paste records or fields. Edit individual fields in the tables. Add custom tables. Filter the table records that are shown to hide ones that do not contain a specific string. Search one table or all tables for a specific string and replace it if necessary. Resize and reorder the columns in a table.

Tip: If you press F1 while a standard Windows Installer table is selected, the Windows Installer Help Library opens to provide information about that specific table.

Note the following details when using the Direct Editor with project edit mode in Windows Installer based projects:

The File table displays only static data. InstallShield may add additional information, such as dynamically linked files, to the File table in the Windows Installer database that it creates at build time. Unlike the corresponding tables in the Windows Installer database, tables such as the Binary, Icon, and Patch tables in the .ism file do not store binary data. Rather, they store links to buildsource paths.

InstallShield 2010 User Guide

ISP-1600-UG00

1941

Chapter 43: View Reference Additional Tools View

Column attributes for both standard tables and InstallShield tables cannot be altered while in project edit mode. They can, however, be edited for custom tables. Note that column attributes can be edited in standard, InstallShield, and custom tables in direct edit mode. You cannot use localizable properties in the Directory table.

Using the Direct Editor with Direct Edit Mode in Windows InstallerBased Projects
In MSI Database, MSM Database, and Transform projects, you can use the Direct Editor to essentially perform all of the tasks that are available in this view with direct edit mode. However, instead of working with tables in the .ism file, you are working directly with the Windows Installer database (.msi, .msm, or .mst).

Using the Direct Editor in InstallScript and InstallScript Object Projects


The Direct Editor in InstallScript and InstallScript Object projects lets you see all of the tables in your .ism file; however, it is recommended that you use the other views in InstallShield to modify these types of projects. Note that although InstallScript and InstallScript Object projects use many of the same tables that are available in Windows Installerbased projects, many of the common tables have different meanings. In addition, InstallShield ignores custom tables in InstallScript and InstallScript Object projects; custom tables are not available at run time.

InstallShield Table Reference


The following table lists some InstallShield tables that add specific functionality to your application. Click a link for more information about a specific table.
Table 43-125: InstallShield Table Names and Descriptions Table Name ISAlias Project Type Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript MSI, Merge Module Description This table contains alias information used when an InstallShield Professional project is converted to a Windows Installerbased project or an InstallScript project in the latest version of InstallShield. This table contains information about COM+ catalog attributes. Each entry has a foreign key to a ISComCatalogObject table entry to which the attribute belongs. This table contains information about COM+ catalog collections. A COM+ catalog collection is a folder of a same type of COM+ catalog objects. For example, the COM+ applications item, the Components item, and the Legacy Components item in the Component Services view are the COM+ catalog collections. Each entry has a foreign key to a ISComCatalogObject table entry to which the collection belongs.

ISComCatalogAttribute

ISComCatalogCollection

Basic MSI, InstallScript MSI, Merge Module

1942

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Table 43-125: InstallShield Table Names and Descriptions (cont.) Table Name ISComCatalogCollectionObject Project Type Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Description This table contains information about COM+ catalog collections where COM+ catalog objects belong.

ISComCatalogObject

This table contains information about COM+ catalog objects. A COM+ catalog object is an item that is contained within a COM+ catalog collection. Each entry has the display name. This table contains information about a COM+ application. A COM+ application is a COM+ catalog object with extra information. This table has application specific information and a foreign key to a ISComCatalogObject table entry which has the basic information. This table contains information about the behavior of each of the custom actions that are included in the installation. This table contains information about the file being wrapped for trialware protection.

ISComPlusApplication

Basic MSI, InstallScript MSI, Merge Module

ISCustomActionReference

Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI

ISDRMFile

ISDRMFileAttribute

This table contains information about a trialware license.

ISDRMLicense

This table contains information about a trialware license.

ISProductConfigurationInstance

This table provides support for installing multiple instances of a product in the same context on the same machine. If you have selected ISSelfReg as the self-registration method for COM servers, and if your project contains any files (or dynamic links) marked as self-registered, InstallShield adds information about those files to the ISSelfReg table of your .msi database.

ISSelfReg

Basic MSI, InstallScript MSI, Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1943

Chapter 43: View Reference Additional Tools View

ISAlias Table

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object

If you upgrade a project that was created with InstallShield Professional to InstallShield 2010, InstallShield might add data to the ISAlias table. In Windows Installer, identifiers cannot contain spaces and must contain only specified characters. Because of this, some of your component names, feature names, or script-defined folder names that you used in InstallShield Professional might not be valid in a project that you upgraded to a Windows Installerbased project. To address this issue, InstallShield uses aliasing to match the old name with a new identifier. (InstallShield does not perform a lexicon change for these names because they might be used as strings within your script.)

Note: If you upgrade to an InstallScript project, the only invalid characters in feature names or script-defined folder names are the following: \/:*?"<>| In component names, the preceding characters and the single quotation mark (') are invalid.

The ISAlias table contains the following information.


Table 43-126: ISAlias Table Information Column Name Alias Identifier Table Information Name string used in InstallShield Professional. String that is used by InstallShield to reference the alias. Name of the table that uses the alias (for example, Feature). This table is available in the Direct Editor.

ISCOMCatalogAttribute Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The ISCOMCatalogAttribute table contains the information about COM+ catalog attributes. Each entry has a foreign key to a ISComCatalogObject table entry to which the attribute belongs.
1944 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Columns
ISCatalogObject_(primary key) A foreign key into the ISCatalogObject table ItemName (primary key) The named attribute for a catalog object ItemValue A value associated with the attribute defined in ItemName

ISCOMCatalogCollection Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The ISCOMCatalogCollection table contains information about COM+ catalog collections. A COM+ catalog collection is a folder of a same type of COM+ catalog objects. For example, COM+ application, Component and Legacy Component nodes in the Component Services view are the COM+ catalog collections. Each entry has a foreign key to a ISComCatalogObject table entry to which the collection belongs.

Columns
ISCatalogCollection (primary key) A unique key for the ISCatalogCollection table. ISCatalogObject_ A foreign key into the ISCatalogObject table. This is the catalog object that a catalog collection belongs to. Name A catalog collection name.

ISCOMCatalogCollectionObject Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

InstallShield 2010 User Guide

ISP-1600-UG00

1945

Chapter 43: View Reference Additional Tools View

The ISCOMCatalogCollectionObject table contains information about COM+ catalog collections where COM+ catalog objects belong.

Columns
ISCatalogCollection_(primary key) A unique key for the ISCatalogCollection table ISCatalogObject_(primary key) A foreign key into the ISCatalogObject table; This is the catalog object that a catalog collection contains.

ISCOMCatalogObject Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The ISCOMCatalogObject table contains information about COM+ catalog objects. A COM+ catalog object is an item that is contained within a COM+ catalog collection. Each entry has the display name.

Columns
ISCatalogObject (primary key) A unique key for the ISCatalogObject table DisplayName The display name of a catalog object

ISCOMPlusApplication Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The ISCOMPlusApplication table contains information about a COM+ application. A COM+ application is a COM+ catalog object with extra information. This table has application specific information and a foreign key to an ISComCatalogObject table entry that has the basic information.

1946

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Columns
ISCatalogObject_(primary key) A foreign key into the ISComCatalogObject table. This is the root level application object. All other data associated with this application can be derived through the ISComCatalogObject table. ComputerName If the ComponentService object was loaded from a remote machine, store the computer name here. This can be NULL for the local computer. Component_ A foreign key to the component table.

ISCustomActionReference Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

The ISCustomActionReference table contains information about the intended behavior of each custom action that is included in the project.
Table 43-127: ISCustomActionReference Table Information Column Action_ Type Identifier Key Yes Nullable No Description Identifier that references an entry in the CustomAction table. Text that describes the behavior of the custom action. When InstallShield builds a release of a Basic MSI, InstallScript MSI, or merge module project, it populates this column with the text in the file that is referenced in the ISCAReferenceFilePath column. If you are working on a project in Direct Edit mode, InstallShield streams the contents of the file into this column as soon as you select the help file in the Custom Actions and Sequences view (or the Custom Actions view). FileType ISCAReference FilePath Text Text No No No No The file type of the help file. The full path, including the file name, for the file that describes the behavior of the custom action. This column is included in the InstallShield project file (.ism), but not in the .msi file.

Description

Text

No

No

InstallShield 2010 User Guide

ISP-1600-UG00

1947

Chapter 43: View Reference Additional Tools View

ISDRMFile Table

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The ISDRMFile table contains information about the file being wrapped for trialware protection. For more information, see Trialware Technology.
Table 43-128: ISDRMFile Table Information Column ISDRMFile File_ ISDRMLicense _ Shell Type Identifier Identifier Identifier Key Yes No No Nullable No No No Description Primary table key. Foreign key into the File table. Foreign key into the ISDRMLicense table.

String

No

No

Type of trialware.

ISDRMFileAttribute Table

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The ISDRMFileAttribute table contains information about a trialware license.


Table 43-129: ISDRMFileAttribute Table Information Column ISDRMFile_ Type Identifier Key Yes Nullable No Description Primary foreign key into the ISDRMFile table. Text that specifies the property name.

Property

String

No

No

1948

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

Table 43-129: ISDRMFileAttribute Table Information (cont.) Column Value Type String Key No Nullable Yes Description Text that specifies the value of the property.

ISDRMLicense Table

Project: This information applies to the following project types:

Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module

The ISDRMLicense table contains information about a trialware license.


Table 43-130: ISDRMLicense Table Information Column ISDRMLicense Type Identifier Key Yes Nullable No Description Primary table key that identifies the internal name of the trialware license. Text that you may specify to give the license a more meaningful name than the name in the ISDRMLicense column. Text that specifies the product version that is associated with this license. Bit 0x1 is the version-independent or freeupgrade field that specifies that this license is used independently of the ProjectVersion. The build uses this bit to know whether to warn that a new license is required. Location that stores the license number of the trialware license. Location that stores the request code of the trialware license. Location that stores the response code of the trialware license.

Description

String

No

No

ProjectVersion

String

No

No

Attributes

Number

No

Yes

LicenseNumber

String

No

No

RequestCode

String

No

No

ResponseCode

String

No

No

InstallShield 2010 User Guide

ISP-1600-UG00

1949

Chapter 43: View Reference Additional Tools View

ISProductConfigurationInstance Table

Project: This information applies to the following project types:

Basic MSI

The ISProductConfigurationInstance table provides support for installing multiple instances of a product in the same context on the same machine. This table defines each of the property values for each instance that an installation supports. For more information, see Setting Properties for an Instance.

Caution: Creating an installation that lets end users install multiple instances of a product on the same machine and in the same context requires sophisticated authoring and serious commitment on the part of the installation developer. This functionality is recommended for only advanced installation developers. Table 43-131: ISProductConfigurationInstance Table Information Column ISProductConfi guration_ InstanceId Type Text Key Yes Nullable No Comments Identifies the product configuration to which this instance applies. Identifies the instance number of this instance. This value is stored in the property InstanceId. Identifies the property to create for this instance. Specifies the value for this property for this instance.

Integer

Yes

No

Property

Identifier

Yes

No

Value

Text

Yes

No

ISSelfReg Table

Project: This information applies to the following project types:

Basic MSI InstallScript MSI Merge Module

1950

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference Additional Tools View

If you have selected ISSelfReg as the self-registration method for COM servers, and if your project contains any files (or dynamic links) marked as self-registered, InstallShield adds information about those files to the ISSelfReg table of your .msi database.
Table 43-132: ISSelfReg Table Information Column Name FileKey Description Foreign key into the File table, identifying the file (.dll, .ocx, .exe, .tlb, .olb) to be self-registered. Reserved for future use. A nonnegative number identifying the order in which self-registration will occur. Any files with an Order value of 1 will be registered first, followed by files with an Order value of 2, and so forth. Finally, all files with an Order value of 0 will be registered. For self-registering .exe files, stores a command line to be passed to the executable when it is self-registered. By default the field is empty, and the InstallShield run-time engine registers the .exe file with the / regserver argument and unregisters it with the /unregserver argument. To specify different arguments to pass during registration and unregistration, separate the arguments with a vertical bar (|), as in / hello|/goodbye.

Cost Order

CmdLine

InstallShield Columns in Standard Windows Installer Tables


InstallShield extends some standard Windows Installer tables for increased functionality. Following is a listing of the tables affected, columns added, and descriptions of the data to be placed in the new fields.
Table 43-133: Additions to Standard MSI Tables Table Name AdminExecuteSequence AdminUISequence AdvtExecuteSequence AdvtUISequence Binary Component Column Name ISComments ISComments ISComments ISComments ISBuildSourcePath ISAttributes Description Authors comments on this Sequence. Authors comments on this Sequence. Authors comments on this Sequence. Authors comments on this Sequence. Full path to the ICO or EXE file. This is used to store InstallShield custom properties of a component. Currently the only one is ExtractAtBuild. User Comments. A 32-bit word that specifies non-MSI window styles to be applied to this control.

Component Control

ISComments ISWindowStyle

InstallShield 2010 User Guide

ISP-1600-UG00

1951

Chapter 43: View Reference Additional Tools View

Table 43-133: Additions to Standard MSI Tables (cont.) Table Name Control Column Name ISControlId Description A number used to represent the control ID of the Control. Used in Dialog export. Authors comments for this custom action. Authors comments for this dialog. A 32-bit word that specifies non-MSI window styles to be applied to this control. This is only used in Script Based Setups. A Number that specifies the Dialog ID to be used in Dialog Export. Description of the folder. Release Flags that specify whether this feature will be built in a particular release. Comments. Full path, the category is of Text instead of Path because of potential use of path variables. This field contains the following attributes:

CustomAction Dialog Dialog

ISComments ISComments ISWindowStyle

Dialog

ISResourceId

Directory Feature

ISDescription ISReleaseFlags

Feature File

ISComments ISBuildSourcePath

File

ISAttributes

OverrideSystemAttributes (0x04) OverrideSystemSize (0x08) OverrideSystemVersion (0x10) OverrideSystemLanguage (0x20)

The UseSystemSettings(0x1) attribute is no longer used. Icon Icon InstallExecuteSequence InstallUISequence Patch ProgId ISBuildSourcePath ISIconIndex ISComments ISComments ISBuildSourcePath ISAttributes Full path to the ICO or EXE file. Optional icon index to be extracted. Authors comments on this Sequence. Authors comments on this Sequence. Full path to patch header. This is used to store InstallShield custom properties of a component, like ExtractIcon, etc. User Comments. This is used to store InstallShield custom properties of a registry item. Currently the only one is Automatic.

Property Registry

ISComments ISAttributes

1952

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Table 43-133: Additions to Standard MSI Tables (cont.) Table Name Shortcut Column Name ISComments Description Authors comments on this shortcut.

QuickPatch Projects
A QuickPatch project is a specific type of Windows Installerbased project recommended for installation authors who want to ship small, single upgrades to their end users. Each QuickPatch project has its own set of views.

Patch Settings View


The Patch Settings view contains links to several views:

General Information ViewEnter information about your upgrade and the original installation.

Specify which releases should be patched by the current project, and select which custom actions should be included.

Files ViewAdd files to your patch, and specify file-patching options. Registry ViewSpecify which registry values should be changed or removed. Path Variables ViewMake your patch easily portable between development systems with variable-

based file linking.

Additional Tools View


The Additional Tools view contains a link to the Direct Editor. Use the Direct Editor to edit the database tables directly.

Patch Settings View


The Patch Settings view is available when you open or create a QuickPatch project. Use this view to configure your QuickPatch.

General Information
Enter information about your upgrade and the original installation. Specify which releases should be patched by the current project, and select which custom actions should be included.

Files
Add files to your patch, and specify file-patching options.

Registry
Specify which registry values should be changed or removed.

Path Variables
Make your patch easily portable between development systems with variable-based file linking.
InstallShield 2010 User Guide ISP-1600-UG00 1953

Chapter 43: View Reference QuickPatch Projects

General Information View


The General Information view contains basic information about your QuickPatch project. You can view and configure product properties, build settings, patch history, and custom actions in this view.

Product Properties
When you click Product Properties in the General Information view, InstallShield displays the following:
Table 43-134: Settings for Product Properties Setting Original Setup Path Description This area shows the product name and the path to the original installation image. The path box is read-only. The Original setup version box shows the product version of the original installation. This box is read-only. In the QuickPatch Version box, you can change the product version for your QuickPatch project. Entry in this box is optional. If FLEXnet Connect was enabled in your original installation and if you designate custom version numbers that FLEXnet Connect should use to identify your product (as opposed to using the standard version scheme that Windows Installer uses), type the new custom version number for your QuickPatch in this box.

Product Version

FLEXnet Connect Integration

Build Settings
When you click Build Settings in the General Information view, InstallShield displays the following tabs:

Common Identification Digital Signature Advanced

Common Tab
When you click Build Settings in the General Information view, InstallShield displays several tabs. The Common tab exposes frequently used build settings for a QuickPatch:

Build Location
Specify where you want your patch file built or browse for an existing folder.

1954

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Launcher Settings
In this area, you can configure the following launcher settings:
Table 43-135: Configurable Launcher Settings Setting Create Update.exe Description If you want to create an Update.exe update launcher for the current QuickPatch package, select this check box. To learn when an Update.exe update launcher is required, see Patching Considerations. Include Windows Installer 2.0 engine Select this check box to include the Windows Installer 2.0 engine with your patch package. To include only the Windows NT or Windows 9x engine, use the Advanced tab. Select this check box to include the Windows Installer 3.1 engine with your patch package. Select this check box to include the .NET Framework with your patch package.

Include Windows Installer 3.1 engine Include .NET framework

Patch Uninstallation
Select the Allow Patch to be Uninstalled (Requires Windows Installer 3.0) check box if you would like the QuickPatch to be uninstallable without having to uninstall and reinstall the entire application and other QuickPatch packages. Note that uninstallation of QuickPatch packages works only under certain conditions. For example, versions of Windows Installer earlier than version 3.0 cannot remove just the QuickPatch from an application. For more information, see Removing Patches in the Windows Installer help.

Identification Tab
When you click Build Settings in the General Information view of a QuickPatch project, InstallShield displays several tabs. The Identification tab exposes settings for display strings. The display strings are used to populate information about the patch in Add or Remove Programs. It is also used by the Windows Installer 3.0 (and later) APIs that interrogate and catalog patches applied to a target machine.

Note: Patch metadata is stored directly in the patch (.msp) file and not in any of the .msi packages. The .msp file contents are not localizable. Therefore, string entries are not available for any of the metadata settings below. Table 43-136: Identification Tab Settings Setting Display name Support URL Description Specify the name of your patch. Specify the uniform resource locator (URL) that you would like your customers to visit for technical support. Specify a brief description of your patch.

Description

InstallShield 2010 User Guide

ISP-1600-UG00

1955

Chapter 43: View Reference QuickPatch Projects

Table 43-136: Identification Tab Settings (cont.) Setting Manufacturer name Target product name Classification Description Specify the name of the applications manufacturer. Specify the name of the application or the target application suite. Specify the category of upgrade. Examples include Critical Update, Hotfix, and Service Pack.

Digital Signature Tab


When you click Build Settings in the General Information view of a QuickPatch project, InstallShield displays several tabs. The Digital Signature tab is where you specify settings if you want to digitally sign your patch.

Note: With QuickPatch projects, you can digitally sign the patch package and the Update.exe file. If you want to digitally sign individual filessuch as your applications executable filesin your QuickPatch package, you must manually sign them and then add them to your project. You can use Signcode.exe or SignTool.exe to manually sign your files. For more information, see Digital Signing and Security. Table 43-137: Settings in the Digital Signature Tab Setting Sign the patch package Sign update.exe URL Description Select this check box if you would like to digitally sign your patch package. Select this check box if you would like to digitally sign the Update.exe file. Type a fully qualified URLfor example, http://www.mydomain.com. This URL is used in your digital certificate to link to a location you would like end users to visit in order to learn more about your product, organization, or company. Specify the location of your digital certificate file (.spc or .pfx) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If you specify an .spc file, you must also specify a .pvk file. Corresponding private key file If you are using an .spc file, you must also specify the location of your private key file (.pvk) provided by a certification authority. You can type the path to the file or use the Browse button to navigate to the file location. If your certificate requires a password, type the password in this box. InstallShield encrypts the password and stores it in your project (.ism) file.

Software publishing credentials file

Password

Advanced Tab
When you click Build Settings in the General Information view, InstallShield displays several tabs. The Advanced tab exposes a comprehensive set of build settings that you can configure for a QuickPatch.

1956

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Build Location
In the Build Location area, you can configure the following settings.
Table 43-138: Build Location Settings Property Build Location Create Update.exe Description Specify where you want your patch file built or browse for an existing folder. Specify whether you want to create an Update.exe update launcher for the current QuickPatch package. To learn when an Update.exe update launcher is required, see Patching Considerations. Update Launcher Type Specify the type of update launcher that you want InstallShield to create at build time:

UnicodeA Unicode update launcher can correctly display double-byte characters in the update launcher dialogs, such as the PreparingToInstall dialog, regardless of whether the target system is running the appropriate code page for the doublebyte-character language. Windows 9x does not support Unicode update launchers. ANSIAn ANSI update launcher displays double-byte characters in the update launcher dialogs if the target system is running the appropriate code page. However, it displays garbled characters instead of double-byte characters in those dialogs if the target system is not running the appropriate code page.

For more information on update launchers, see Specifying the Update Launcher Type (Unicode or ANSI) for a QuickPatch Package.

Project: Note that although the Update.exe bootstrapper for an InstallScript MSI project supports Unicode, the InstallScript engine, which manages the user interface for an InstallScript MSI QuickPatch package (.msp), does not support Unicode. Therefore, if you create a Unicode version of Update.exe for an InstallScript MSI QuickPatch package, Unicode strings are displayed at run time in the user interface for the Update.exe bootstrapper; however, ANSI strings are displayed in the user interface for the .msp package. List of Patch GUIDs to replace To replace one or more earlier installed patches with the current QuickPatch, set this property to the patch GUIDs of those patches, and separate each with a comma. For example:
{C86838C9-DEDC-4451-B96F-94AFB9460F15},{C8633E5B-AC44-45d8-B487C68B3B1F60D6}

Setting this property is typically not required, even if you have several QuickPatch projects in the History. However, if your QuickPatch project does not overwrite files added in an earlier QuickPatch project, it may be necessary to set this property. If you do not know the GUID of a patch that you want to replace, click this property and then click the ellipsis button (...). Select the patch (.msp or .exe file), and InstallShield will add the corresponding GUID to this property.

InstallShield 2010 User Guide

ISP-1600-UG00

1957

Chapter 43: View Reference QuickPatch Projects

Table 43-138: Build Location Settings (cont.) Property Create new UpgradedImage folder Description This setting enables you to build your QuickPatch package with an existing UpgradedImage folder. To use this option, you must have built this package at least once (so that an UpgradedImage folder exists). Setting this option to No builds the package from the existing UpgradedImage folder. This lets you tweak the .msi package in the UpgradedImage folder and use that .msi data in a QuickPatch project. Setting this option to Yes (the default setting) regenerates the .msi file in the UpgradedImage folder every time that the package is built. Specify whether to automatically generate entries for the MsiPatchOldAssemblyFile and MsiPatchOldAssemblyName tables, which allow a patch package that is running under Windows Installer 3.0 and later to patch an assembly in the global assembly cache (GAC) without making a run-time request for the original installation source. For more information, see Patching Assemblies in the Global Assembly Cache. Specify whether you want to use patch sequencing for your QuickPatch. A patch sequence accounts for obsolete patches, superseded patches, and patches that have already been applied to the product. The sequence specifies the order that Windows Installer version 3.0 and later should apply patches to an installed product, regardless of the order in which they are provided to the target machine. For versions of Windows Installer earlier than version 3.0, the patch sequence is ignored, and any patches are applied to the product in the order that they are provided to the target machine. Specify whether you want InstallShield to streamline the creation of your QuickPatch package to build as simple a package as possible. The default value is Yes. The goal of QuickPatch streamlining is to generate a QuickPatch package that has fewer new subfeatures and custom actions than a non-streamlined QuickPatch package. For example, if your QuickPatch project includes a new file or registry entry and InstallShield does not use QuickPatch streamlining, InstallShield creates a new subfeature for that file or registry entry. InstallShield also adds one or more prebuilt InstallShield custom actions to work around certain Windows Installer patch requirements. However, if InstallShield does use QuickPatch streamlining, the file or registry entry is added to an existing feature, and no special prebuilt InstallShield custom actions are required.

Generate MsiPatchOldAssembly tables

Create patch sequencing entry

Streamline QuickPatch

Note: InstallShield cannot streamline the creation of a QuickPatch package in the following scenarios: The QuickPatch package removes an installed file. The QuickPatch package removes or renames a registry key. The QuickPatch package targets a non-streamlined QuickPatch image. That is, you cannot use QuickPatch streamlining if you select the check box in the History area of the General Information view for a QuickPatch that did not use QuickPatch streamlining. If you try to build a streamlined QuickPatch that targets one or more non-streamlined QuickPatch images, InstallShield displays a build warning, and it does not use streamlining.

1958

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Table 43-138: Build Location Settings (cont.) Property Password Protect Launcher Description To password-protect your QuickPatch package, select Yes, and then type a password for the Launcher Password setting. When you password-protect your QuickPatch package, any end user who wants to apply your QuickPatch must enter a case-sensitive password to launch your update. This setting is applicable only to QuickPatch packages that use an Update.exe file. Launcher Password Type a password to protect your application. You must select Yes for the Password Protect Launcher setting to activate password protection. When you password-protect your patch, any end user who wants to apply your patch must enter a case-sensitive password to launch your update. This setting is applicable only to patches that use an Update.exe file.

Windows Installer Engine


In this area, you can configure the following settings for the Windows Installer engine:
Table 43-139: Windows Installer Engine Settings Property Description

Include Windows 9X engine Specify whether the Windows Installer engine for Windows 9x should be included with your patch package. Include Windows NT engine Specify whether the Windows Installer engine for Windows NT should be included with your patch package. Windows Installer engine version Select the Windows Installer version to be installed by Update.exe. The Version 3.1 or 2.0 (best fit for system) option installs Windows Installer 3.1 on target systems that are running Windows 2000 SP3 or later; it installs Windows Installer 2.0 on other target systems. If you select the Version 3.1 (requires Windows 2000 SP3 or greater) option or the Version 3.0 (requires Windows 2000 SP3 or greater) option, and the target system does not support version 3.x but does have version 2.0 installed, your patch will run, since the differences between versions 2.0 and 3.x involve only the mechanics of patching. Engine Location Select one of the following options:

Download Engine From The WebIf the Windows Installer engine needs to be installed, it is downloaded at run time. Extract Engine From Update.exeThe build streams the Windows Installer engine into the Update.exe file, giving you a single file to distribute to your customers. At run time, the engine is extracted from the Update.exe file and installed if required. Copy From Source MediaThe build copies the Windows Installer engine into the same directory as the Update.exe file.

InstallShield 2010 User Guide

ISP-1600-UG00

1959

Chapter 43: View Reference QuickPatch Projects

Table 43-139: Windows Installer Engine Settings (cont.) Property Windows Installer 2.0 engine URL for Win9X Description Specify the uniform resource locator (URL) for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience. Specify the URL for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience. Specify the URL for the location of the engine. This is the location that the Update.exe file uses at run time to download the engine. The default URL location is a live site maintained by Acresso for your convenience.

Windows Installer engine URL for WinNT

Windows Installer 3.1 engine URL

Microsoft .NET Framework


In this area, you can configure the following settings for the Microsoft .NET Framework:
Table 43-140: Microsoft .NET Framework Settings Property Include In Build Engine Location Description Specify whether to include the Microsoft .NET Framework in your patch. Select one of the following options:


Engine URL

Download Engine From The WebIf the .NET Framework needs to be installed, it is downloaded at run time. Extract Engine From Update.exeThe build streams the .NET Framework into the Update.exe file, giving you a single file to distribute to your customers. At run time, the engine is extracted from the Update.exe file and installed if required. Copy From Source MediaThe build copies the .NET Framework into the same directory as the Update.exe file.

Specify the URL for the location of the .NET Framework. This is the location that the
Update.exe file uses at run time to download the .NET Framework. The default URL

location is a live site maintained by Acresso for your convenience.

History
The History item in the General Information explorer within the General Information view presents a synopsis of your QuickPatch project. It lists all of the associated releases, enabling you to specify which ones should be patched by the current QuickPatch project.

Custom Action
The Custom Action item in the General Information explorer within the General Information view lists the custom actions that are defined in the original installation project for which you are creating a patch. It enables you to specify which actions should be executed by the current QuickPatch project.

1960

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Files View
The Files view enables you to manage the files in your QuickPatch and also see version numbers, languages, and other information about the files in your original installation. All of the files in the Files To Patch and Original Setup Files explorers are listed by key file. When you click a file in the Original Setup Files explorer, the file name, the destination, the version number, and other pertinent information are displayed in the right pane. You can drag and drop files from this explorer to the Files To Patch explorer, which shows all of the files that will be added, changed, or removed when your QuickPatch is applied to the original installation.

New File Settings


When you click a new file in the Files To Patch explorer within the Files view, you can configure the following settings:

File Settings
Table 43-141: Settings in the File Settings Area Setting Specify the file that you want to add to the patch setup Description If you are modifying a file in the original installation, specify the latest version of the file that you want to be installed on the target system when the patch is applied. If the file that you are adding is a self-registering DLL or .ocx file, select this check box.

Self-Registering

Note: This option does not self-register .exe or .tlb files. Extract COM Information If the file is a COM server and you want InstallShield to extract COM information from the file when the patch is built, select this check box.

Integration Settings
Select the file destination and the features that you want to associate with this file.

Note: This install state binding requires feature association. When you add new data to your QuickPatch project, you must associate it with a feature. New data is installed only if the corresponding feature is installed.

Modified/Deleted File Settings


When you click a file that you have added from your original installation to the Files To Patch explorer within the Files view, you can configure the following settings:

InstallShield 2010 User Guide

ISP-1600-UG00

1961

Chapter 43: View Reference QuickPatch Projects

Updated File
Table 43-142: Settings in the Updated File Area Setting Specify the latest version of your file Description If you are modifying a file in the original installation, specify the latest version of the file that you want to be installed on the target system when the patch is applied. To include the file in your installation as a whole file, select this check box. This enables you to patch over any previous version of the file. A non-versioned file will always overwrite an existing file, regardless of its version, when this check box is selected.

Overwrite Any Existing File

Note: The Overwrite Any Existing File check box is useful when you are unsure which versions currently exist on the target machine. By selecting this check box, your file will be included in whole and will overwrite any existing versions of which you are uncertain. In the case of non-versioned files, a new file will always replace the existing one. Extract COM Information If the file is a COM server and you want InstallShield to extract COM information from the file when the patch is built, select this check box. This check box is selected by default for patch files that contain COM information in the Class or TypeLib tables in the base .msi package.

Note: When you specify an existing file that you want to patch, InstallShield automatically detects if the file is self-registering. If the original file was selfregistering, the file in the patch is also set to self-register.

Original File Information


The Original File Information area provides information about the original file in the original installation.

Component Information
The Component Information area provides file component information such as the component name and key file.

Check this box to have the patch delete this file from the setup
Select this check box to remove the file from the target machine when the patch is applied.

Registry View
The Registry view in a QuickPatch project provides a visual representation of what currently exists on a source machine and what you will patch on a destination/target system once your patch project is built and applied to the target system. The Destination computers Registry view pane and the Destination computers registry data pane are pre-populated with registry entries in the original installation.
1962 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 43: View Reference QuickPatch Projects

Each item in the Destination computers registry data pane appears next to an icon specific to the value type and the datas current condition. Icons for data values that have been modified have a turquoise pencil. Icons for new data values have a red star in the upper-right corner. Icons for registry values that will be deleted from the target system have a red X. See the following sample icons and descriptions below.
Table 43-143: Icons in the Registry View of a QuickPatch Project Icon Description This icon represents a new DWORD value that will be added to the target system when the QuickPatch is applied. This icon represents a modified DWORD value that will be updated on the target system when the QuickPatch is applied. This icon represents an existing DWORD value on the target system from an earlier installation. This icon represents a DWORD value that exists on the target system but will be deleted when the QuickPatch project is applied.

InstallShield 2010 User Guide

ISP-1600-UG00

1963

Chapter 43: View Reference QuickPatch Projects

1964

ISP-1600-UG00

InstallShield 2010 User Guide

44
InstallShield Prerequisite Editor Reference

Project: The following project types include support for InstallShield prerequisites:

Basic MSI ClickOnce InstallScript InstallScript MSI

All of these project types include support for the setup prerequisite type of InstallShield prerequisite. Basic MSI projects include support for the feature prerequisite type.

An InstallShield prerequisite is an installation for a product or technology framework that is required by your product. Some examples of InstallShield prerequisites that are included with InstallShield are Java Runtime Environment (JRE), Jet 4.0, and SQL Server 2008 Express Edition. You can add any of the existing InstallShield prerequisites to your installation projects and configure many of their settings. You can also create your own InstallShield prerequisites, and add them to your projects.

Task

To open the InstallShield Prerequisite Editor:

On the Tools menu, click Prerequisite Editor.

Task

To open an existing prerequisite in the InstallShield Prerequisite Editor, do one of the following: 1. 2.

On the File menu, click Open. The Open dialog box opens. Select the file by browsing and click Open.

The following tabs are associated with the InstallShield Prerequisite Editor:

Properties

InstallShield 2010 User Guide

ISP-1600-UG00

1965

Chapter 44: InstallShield Prerequisite Editor Reference Properties Tab

Conditions Files to Include Application to Run Behavior Dependencies

Properties Tab
The Properties tab of the InstallShield Prerequisite Editor is where you specify general information about an InstallShield prerequisite.
Table 44-1: Settings on the Properties Tab Setting Unique identifier for InstallShield prerequisite Description Type a unique file identifier for the InstallShield prerequisite or leave the default value as is. This could be the name of the prerequisite application or component, or a GUID.

Note: Every time you open the InstallShield Prerequisite Editor to create a new InstallShield prerequisite, a new GUID is generated and listed in this box. Alternate location to download .prq from if prerequisite files are being downloaded Description If appropriate, type the alternate URL for your .prq file. For example: http://www.mywebsite.com/MyPrq.prq. For more information, see Specifying an Alternate URL for a .prq File. Type an overview of the prerequisite. This description is displayed under the Overview heading when you select a prerequisite in the Redistributables view.

Conditions Tab
The Conditions tab of the InstallShield Prerequisite Editor lets you define installation conditions that determine whether an InstallShield prerequisite already is installed on the target machine. Failure to do so causes problems because the target system behaves as if the InstallShield prerequisite was not properly installed. You can also create installation conditions that specify operating system, registry, or file requirements. If a condition evaluates as true at run time, that condition is met. The InstallShield prerequisite is installed on the target machine if the following are true:

The target machine meets any of the operating system conditions and all of the other conditions that are listed on the Conditions tab. For feature prerequisites only (that is, an InstallShield prerequisite that is associated with one or more features in the main installation)The feature that contains the feature prerequisite must be installed. Thus, if the feature has a condition that is not met on the target system, or if the end user
ISP-1600-UG00 InstallShield 2010 User Guide

1966

Chapter 44: InstallShield Prerequisite Editor Reference Files to Include Tab

chooses not to install the feature, the feature is not installed. As a result, none of its associated feature prerequisites are installed, unless the feature prerequisites are also associated with other features that are installed. When you click the Add button on this tab, the Prerequisite Condition dialog box opens. This dialog box also opens when you select an existing condition on the Conditions tab and then click the Modify button.

Files to Include Tab


When you are creating a new InstallShield prerequisite, you must specify the installation files that should be included with the InstallShield prerequisite. You can also modify the list of files for an existing InstallShield prerequisite. The Files to Include tab of the InstallShield Prerequisite Editor is where you specify the files. When you click the Add button or the Add Multiple Files button on this tab to specify an InstallShield prerequisite file or the Modify button to change the file, the New File dialog box opens. When you click the Set File(s) URL button, the Set File(s) URL dialog box opens.

Application to Run Tab


The Application to Run tab of the InstallShield Prerequisite Editor is where you specify how an InstallShield prerequisite should be installed on the target machine.
Table 44-2: Settings on the Application to Run Tab Setting Specify the application you wish to launch Description Select the filetypically a Setup.exe setup launcher or an .msi packagethat should be launched on the target machine if the InstallShield prerequisite is installed. Only files that have been specified on the Files to Include tab are included in this list.

Project: If you specify an .msi file and you indicate on the Behavior tab that the progress should be shown, the Setup.exe setup launcher captures progress messages and uses Windows Installer APIs instead of MsiExec.exe to launch the .msi package at run time. If you specify any other file type, or if you specify an .msi file for which progress should not be shown, the Setup.exe setup launcher runs the file with either the open verb (for .msi and .exe files) or the default verb (for all other file types) at run time.

InstallShield 2010 User Guide

ISP-1600-UG00

1967

Chapter 44: InstallShield Prerequisite Editor Reference Application to Run Tab

Table 44-2: Settings on the Application to Run Tab (cont.) Setting Requires Windows Installer engine and/or .NET Framework to be installed first Description If the Windows Installer engine, the .NET Framework (Dotnetfx.exe), or both must be installed before this InstallShield prerequisite is installed, select this check box.

Note: Selecting this check box does not add the Windows Installer engine or the .NET Framework to your installation. It only specifies that if they are included in the installation, they should be installed before this InstallShield prerequisite is installed. To include the Windows Installer engine or the .NET Framework with your installation, you must add them to your project. To learn how, see Adding Windows Installer Redistributables to Projects or Adding .NET Framework Redistributables to Projects. Specify the command line for the application If applicable, type the command line for the file selected in the Specify the application you wish to launch list. Do not include the name of the file in this box. For information on command-line parameters that you can specify, see Specifying Command-Line Parameters for an InstallShield Prerequisite.

Note: If a setup prerequisite is configured to be hidden (that is, it is not included in the setup prerequisite run-time dialog as one of the prerequisites that need to be installed), it is launched with its silent command-line parametersnot its standard command-line parameters. Therefore, if it is possible that the The prerequisite should be hidden from the installation list check box on the Behavior tab will be selected, specify command-line parameters in the Specify the command line for the application when the setup is running in silent mode box. Specify the command line for the application when the setup is running in silent mode If applicable, type the appropriate command line. Do not include the name of the file in this box. For information on command-line parameters that you can specify, see Specifying Command-Line Parameters for an InstallShield Prerequisite.

Note: Using the /s command-line parameter to launch an installation that includes an InstallShield prerequisite does not automatically run the prerequisite installation silently. You may also need to specify a valid silent command-line parameter for the InstallShield prerequisite in this Specify the command line for the application when the setup is running in silent mode setting on the Application to Run tab.

1968

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 44: InstallShield Prerequisite Editor Reference Behavior Tab

Table 44-2: Settings on the Application to Run Tab (cont.) Setting Specify the return code (in decimal) the application returns if a reboot is required Description If the selected InstallShield prerequisite application requires that the target machine be restarted after the application is installed, type the return code in this box.

Tip: If multiple return codes exist, list each one separated by a comma. If you do not know the return codes for the file that you are launching as the InstallShield prerequisite, contact the author of the file. For more information on InstallShield prerequisites that require a restart, see Restarting a Target Machine for InstallShield Prerequisite Installations.

Behavior Tab
The Behavior tab of the InstallShield Prerequisite Editor is where you specify what should occur in certain scenarios.
Table 44-3: Settings on the Behavior Tab Setting The prerequisite requires administrative privileges Description Select this check box if administrative privileges are required to install the InstallShield prerequisite or if the InstallShield prerequisite must be installed per machine. This check box is selected by default.

Note: InstallShield prerequisites that require administrative privileges may require that end users provide credentials or consent before installation can occur on Windows Vista systems. For more information, see Minimizing the Number of User Account Control Prompts During Installation. The prerequisite may be optionally skipped by the user If the installation should display a message box that enables end users to choose whether to install the InstallShield prerequisite, select this check box. If end users should not be able to choose whether to install the InstallShield prerequisite, clear this check box.

InstallShield 2010 User Guide

ISP-1600-UG00

1969

Chapter 44: InstallShield Prerequisite Editor Reference Behavior Tab

Table 44-3: Settings on the Behavior Tab (cont.) Setting Description

The prerequisite should be If a target system needs one or more setup prerequisites to be installed, the setup hidden from the installation list prerequisite dialog is displayed at run time before the main installation runs. When an end user clicks the Install button on this dialog, the setup prerequisites are installed. If you want to include the current setup prerequisite in the list of setup prerequisites that are displayed in that dialog, clear this check box. If you do not want to include the current setup prerequisite in the list, select this check box. The setup prerequisite is hidden from the list of setup prerequisites, but it is still installed on the target system if needed.

Note: Feature prerequisites are never listed in the setup prerequisite dialog at run time, regardless of whether the The prerequisite should be hidden from the installation list check box is selected or cleared. That is, if you add an InstallShield prerequisite to your project and associate it with a feature, that feature prerequisite is not listed in the setup prerequisite dialog that is displayed at run time before the main installation runs. Note that if a setup prerequisite or a feature prerequisite is marked as hidden, it is launched with its silent command-line parametersnot its standard command-line parameters. To learn more, see Specifying Command-Line Parameters for an InstallShield Prerequisite. Progress should be shown in the prerequisites window (raw MSI file only) If you want the progress of the installation for the current InstallShield prerequisite to be displayed at run time, select this check box. The progress can be shown only if the InstallShield prerequisite installation is an .msi file; it cannot be shown if the file that the InstallShield prerequisite installation launches is a Setup.exe file. In addition, the installation that contains the prerequisite must be a Basic MSI or InstallScript MSI installation. If your InstallShield prerequisite installation is a Setup.exe file, this setting is ignored. In addition if the installation that contains the InstallShield prerequisite is an InstallScript installation, this setting is ignored.

Note: If you select this check box so that progress can be shown, only some command-line parameters are supported. Command-line parameters are specified on the Application to Run tab of the InstallShield Prerequisite Editor. For more information, see Specifying Command-Line Parameters for an InstallShield Prerequisite. Also note that if you specify that the progress should be shown for a prerequisite that is an .msi package, the user interface of the prerequisites .msi package is not displayed by default. If you want to override this behavior, you can specify /qf as a command-line parameter on the Application to Run tab.

1970

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 44: InstallShield Prerequisite Editor Reference Behavior Tab

Table 44-3: Settings on the Behavior Tab (cont.) Setting If, after installing the prerequisite, the conditions still indicate it is required Description If the conditions still indicate that the InstallShield prerequisite needs to be installed after the InstallShield prerequisite installation has been run, either of the following may be true:

The InstallShield prerequisite was not successfully installed. The conditions that were specified for the InstallShield prerequisite were not accurate. For example, a condition may indicate that the InstallShield prerequisite needs to be installed if a particular file does not exist on the target machine. If the file is still missing even after the InstallShield prerequisite is installed, it is possible that the condition should not have been created.

Specify the behavior that should occur if the conditions still indicate that the InstallShield prerequisite needs to be installed. The available options are:

Abort the setupIf your application should not be installed, select this option. Ask whether to continue the setupIf the installation should display a message box that prompts the end user to specify whether the main installation should continue, select this option. Continue the setupIf the installation should essentially ignore the InstallShield prerequisites unmet condition and proceed to the next InstallShield prerequisite installation (if one is required) or the main installation, select this option.

InstallShield 2010 User Guide

ISP-1600-UG00

1971

Chapter 44: InstallShield Prerequisite Editor Reference Dependencies Tab

Table 44-3: Settings on the Behavior Tab (cont.) Setting If the prerequisite requires a reboot Description Installing an InstallShield prerequisite may require that the target machine be restarted, as described in Restarting a Target Machine for InstallShield Prerequisite Installations. Specify the behavior that should occur if the InstallShield prerequisite requires that a target machine be restarted.

Exit and resume on rebootTo end the InstallShield prerequisite installation, allow the InstallShield prerequisite to restart the target machine, and then continue the installation, select this option. Note it, fail to resume if the machine is rebooted, and reboot after the installationTo note that the target machine should be restarted if it is required, to schedule the restart for the end of the main installation, but to exit if the target machine restarts after the InstallShield prerequisite installation, select this option. Thus, if it appears that a restart is required but you want to postpone it until the end of the main installation (or until a subsequent InstallShield prerequisite triggers a restart), select this option. At run time, the value of the Windows Installer property ISSCHEDULEREBOOT is set to 1 in the main installation when a restart is still pending.

Ignore it, and fail to resume if machine is rebootedTo continue the installation but end it if the target machine is restarted, select this option. Thus, if it appears that a restart is required but you want to try to skip it, select this option. Prompt the user only if no reboot is detected, but always reboot the machine and resume on rebootTo prompt the end user to restart the target machine only if it appears that the target machine does not need to be restarted, select this option. The target machine is restarted if the end user agrees to allow it, and then the installation continues. Prompt the user to reboot the machine even if nothing is detected, and resume on rebootTo prompt the end user to restart the target machine even if it appears that the target machine does not need to be restarted, select this option. The target machine is restarted if the end user agrees to allow it, and then the installation continues. Reboot the machine and resume on rebootTo restart the target machine and then continue the installation, select this option.

Dependencies Tab
When you are creating a new InstallShield prerequisite or modifying an existing one, you can specify other InstallShield prerequisites (.prq files) on which this InstallShield prerequisite depends. The Dependencies tab of the InstallShield Prerequisite Editor is where you specify the dependencies. When you click the Add button on this tab to add a dependency, the New Dependency dialog box opens.

1972

ISP-1600-UG00

InstallShield 2010 User Guide

45
Errors and Warnings
The following topics in the InstallShield Help Library provide information about errors and warnings that might occur when you are working with your installation.
Table 45-1: List of Error and Warning Topics Topic Build Errors and Warnings Media Build Errors and Warnings MSI/MSM Conversion Errors Description Lists errors and warnings that might occur during the build process. Lists InstallScript compiler errors and warnings. Lists errors that might occur when you use the Open MSI/MSM Wizard to convert an installation package (.msi file) or merge module (.msm file) to an InstallShield project (.ism file). Lists errors and warnings that might occur during run time. Lists the errors that might occur when Setup.exe runs for InstallScript installations. Lists the errors that might occur when Setup.exe runs for Basic MSI and InstallScript MSI installations.

Run-time Errors and Warnings Setup.exe Return Values and Run-Time Errors (InstallScript Projects) Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects) Visual Studio Project Conversion Errors and Warnings

Lists the errors and warnings that might occur when you convert a Visual Studio setup project (.vdprj) to an InstallShield Basic MSI project (.ism) or a Visual Studio merge module project (.vdprj) to an InstallShield Merge Module project (.ism). Lists errors that might occur when you upgrade a project created with InstallShield Professional. Lists warnings that might occur when you upgrade a project created with InstallShield Professional.

Upgrade Errors (Upgrading from InstallShield Professional) Upgrade Warnings (Upgrading from InstallShield Professional)

InstallShield 2010 User Guide

ISP-1600-UG00

1973

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-1: List of Error and Warning Topics (cont.) Topic Upgrade Errors and Warnings (Upgrading from InstallShieldWindows Installer Edition) HRESULT Values for Windows Installer Runtime Errors DIFxAPI Errors (InstallScript Projects) Description Lists errors and warnings that might occur when you upgrade a project (.ism file) created with a version of InstallShieldWindows Installer Edition. Provides descriptions for InstallShield custom HRESULT codes provided with Windows Installer errors 1904 and 1905. Describes each of the DIFxAPI errors that can be returned when DIFx driver functions are called. Provides description of when this error can occur and what steps you should take to correct it. Provides descriptions for InstallScript errors and warnings. Lists errors and warnings that might occur during the build process when you are creating a virtual application.

"String PRODUCT_NAME was not found in string table" Error InstallScript Error Information Virtualization Conversion Errors and Warnings

In-depth articles about errors and warnings are available in the Knowledge Base.

Build Errors and Warnings


The following table contains a listing of errors and warnings that may occur during the build process.

Note: You can find detailed informationincluding resolution informationon most InstallShield build errors and warnings in the Knowledge Base. For troubleshooting information about errors and warnings that may occur when you are building a virtual application, see Virtualization Conversion Errors and Warnings. Table 45-2: Build Errors and Warnings Error or Warning Number -32000

Description Build canceled by the user.

Troubleshooting Information This error occurs only when the build is terminated during the build process. This error occurs only when no supported language is selected in the media. To resolve this issue, ensure that at least one language is selected for the Language(s) setting in the Releases view.

-7222

No supported languages included in the media. You must select at least one supported language for the media.

1974

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7187

Description The Find What setting for the %1 text replacement is not configured. This text replacement will not be performed.

Troubleshooting Information You have added a replacement item to a replacement set in the Text File Changes view; however, the value for the Find What setting is blank. This setting must have a value; otherwise, the text file changes are not made at run time. For more information, see Specifying Search-and-Replace Criteria for a Text File Change.

-7186

The Include Files setting for the %1 text replacement set is not configured. None of the text replacements associated with this text replacement set will be performed. The %1 translation for string identifier %2 includes characters that are not available on code page %3.

You have added a replacement set in the Text File Changes view; however, the value for the Include Files setting is blank. This setting must have a value; otherwise, the text file changes are not made at run time. For more information, see Creating a Text File Reference. This error occurs if both of the following conditions are true:

-7185

You selected No for the Build UTF-8 Database setting on the Build tab for your release in the Releases view, or you are using an InstallScript project (which does not have a Build UTF-8 Database setting). The string identifier value that you entered for the specified language contains characters that are not available in that languages code page.

To resolve this error, consider selecting Yes for the Build UTF-8 Database setting if you are using a Basic MSI, InstallScript MSI, or Merge Module project. If you are using an InstallScript project or you do not want to use a UTF-8 database, use the String Editor view to edit the value of the string identifier so that it uses characters from the appropriate code page.

InstallShield 2010 User Guide

ISP-1600-UG00

1975

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7184

Description The %1 column of the %2 table includes characters that are not available on code page %3: "%4"

Troubleshooting Information This error occurs if both of the following conditions are true:

You selected No for the Build UTF-8 Database setting on the Build tab for your release in the Releases view, or you are using an InstallScript project (which does not have a Build UTF-8 Database setting). A table in the source project database contains characters that are not available in the code page for one or more target languages.

To resolve this error, consider selecting Yes for the Build UTF-8 Database setting if you are using a Basic MSI, InstallScript MSI, or Merge Module project. If you are using an InstallScript project or you do not want to use a UTF-8 database, change the data that is described in the error message so that it uses characters from the appropriate code page. For example, if error message mentions the Shortcut table, consider changing the string in the Shortcuts view. -7174 "%1" contains a reference to a string table entry '%2' that is not included in the project's string table. In this warning message, %1 indicates the fully qualified path to an InstallScript file (.rul) in the project, and %2 indicates the string ID that is used in that .rul file but is not listed as one of the projects string entries. InstallShield displays this warning at build time for each string identifier that is found in the projects InstallScript file but not in the String Editor view. To see the line in the InstallScript code that has the string identifier, double-click the warning message that is displayed on the Tasks tab of the Output window at build time. The string identifier is preceded by the string constant operator (@). To resolve this build issue, ensure that the string identifier is defined in the String Editor view. In addition, ensure that the spelling of the string identifier in the InstallScript code matches that in the String Editor view. -7143 Component %1 installs to a 64-bit folder but is not marked as a 64-bit component. This may result in an incorrect installation path for this components files. If a component is not configured to be 64 bit, Windows Installer may not install the components files to the appropriate 64-bit location. To specify that a component is 64 bit, select Yes for the components 64-Bit Component setting. For more information about the 64-Bit Component setting, as well as additional component settings, see Component Settings.

1976

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7138

Description The Msi Command Line of the release currently being built contains REINSTALLMODE. The parameter appears to have the 'a' option which will force all files to be reinstalled, regardless of checksum or version. The %1 file that you selected for the Help File Path setting in the Custom Actions view for the %2 custom action does not contain any text.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-7137

Create a file that describes the intended behavior of the custom action that is mentioned in the warning. The file should be a textbased file such as a .txt, .htm, or .rtf file. Then in the Custom Actions and Sequences view (or the Custom Actions view), select the custom action and select the file that you created for the Help File Path setting. To learn more, see Documenting the Behavior of Custom Actions.

-7135

Internal build error

Check the Knowledge Base for information about this error, or request technical support. This error occurs if there is a problem embedding the application manifest in the Setup.exe launcher. The application manifest specifies the minimum privilege level required by your installations Setup.exe file for running the installation (the setup launcher, any InstallShield prerequisites, and the .msi file) on Windows Vista platforms. This error may occur if the template manifest file is missing from the InstallShield Support folder. It also may occur if the Setup.exe template is missing from the InstallShield Redist\Language Independent\i386 folder. To resolve this error, try running a repair of InstallShield.

-7128

Error embedding setup.exe.manifest.

-7125

Internal build error

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7124

Could not invoke MSBuild. Make sure that the .NET Framework %1 is installed at '%2' on the system. If you are running InstallShield from within Visual Studio, you must use Visual Studio 2005 or later. Internal build error

-7123

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

1977

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7122

Description Error writing information to the source file for %1. Verify that the file is writeable, and\or that the file ISTemplate.manifest is not read only. The manifest file %1 does not contain COM information in at least one file element. Please ensure that all COM modules associated with the manifest are self-registering and verify that the self-registration process does not fail for each COM module. Error building table %1

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-7121

Check the Knowledge Base for information about this error, or request technical support.

-7120

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7119

Could not locate a key file for component %1. Advertised shortcut %2 points to the key file of this component. The InstallScript Custom Action %1 cannot be sequenced in InstallUISequence for an InstallScript MSI project.

-7118

The User Interface sequence does not run in InstallScript MSI installations; the event-driven InstallScript code handles the user interface. To resolve this issue, do one of the following:

Schedule the InstallScript custom action for the Execute sequence. Use InstallScript eventdriven code instead of an InstallScript custom action.

1978

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7117

Description Custom Action %1 called from Standard dll and stored in Binary table cannot have deferred/ rollback/commit execution.

Troubleshooting Information This error occurs if you try to call a deferred-, rollback-, or commit-execution custom action using a standard .dll. When you call a non-Windows Installer .dll (that is, one that does not have the MyFunc(MSIHANDLE) entry point), InstallShield does the following:

InstallShield creates a wrapper .dll with the standard Windows Installer entry point. InstallShield stores your .dll plus the InstallShield wrapper .dll in the Binary table.

When the custom action is called, Windows Installer calls the InstallShield wrapper .dll. This, in turn, extracts your .dll from the Binary table and calls the function that you specified. However, the InstallShield wrapper .dll does not have access to the Binary table during deferred, rollback, or commit custom actions, and thus it cannot extract and call into your .dll. To resolve this error, try one of the following options:


-7116 Custom Action DLL %1 not found in release. Language support for %1 is not included in this edition.

Create a new .dll that has a standard Windows Installer entry point and call it directly. Use InstallScript code to do perform the same functionality if you do not want to write your own .dll. Schedule your custom action to run in immediate mode instead of deferred, rollback, or commit mode.

Check the Knowledge Base for information about this error, or request technical support. This error appears if you try to enable too many languages in a project, building with more than two in a non-Premier edition. The build is successful (unless stop at first error is enabled), but the extra languages are not built. The first two qualified languages are built. %1 is replaced with the name of the language. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7113

-7108

%s is too large to store in a CAB (2GB maximum). The merge module %1 silently fails to install from a compressed build. Applying compression post-build may work properly. The destination of component %1 is the GlobalAssemblyCache. The component must contain a key file.

-7107

-7104

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

1979

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7101

Description This component %1 is shared between multiple features, which can create problems for features that are going to use MSI's Install On Demand technology. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-7098

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Verify that the file, %1, is in the system folder or the standalone folder for a standalone build.

-7097

Internal build error.

-7096

Internal build error.

-7095

Internal build error.

-7088

Failed to load %1. This file needs to be loaded in order to build the associated custom object. Custom objects cannot be included with your installation media due to an error creating the Windows Installer Object. In order to include custom objects, Windows Installer needs to be installed on the build system. The device driver installation framework is not currently available. The device driver feature will not be fully functional until an update has been provided. Please contact technical support for more details.

-7087

Verify that Windows Installer is installed properly on the build system.

-7086

This error occurs when you build a release for a project in which you used the Device Driver Wizard to include a device driver package with your installation. The redistributable needed to install the device driver will be available in an update to InstallShield. Instructions for obtaining the update will be posted in an article for this build error in the Knowledge Base when the redistributable is available. To resolve the build error before you receive the redistributable, you can remove the device driver component in the Components view and then rebuild the release. This warning message is displayed if you add a VBScript custom action to your installation but the file specified for the custom action is not a VBScript file. To resolve this error, select the appropriate type of file for the specified custom action in the Custom Actions and Sequences view (or the Custom Actions view). Check the Knowledge Base for information about this error, or request technical support.

-7084

The VBScript Custom Action %1 does not point to a valid VBS file.

-7083

Script '%s' is not associated with any connection.

1980

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7082

Description An error occurred while generating your Sql Script. An error occurred while testing the component to see if the device driver package scan at build property is set. An error occurred while getting the path to the device driver package. Unable to scan device driver package %1. The file is missing. An error occurred while scanning a device driver package. The MSI 3.1 Engine could not be found. You can download this using the Redistributable Downloader under the Tools menu, if it has been made available by Microsoft. We have included the 3.0 Engine in your built installation. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7080

-7079

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. This message is displayed as a build error if version 3.1 of the Windows Installer engine was selected to be included but it was not found on the build machine. This message is displayed as a build warning if the version 3.1 or 2.0 best-fit option was selected but version 3.1 of the Windows Installer engine was not found on the build machine. Check the Knowledge Base for information about this error, or request technical support. To resolve this warning, open the Files and Folders view and remove the font mentioned in the message. Then re-add the font to the Fonts folder; InstallShield adds the corresponding record to the Font table automatically.

-7078

-7077

-7065

-7064

-7063

The File %1 in Component %2 is being installed to the Windows Fonts folder, but there is no corresponding record in the Font table. The Font will not be registered properly on the target system. Refreshing the COM+ settings from the client machine. An error occurred while refreshing the COM+ settings from the client machine.

-7062

This build error occurs when an exception error has occurred with a COM+ application that is selected in the Component Services view. An option is provided to refresh the COM+ settings during the build process, and build error -7062 occurs when this option is selected and the refreshing process has failed. To resolve this error, you can open the Component Services view, select the COM+ application, and clear the Refresh the COM+ settings from the client machine at build check box on the Installation tab. Check the Knowledge Base for information about this error, or request technical support.

-7061

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

1981

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7060

Description Due to licensing requirements, InstallShield requires that you provide the MSI 3.0 engine redistributable from the MSI 3.0 Beta. Please copy instmsi.exe from the MSI 3.0 Beta folder to \redist\Language Independent\i386\MSI3.0\instmsiw. exe. Unable to update the latest patch version property. As a result, future patches built from this project may not be sequenced properly. Make sure the project is not marked as read-only. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-7059

Check the Knowledge Base for information about this error, or request technical support.

-7058

Check the Knowledge Base for information about this error, or request technical support.

-7057

You have enabled FLEXnet Connect Check the Knowledge Base for information about this error, or request technical support. for this deployment, however, you have not provided a URL to check for updates. This is required for 'CDROM' deployment configurations. Due to licensing requirements, InstallShield requires that you provide the .NET redistributable from the Whidbey release of Visual Studio .NET. Please copy the contents of
Common7\IDE\Packages\DotNetF X to \Support\Whidbey.

-7055

Check the Knowledge Base for information about this error, or request technical support.

ClickOnce deployments will not run properly unless this is installed to the target machine. -7053 The 'Internet' deployment configuration is enabled, but the 'install location' field has not been authored. This will result in errors when running your deployment. Internal build error. Check the Knowledge Base for information about this error, or request technical support.

-7052

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7051

Internal build error.

1982

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7050

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7049

Internal build error.

-7048

Internal build error.

-7047

An error occurred while building the 'File Share' configuration of the ClickOnce deployment. An error occurred while building the 'CD-ROM' configuration of the ClickOnce deployment. Internal build error.

-7046

Check the Knowledge Base for information about this error, or request technical support.

-7045

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7044

An error occurred while copying the main application manifest to the release specific location. An error occurred while building the 'Internet' configuration of the ClickOnce deployment. An error occurred while determining the source location for the primary application assembly. Initializing the default deployment manifest. Internal build error.

-7043

Check the Knowledge Base for information about this error, or request technical support.

-7042

Check the Knowledge Base for information about this error, or request technical support.

-7041

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7040

-7039

An error occurred while creating the base ClickOnce deployment. An error occurred while creating the base deployment folders in the release location. Internal build error.

-7038

-7037

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7036

An error occurred while loading the primary application assembly.

InstallShield 2010 User Guide

ISP-1600-UG00

1983

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7035

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-7030

An error occurred while loading the releases that need to be built. The build engine is unable to load the settings for the 'CD-ROM' release type. The build engine is unable to load the settings for the 'File Share' release type. The build engine is unable to load the settings for the 'Internet' release type. Internal build error.

-7029

-7028

Check the Knowledge Base for information about this error, or request technical support.

-7027

Check the Knowledge Base for information about this error, or request technical support.

-7026

Check the Knowledge Base for information about this error, or request technical support. J# requires the .NET Framework Redistributable Package, but it is not included in the installation. If you are sure that your end users already have the .NET Framework on their systems, you can ignore this warning message. However, if there is a chance that they will not have the .NET Framework, add it to your installation. If the .NET Framework is not on their systems, they might have trouble installing J# as part of your installation. For more information, see Adding .NET Framework Redistributables to Projects.

-7024

To include J# in the build you must also include .NET.

-7023

Internal build error.

This error occurs if a merge module such as MFC 7.1 is not configured correctly or it is corrupted. If you have more than one merge module in your project but you do not know which one is causing the error, you need to first identify the problematic merge module. You can do this by removing a merge module from your project and then building your release. If the error recurs, you have identified the problematic merge module. If not, remove a different merge module and then build. Once you have identified the merge module causing the error, try reinstalling it. If that does not resolve the error, contact the author to obtain the latest version. To resolve this error, open the Mobile Devices view and select the installation mentioned in the error message. If possible, shorten the company name or the application name, or reduce the number of platforms and/or processors that your installation supports. As an alternative, set up your installation so that it supports all platforms and/or processors.

-7016

The CabFiles key in the ini file that supports the "%1" Windows Mobile installation is too long. Shorten the Application Name, Company Name, or reduce the number of platforms/ processors targeted.

1984

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7015

Description Error copying setup.inx to media folder. Unexpected error.

Troubleshooting Information This error occurs if Setup.inx, the compiled script file, cannot be copied to the Media folder located in the \Media\\Disk Images\Disk 1 folder. This can occur if you are out of disk space or the file is locked. This error occurs if Setup.inx, the compiled script file, is marked as read-only. To resolve this error, find the Setup.inx file, which is usually in the \Media\\Disk Images\Disk 1 folder. Rightclick this file and select Properties. Then clear the Read-only check box. Check the Knowledge Base for information about this error, or request technical support. You can install an assembly to the Global Assembly Cache only if it has a strong name. A strong name contains the assemblys simple text name, version number, culture information (if available), a public key, and a digital signature. Using strongnamed assemblies in the Global Assembly Cache enables you to have multiple versions of an assembly with the same name but with different versions of .dll files. The assemblies stored in the Global Assembly Cache can be shared by different applications on a computer. To resolve this error message, you have two options.

-7014

Error copying setup.inx to media folder. Script is read-only.

-7012

Internal build error.

-7011

%1 must have a strong name to be installed to the GlobalAssemblyCache.

Change the target destination for the assembly to a location other than the Global Assembly Cache if sharing that assembly with other applications is not explicitly required. Note that it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop. Select an assembly that has a strong name for installation to the Global Assembly Cache. Note that once an assembly is created, you cannot sign it with a strong name. You can sign an assembly with a strong name only when you create it.

-7001

During the last build, the .msi file was only partially built. In order to stream the script into the .msi file, you must have a complete .msi file. Build a complete .msi file by selecting Build <ReleaseName> from the Build menu.

When you cancel the build, a partially built .msi file exists. If you attempt to compile script into the partial .msi file, this error occurs. Select Build <ReleaseName> from the Build menu to build a complete .msi file.

InstallShield 2010 User Guide

ISP-1600-UG00

1985

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6654

Description The File %1 is not the key file of Component %2. If you call a function in a standard DLL that is installed with the product and the action is scheduled as deferred, the DLL you are calling must be the component's key file. A feature in the setup contains more than 800 components. There is a maximum limit of 1600 components per feature using Windows NT/Windows 2000 and a maximum limit of 800 components per feature using Windows 95 and Windows 98. Could not create _isconfig.xml for use with InstallUtilLib.dll. The setup you are building contains more than 32,767 files. Automatically switching setup package to appropriate MSI schema.

Troubleshooting Information Set the called DLL as the components key file.

-6653

For more information, refer to Windows Installer Help Library topics ICE47 and FeatureComponents Table.

-6652

Check the Knowledge Base for information about this error, or request technical support. This warning appears if your installation package contains more than 32,767 files. InstallShield automatically applies the large package schema.

-6651

Caution: There is an issue with patching if your package uses the large package schema. When you build the patch, the following error is triggered: Cant Generate Primary Transform. -6647 Cannot move file from %1 to %2. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6646

The %1 property in the merge module %2 is set to NULL. This property cannot be NULL. %1 failed to load. Error: %2 Error Description: %3 Internal build error.

-6645

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6641

-6640

Internal build error.

-6639

The merge module %1 requires one of the following merge modules also to be included in the setup: %2.

1986

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6638

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. The invalid data in this example is the use of a single backslash instead of two backslashes. Another example would be an entry with DWORD in it instead of dword.

-6637

Invalid registry data for component NewComponent1 while importing "C:\RegTest\SingleSlashl"=dword:2 (where the information in italics represents the invalid data). The file key %1 and %2 are found in the File table. Despite having different cases, the identical key names will cause an unexpected result when the files are installed on the target system. This occurs because the compressed files in the cabinet file are named using the file keys. To correct this issue, change one of the file keys to be unique in the cabinet file if you are building a compressed setup or a merge module. You can change the file key name in the Direct Editor view. Internal build error.

-6636

Check the Knowledge Base for information about this error, or request technical support.

-6635

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6634

Internal build error.

-6633

Internal build error.

-6632

Internal build error.

-6631

InstallScript MSI projects do not have Multiple Instance support. The property InstanceId does not appear in the Property table. The value for the property InstanceId is not numeric. The value for the property InstanceId is duplicated with a value in the ISProductConfigurationInstance table.

-6630

-6629

-6628

InstallShield 2010 User Guide

ISP-1600-UG00

1987

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6627

Description Component %1 has nonfile data but does not have InstanceId in its condition. Could not add instance transform %1 to substorage. Could not create instance transform %1. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6626

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6625

-6624

-6623

Internal build error.

-6622

Internal build error.

-6620

Could not open the reference package %1 for key synchronization. Internal build error.

-6619

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6618

An error occurred while setting the key paths for dynamically created components. An Error occurred while adding the file '%1' to the synchronization maps. An error occurred while setting the key path for component %1. Could not update File.FileName for File %1. Internal build error.

-6617

Check the Knowledge Base for information about this error, or request technical support.

-6616

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6615

-6614

-6613

Internal build error.

-6612

Internal build error.

-6611

Internal build error.

1988

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6610

Description An error occurred determining if the dynamically linked file %1 is a modified file. An error occurred determining if the dynamically linked file %1 is a new file. Your splash screen will not be displayed during the installation because %1 is a compressed bitmap file. To display a splash screen, you must specify a uncompressed bitmap file. Your splash screen will not be displayed during the installation because %1 is not a bitmap file. To display a splash screen, you must specify a valid bitmap file. This setup has the same package code as the setup specified by minor upgrade item '%1'. The package codes must be unique. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6609

Check the Knowledge Base for information about this error, or request technical support.

-6608

Check the Knowledge Base for information about this error, or request technical support.

-6607

Check the Knowledge Base for information about this error, or request technical support.

-6606

Check the Knowledge Base for information about this error, or request technical support.

-6605

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6604

Internal build error.

-6603

An error occurred while attempting to open the upgraded image %1. An error occurred while attempting to close the upgraded image %1. An error occurred while attempting to set the property %1 in the upgraded image. An error occurred while attempting to retrieve the property %1 from the upgraded image. An error occurred while creating the standard QuickPatch actions to the upgraded image.

-6602

-6601

-6600

Check the Knowledge Base for information about this error, or request technical support.

-6599

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

1989

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6598

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6597

An error occurred while attempting add ISQuickPatchHelper.dll to the binary table in the upgraded image. An error occurred while attempting to sequence the action %1 in the upgraded image. Internal build error.

-6596

Check the Knowledge Base for information about this error, or request technical support.

-6595

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6594

An error occurred while attempting to determine the sequence number for the base action %1 in the upgraded image. An error occurred while initializing file class wrapper for %1. An error occurred while attempting to determine how to process the file %1. An error occurred while attempting to make the settings required to patch the file %1. An error occurred while attempting to create the RemoveFile table entry for %1. An error occurred while attempting to attach the component '%1' to its designated features. Internal build error.

-6593

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6592

-6591

Check the Knowledge Base for information about this error, or request technical support.

-6590

Check the Knowledge Base for information about this error, or request technical support.

-6589

Check the Knowledge Base for information about this error, or request technical support.

-6588

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6587

An error occurred while generating a formatted file name for %1. Internal build error.

-6586

-6585

Internal build error.

1990

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6584

Description An error occurred while attempting to create a new component. An error occurred while attempting to load the component %1. An error occurred while saving the component %1. An error occurred while adding component '%1' to feature %2. An error occurred while generating a sub feature for feature %1. An error occurred while synchronizing data in table '%1' for component %2. An error occurred while synchronizing shortcuts from component '%1' while creating the upgraded image. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6583

-6582

-6581

-6580

-6579

-6578

Check the Knowledge Base for information about this error, or request technical support.

-6577

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6576

Internal build error.

-6575

Internal build error.

-6574

Internal build error.

-6573

Internal build error.

-6572

Internal build error.

-6571

Internal build error.

-6570

An error occurred while writing the property '%1' to the patch configuration properties file. Internal build error.

-6569

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

1991

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6568

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6567

Internal build error.

-6566

Internal build error.

-6565

An error occurred while writing the image family '%1' to the patch configuration properties file. An error occurred while deleting the target image '%1' from the patch configuration properties file. An error occurred while writing the target image '%1' to the patch configuration properties file. An error occurred while writing the upgraded image %1 to the patch configuration properties file. Internal build error.

-6564

Check the Knowledge Base for information about this error, or request technical support.

-6563

Check the Knowledge Base for information about this error, or request technical support.

-6562

Check the Knowledge Base for information about this error, or request technical support.

-6561

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6560

The stored package code of %1, does not match %2 which is in the referenced package %3. Modifying a referenced MSI package of a Quick Patch, invalidates all Quick Patches that reference that MSI package.

1992

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6558

Description The Custom Action %1 in the InstallExecuteSequence table is run from an installed file. To run the custom action successfully, you may need to have a condition that checks if the source file is installed locally.

Troubleshooting Information To successfully run a custom action that is run from an installed file, you must ensure that the file is installed locally using a conditional statement:

If the custom action is sequenced before RemoveFiles Run the action only if the component was installed locally. (?ComponentName=3) If the custom action is sequenced between RemoveFiles and InstallFilesRun the action only if the component was installed locally. Do not run the action on an uninstallation. (?ComponentName=3) AND NOT($ComponentName=2) If the custom action is sequenced after InstallFilesRun the action only if the component will be installed locally. ($ComponentName=3)

Note: The ComponentName is the component that is associated with the source file. -6557 Unable to find the .NET Compact Framework for the given platform/ processor combination from the
InstallShield Program File Folder\Support\NetCF.ini file.

Ensure that the .NET Compact Framework is in the correct location.

-6556

Error in including .NET Compact Framework .cab files in setup.

This error might occur for the following reasons:

The .NET Compact Framework files cannot be found in the locations specified in the InstallShield Program Files Folder\Support\.NetCR.ini file. The CEDefault.ico file is not in the InstallShield Program
File Folder\Program\04xx folder.


-6555 Unable to copy InstallShield
Program File Folder\Support\CFAppMgr.ini

There is an error writing to the ISCEInstall table.

file to a temporary location. -6553 Unable to find the .NET Compact Framework .cab file for the processor. The file key %1 of component %2 could not be synchronized with the previous package because that file key is already in use.

Make sure that CFAppMgr.ini file exists at the InstallShield Program Files Folder\Support folder. If this file does not exist, launch the InstallShield setup in repair mode. Remove any temporary files to create more disk space on the system. Open the InstallShield Program Files Folder\Support\NetCF.ini file and configure the .NET CF selection for this processor to resolve the issue. Check the Knowledge Base for information about this error, or request technical support.

-6552

InstallShield 2010 User Guide

ISP-1600-UG00

1993

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6551

Description The Name and Value columns are blank in the registry record Registry1 of Component NewComponent1. The Windows Installer will set the (Default) value of HKEY_LOCAL_MACHINE\New Key #1 to an empty string. If you would like to set the (Default) value to (Value Not Set), you need to set Install if absent, Uninstall if present for that key in the Registry view. If the key already exists on the Target machine, the (Default) value will not be changed. %1 is not a valid .NET assembly to be installed to the Global Assembly Cache (where %1 is replaced with a full file path). Internal build error.

Troubleshooting Information This warning appears for every registry key you add to your project and do not manually set the default key. To set the (Default) value to (Value Not Set), you need to set Install if absent, Uninstall if present for that key in the Registry view.

-6550

Only valid assemblies can be installed to the Global Assembly Cache. Ensure that the file selected for installation is a valid assembly.

-6549

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6548

Internal build error.

-6547

The file '%1' already exists in the setup. Please modify the existing file instead of inserting a new one otherwise this file may not uninstall properly. An error occurred while testing the new file '%1' for potential conflicts. Internal build error.

-6546

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6545

-6544

Internal build error.

-6543

Internal build error.

-6542

Internal build error.

-6541

Internal build error.

1994

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6540

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6539

Internal build error.

-6538

Internal build error.

-6537

Internal build error.

-6536

An error occurred opening %1.

-6535

Internal build error.

-6534

An error occurred cloning the component %1. Internal build error.

-6533

-6532

An error occurred setting the updated component name for file %1. Error processing setup [1] for Upgrade Item [2]. This does not appear to be a valid setup.

-6530

This error occurs when a minor upgrade entry exists in the Upgrades view of InstallShield, and the previous installation specified does not exist in the location indicated. See Knowledge Base article Q108525 for resolution information. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6529

Internal build error.

-6528

Internal build error.

-6528

Internal build error.

-6527

Internal build error.

-6526

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

1995

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6525

Description The custom action %1 in the InstallExecuteSequence table is run from an installed file. It must be sequenced after the %2 action. Ensure that the custom action is sequenced properly and that the base action exists in the sequence.

Troubleshooting Information This error occurs when you have authored a custom action that runs from a file that is installed during your setup. The custom action must come after the InstallFiles action in the sequence. Otherwise the file will not exist on the target system when Windows Installer runs the custom action. The only exception to this is when you run this custom action on uninstallation. In that case, the file has already been installed so the custom action does not have to occur after InstallFiles. Check the Knowledge Base for information about this error, or request technical support.

-6524

The Custom Action %1 in the InstallExecuteSequence table is deferred and must be sequenced between %2 and %3. Ensure that the Custom Action is sequenced properly and that the base actions exist in the sequence. Internal build error.

-6523

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6522

Internal build error.

-6521

An error occurred setting the Check the Knowledge Base for information about this error, or required attribute on the feature %1. request technical support. An error occurred deleting the COM data for component %1. Internal build error. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6520

-6519

-6518

An error occurred deleting the file %1 from the SelfReg table. An error occurred adding the file %1 to the SelfReg table. The Msi Command Line Attribute of the release currently being built is setting the REINSTALL or REINSTALLMODE parameter. This will cause your setup to always run in Resume mode. The Latest Image %1 does not contain any Previous Images.

-6517

-6506

-6504

Check the Knowledge Base for information about this error, or request technical support.

1996

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6501

Description An error occurred building the ISDLLWrapper table. Component %1 is not found in the Component table. An error occurred building the ISDLLWrapper table. The File %1 is not found in the File table. The Shallow folder structure setting should not be used with multi-disk releases.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6500

Check the Knowledge Base for information about this error, or request technical support.

-6499

You can configure the Shallow Folder Structure setting on the Build tab of the Releases view. If error -6499 appears, select No for the Shallow Folder Structure setting so it will create a regular build folder structure. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6497

Patch Creation Warning: %1.

-6496

The file hash for the unversioned file '%1' does not differ from that of the previous version. This file will not be updated. The version for file '%1' only differs past the third version element. It must differ within the first three elements of the version string. The new file for file '%1' has the same version as the file that exists in the setup. This file will not be updated. The new file for file '%1' has a lower version than the file that exists in the setup. This file will not be updated. The file '%1' has no associated feature selected. This setting is required for adding new files. The new file path '%1' does not exist for file '%2'. Unable to set Just-In-Time compilation at install time because the Component %1 is configured to install to the Global Assembly Cache.

-6495

Check the Knowledge Base for information about this error, or request technical support.

-6494

Check the Knowledge Base for information about this error, or request technical support.

-6493

Check the Knowledge Base for information about this error, or request technical support.

-6492

Check the Knowledge Base for information about this error, or request technical support.

-6491

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6490

InstallShield 2010 User Guide

ISP-1600-UG00

1997

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6489

Description Unable to set Installer Class because the Component %1 is configured to install to the Global Assembly Cache. The latest image %1 does not contain any previous images.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6487

This error occurs if a latest image in the Patch Design view does not have at least one previous image. A latest image must have at least one previous image to create a patch. Check the Knowledge Base for information about this error, or request technical support.

-6486

The CAB files will not be digitally signed because the version of MSI.DLL is less than 2.0. The MsiFileHash table will not be built because the version of MSI.DLL is less than 2.0. The External File key '%1' does not exist in the Upgraded Image '%2'. The External File reference '%1' does not exist. An error occurred while verifying an External File key. The Target Image '%1' does not exist. The Upgraded Image '%1' does not exist. Unable to resolve target path for Directory Id '%1'. FON files must have a Font Title. Font %1 in component %2. An error occurred while adding the remove registry entry for the key '%1' and Value '%2'. Internal build error.

-6485

Check the Knowledge Base for information about this error, or request technical support.

-6584

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6483

-6482

-6481

-6480

-6479

-6478

-6477

-6476

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6475

Internal build error.

-6474

An error occurred while processing the registry value modifications made to the project.

1998

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6473

Description An error occurred while preparing to delete the value '%1' from the key '%2'. An error occurred while deleting the value '%1' from key '%2' for all features. An error occurred while deleting the value '%1' from key '%2' for feature '%3'. An error occurred while processing the registry key modifications made to the project. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6472

Check the Knowledge Base for information about this error, or request technical support.

-6471

Check the Knowledge Base for information about this error, or request technical support.

-6470

Check the Knowledge Base for information about this error, or request technical support.

-6469

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6468

An error occurred while making the settings to modify the registry key '%1' to '%2' for all features. An error occurred while making the settings to modify the registry key '%1' to '%2' for feature '%3'. Error in populating the CE setup info into the desktop setup. Error in creating the CE setup media from the .inf file. Error in adding CE Setup DLLs info while creating the .inf file to build CE setup media. Error in adding CE registry entries.

-6467

Check the Knowledge Base for information about this error, or request technical support.

-6466

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6465

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6464

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6463

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6462

Error in adding CE file associations.

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6461

Error in adding CE shortcuts.

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

InstallShield 2010 User Guide

ISP-1600-UG00

1999

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6460

Description Error in adding CE setup files.

Troubleshooting Information For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6459

Error in populating the information for the .inf file to build CE Setup media. An error occurred while creating an Additional File reference for the upgraded image '%1'. 'Ignore Missing Files' is set on the target image '%1'. This can not be set when using the 'Include Whole Files' option on the Upgraded Image. An unexpected error occurred while making the settings required to include whole files in the patch. Internal build error.

For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>

-6458

Check the Knowledge Base for information about this error, or request technical support.

-6457

Check the Knowledge Base for information about this error, or request technical support.

-6456

Check the Knowledge Base for information about this error, or request technical support.

-6455

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6454

Unable to create whole file patch for '%1'. An error occurred while attempting to rename the file. An error occurred while trying to rename the file '%1' back to its original file name '%2'. Internal build error.

-6453

Check the Knowledge Base for information about this error, or request technical support.

-6452

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6451

Internal build error.

-6449

Internal build error.

-6448

An error occurred while attempting to remove the file '%1' from the upgraded image. An error occurred while deleting the file table entry for the file '%1'.

-6447

Check the Knowledge Base for information about this error, or request technical support.

2000

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6446

Description An error occurred while deleting the component key for the upgraded image for the file '%1'. An error occurred while adding the file '%1' to the upgraded image. An error occurred while creating the new file entry for file key '%1'.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6445

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6444

-6443

An error occurred while creating a Check the Knowledge Base for information about this error, or new component for the file key '%1'. request technical support. Unable to create new feature off of the root feature '%1'. Unable to create feature component entry for feature '%1' and component '%2'. Unable to find feature '%s' while creating settings for new file. The setup '%1' specified by ISLatestRelease was built compressed. To use this variable you must build your setup uncompressed. An error occurred while setting the property %1. An error occurred while creating the configuration data Properties. An error occurred while creating configuration data for the Image Family %1. Internal build error. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6442

-6441

-6440

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6434

-6433

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6432

-6431

-6430

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6429

An error occurred while creating configuration data for the Target Image %1. An error occurred while creating configuration data for the Upgraded Image %1.

-6428

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

2001

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6427

Description The setup referred to by , '%1', does not exist. An error occurred while trying to resolve the variable . Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6426

-6425

-6424

The project contains a Minor Upgrade item, however the current release does not use a setup launcher. You will have to specify the upgrade command line manually for this minor upgrade to function properly. The project contains a Minor Upgrade item that references the setup %1. However, the referenced setup can only be upgraded with a Major upgrade. Please use the Major Upgrade item or the automatic upgrade item. An error occurred while adding Major Upgrade settings for %1. An error occurred determining if the setup %1 is a major upgrade. The Upgrade Item setup [MSI name].msi is not found. Unable to create upgrade settings. An unexpected error occurred processing upgrade item %1. An unexpected error occurred while processing items to be upgraded. There was an error creating the patch package. Writing contents of log file '%1' to output window. An error occurred populating the file hash for the unversioned file %1. The patch creation process returned the error code %1.

-6423

Check the Knowledge Base for information about this error, or request technical support.

-6422

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Ensure that the setup exists, that it is an .msi file, and that the name is correct.

-6421

-6420

-6419

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6418

-6415

-6414

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6413

2002

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6412

Description An error occurred while creating the patch package. An error occurred setting the file version for %1. An error occurred while attempting to copy the file %s to the release location. An error occurred while building the source path for file %1. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6411

-6410

-6409

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6408

-6407

An error occurred setting the PackageCode int he Updated Image. An error occurred setting the Product Version in the updated image. An error occurred while preparing the Upgraded Image. An error occurred preparing the Patch Configuration Properties file. Internal build error.

-6406

Check the Knowledge Base for information about this error, or request technical support.

-6405

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6404

-6403

-6402

An error occurred while preparing the release location for building. Unable to copy Original Setup file to release location. Unable to copy patch configuration properties template to release location. Internal build error.

-6401

-6400

-6309

Check the Knowledge Base for information about this error, or request technical support.

InstallShield 2010 User Guide

ISP-1600-UG00

2003

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6308

Description mscorsn.dll cannot be located on your system. You can set the path to mscorsn.dll using Tools | Options. The file is part of the Microsoft .NET Framework redistributable. %1. Unable to extract one or more files to '%1'. The file path is longer than the limit set by the operating system. Change the build location of the current release to a shorter path to resolve this issue. Port number specified for configuring IIS Virtual Directories is invalid. Could not load assembly "%1" because of : "%2".

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6307

Change the build location of the current release to a shorter path.

-6306

Make sure that the TCP port number that is specified for the virtual directory in the Internet Information Services view is valid. To learn more, see Configuring the TCP Port and Site Numbers. Make sure that you are able to load the dependent file and that the assemblies are accessible according to the assembly binding rules. For more information, see How the Runtime Locates Assemblies, available in the .NET Framework SDK help or in MSDN. Ensure that the CUB file is valid. Check the Knowledge Base for information about this error, or request technical support. Build the project in Microsoft Visual Studio or by using the Visual Studio command line.

-6305

-6304 -6303

Error validating with CUB file "%1". Internal build error

-6302

InstallShield could not resolve Visual Studio .NET project output "%1" from component "%2". You need to build the project in Visual Studio .NET or by using the Visual Studio .NET command line: devenv /build ConfigName [/project ProjName] [/ projectconfig ConfigName] SolutionName Setup.exe is not found in the Disk1 location: %1. Please make sure that the previous full build of your release was completed if you are running the Build Tables Only. A VB Script custom action exists in the project, but the VBScriptRuntime Merge Module has not been included.

-6274

This error occurs when the setup attempts to get the stamp from Setup.exe, but Setup.exe does not exist in the Disk1 folder. This happens when you cancel a full build in the middle of the process, and then run the Build Tables Only option.

-6273

Use the Redistributables view to add the VBScriptRuntime merge module to your project.

2004

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6271

Description File %1 not found. An error occurred building the MsiFileHash table record for this file. Verify that the file exists in the specified location. The record %1 in the Icon table exceeds the limit of %2 characters. As a result, the build will be unable to persist the database. An error occurred copying directory %1 to %2. Please ensure that the source directory's path is correct. Internal build error

Troubleshooting Information Ensure that the identified file exists in the specified location.

-6270

Make sure that the record is at or under the limited number of characters.

-6269

Check the source directorys path.

-6268

Check the Knowledge Base for information about this error, or request technical support. Ensure that the location is accurate.

-6267

An error occurred while extracting files from the cab file %1 to the location %2 An error occurred while attempting to create and initialize the CAB extraction engine for %1 An error occurred building feature '%1'. This feature has the same name (with different case) as another feature in the project. Duplicate feature names are not allowed in InstallScript MSI projects. Rename one of the features to fix this error. A record in the %1 table is using string ID '%2' for column '%3' but this string is blank and the column is not nullable. The number of allowed InstallScript custom actions (1000) has been exceeded. Please remove some InstallScript custom actions and rebuild the setup.

-6266

This error can occur when one or more files is not registered. Ensure that all files are registered.

-6265

Remove or rename one of the features.

-6264

Provide a string for use in the column.

-6263

This error appears when an InstallScript MSI, Basic MSI, or a merge module project has more than 1,000 InstallScript custom actions. Use the Custom Actions and Sequences view (or the Custom Actions view) to remove InstallScript custom actions so that your project no longer exceeds the maximum number allowed.

InstallShield 2010 User Guide

ISP-1600-UG00

2005

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6262

Description The Directory table contains the entry %1. This identifier is reserved. Defining it in the Directory table will yield unpredictable results at run time. Use the Direct Editor to rename this directory identifier. Internal build error

Troubleshooting Information Go to the Directory table in the Direct Editor and rename the directory identifier.

-6260

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Ensure that the digital signature information is correct. You can access the digital signature information in the Releases view or in the Release Wizards Digital Signature panel.

-6259

Internal build error

-6258

An error occurred extracting digital signature information from file "%1". Make sure the digital signature information provided in the IDE is correct. The build engine has detected that PRODUCT_NAME has been defined in the string table. At run time, your setup will display this value as your Product Name instead of the Product Name values defined in the IDE. Internal build error

-6257

This warning message occurs when the ID PRODUCT_NAME has been defined in the String Editor view. This string identifier overrides the Product Name values set in the General Information view or for the product configuration in the Releases view.

-6255

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. This error occurs when you are using a .NET Project Output that includes subdirectories. InstallShield does not currently support installing these files to the Global Assembly Cache. To avoid this error, change the directory for the component (for example, to INSTALLDIR), or statically add the files and configure them.

-6254

An error occurred building the MsiFileHash table for File %1 Internal build error

-6253

-6252

Internal build error

-6251

Internal build error.

-6250

Internal build error.

-6249

Component %1 is configured to install to the Global Assembly Cache but includes one or more subdirectories.

2006

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6248

Description Could not find dependent file %1, or one of its dependencies of component %2

Troubleshooting Information Use the Build Tables & Refresh Files option to build the release if the release location is in <ISProjectDataFolder> or <ISProjectFolder>. For more information, see How the Run time Locates Assemblies, available in the .NET Framework SDK help or on MSDN. Check the Knowledge Base for information about this error, or request technical support. If you have the Visual Studio release candidate, you can copy dotnetfx.exe from Windows Component Update CD, in the dotnetframework directory, to
[ProgramFilesFolder]InstallShield\2010\Redist\0409 \i386.

-6247

The .NET Framework redistributable %1 is not found on the system. %2

-6246

Could not add dotnetfx.exe to the built image. If you are including .NET 1.1, make sure a core language is selected. One or more of the project's components contain .NET properties that require the .NET Framework. It is recommended that the release include the .NET Framework. One or more of the project's components contain .NET properties that require the .NET Framework. However, the .NET Framework cannot be detected. %2

Check the Knowledge Base for information about this error, or request technical support.

-6245

Consider adding the .NET Framework redistributable to your project. If the .NET Framework is not present on the target system at run time, the installation installs it. To learn more, see Adding .NET Framework Redistributables to Projects.

-6244

Check the Knowledge Base for information about this error, or request technical support. If you have the Visual Studio release candidate, you can copy dotnetfx.exe from Windows Component Update CD, in the dotnetframework directory, to
[ProgramFilesFolder]InstallShield\2010\Redist\0409 \i386.

-6243

InstallUtilLib.dll cannot be located on your system. This file is required for Installer custom actions. You can set the path to InstallUtilLib.dll using Tools | Options. The file is part of the Microsoft .NET Framework redistributable. %1 Internal build error.

Set the path to InstallUtilLib.dll by selecting Options from the Tools menu and clicking the .NET tab.

-6242

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6241

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2007

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6240

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Make sure that the solution exists at the location specified. To find the solution information, navigate to the InstallShield table in the Direct Editor and find the value for ISDotNetSolution. In addition, ensure that Visual Studio is installed on the build machine.

-6239

Internal build error.

-6238

Internal build error.

-6237

Internal build error.

-6236

Internal build error.

-6235

Internal build error.

-6234

Internal build error.

-6233

Internal build error.

-6232

Internal build error.

-6231

Internal build error.

-6230

Internal build error.

-6229

Internal build error.

-6228

Internal build error.

-6227

.NET scan of Component %1 failed

-6226

Opening Visual Studio .NET solution

2008

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6225

Description Resolving Visual Studio .NET project output "%1"

Troubleshooting Information Make sure the project exists in the solution. To find the solution information, navigate to the InstallShield table in the Direct Editor and find the value for ISDotNetSolution. In addition, ensure that project has the specified output. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Make sure the project exists in the solution. To find the solution information, navigate to the InstallShield table in the Direct Editor and find the value for ISDotNetSolution. In addition, ensure that project has the specified output. This error occurs when manual entries made to the MsiAssembly and MsiAssemblyName tables conflict with .NET assembly properties that result from scanning. To eliminate this error, set the components .NET Scan at Build property to None or delete the values that were manually added to the MsiAssembly and MsiAssemblyName tables. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6224

Processing merge module %1 of feature %2 Internal build error.

-6223

-6222

Internal build error.

-6221

Could not resolve Visual Studio .NET project output "%1" from component %2

-6220

Dynamically acquired %1 data conflicts with static data associated with component %2. Overwriting with dynamic data.

-6219

Internal build error.

-6218

Internal build error.

-6217

Internal build error.

-6216

Internal build error.

-6215

Internal build error.

-6214

Internal build error.

-6213

Internal build error.

-6212

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2009

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6211

Description Destination of Component %1 is GlobalAssemblyCache but key file is not a .NET assembly An error occurred building COM .NET Interop information for Component %1

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6210

InstallShield calls regasm.exe on the .NET .dll to create a .reg file. This should create a .reg file. Then, the .reg file is imported. If either of these steps fails, error -6210 occurs. Make sure that the components key file is a .NET .dll and that the .NET assembly has types to export. Set the path to Regasm.exe by selecting Options from the Tools menu and clicking the .NET tab.

-6209

Regasm.exe cannot be located on your system. This file is required to obtain .NET COM Interop information for Components. You can set the path to Regasm.exe using Tools | Options. The file is part of the Microsoft .NET Framework redistributable. %1 Internal build error.

-6208

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6207

An error occurred building Setup File %s. An error occurred building Component %1. The Component's destination directory %2 is not found in the directory table. Change the Component's destination to a valid location. An error occurred importing %1 for Component %2. Make sure the file exists in the specified location and that the file is a valid REG file. Internal build error.

-6205

-6204

Check the Knowledge Base for information about this error, or request technical support.

-6203

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6202

Internal build error.

-6201

Internal build error.

-6200

Internal build error.

2010

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6199

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Ensure that the .msi package is not currently being used by another process.

-6197

An error occurred streaming %1 into %2. Check to make sure the .msi package is not currently in use by another process. Internal build error.

-6196

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6195

Internal build error.

-6194

Internal build error.

-6193

Internal build error.

-6192

Internal build error.

-6191

Internal build error.

-6190

Internal build error.

-6189

Internal build error.

-6188

Internal build error.

-6187

Internal build error.

-6186

Internal build error.

-6185

Internal build error.

-6184

Internal build error.

-6183

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2011

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6182

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Make sure that you have enough free hard disk space on the drive that contains the interim folder under your product configuration (for example, \MySetups\Your Project Name27\Product Configuration 1\Interm). Make sure that your project includes at least one file or rebuild your media.

-6181

Internal build error.

-6180

Internal build error.

-6179

Internal build error.

-6178

Internal build error.

-6177

Internal build error.

-6176

Internal build error.

-6175

Internal build error.

-6174

Internal build error.

-6173

An error occurred renaming file %1 to %2

-6172

An error occurred while creating a CAB file. For incremental compressed builds, make sure your project includes at least one file or rebuild your media. Internal build error.

-6171

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6170

Internal build error.

-6169

Internal build error.

-6168

Internal build error.

2012

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6167

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6166

An error occurred updating the Word Count Summary Property of the Summary Information Stream. An error occurred exporting table %1. Internal build error.

-6165

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Use the Direct Editor to ensure the data type is correct in the specified column and table.

-6164

-6163

Internal build error.

-6162

Internal build error.

-6161

Internal build error.

-6160

Internal build error.

-6159

The data type for a column in a table in the source project is incompatible with that of the target database. Internal build error.

-6158

Check the Knowledge Base for information about this error, or request technical support. Use the Direct Editor to ensure the data can fit in the allocated table field. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. This error occurs only when the build is terminated during the build process. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6157

Target field in table is too small for data. Internal build error.

-6156

-6155

Internal build error.

-6154

Build canceled by the user.

-6153

Internal build error.

-6152

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2013

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6151

Description Cannot save target database.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Setup.rul is required for the project. Check to ensure that this file is included in the project. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Associate the specified feature with a Setup Type.

-6150

Internal build error.

-6149

Internal build error.

-6148

Cannot insert record in the specified table. Cannot update the specified target field in the table. Cannot create new record in the specified table. Cannot retrieve value of the specified column in the table. Cannot open database view for table %1. Internal build error.

-6147

-6146

-6145

-6144

-6143

-6142

Internal build error.

-6141

Internal build error.

-6140

Internal build error.

-6139

Internal build error.

-6138

Error compiling Setup.rul.

-6137

Internal build error.

-6136

Internal build error.

-6135

The specified feature is not associated with any Setup Type.

2014

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6134

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the properties specified in the current Product Configuration to ensure they are valid.

-6133

An error occurred updating properties specified in the current Product Configuration. Error Building the Storages table.

-6132

Use the Direct Editor to verify that the data in the table is correct. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Ensure your build contains at least one component.

-6131

Internal build error.

-6130

Internal build error.

-6129

Internal build error.

-6128

Internal build error.

-6127

Internal build error.

-6126

Internal build error.

-6125

Internal build error.

-6124

Unknown Exception.

-6123

Unknown Exception.

-6122

No components are included in the build. Error occurred copying built merge modules to the Modules folder. The Resource Linker failed to build the specified DLL. The resource linker could not be found.

-6121

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Open the Options dialog, available from the Tools menu, and set a location to a Resource linker.

-6120

-6119

InstallShield 2010 User Guide

ISP-1600-UG00

2015

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6118

Description The Resource compiler failed to build the specified RES file required to link the DLL. The resource compiler could not be found. Failed to export .rc file from project: %1. Unable to retrieve version information from ISSetup.dll.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-6117

Open the Options dialog, available from the Tools menu, and set a location to a Resource compiler. Check the Knowledge Base for information about this error, or request technical support. This error may occur if the ISSetup.dll file in the following location is corrupted, or if it has been removed from the build machine. This file should be in the following location:
InstallShield Program Files Folder\redist\Language Independent\i386

-6116

-6115

To resolve this error, try running a repair of InstallShield. -6114 Internal build error. Check the Knowledge Base for information about this error, or request technical support. Check to ensure that a previous media was built before selecting "Build Tables Only" or "Build Tables and Refresh Files" and ensure the previous media was not deleted. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6113

An error occurred during the incremental build.

-6112

Error deleting a file streamed into Setup.exe. Internal build error.

-6111

-6110

Internal build error.

-6109

Internal build error.

-6108

Internal build error.

-6107

Internal build error.

-6106

Internal build error.

-6105

Internal build error.

2016

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6104

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the file to ensure it exists in the specified location.

-6103

Unable to get system settings for the specified file. Error searching for dynamic files matching "%1". Internal build error.

-6102

Make sure the dynamic file flag specified is valid.

-6101

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check to make sure the text file exists in the specified location %1 will contain the full path to an .rtf file. If it is empty, the ISBuildSourcePath column for control %2 is empty. For Scrollable text controls, ISBuildSourcePath in the Control table should point to a valid file.

-6100

Internal build error.

-6099

Internal build error.

-6098

Internal build error.

-6097

Internal build error.

-6096

Internal build error.

-6095

Internal build error.

-6094

Internal build error.

-6093

Internal build error.

-6092

Internal build error.

-6091

Internal build error.

-6090

The scrollable text file:'%1' specified for the Control:'%2' does not exist.

InstallShield 2010 User Guide

ISP-1600-UG00

2017

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6089

Description Both the Text and ISBuildSourcePath columns for Control:'%1' contain path information, the Text column will be used. Internal build error.

Troubleshooting Information The Control %1 cannot have entries in both ISBuildSourcePath and the Text columns of the Control table. Go to the Direct Editor and remove the unused information in either ISBuildSourcePath or Text column.

-6088

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6087

Internal build error.

-6086

Internal build error.

-6085

Internal build error.

-6084

Internal build error.

-6083

Internal build error.

-6082

Internal build error.

-6081

Internal build error.

-6080

Internal build error.

-6079

Internal build error.

-6078

Internal build error.

-6077

Internal build error.

-6076

Internal build error.

-6075

Internal build error.

-6074

Internal build error.

2018

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6073

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6072

Internal build error.

-6071

Internal build error.

-6070

Internal build error.

-6069

Internal build error.

-6068

Internal build error.

-6067

Internal build error.

-6066

Internal build error.

-6065

Internal build error.

-6064

Internal build error.

-6063

Internal build error.

-6062

Internal build error.

-6061

Internal build error.

-6060

Internal build error.

-6059

Internal build error.

-6058

Internal build error.

-6057

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2019

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6056

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6055

Internal build error.

-6054

Internal build error.

-6053

Internal build error.

-6052

Internal build error.

-6051

Internal build error.

-6050

Internal build error.

-6049

Internal build error.

-6048

Internal build error.

-6047

Internal build error.

-6046

Internal build error.

-6045

Internal build error.

-6044

Internal build error.

-6043

Internal build error.

-6042

Internal build error.

2020

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6041

Description Internal build error.

Troubleshooting Information This build error can occur if a project includes support for multiple languages and if the release is configured to remove unused directories from the Directory table of the .msi package. To resolve this error: 1. In the View List under Media, click Releases. 2. In the Releases explorer, click the release that you were building when you encountered this error. 3. Click the Build tab. 4. For the Keep Unused Directories setting, select Yes. For more information, see Build Tab for a Release.

-6040

Internal build error.

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6039

Internal build error.

-6038

Internal build error.

-6037

Internal build error.

-6036

Internal build error.

-6035

Internal build error.

-6034

Internal build error.

-6033

Internal build error.

-6032

Internal build error.

-6031

Internal build error.

-6030

Internal build error.

-6029

Internal build error.

InstallShield 2010 User Guide

ISP-1600-UG00

2021

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6028

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Run the upgrade from within Microsoft Visual Studio to avoid this warning. OR Open the .ism project within the same solution when creating it in InstallShield.

-6027

InstallShield cannot convert the value of the ISBuildSourcePath column in the File table for the Visual Studio .NET output files. InstallShield is not running within Visual Studio .NET. OR InstallShield cannot convert the value of the ISBuildSourcePath column in the File table for the Visual Studio .NET output files. The opened Visual Studio .NET solution name is different from the solution name stored in the .ism project.

-6026

Internal build error.

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6025

Internal build error.

-6024

Internal build error.

-6023

Internal build error.

-6022

Internal build error.

-6021

Internal build error.

-6020

Internal build error.

-6019

Internal build error.

-6018

Internal build error.

-6017

Internal build error.

-6016

Internal build error.

2022

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6015

Description Error generating short file name for file: %1. The shortcut for a component is invalid because it does not reference an icon resource. The component condition for the specified component is invalid. Failed to set codepage for language %1. Failed to open string table.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Specify an icon file and icon index for this shortcut to resolve this issue.

-6014

-6013

Use the Components view to modify the condition property of the specified component. Install the codepage for the specified language.

-6012

-6011

Check the Knowledge Base for information about this error, or request technical support. Verify the digital signature information provided in the current Release to sign the Netscape media (Netscape Certificate ID, Password, and Certificate Path) is correct. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6010

An error occurred digitally signing media for Netscape.

-6009

An error occurred creating the Web media for Internet Explorer. An error occurred creating the Web media for Internet Explorer. Error occurred copying user specified uncompressed support files to Disk1. Internal build error.

-6008

-6007

-6006

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6005

An error occurred creating the Package Definition File. An error occurred streaming the digital certificate for Msi engine(s) into setup.exe. An error occurred streaming '%1' into setup.exe. Error while attempting to run the custom build setup for objects. An Error occurred while preprocessing ISObjectProperty. Make sure that ll items have a valid IncludeInBuild tag.

-6004

-6003

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-6002

-6001

InstallShield 2010 User Guide

ISP-1600-UG00

2023

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6000

Description An Error occurred gathering information about supplemental merge modules. An error occurred creating the build report. The Directory table contains a circular reference. Could not write custom records to the _Validation table. Could not retrieve the standard table list. Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-5099

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. The user chose the "Stop build process when first error is encountered" in Tools | Options menu. An error occurred so the build was stopped. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-5098

-5097

-5096

-5095

-5094

Internal build error.

-5093

Internal build error.

-5092

Internal build error.

-5091

Internal build error.

-5090

Internal build error.

-5089

Internal build error.

-5088

Internal build error.

-5087

Stop at first error.

-5086

Treat warnings as errors.

-5085

Internal build error.

2024

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5084

Description Internal build error.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Open the Binary table in the Direct Editor to verify that this entry exists. Check the Knowledge Base for information about this error, or request technical support.

-5083

Internal build error.

-5082

Internal build error.

-5081

Could not write to setup.ini.

-5080

Internal build error.

-5079

Internal build error.

-5078

Internal build error.

-5077

Internal build error.

-5076

Internal build error.

-5075

Internal build error.

-5074

Internal build error.

-5073

The binary key %1 is missing.

-5072

Internal build error.

-5071

Standard DLL Function syntax error. Make sure you specify void if your function does not return anything. Click the ellipsis button (...) in the Function Signature field of the Custom Action to validate your signature. Standard DLL Function Name syntax error. Internal build error. Click the ellipsis button (...) in the Function Signature field of the Custom Action to validate your signature. Check the Knowledge Base for information about this error, or request technical support. Click the ellipsis button (...) in the Function Signature field of the Custom Action to validate your signature

-5070

-5069

-5068

Standard DLL Function parameters syntax error.

InstallShield 2010 User Guide

ISP-1600-UG00

2025

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5066

Description Standard DLL Function return value syntax error. Internal build error.

Troubleshooting Information Click the ellipsis button (...) in the Function Signature field of the Custom Action to validate your signature Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Use the components Source Location property to prevent this warning. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Verify the file specified exists.

-5065

-5064

Internal build error.

-5063

Internal build error.

-5062

Internal build error.

-5061

The specified filename already exists. Internal build error.

-5060

-5059

Internal build error.

-5058

Could not obtain merge module dependencies. Could not obtain merge module catalog. Internal build error.

-5057

-5056

-5054

Could not determine the size of the file "%1". The file "%1" could not be found. Could not determine the free space on the volume %1. Could not remove the read-only attribute from the file "%1". Internal build error.

-5053 -5052

Verify the file specified exists. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-5051

-5050

-5049

Internal build error.

2026

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5048

Description Could not create the file "%1".

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. See Knowledge Base article Q105439 for information about this error. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check in the Releases view to ensure the volume specified exists. Check the Knowledge Base for information about this error, or request technical support. You cannot use a stringID for a destination. Find the component or feature using this string ID and change the destination using a directory identifier. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct.

-5047

Cannot create directory %1.

-5046

Could not preserve previous Build Reports. Could not preserve previous Build Logs. Cannot delete directory %1.

-5045

-5044

-5043

The volume does not exist.

-5042

Internal build error.

-5041

The string ID "%1" was used to specify a Component or Feature destination. Internal build error.

-5040

-5039

Internal build error.

-5038

Internal build error.

-5037

Internal build error.

-5036

Internal build error.

-5033

Internal build error.

-5032

Error building ListView table.

-5031

Error building ListBox table.

-5030

Error building ComboBox table.

InstallShield 2010 User Guide

ISP-1600-UG00

2027

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5029

Description Error building CheckBox table.

Troubleshooting Information Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Use the Direct Editor to verify that the data in the table is correct. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. See Knowledge Base article Q107116 for information about this error.

-5028

Error building RadioButton table.

-5027

Error building Control table.

-5026

Error building Dialog table.

-5025

Could not save package.

-5024

Internal build error.

-5023

Error building File table.

-5022

Error building Feature table.

-5021

Error building Component table.

-5020

Error building Directory table.

-5019

Internal build error.

-5018

The logical disk does not contain any features. Internal build error.

-5017

-5016

Internal build error.

-5015

Internal build error.

-5014

An error occurred building icon "%1". The specified Icon key was not found in the Icon table. Internal build error.

-5013

Check the Knowledge Base for information about this error, or request technical support.

2028

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5012

Description Invalid Feature_ value for %1.

Troubleshooting Information Use the Direct Editor to open the specified table and ensure data in that table is valid. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check to make sure the project is not already open by the IDE.

-5011

Internal build error.

-5010

Internal build error.

-5009

The schema Summary Stream must be 200 or later. Intel64 must be specified in the template of the Summary Stream. Internal build error.

-5008

-5007

-5006

Could not save "%1".

-5005

Internal build error.

-5004

Could not open the project with write access. Internal build error.

-5003

Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Use the InstallScript Debugger to step through your InstallScript to identify problems. Use the InstallScript Debugger to step through your InstallScript to identify problems. Ensure that the file is self-registering and verify that the selfregistration process does not fail.

-5002

Internal build error.

-5001

Could not copy setup.ini.

-4701

An error occurred building the OneClick Install Web page. There were warnings compiling InstallScript. There were errors compiling InstallScript. The build was unable to extract COM information from a file in a component.

-4371

-4370

-4354

InstallShield 2010 User Guide

ISP-1600-UG00

2029

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -4352

Description There is no key file for the specified component. A key file is required for dynamic COM extraction. Dynamically acquired MIME text/ scriptlet conflicts with static data associated with component %1. Overwriting with dynamic data.

Troubleshooting Information Specify the key file for the specified component from the Components view.

-4350

This warning occurs when you add a COM server .dll file using the Component Wizard, which does static COM extraction, and then later change the components COM Extract at Build setting to Yes. The dynamically extracted data conflicts with the static data in the .ism file. Ensure that the COM extraction setting is accurate. Check the Knowledge Base for information about this error, or request technical support.

-4349

Failed to build %1 information for dynamically extracted COM components. Failed to build %1 information for dynamically extracted COM components. Failed to build information for dynamically extracted COM components. Failed to build information for dynamically extracted COM components. Failed to build information for dynamically extracted COM components. Failed to build information for dynamically extracted COM components. Failed to build information for dynamically extracted COM components. Failed to initialize COM extraction module. Could not write string ID %1 to the InstallScript strings file.

-4348

Check the Knowledge Base for information about this error, or request technical support.

-4347

Check the Knowledge Base for information about this error, or request technical support.

-4346

Check the Knowledge Base for information about this error, or request technical support.

-4345

Check the Knowledge Base for information about this error, or request technical support.

-4344

Check the Knowledge Base for information about this error, or request technical support.

-4343

Check the Knowledge Base for information about this error, or request technical support.

-4340

Check the Knowledge Base for information about this error, or request technical support. This error pertains to projects containing InstallScript (either an InstallScript MSI project or a Basic MSI project with InstallScript custom actions). At build time, InstallShield creates an .ini file that contains all of the string entries in the project. In the error message, %1 represents the line number in this .ini file that fails to get written. If the line number is 0, a general failure to create or write to the .ini file occurred. This might indicate that you are out of disk space.

-4327

2030

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -4303

Description An unexpected error occurred while synchronizing the file key in the specified component. A conflict was encountered while synchronizing file key %1 in component %2. Could not find the .msi file for key synchronization. Cannot copy source %1 to target %2 Error opening MSI database %1.

Troubleshooting Information Check the Knowledge Base for information about this error, or request technical support.

-4302

Check the Knowledge Base for information about this error, or request technical support.

-4301

Check to ensure the specified MSI file exists.

-4093

Ensure that the file exists, that there is enough disk space on the target location, and that you are able to copy to the location. Check the Knowledge Base for information about this error, or request technical support. Verify that the merge module exists in the merge module search path. This error may occur if an installation project that contained an InstallScript MSI object was upgrade to InstallShield 2010, which no longer supports InstallScript MSI objects. If this is the case, remove that objects from your project through the Redistributables view. You can upgrade the InstallScript MSI object to InstallShield 2010, which will convert it to a merge module project. Then you can add that merge module to your installation project. Check the Knowledge Base for information about this error, or request technical support. Ensure the specified file exists and is not set to read-only. InstallShield generates this warning if the Template Summary setting contains an invalid entry. To learn about how to enter valid values, see Using the Template Summary Property. Use the Direct Editor to open the specified table and ensure data in that table is valid. Change the function block to follow the form "Module::Function".

-4092

-4075

File not found. An error occurred merging module '%1' for feature '%2'.

-4072

Error retrieving the dependencies for %1. Cannot delete file. Ignoring invalid template %1 in the Summary Stream.

-4006 -3876

-3851

Error building the specified table.

-3713

The function block must be in the form "Module::Function". Cannot extract icon with specified index from the file specified for the icon.

-3204

Ensure the file containing the icon exists, and the index number is present in the file.

InstallShield 2010 User Guide

ISP-1600-UG00

2031

Chapter 45: Errors and Warnings Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -3138

Description The Patch Configuration specified does not exist in the project. Please verify that the Patch Configuration exists and that the spelling and character case match. Application path %1 does not contain destination of associated component %2.

Troubleshooting Information When using the BuildPatchConfiguration method on the IPWiProject object, this error might occur.

-3114

This error occurs when an Application Path entry was created in the Advanced Settings section of the Components view, but no Application Path was specified. To correct this, set the Application Path entry. Because an Application Path is also a Registry Entry, this error might occur if a registry path like the following is created, but is missing the path entry:
HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersio n\App Paths

To correct this, specify a path entry. -3028 An error occurred replacing string IDs in the specified table. Failed to add Binary table %1 to package. Could not overwrite file. The size specified for the disk is too small for the feature. The size specified for the disk is too small for the file. No files are included in the project. A required string ID was left blank in the specified table. Provide a string ID. Check the Knowledge Base for information about this error, or request technical support. Ensure the specified file is not read-only. Using the Release Wizard, change the Media Format to a larger size. Using the Release Wizard, change the Media Format to a larger size. This warning occurs when you have not included any files in your project. Use the Files and Folders view to add files into your project to avoid this error. Check the Knowledge Base for information about this error, or request technical support. Ensure that IsCmdBld.exe is executed in the relative directory. You can do this by locating the files specified in the error message and launching IsCmdBld.exe within their directory. Ensure that the CUB file name is spelled correctly.

-3016

-2200 -1531

-1530

-1527

-1505

Could not add the CAB file to the MSI package. Could not compress "%1" into "%2".

-1501

-1119

The specified CUB file does not exist. Failed signing %1.

-1027

Check the digital signature information (digital keys and password) provided for the current release.

2032

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -1024

Description File not found. Cannot stream the file into the Binary table. Cannot copy source '%1' to target %2. Cannot rename a directory.

Troubleshooting Information Ensure the specified file exists.

-1015

Check the Knowledge Base for information about this error, or request technical support. Windows Explorer or a DOS prompt may be pointing to a subfolder of the release output folder (Disk1) or to the Interm folder, locking it. Change the current directory. Close any open files in the Disk1 folder. Close Msidb.exe if it is open. Close the application that is currently using the file and re-run the build process. Increase disk space on the build target, or select a new target for the build. If the target drive cannot be located, select a new target, or ensure permissions are set correctly for the target drive. Ensure that the file exists, that there is enough disk space on the target location, and that you are able to copy to the location. This error could occur when you are building a compressed setup and run out of disk space or temporary space on the machine. Another reason that this error might occur is due to an internal error occurred with the CAB APIs. Contact technical support for more information. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-1014

-1013

The specified file is being used by another program. Insufficient disk space or the target drive cannot be located.

-1009

-1007

Cannot copy source %1 to target %2 Could not compress %1 into %2 (where %1 is the full path to a file and %2 is the name of a .cab file).

-1005

-1001

Error opening MSI database.

-1000

Invalid product configuration. Failed to create directory.

Media Build Errors and Warnings


Media build errors that occur before the build is generated are displayed in an error message dialog box; those that occur while the build is generated are displayed in the Output window and are recorded in the log file.
Table 45-3: Media Build Errors and Warnings Error or Warning Number 118 129

Description Could not find CAB file with file #number. The system cannot find the path specified. Media too small. Could not fit filename on disk number.

InstallShield 2010 User Guide

ISP-1600-UG00

2033

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Table 45-3: Media Build Errors and Warnings (cont.) Error or Warning Number -5000 -5006 -5020 -5021 -5032 -5050

Description File group 'file group name' contains a link to a non-existent file - 'filename'. 'EnterPassword' dialog resource not found in resource library filename. The built media files could not be uploaded to the site URL. The URL could not be parsed. The built media files could not be copied to the folder 'path'. Failed to sign the self-extracting executable file. The font data could not be read from the project file. The 'Font' table may be missing from the project. Unable to create font data file: 'data file path and name' No features included in the media. Could not create instance of CABEngine. CABEngine component might not be installed or registered properly. You may need to reinstall InstallShield. Could not open the following media for the differential build - "path to media header file" Product Version is not specified in the Project Settings property sheet. File could not be found - "InstallShield Program Files Folder\Redistributable\Compressed Files\Language Independent\OS Independent\Corecomp.ini" Not enough free disk space. The Disk Images directory is use by another program. PVK file invalid. SPC file invalid. Certificate invalid. Certificate expired. Build canceled by the user. Failed saving object property.

-5051 -7040 -7041

-7043 -7044 -7045

-7126 -7127 -7273 -7274 -7275 -7276 -7380 -9008

Error 118
Description
Could not find CAB file with file #number. The system cannot find the path specified.

2034

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Notes
This error occurs when you build an already built media and one of the cabinet files that was previously created no longer exists. If you encounter this error, rebuild the media.

Error 129
Description
Media too small. Could not fit filename on disk number.

Notes
This error can occur for any of the following reasons:

Total size of files required to be on one disk is greater than selected disk size. An installation requires that certain files reside on the first disk, including the files placed in the Support Files view (such as Setup.bmp and License.txt) and Data1.cab. Also, an installation requires that certain files be compressed in Data1.cab, including the following: files needed by the objects you have included in your setup resource files for each language your installation supports the file for the dialog box skin you selected

If your installation includes a large skin, setup files, or objectsor a large number of support files, objects, or languagesthe total size of files required to be on the first disk can be greater than the disk size you selected in the Release Wizards Media Type panel. To avoid this error and complete the build successfully, you must either remove the skin or some support files or objects from your project, reduce the size of some support files or choose a skin with a smaller file, or select a larger disk size. If the error message specifies a disk other than disk 1, some of the files in your components may be too large to fit on the disk even when they have been compressed. In this case, you must either remove the large files, reduce their size, or select a larger disk size.

There is not enough space on your drives.

To create the installations cabinet files, the release builder requires space in the systems temporary folder and in the build location. To avoid this error, make sure you have enough free space on the drive on which the systems temporary folder resides and the drive on which you have specified the build location. You can find the systems temporary folder by typing in the word "set" at a DOS prompt. The temporary folder is identified by the value of the environment variable TEMP. You can find the build location by looking at the Release Wizards General Options panels Advanced dialog box or the Release views Release Location property.

There is not enough virtual memory.

On Windows NT, this error can be caused by a lack of free virtual memory rather than a lack of free hard disk space. For information, visit Knowledge Base article Q102757.

InstallShield 2010 User Guide

ISP-1600-UG00

2035

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Warning -5000
Description
Component 'component name' contains a link to a non-existent file - 'filename'

Notes
The indicated component contains a link to the indicated file, which cannot be found. Remove the file from the component, or if you have renamed or moved the file, restore it to the indicated name and location.

Warning -5006
Description
'EnterPassword' dialog resource not found in resource library filename.

Notes
You have selected the Show Password dialog during setup initialization option in the Release Wizards Password panel or the Show Password Dialog property in the Release view, but one or more copies of _Isres.dll do not contain a resource template for this dialog box. (A separate instance of this warning is displayed for each copy of _Isres.dll that does not contain the resource template.) To fix this problem, you might need to reinstall the InstallShield language packs. Language packs are available only in the Premier edition of InstallShield. For more information, visit the Acresso Web site.

Warning -5020
Description
The built media files could not be uploaded to the site URL. The URL could not be parsed.

Notes
Verify that the URL you specified in the Release views FTP Host Address property exists.

Warning -5021
Description
The built media files could not be copied to the folder 'path'.

Notes
You have selected the Copy the built media files to the folder option in the Release Wizards Postbuild Options panel or the Copy to Folder property in the Release view; the built media files could not be copied to the folder that you specified with that option. Make sure that the path you specified exists and is writable.

2036

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Warning -5032
Description
Failed to sign the self-extracting executable file.

Notes
The build failed to sign the self-extracting executable file as specified in the Release Wizards Digital Signature panel or the Release views Sign Media property. Among the possible causes of this error are an invalid or missing private key file.

Warning -5050
The font data could not be read from the project file. The 'Font' table may be missing from the project.

Notes
Check the Direct Editor to see if a Font table is included in your project. If it is not, and you cannot use source control software to roll back to a version of your project that did include that table, try deleting the font files from your project and then re-including them.

Warning -5051
Description
Unable to create font data file: 'data file path and name'

Notes
Make sure that the specified path exists and is writable, and that a read-only file of the same name does not already exist at the same location.

Error -7040
Message
No features included in the media. Your specified media does not contain any features. All media builds must include at least one feature.

Notes
Make sure that you have created at least one feature in the Features view.

InstallShield 2010 User Guide

ISP-1600-UG00

2037

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Error -7041
Description
Could not create instance of CABEngine. CABEngine component might not be installed or registered properly. You may need to reinstall InstallShield.

Notes
To resolve the problem, manually register the file MediaBuild40.dll (in the InstallShield\MediaBuild folder of your build machines common files folder) using Regsvr32.exe (in the Windows system folder), using a DOS command line like the following:
Regsvr32.exe "C:\Program Files\Common Files\InstallShield\MediaBuild\MediaBuild40.dll"

Error -7043
Description
Could not open the following media for the differential build - "path to media header file"

Notes
The message refers to a media header file that you specified in the Differential Media list box in the Release Wizards Update panel. This error can be caused by any of the following conditions:

The file does not exist. The file is corrupted. The file is an incompatible media, for example, a media built by InstallShield Professional 5.x.

Error -7044
Description
Product Version is not specified in the Product Properties view.

Notes
You must specify a non-null value in the Product Version setting in the General Information view.

Error -7045
Description
File could not be found - "path\Corecomp.ini"

Notes
Corecomp.ini could not be found in the indicated location. If you have renamed or moved Corecomp.ini, place a copy in the indicated location with the file name Corecomp.ini. If you cannot restore Corecomp.ini in this way, run a repair of InstallShield.
2038 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Error -7126
Message
Unable to build the setup.

Description
There is not enough free disk space to build the setup.

Notes
The Media Wizard requires space in the system's temporary folder.Make sure you have enough free space on this drive, as well as in the build location.

Error -7127
Description
The Disk Images directory is use by another program.

Notes
This error can occur for any of the following reasons:

The Disk Images or Disk1 folder that you are trying to build to may be open in Windows Explorer or DOS. Open a different folder in the Windows Explorer or DOS window, or close the window, and then rerun the media builder. The Disk Images or Disk1 folder is read-only. Right-click the folder in Windows Explorer and click Properties. If the folder is marked as read-only, uncheck the read-only check box and then rerun the media builder. A folder named bldback exists under the folder where the media is being built to. If such a folder exists, delete it, and then rerun the media builder.

Error -7273
Description
PVK file invalid.

Notes
The private key file that you specified (using the Release Wizards Digital Signature panel, the Release views Sign Media property, or the Isign.exe utility) when digitally signing your release or package is invalid. Specify a valid private key file and build again.

InstallShield 2010 User Guide

ISP-1600-UG00

2039

Chapter 45: Errors and Warnings Media Build Errors and Warnings

Error -7274
Description
SPC file invalid.

Notes
The software publishing credentials file that you specified (using the Release Wizards Digital Signature panel, the Release views Sign Media property, or the Isign.exe utility) when digitally signing your release or package is invalid. Specify a valid software publishing credentials file and build again.

Error -7275
Description
Certificate invalid.

Notes
Your software publisher certificateas identified by the software publishing credentials file that you specified (using the Release Wizards Digital Signature panel, the Release views Sign Media property, or the Isign.exe utility) when digitally signing your release or packageis invalid. Specify a valid software publisher certificate and build again.

Error -7276
Description
Certificate expired.

Notes
Your software publisher certificateas identified by the software publishing credentials file that you specified (using the Release Wizards Digital Signature panel, the Release views Sign Media property, or the Isign.exe utility) when digitally signing your release or packageis expired. Specify a current software publisher certificate and build again.

Error -7380
Message
Build canceled by the user.

Description
The build has been canceled by the user.

Notes
The user canceled the build process by clicking the Cancel button.
2040 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings MSI/MSM Conversion Errors

Error -9008
Description
Failed saving object property.

Notes
This error can occur if an object in the project is corrupted (for example, is missing Isrt.dll).

MSI/MSM Conversion Errors


The table below provides troubleshooting tips for each error that could be encountered while converting an installation package (.msi file) or merge module (.msm file) in the Open MSI/MSM Wizard. The wizard also returns errors from accessing Windows Installer databases. For more information on those errors, see Build Errors and Warnings. You might receive undocumented, internal errors if the source .msi or .msm package is invalid.

Tip: Before launching the Open MSI/MSM Wizard, validate the package with Orca or Msival2.exe, both part of the Microsoft Windows Installer Platform SDK. Table 45-4: MSI and MSM Conversion Errors Error Number -6000 Description Unable to open file Troubleshooting Tips The path to the .msi or .msm file might be invalid. The file might be open or in use by another program. The file might have been corrupted or might not be a valid Windows Installer database. -6001 Unsupported database schema The Open MSI/MSM Wizard supports databases compatible with schema 30 or later only. To determine the schema of the .msi or .msm file, open it in Orca and on the View menu, click Summary Information. In some cases, you can work around this error simply by changing the Schema field in the Edit Summary Information dialog box. Could not create record If the record already exists, the wizard will not create a duplicate entry found in the file. The wizard could not create a record because the record referenced by a foreign key in the .msi or .msm database was invalid or missing.

-7000

-7001 -7002 -7004

Foreign key invalid

InstallShield 2010 User Guide

ISP-1600-UG00

2041

Chapter 45: Errors and Warnings MSI/MSM Conversion Errors

Table 45-4: MSI and MSM Conversion Errors (cont.) Error Number -7005 Description Unable to set string property Troubleshooting Tips The Open MSI/MSM Wizard could not set a string value, probably because the field was a duplicate in the database file. This error might have resulted from an earlier failure to create a record (error -7000, 7001, -7002, or -7004). The Open MSI/MSM Wizard could not set an integer value, probably because the field was a duplicate in the database. This error might have resulted from an earlier failure to create a record (error -7000, -7001, -7002, or -7004). The Open MSI/MSM Wizard could not set a value, probably because the field was a duplicate in the database. This error might have resulted from an earlier failure to create a record (error -7000, -7001, -7002, or -7004). The wizard could not extract a binary file, an icon, or an .rtf file from the file and copy it to the new project location. Delete any existing file in the extraction directory. Ensure there is enough disk space and that you have the appropriate write privileges for the extraction directory. -7010 Output path for cab extraction does not exist The wizard could not extract a .cab file using the path specified. Instead of typing the output path for the .cab file, click Browse to select the path and then launch the wizard again. -7011 Cannot delete temporary .cab file Unable to delete the temporary .cab file after extracting it from the installation package or merge module. Ensure that the path to the .msi database is valid.

-7006

Unable to set integer property

-7008

Unable to set property

-7009

Unable to create binary file

1001

Invalid source MSI database path End user aborted process Unexpected error

1017 100001

Allow the conversion process to complete. The error message lists the function and table name associated with the error. Verify that the source is a valid .msi or .msm database.

100002

Unable to extract file from the cabinet

2042

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings MSI/MSM Conversion Errors

Table 45-4: MSI and MSM Conversion Errors (cont.) Error Number 200001 Description No output path was specified Troubleshooting Tips This warning appears if the converter needs to extract binary files from the database tables or cabinet files, but an invalid output path was specified in the Data File Location box on the File Locations panel of the Open MSI/MSI Wizard.

Internal Errors
The following are internal errors. They should not be encountered when importing a valid .msi or .msm database. Before launching the Open MSI/MSM Wizard, validate the package with Orca or Msival2.exe, both part of the Microsoft Windows Installer Platform SDK. The error message will display the database table, field, and value for which the conversion failed.
Table 45-5: Internal Errors Error Number 1002 Description Invalid target database path Troubleshooting Tips Verify that your default project location path is valid. To verify the path, on the Tools menu, click Options. The default project location path is specified on the File Locations tab. Ensure that the database is not locked or open in another application. Ensure that the project file is not locked or open in another application. Verify that your default project location path is valid. To verify the path, on the Tools menu, click Options. The default project location path is specified on the File Locations tab. 1006 Failed to obtain table list for the source or target MSI/ MSM database Failed to obtain a field Verify that the source is a valid .msi or .msm database.

1003

Failed to open the source MSI/MSM database Failed to open the target database

1004

1007

This is generally caused by failure of the MsiRecordGetXXX API. Verify that the source is a valid Windows Installer database. Ensure that the project file is not locked or open in another application. This is generally caused by failure of the MsiRecordSetXXX API. Ensure that the project file is not locked or open in another application.

1009

MsiCreateRecord failure

1010

Failed to update a field

1011

Failed to insert a record into a table

Ensure that the project file is not locked or open in another application.

InstallShield 2010 User Guide

ISP-1600-UG00

2043

Chapter 45: Errors and Warnings Run-time Errors and Warnings

Table 45-5: Internal Errors (cont.) Error Number 1012 Description Failed to extract binary data from the source MSI/MSM database Troubleshooting Tips Delete any existing file in the extraction directory. Ensure that there is enough disk space and that you have the appropriate write privileges in the output path specified in the Data File Location box on the File Locations panel of the Open MSI/MSI wizard. Ensure that the project file is not locked or open in another application. Ensure that the project file is not locked or open in another application. This is generally caused by an unexpected database schema. See troubleshooting notes for error -6001. Verify that the source is a valid .msi or .msm database.

1013

Failed to stream a file into the target database MsiDatabaseCommit failed

1014

5001

Failed to resolve a field value

5002

Incompatible field type between source and target MSI database

Run-time Errors and Warnings


The following table contains a listing of errors and warnings that may occur during run time of an installation.

Tip: You can find detailed informationincluding resolution informationon most run-time errors and warnings in the Knowledge Base. Table 45-6: Run-time Errors and Warnings Error or Warning Number 27500 Description This setup requires Internet Information Server 4.0 or higher for configuring IIS Virtual Roots. Please make sure that you have IIS 4.0 or higher. This setup requires Administrator privileges for configuring IIS Virtual Roots. Troubleshooting Information Verify that you have Internet Information Server 4.0 or later for configuring IIS virtual directories.

27501

This error occurs if you do not have administrator privileges for configuring IIS virtual directories, but you are running an installation that configures IIS virtual directories. Add the InstallShield prerequisite for MDAC to your installation project.

27507

Browsing for SQL Servers requires that ODBC32.dll be installed and registered.

2044

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Setup.exe Return Values and Run-Time Errors (InstallScript Projects)

Setup.exe Return Values and Run-Time Errors (InstallScript Projects)


Project: This information applies to InstallScript projects.
Setup.exe may produce error messages if it cannot start properly. In most cases, you will encounter these messages when a severe error occurs. Rarely will your end users see these messages.

You can capture these return values when you call the CreateProcess API to launch Setup.exe, or use a batch file to launch Setup.exe. When you get an error message, it appears in a message box. Every error message has a number. These are InstallShield system error messages, and there is no way to suppress them in your script. The following table describes each of these error messages:
Table 45-7: Run-time Errors and Return Values for InstallScript Projects Error/Return Value 0 0x80042000 Description The installation exited with the exit keyword. The installation exited with the abort keyword because the end user canceled the installation. Unable to create required engine components. Check whether you have appropriate privileges to create COM components.

0x80040708

Note: This error message may include an additional error number and error string indicating more specific error information returned by the operating system. -5001 -5002 -5003 -5004 -5005 -5006 -5007 -5008 -5009 -5010 -5011 Generic error Failed reading media header. Failed installing kernel. Failed starting kernel. Failed opening CAB. Failed installing support. Failed setting text substitution. Failed initializing installation information. Failed getting installation driver. Failed initializing properties. Failed running installation driver.

InstallShield 2010 User Guide

ISP-1600-UG00

2045

Chapter 45: Errors and Warnings Setup.exe Return Values and Run-Time Errors (InstallScript Projects)

Table 45-7: Run-time Errors and Return Values for InstallScript Projects (cont.) Error/Return Value -5012 -5013 -5014 Description Failed uninstalling support. Failed to extract file from setup boot file. Failed to download file (occurs only when saving installation files during an Internet installation). Could not clone the installation. Failed starting the setup launcher. Failed finding the setup launcher. Failed loading the setup launcher. Failed verifying the signature of setup launcher. Failed installing the setup launcher to proper location. Failed extracting setup launcher.

-5017 -6001 -6002 -6003 -6004 -6005 -6006

Typically, any time one of the error messages in the previous table is displayed, it is accompanied by one of the HRESULT values in the following table. These HRESULT values provide additional information about the cause of the error.
Table 45-8: HRESULT Values Associated with Setup.exe Run-time Errors HRESULT 0x80041F40 0x80041F41 0x80041F42 0x80042328 0x80042329 0x8004232A 0x8004232B 0x80042A94 Meaning Cannot find corecomp.in.i corecomp.ini is empty or corrupted. Cannot load the .dll file inIsCoGetClassObject. Media is not signed. Certificate is invalid. Digital signature is invalid. Space is insufficient. The specified opTypes main opsequence is not present in the log, such as when an old file is opened with the new engine, and the new (engine) code tries to get an opsequence for the newly introduced opType. Failed to (re)construct a feature logs full ID. A log operation was attempted without opening the log file. Internal opsequence structure initialization failed.

0x80042A95 0x80042A96 0x80042A97

2046

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects)

Table 45-8: HRESULT Values Associated with Setup.exe Run-time Errors (cont.) HRESULT 0x80042A98 0x80042A99 0x80042A9A 0x80042A9B 0x80042A9C Meaning General failure in Opsequence::GetNext General failure in Opsequence::Pop General failure in Opsequence::insert_sequencetuple General failure in Opsequence::delete_sequencetuple Property initialization failure - could occur when setting/getting a property in the LogDB or Feature object.

Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects)
Project: This information applies to the following project types: Basic MSI InstallScript MSI

The table below lists the errors that might occur when Setup.exe runs in a Basic MSI or InstallScript MSI project. For Setup.exe errors that might occur in an InstallScript project, see Setup.exe Return Values and Run-Time Errors (InstallScript Projects). You can capture these return values when you call the CreateProcess API to launch Setup.exe, or use a batch file to launch Setup.exe.

Note: If an error occurs, the strings displayed might not be displayed in English if your operating system is not running in English. Table 45-9: Setup.exe Run-time Errors Error Number -4 -3 Description Invalid command line. The installation exited because the end user canceled the installation. General error. Program terminated successfully. Not applicable. Troubleshooting Tips Verify that a valid command line is passed to Setup.exe. Not applicable.

-1 0

InstallShield 2010 User Guide

ISP-1600-UG00

2047

Chapter 45: Errors and Warnings Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects)

Table 45-9: Setup.exe Run-time Errors (cont.) Error Number 401 Description String variable is not large enough for string. InstallShield was attempting to copy a text string into a string variable. The text string was larger than the length declared for that string variable. Setup has detected an incompatible version of Windows. Click OK and relaunch the setup on Windows 95, Windows NT 4.0, or later. Error writing to the temporary location Troubleshooting Tips Check the declared length of the string variable. Increase the length to the maximum allowed value.

1150

Windows Installer is compatible with NT 4.0 and later, and Windows 9x and later. Check your version of Windows and upgrade if necessary.

1151

To write to the temporary location, the environment variable TEMP must be set. Verify that the Temp folder exists and has enough disk space to accommodate the setup. If there are files in the Temp folder, delete them and rerun Setup.exe. Check to see that you are able to write to the Temp folder (see errors above). If the Temp folder is valid, there may be corrupted files in the setup. Check the files to ensure none are corrupted and rerun Setup.exe. The Setup.ini file must be located in the same folder as Setup.exe. If not, move Setup.ini to that location. Windows Installer may not have been properly installed, or you may have an older version. Reinstall if necessary. Make sure the .msi file exists. If so, make sure it is located in the same folder as Setup.exe. You may not see the .msi file if you chose to compress it into Setup.exe. Windows Installer was unsuccessfully installed. Run the InstMsiW.exe file (for Windows NT and 2000) or InstMsiA.exe (for Windows 9x) to reinstall. Make sure you distribute the correct version of Windows Installer for the target platform. Check the syntax on your Msiexec.exe command-line arguments.

1152

Error extracting <file name> to the temporary location

1153

Error reading setup initialization file Installer not found in <path>

1154

1155

File <file name> not found

1156

Internal error in Windows Installer

1157

Failed to launch Msiexec.exe.

1158

Error populating strings.

Verify that all strings in Setup.ini and any language-specific INI files in the Disk1 folder (such as 0x0409.ini) are valid. There is insufficient disk space in your target location. Please make sure there is at least 10 MB of free space in the drive where the setup is set to install.

1201

Setup needs <amount> KB free space in <folder>. Please free up some space and try again.

2048

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Setup.exe Return Values and Run-Time Errors (Basic MSI and InstallScript MSI Projects)

Table 45-9: Setup.exe Run-time Errors (cont.) Error Number 1202 Description You do not have sufficient privileges to complete this installation for all users of the machine. Log on as an administrator and then retry this installation. Invalid command-line parameters. Windows Installer <version> not found. This is an older version of Windows Installer. Click OK to continue. Troubleshooting Tips In Windows NT 4.0 and 2000, you must have administrative rights to complete this installation.

1203

Double-check the command-line statement used to launch Setup.exe. In Windows 2000 and later, Windows Installer is installed by default. If the end users version of Windows Installer is an earlier version, this warning is displayed. It should not prevent the setup from running correctly. To suppress this warning, select the current releases icon in the Releases view, and change the Suppress Launcher Warning setting to Yes.

1207

1208

ANSI code page for <language> is not installed on the system and therefore setup cannot run in the selected language. Run the setup and select another language. General Windows Installer engine error. Increase DiskSpace requirement in Setup.ini and try again. Unable to extract the file <filename>.

Run the setup and select another language.

1603

Reinstall Windows Installer by running InstMsiW.exe file (for Windows NT and 2000) or InstMsiA.exe (for Windows 9x) to reinstall.

1611

This error occurs when a file compressed inside Setup.exe cannot be extracted. Verify that there is sufficient disk space available in the Temp folder (or, if not, in the Windows or WinNT folder), and that Setup can write to those folders. If the URL is incorrect, click Cancel and enter the correct URL. If the URL is correct, verify that an active Internet connection is available. The file was downloaded, but the signature could not be verified. The file might be corrupted, it might have been signed by a different company than originally signed it, or it might not be signed. Verify that the file Wintrust.dll exists on the target system.

1614

An error occurred while downloading the file <filename>. Failed to verify signature of file <filename>.

1621

1627

Unable to save file: <filename>. Failed to complete script based install.

Ensure that the specified file does not already exist, and that the target system has sufficient hard drive space.

1628

InstallShield 2010 User Guide

ISP-1600-UG00

2049

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-9: Setup.exe Run-time Errors (cont.) Error Number 1629 Description Invalid command line. Troubleshooting Tips Double-check the command-line statement used to launch Setup.exe. [1] is the full path to the .dll file that the installation is attempting to load (ISSetup.dll in all cases). [2] is the Windows error returned from LoadLibrary(). This error occurs if ISSetup.dll is not in the Disk1 folder. It also may occur if ISSetup.dll is compressed in Setup.exe if a compressed media is being built. To resolve this error, try rebuilding the release. 1700 An error occurred initializing the InstallScript engine. Unable to extract InstallScript engine support files to temp location. This error indicates that a problem occurred when the engine was being loaded. This error occurs if one or more files could not be extracted from the ISSetup.dll file to a temporary directory. To troubleshoot this error, create a Windows Installer log file to obtain more information. The log file has the corresponding Windows error number and other diagnostic information that may help troubleshoot this issue. Machines running Windows 95 do not have the ODBC core. You need to install MDAC before installing any package with an ODBC driver.

1670

Unable to load module [1], Error Code: [2]

1701

1919

Error configuring ODBC data source. Verify that the file exists and that you can access it.

Visual Studio Project Conversion Errors and Warnings


The following table lists the errors and warnings that might occur when you convert a Visual Studio setup project (.vdprj) to an InstallShield Basic MSI project (.ism), or you convert a Visual Studio merge module project (.vdprj) to an InstallShield Merge Module project (.ism).
Table 45-10: Visual Studio Project Conversion Errors and Warnings Error or Warning Number -9000

Description An unknown exception occurred. An unknown COM exception occurred.

Troubleshooting Tips Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support.

-9001

2050

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9002

Description An error occurred while loading the project %1.

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error occurs if InstallShield cannot create a Basic MSI project from the Visual Studio setup project or a Merge Module project from the Visual Studio merge module project. InstallShield tries to create the project in the same folder that contains the Visual Studio project file (.vdprj). To resolve this error, see if the folder that contains the Visual Studio project file is read-only, and change it to writable.

-9003

An error occurred while creating the project %1.

-9004

An error occurred while saving the project %1.

This error occurs if InstallShield cannot create a Basic MSI project from the Visual Studio setup project or a Merge Module project from the Visual Studio merge module project. InstallShield tries to save the project in the same folder that contains the Visual Studio project file (.vdprj). To resolve this error, see if the folder that contains the Visual Studio project file is read-only, and change it to writable.

-9005

An error occurred while converting the project.

This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support.

-9006

An error occurred while determining the project type.

-9007

An error occurred while parsing the section '%1'.

-9008

No open brace found for the section %1 under %2.

-9009

No close brace found for the section %1 under %2.

InstallShield 2010 User Guide

ISP-1600-UG00

2051

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9010

Description An invalid entry %1 found in the section %1 under %2.

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support.

-9011

An error occurred while adding the property %1 to the section %2.

-9012

An error occurred while adding the section %1 to the section %2.

-9013

The section %1 does not exist.

-9014

An error occurred while converting the product properties.

-9015

An error occurred while converting the files.

-9016

The file type %1 is invalid. The file %2 was not converted.

-9017

An error occurred while converting the file %1. Type: %2

-9018

An error occurred while converting the features.

-9019

An error occurred while converting the feature %1.

2052

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9020

Description An error occurred while converting the folders.

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support.

-9021

An error occurred while converting the folder %1. Type: %2

-9022

The folder type %1 is invalid. The folder %2 was not converted.

-9023

An error occurred while converting the custom actions.

-9024

An error occurred while converting the custom action %1. Type: %2

-9025

The custom action type %1 is invalid. The custom action %2 was not converted.

-9026

A component for the source file %1 of the custom action %2 was not found.

-9027

An error occurred while converting the file types.

-9028

An error occurred while converting the file extension %1. Type: %2

-9029

The file extension type %1 is invalid. The file extension %2 was not converted.

InstallShield 2010 User Guide

ISP-1600-UG00

2053

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9030

Description An error occurred while converting the verb %1. Type: %2

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This warning occurs if the Command property for the specified file type was left blank in the File Type Editor in Visual Studio. The warning alerts you that InstallShield could not configure the file extension during the conversion process. To resolve this issue, specify a command for the file type in Visual Studio, and then convert the Visual Studio setup project to an InstallShield project. Otherwise, you can add and configure the file extension in the File Types area of the Components view in InstallShield.

-9031

The verb type %1 is invalid. The verb %2 was not converted.

-9032

A command is not specified for the file extension %1. The file extension was not converted.

-9033

A component for the command %1 of the file extension %2 not found. The file extension was not converted. An error occurred while converting the registries.

This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support.

-9034

-9035

An error occurred while converting the registry key %1. Type: %2

-9036

The registry key type %1 is invalid. The registry key %2 was not converted.

-9037

An error occurred while converting the registry value %1. Type: %2

-9038

The registry value type %1 is invalid. The registry value %2 was not converted.

2054

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Visual Studio Project Conversion Errors and Warnings

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9039

Description An error occurred while converting the shortcuts.

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support.

-9040

An error occurred while converting the shortcut %1. Type: %2

-9041

The shortcut type %1 is invalid. The shortcut %2 was not converted.

-9042

The shortcut target %1 is invalid. The shortcut %2 was not converted.

-9043

An error occurred while converting the launch conditions.

-9044

An error occurred while converting the launch condition %1. Type: %2

-9045

The launch condition type %1 is invalid. The launch condition %2 was not converted.

-9046

An error occurred while converting the locators.

-9047

An error occurred while converting the locator %1. Type: %2

-9048

The locator type %1 is invalid. The locator %2 was not converted.

InstallShield 2010 User Guide

ISP-1600-UG00

2055

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-10: Visual Studio Project Conversion Errors and Warnings (cont.) Error or Warning Number -9049

Description An error occurred while converting the product icon.

Troubleshooting Tips This error may occur if the Visual Studio setup or merge module project file is corrupted or if InstallShield cannot correctly read the Visual Studio setup project file. To resolve this error, request technical support. This warning occurs if you convert a Visual Studio project that includes support for a language, but InstallShield does not have built-in support for that language.

-9050

The project language '%1' is not installed in InstallShield. The language was not converted.

Edition: The Premier edition of InstallShield includes multilanguage support, but the Professional edition does not. -10000 Conversion canceled by user. This error occurs if you cancel the conversion process before it finishes.

Upgrade Errors (Upgrading from InstallShield Professional)


This table provides tips for troubleshooting errors that may occur when you upgrade a project (.ism file) created with InstallShield Professional to InstallShield.
Table 45-11: Tips for Troubleshooting Upgrade Errors Error Number -61 Description Could not extract the InstallShield Professional project version. Version 5.5 is assumed. Troubleshooting Tips Make sure the project you are trying to convert is InstallShield Professional version 5.5 or later. If your setup was created using an earlier version of InstallShield Professional, visit the Support Web site for help. The languages your InstallShield Professional setup support could not be determined. You need to define the supported languages manually. The name of your InstallShield Professional project could not be determined. You need to enter this information manually in the Subject field of the Summary Information Stream. The name of the InstallShield Professional setup could not be determined. You need to manually enter this information in the Author field of the Summary Information Stream.

-62

Could not find key LanguageSupport under section [Language] in file <FileName> Could not find key ProductName under section [Data] in file <FileName>

-63

-64

Could not find key Author under section [Data] in file <FileName>

2056

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -65 Description Could not find key Version under section [Data] in file <FileName> Troubleshooting Tips The version of your setup project could not be determined. You must manually enter this information in the Product Version setting of the General Information view. The URL for your application could not be determined. You need to enter this information in one or all of the following settings in the General Information view: Publisher/Product URL, Support URL, and Product Update URL. Your Company Name could not be read from the InstallShield Professional project file. You need to manually enter this information in the Publisher setting in the General Information view. The GUID of your installation could not be determined. A new GUID has been created for you in the Product Code setting in the General Information view. If you have the original GUID for your setup, you can overwrite the new GUID generated for you. A reference to your projects file groups could not be found. Verify your InstallShield Professionals file group settings, save your project, and try upgrading your project again. A reference to your projects components could not be found. Verify your InstallShield Professional projects component settings, save your project, and try upgrading your project again. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. The your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore these warnings.

-66

Could not find key HomeUrl under section [Data] in file <FileName>

-67

Could not find key CompanyName under section [Data] in file <FileName>

-68

Could not find key InstallationGuid under section [Data] in file <FileName>

-69

Could not find key CurrentFileGroupDef under section [Data] in file <FileName> Could not find key CurrentComponentDef under section [Data] in file <FileName>

-70

-79

Could not find key Platforms under section <SectionName> in file <.ipr file>. Could not find key Password under section <SectionName> in file <.ipr file>. Warning: The Copyright, Department, Email, and Summary settings are not used. Warning: The Descriptions.txt, Instructions.txt, and Notes.txt files are not used. Warning: Use the Source Control option in the Project menu to add your project to source control.

-80

-81

-82

Could not find key RunDebug under section <SectionName> in file <.ipr file>.

If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning.

InstallShield 2010 User Guide

ISP-1600-UG00

2057

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -241 Description Could not find key SELFREGISTERING under section <FileGroupName> in file <FileName> Could not find key TARGET under section <FileGroupName> in file <FileName> Troubleshooting Tips Error determining if your file groups are self-registering. By default, your new components created from this file group are not marked as self-registering. You can change this setting in the property page for the appropriate component. The Target directory of one of your file groups could not be determined. The component or components created from this file group point to <INSTALLDIR> by default. You can change this setting in the appropriate components Destination property. The target languages for one of your file groups could not be determined. The component created from this file group will be language independent. You can change this setting in the appropriate components Languages property. A reference to your dynamic file links could not be found for one of your file groups. As a result, none of the files referenced by that dynamic link were migrated. You can either open your InstallShield Professional project and verify your dynamic link settings, or manually add these files to your new project. It could not be determined if subfolders were to be included as part of your dynamic link for one of your file groups. As a result, no subfolders are included in your new project. You can either open your InstallShield Professional project and verify your dynamic link settings, or manually add these files to your new project. The wildcards you specified for one of your dynamic links could not be read. As a result, all files included in the dynamic links specified directory were added to your setup. You can either open your InstallShield Professional project and verify your dynamic link settings, or manually remove unwanted files from your new project. It could not be determined if one of your file groups was marked as shared. As a result, the components created from that file group are not marked as shared. To change this setting, change the appropriate components Shared property to Yes. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. A reference to your file groups could not be found. Verify your file group settings in your InstallShield Professional project, save, and open your project in InstallShield 2010 again.

-242

-243

Could not find key LANGUAGE under section <FileGroupName> in file <FileName>

-244

Could not find key FOLDER under section [DYNAMIC] in file <FileName>

-245

Could not find key INCLUDESUBDIR under section [DYNAMIC] in file <FileName>

-246

Could not find key WILDCARD under section [DYNAMIC] in file <FileName>

-247

Could not find key FILETYPE under section <SectionName> in file <Path>\Default.fdf

-252

Could not find key Folder under section <SectionName> in file <.ipr file>. Error opening file <Path>\Default.fdf

-281

2058

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -282 Description Error Opening file: <FileName> Troubleshooting Tips The upgrade could not locate one of your file groups. Therefore, no files associated with that file group were added to your setup. Verify your file group settings in your InstallShield Professional project, save, and open your project in InstallShield 2010 again. A reference to your file groups could not be found. Verify your file group settings in your InstallShield Professional project, save, and open your project in InstallShield 2010 again. One of your file groups could not be found. As a result, none of the files associated with that file group were added to your project. Verify your file group settings in your InstallShield Professional project, save, and open your project in InstallShield 2010 again. InstallShield could not determine if the files for one of your file groups was linked to dynamically or statically. As a result, none of that file groups files were added to your setup. Verify your file group settings in your InstallShield Professional project, save, and open your project in InstallShield again. InstallShield could not determine if the files for one of your file groups was linked to dynamically or statically. As a result, none of that file groups files were added to your setup. Verify your file group settings in your InstallShield Professional, save, and open your project in InstallShield again. The Description property for one of your components could not be read. Enter this information manually in the Description property for the feature created from your component. The display name for one of your components could not be read. Enter this information manually in the Display Name property for the feature created from your component. The comments for one of your component could not be found. Enter this information manually in the Comments property of the appropriate component. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. There was an error importing your components. As a result, no features were created. Verify the component settings in your InstallShield Professional, save, and open your project in InstallShield again.

-283

Could not find section [FILEGROUPS] in file <Path>\Default.fdf

-284

Could not find section <SectionName> in file <Path>\Default.fdf

-285

Could not find key FILETYPE under section <SectionName> in file <Path>\Default.fdf

-286

Could not find section [DYNAMIC] in file <FileName>

-301

Could not find key DESCRIPTION under section <SectionName> in file <Path>\Default.cdf

-302

Could not find key DISPLAYTEXT under section <SectionName> in file <Path>\Default.cdf Could not find key COMMENT under section <SectionName> in file <Path>\Default.cdf Could not find key <KeyName> under section <SectionName> in file <.ipr file>. Error Opening file: <Path<\Default.cdf

-303

-306

-341

InstallShield 2010 User Guide

ISP-1600-UG00

2059

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -342 Description Could not find section [COMPONENTS] in file <Path>\Default.cdf Troubleshooting Tips There was an error importing your components. As a result, no features were created. Verify the component settings in your InstallShield Professional project, save, and open your project in InstallShield again. There was an error importing one of your components. As a result, that component was not migrated. Verify the component settings in your InstallShield Professional project, save, and open your project in InstallShield again. The registry information associated with your InstallShield Professional project could not be read. As a result, no registry information was migrated. Verify the registry settings in your InstallShield Professional project, save, and open your project in InstallShield again. The registry information associated with your InstallShield Professional project could not be read. As a result, no registry information was migrated. Verify the registry settings in your InstallShield Professional project, save, and open your project in InstallShield again. A portion of your registry information could not be read. As a result, that registry data was not migrated. Verify the registry settings in your InstallShield Professional project, save, and open your project in InstallShield again. A portion of your registry information could not be read. As a result, that registry data was not migrated. Verify the registry settings in your InstallShield Professional project, save, and open your project in InstallShield again. The target for one of your shortcuts could not be determined. Manually enter this information in the Target property of the appropriate shortcut. The icon for one of your shortcuts could not be determined. Manually enter this information in the Icon File property of the appropriate shortcut. The icon index for one of your shortcuts could not be determined. Manually enter this information in the Icon Index property of the appropriate shortcut. The shortcut text for one of your shortcuts could not be determined. Manually enter this information in the Display Name property of the appropriate shortcut. The arguments for one of your shortcuts could not be determined. Manually enter this information in the Arguments property of the appropriate shortcut.

-343

Could not find section <SectionName> in file <Path>\Default.cdf

-401

Error opening file <Path>\Default.reg

-402

Could not find section [DATA] in file <Path>\Default.re

-403

Could not find section <SectionName> in file <Path>\Default.re

-404

Could not find section <SectionName> in file <Path>\Default.re

-421

Could not find key TARGET under section <SectionName> in file <Path>\Default.shl Could not find key ICONFILE under section <SectionName> in file <Path>\Default.shl Could not find key ICONINDEX under section <SectionName> in file <Path>\Default.shl Could not find key DISPLAYTEXT under section <SectionName> in file <Path>\Default.shl Could not find key PARAMETERS under section <SectionName> in file <Path>\Default.shl

-422

-423

-424

-425

2060

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Errors (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -426 Description Could not find key SHORTCUTKEY under section <SectionName> in file <Path>\Default.shl Could not find key STARTIN under section <SectionName> in file <Path>\Default.shl Could not find key COMMENTS under section <SectionName> in file <Path>\Default.shl Could not find key RUN under section <SectionName> in file <Path>\Default.shl Could not find key Typeunder section <SectionName> in file <.ipr file>. Could not find key Uninstall under section <SectionName> in file <.ipr file>. Could not find key DisplayText under section <SectionName> in file <.ipr file>. Could not find key Shared under section <SectionName> in file <.ipr file>. Could not find key Replace under section <SectionName> in file <.ipr file>. Could not find key InternetShortcut under section <SectionName> in file <.ipr file>. Could not find key EngineBinding under section <SectionName> in file <.ipr file>. Could not find key UpdateMode under section <SectionName> in file <.ipr file>. Could not find key UpdateService under section <SectionName> in file <.ipr file>. Troubleshooting Tips The shortcut key for one of your shortcuts could not be determined. Manually enter this information in the Hot Key property of the appropriate shortcut. The start in directory for one of your shortcuts could not be determined. Manually enter this information in the Working Directory property for the appropriate shortcut. The comments for one of your shortcuts could not be read. Manually enter this information in the Comments property for the appropriate shortcut. The Run property of one of your shortcuts could not be read. This property will be set to Normal by default in the appropriate shortcuts Run property. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning.

-427

-428

-429

-430

-431

-432

-433

-434

-435

-440

-441

-442

InstallShield 2010 User Guide

ISP-1600-UG00

2061

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

Table 45-11: Tips for Troubleshooting Upgrade Errors (cont.) Error Number -443 Description Could not find key LogFile under section <SectionName> in file <.ipr file>. Error opening file <Path>\Default.shl Troubleshooting Tips If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. The shell object information associated with your InstallShield Professional project could not be read. As a result, no shortcuts were created. Verify that the shell object settings in your InstallShield Professional project, save, and open the project in InstallShield again. The shell object information associated with your InstallShield Professional project could not be read. As a result, no shortcuts were created. Verify that the shell object settings in your InstallShield Professional project, save, and open the project in InstallShield again. One of your shortcuts could not be migrated. Manually create this shortcut in the Shortcuts explorer.

-461

-462

Could not find section [DATA] in file <Path>\Default.shl

-463

Could not find key <KeyName> under section [DATA] in file <Path>\Default.shl Could not find section <SectionName> in file <Path>\Default.shl Could not find section <SectionName> in file <.ipr file>.

-464

One of your shortcuts could not be migrated. Manually create this shortcut in the Shortcuts explorer.

-471

If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning. If your project was created with a version of InstallShield Professional earlier than InstallShield Professional 7.0, you can ignore this warning.

-500

Could not find key <KeyName> under section <SectionName> in file <.ipr file>.

Upgrade Warnings (Upgrading from InstallShield Professional)


Because of the differences in architecture between InstallShield Professional and InstallShield 2010, upgrading your installation project might involve some manual adjustment. If you need to manually adjust settings within your project, a warning appears in the Output window after your project is upgraded. Refer to the associated help topic to learn what you need to do. (cont.)
Table 45-12: Upgrade Warnings Warning Number -289

Description File link does not exist for a dynamically linked file.

2062

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

Table 45-12: Upgrade Warnings (cont.) Warning Number -305

Description The Include In Build property for the InstallShield Professional component could not be directly migrated. The Shared attribute can be set for only the key file of a component. The Shared attribute can be set for only the key file of a component. A dynamically linked file cannot be a key file. Shortcut icons must be linked to at design time. In InstallShield 2010, installation of files is done according to file versioning rules. An obsolete event was encountered in your script. The ODBC core is not installed by default. If you need this functionality in your setup project, navigate to the Redistributables view and select the MDAC merge module.

-480 -481

-486 -487 -488 -495

Upgrade Warning 289: File Link Does Not Exist for Dynamically Linked File
In InstallShield Professional, dynamically linking to your source files allows you to add the contents of complete folders and subfolders to your setup without hard-coding paths or file names. If you add files to the source folder or remove files, the list of included files was dynamically updates when you build your release.

Upgrading to InstallShield 2010


When you upgrade an InstallShield Professional project to InstallShield 2010, and include a file via dynamic file linking that does not exist, Upgrade Warning 289 appears. The warning informs you that a file link has been created, but the file does not exist.

Upgrade Warning -305: Include In Build Property for the InstallShield Professional Component Could Not Be Directly Migrated
If a component in your InstallShield Professional project had its Include In Build property set to No, the corresponding feature will have its Release Flags property set to EXCLUDEFROMBUILD. To exclude the feature from your setup, you need to manually set a release flag in the Releases view or the Filtering Settings panel of the Release Wizard.

Note: Because the release flag in the Releases view indicates which features to include in the setup, the flag you specify in the Releases view must be something other than EXCLUDEFROMBUILD.

InstallShield 2010 User Guide

ISP-1600-UG00

2063

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

Upgrade Warning -480: Incrementing the Shared .dll Reference Count for Files in a File Group
In InstallShield Professional versions 6.x and earlier, setting the shared property for a file group resulted in incrementing the shared .dll reference count for all files in that file group on installation. This upgrade migrates this setting to the shared attribute of the component created, in InstallShield 2010, for this file group.

Shared .dll Reference Count Behavior


In InstallShield 2010, setting the shared attribute of a component results in incrementing of the shared .dll reference count of only the key file for that component. By definition, there can be only one key file per component. In order to increment the shared reference count for multiple files, each file requires its own component and the file must be the key file in that component.

Note: For .exe, .dll, and .ocx files, you can use the Component Wizard to quickly create components for large numbers of files.

In InstallShield 2010, even if a file is not marked as shared, if a shared .dll reference count already exists for a file, it is automatically incremented by the installation of that file and decremented by the uninstallation of that file. Additionally, reference counts are maintained for components based on the component GUID (or Component Code property). Therefore, the shared property of a component is useful only where there might be file sharing with legacy installations, or if other components with differing component GUIDs install this file.

Upgrade Warning -481: Incrementing the Shared DLL Reference Count for Dynamically Linked Files in a File Group
In InstallShield Professional version 6.x and previous, setting the shared property for a file group which contained a dynamic file link resulted in incrementing the shared DLL reference count for all files in that file group on installationregardless of the file link type. This upgrade migrates this setting to the shared attribute of the component created, in InstallShield 2010, for this file group.

Shared DLL Reference Count Behavior


In InstallShield 2010, setting the shared attribute of a component results in incrementing of the shared DLL reference count of only the key file for that component. Because dynamically linked files cannot be used as key files, the shared reference count is not incremented for any of the components files. A component can have only one key file. Therefore, in order to increment the shared reference count for multiple files, each file must be in its own component and the file must be the components key file. Files must be statically linked if you want the reference count to increment the shared DLL reference count for each file.

Note: For EXE, DLL and OCX files, you can use the Component Wizard to quickly create components for large numbers of files.
2064 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

In InstallShield 2010even if a file is not marked as sharedif a shared DLL reference count already exists for a file, it is automatically incremented by the installation of that file and decremented by the uninstallation of that file. Additionally, reference counts are maintained for components based on the component GUID (or Component Code property). Therefore, the shared property of a component is useful only where there might be file sharing with legacy installations, or if other components with differing component GUIDs install this file.

Upgrade Warning -486: Specifying Shortcut Icons


Shortcut Creation in InstallShield Professional
In InstallShield Professional version 6.x and earlier, shortcut icons were authored from the target machines perspective. For example, if the shortcuts icon was installed to <TARGETDIR>\MyIcon.ico, that was the qualified path specified for the shortcut icon. At run time, the shortcut creation process would bind to the icon on the target machine.

Shortcut Creation
In InstallShield 2010, shortcut icons must be linked to at design time. Instead of specifying a path on the target machine as the icon file, the project file must specify a path on the build machine as the icon file. The build engine then creates a separate stream for your icon in the installation. The installation then uses that stream at run time during its icon creation process. This means that the setup no longer has to install the icon it is using for its shortcuts. When upgrading your InstallShield Professional projects, InstallShield 2010 attempts to match the target icon path with a file that exists in your setup project. If unable to do so, this warning is displayed.

Correcting the Path to the Shortcut Icon

Tip: To correct the shortcut icon path: 1. 2.

Go to the Shortcuts view in the IDE and click the shortcut specified in the warning message. In the Icon File property field, browse to the icon file.

Note: Shortcut icons are required in InstallShield 2010. If an icon is not specified, the build engine uses the first icon index of the shortcuts target file as the shortcut icon.

Upgrade Warning -487: Overwriting Files Upon Installation


Installing Files Based on the File Groups Overwrite Property
In InstallShield Professional version 6.x and earlier, you had the ability to set overwrite properties for individual file groups. One file group could install files based on date, while another installed files only if the file version is older than the file version on the target machine.

InstallShield 2010 User Guide

ISP-1600-UG00

2065

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

Installing Files Based on File Versioning Rules


InstallShield 2010 uses a methodology called file versioning rules to determine which files need to be installed on the target machine. The only option at the component level to override file versioning rules is to set the Never Overwrite property to Yes.

File Versioning Alternatives


Although the default file versioning rules are satisfactory for most applications, there might be cases where an applications requirements necessitate that you control the rules used to decide if a file should be overwritten. To this end, there are a couple of alternatives to file versioning that can be used either individually or in conjunction with each other to modify file versioning rules. REINSTALLMODE The REINSTALLMODE technique for overriding file versioning rules is a global mechanism for establishing custom versioning rules. Using this technique affects versioning rules for all files in the installation.

Task

To use the REINSTALLMODE property: 1. 2. 3.

Open the Property Manager. Create a property called REINSTALLMODE. Set the value of this property based on the option codes specified for the REINSTALLMODE property.

The installer reads this property at install time and uses its settings to override file versioning. This setting is also used by the installer during a reinstallation or repair of the application.

Companion Files
The companion files technique for overriding file versioning rules enables you to configure a file so that it installs based on the installation of a companion file. This technique is useful when it makes sense to bind the installation states of several files together. For example, you can bind a non-versioned user data file to a versioned .exe file. If the .exe is not installed, the user data is not installed.

Upgrade Warning -488: Obsolete Event Encountered in Script File


An obsolete event was encountered in your script file. While most InstallShield Professional script events are supported in InstallShield 2010, there are some that are not available.

Events With Comparable Functionality


OnInstallingFile OnUninstallingFile

2066

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)

These two events have been replaced with the OnInstallFilesActionBefore and OnInstallFilesActionAfter. These events are called in Install, Uninstall, and Maintenance modes. The OnInstallFilesActionBefore event is called when the installation is preparing to add or remove files from the target machine based on the Action state of the component containing those files. On uninstall, all related actions that require the source file have already been performedsuch as removing any shortcuts to the file and unregistering the files COM data. The OnInstallFilesActionAfter event is called when the installation has finished adding or removing files from the target machine. On Install, the related install actions for a file have yet to be performed, such as the registration of NT Services and creation of ODBC entries.

Note: When using the OnInstallFilesActionBefore and OnInstallFilesActionAfter events, you can use the Windows Installer API function MsiGetComponentState to determine the action state of a component.

Event with Partial Support


The OnSelfRegistrationError event is called if you are using the XCopyFile function to copy your application files to the source media.

Unsupported Events
The following events are not supported in InstallShield 2010:

OnFileReadOnly OnFileLocked OnNextDisk OnRemovingSharedFile OnFileError OnInternetError OnMD5Error

Upgrade Warning 495: ODBC Core Not Installed by Default


The ODBC core is not installed by default. If this is required by your setup project, select the MDAC merge module from the Redistributables view.

MDAC Prerequisite for ODBC Installation


Although InstallShield Professional provided an object that installed the ODBC core as well as ODBC drivers, InstallShield 2010 does not directly support this functionality. Because Microsoft requires you to install ODBC as a subset of MDAC, the Windows Installer does not support direct installation of the ODBC core.

InstallShield 2010 User Guide

ISP-1600-UG00

2067

Chapter 45: Errors and Warnings Upgrade Errors and Warnings (Upgrading from InstallShieldWindows Installer Edition)

Upgrade Errors and Warnings (Upgrading from InstallShieldWindows Installer Edition)


This table provides tips for troubleshooting errors and warnings that may occur when you upgrade a project (.ism file) created using a version of InstallShieldWindows Installer Edition to InstallShield.
Table 45-13: Upgrade Errors and Warnings Error or Warning Number -100

Description This error occurs if you are upgrading a project that has a registry value set as a keypath for a component. This error occurs if your project contains a component with duplicate file names in it. The upgrader keeps only one of these files and deletes the rest. These errors occur if the upgrader cannot read information from the old table structure, or it cannot write information to the new table structure.

Troubleshooting Tips You cannot set a registry value as a keypath for a component. To avoid this error, remove that keypath from the component and attempt the upgrade again.

-201

To avoid this problem, make sure that you do not have duplicate file names within the same component.

-2007 -2011 -2121 -2122 -6020

Once the file has been upgraded, you need to navigate to the areas that failed and reinsert your settings.

The scripting billboard is no longer supported in the Basic MSI project. This property is not being upgraded. The path variable cannot contain apostrophes, which are invalid characters. The name is being changed. Could not open the MSI file specified in a custom action. The source property is not being converted. The necessary code page is not installed on your system. The associated string table values are not being upgraded correctly.

To add support for this property after your project is upgraded, you can convert your project to an InstallScript MSI project and add your billboards in the Support Files/ Billboards view. To build your project successfully, update all references to this path variable after the project is upgraded.

-6021

-6022

To build your project successfully, enter the product code of the MSI file in the custom actions Source property after the project is upgraded.

-6023

Install the appropriate code page prior to project upgrade.

2068

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings HRESULT Values for Windows Installer Run-time Errors

Table 45-13: Upgrade Errors and Warnings (cont.) Error or Warning Number -6026

Description This error occurs if you have a user-defined path variable in your InstallShieldWindows Installer Edition project that is the same as a predefined path variable in InstallShield. The property name "sOldPropertyName" contains invalid characters. The name is being changed to "sNewPropertyName." To build your project successfully, update all references to that property name after your project is upgraded.

Troubleshooting Tips To upgrade successfully, remove the user-defined path variable in the InstallShieldWindows Installer Edition project and upgrade your project to InstallShield. After upgrading, open your project in InstallShield and create a new path variable that is equivalent to the user-defined path variable. Update all references in the InstallShield project. After your project upgrades, change all references to the old property name to the new property name.

-6031

HRESULT Values for Windows Installer Run-time Errors


ISRegSrv.dll is the InstallShield DLL that is called from custom actions to register and unregister selfregistering files on the target system. The DLL displays the Windows Installer run-time error 1904 or 1905 when it fails for particular reasons.

1904: Module [2] failed to register. HRESULT [3]. 1905: Module [2] failed to unregister. HRESULT [3].

[3] could be one of InstallShields custom HRESULTs.


Table 45-14: HRESULT Values for Windows Installer Run-time Errors HRESULT -2147220475 -2147220474 -2147220473 -2147220472 Description Invalid file extension as a self-register file. Executable file extension, but not actually an executable. Generic registration failure. Generic unregistration failure.

InstallShield 2010 User Guide

ISP-1600-UG00

2069

Chapter 45: Errors and Warnings DIFxAPI Errors (InstallScript Projects)

DIFxAPI Errors (InstallScript Projects)


This table lists DIFxAPI errors that can be returned calling DIFx driver functions. If the return value from a DIFx driver function is a Win32 error (a positive return value), ISERR_WIN_BASE is added to the error so that it is less than ISERR_SUCCESS. For the most updated documentation on Win32 errors, see the MSDN Library.
Table 45-15: DIFxAPI Errors (InstallScript) Return Value ISERR_ISERVICE_NOT_ENABLED Description Indicates that DIFx support has not been enabled or was disabled using Disable( SERVICE_DIFX_* ) ). For information on enabling DIFx support, see Installing Device Drivers. Indicates that the difxapi.dll was not found (in SUPPORTDIR) or that an exported function could not be found. Verify that you have enabled DIFx support in your project. The function removed an association between the driver package and the specified application but the function did not uninstall the driver package because other applications are associated with the driver package. The driver package is already preinstalled and was not preinstalled again.

ISERR_WIN_BASE + ERROR_INVALID_FUNCTION

ERROR_DEPENDENT_APPLICATION S_EXIST

ISERR_WIN_BASE + ERROR_ALREADY_EXISTS ISERR_WIN_BASE + ERROR_INSUFFICIENT_BUFFER ISERR_WIN_BASE + ERROR_FILE_NOT_FOUND

The pDestInfPath buffer is not large enough to retrieve the requested .inf file path. The specified .inf file was not found.

ERROR_DRIVER_PACKAGE_NOT_IN_ An .inf file does not exist in the driver store that corresponds to the .inf file STORE specified by DriverPackageInfPath. ISERR_WIN_BASE + ERROR_NO_MORE_ITEMS This error code applies only if the DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT constant is specified but the DRIVER_PACKAGE_FORCE constant is not specified. In this case, the function did not preinstall the specified driver package because, although the specified driver package matched devices in the device tree, the driver already installed for each such device is a better match for the device than the specified driver package. This applies to present and nonpresent devices. This error code applies only if the DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT constant is specified. The function did not preinstall the specified driver package because the driver package does not match a device in the device tree. This applies to present and nonpresent devices. The driver package does not specify a hardware ID or compatible ID that is supported by the current platform. The function did not preinstall the driver package because files referenced by the .inf file could not be found.

ERROR_NO_SUCH_DEVINST

ERROR_NO_DEVICE_ID

ERROR_MISSING_FILE

2070

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings DIFxAPI Errors (InstallScript Projects)

Table 45-15: DIFxAPI Errors (InstallScript) (cont.) Return Value ISERR_WIN_BASE + ERROR_CANNOT_MAKE TRUST_E_NOSIGNATURE CERT_E_EXPIRED CERT_E_WRONG_USAGE Description The function did not preinstall the driver package.

The driver package is not signed. The certificate used to sign the driver package is expired. The certificate for the driver package is not valid for the requested usage. If the driver package does not have a valid WHQL signature, the function returns this error code in the following two situations


CRYPT_E_FILE_ERROR

In response to a driver signing dialog box, the user chose not to install the driver package. The DRIVER_PACKAGE_SILENT constant is specified.

The catalog file for the driver package was not found, or possibly, some other error occurred when the function attempted to verify the driver package signature. The catalog file for the driver package is not valid or was not found. The certificate is not valid for the current Windows version or it is expired.

ERROR_INVALID_CATALOG_DATA ERROR_SIGNATURE_OSATTRIBUTE_ MISMATCH ISERR_WIN_BASE + ERROR_SHARING_VIOLATION

A component of drive package in the driver store is locked by a thread or process. This can occur, if a process or thread, other than the thread or process being called, is currently accessing the same driver package. Only members of the Administrators group can access this functionality.

ISERR_WIN_BASE + ERROR_ACCESS_DENIED ISERR_WIN_BASE + ERROR_BAD_ENVIRONMENT ISERR_WIN_BASE + ERROR_INVALID_PARAMETER ISERR_WIN_BASE + ERROR_INVALID_NAME ISERR_WIN_BASE + ERROR_FILENAME_EXCED_RANGE ISERR_WIN_BASE + ERROR_CANT_ACCESS_FILE ISERR_WIN_BASE + ERROR_OUTOFMEMORY ERROR_UNSUPPORTED_TYPE ERROR_CANT_ACCESS_FILE

The Windows version on which this call was made does not support this operation. A supplied parameter is not valid.

The specified .inf file path is not valid.

The length, in characters, of the specified .inf file path is greater than the maximum supported length. The driver package files could not be preinstalled because the specified .inf file is in the system .inf file directory. Available system memory was insufficient to preinstall the driver package.

The driver package type is not supported. The driver package files could not be preinstalled because the specified .inf file is in the system .inf file directory.

InstallShield 2010 User Guide

ISP-1600-UG00

2071

Chapter 45: Errors and Warnings "String PRODUCT_NAME was not found in string table" Error

Table 45-15: DIFxAPI Errors (InstallScript) (cont.) Return Value ERROR_IN_WOW64 Description The 32 bit version DIFxAPI does not work on Win64 systems. A 64-bit version of DIFxAPI is required. The installation failed. The driver package is not for a Plug and Play (PnP) function driver.

ERROR_INSTALL_FAILURE ISERR_WIN_BASE + ERROR_INVALID_FUNCTION

"String PRODUCT_NAME was not found in string table" Error


While converting an InstallScript MSI project to an InstallScript project, you may encounter this error when your setup project does not run during the conversion. You should verify if SHELL_OBJECT_FOLDER = @PRODUCT_NAME; is in your script.

Note: The setting SHELL_OBJECT_FOLDER in OnFirstUIBefore is not necessary and the default script line "SHELL_OBJECT_FOLDER = @PRODUCT_NAME;" should be deleted.

InstallScript Error Information


The InstallScript compiler displays error messages in the Output window. This window, which is normally positioned near the bottom of the main window, has a Compile tab. If the Output window is not present, on the View menu in InstallShield, click Output. The following types of error messages are displayed to identify errors in your setup script:
Table 45-16: Error Message Types Error Message Type Warnings Syntax Errors Fatal Errors Internal Errors Range C7501 through C7503 C8001 through C8114 F8501 through F8519 C9001

2072

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

InstallScript Syntax or Compiler Errors


Syntax errors prevent the file Setup.inx from being created and cause the compiler to display one of the error messages in the list below. A single syntax error can cause the compiler to generate more than one error message. The first error message is triggered by the syntax error. The others are triggered because the compiler is not able to resolve the statement or statements that follow the error.

Tip: If your script generates more than one syntax error, correct the first one in the list and then recompile. By correcting the first error, you might eliminate one or more of the others. Table 45-17: InstallScript Syntax or Compiler Errors Error Number C8001 C8002 C8003 C8004 C8005 C8006 C8007 C8008 C8009 C8010 C8011 C8012 C8013 C8014 C8015 C8016 C8017 C8018 C8019 C8020 Message multiple main programs defined function name expected function has no prototype declaration identifier already declared function was declared as DLL function missing '(' after function name comma expected identifier expected too many parameters missing right parenthesis missing 'begin' at start of function semicolon expected unexpected end of source file identifier already defined member name already defined undefined label: expected typedef (struct) name typedef object illegal in this context expected type declaration parameter list expected

InstallShield 2010 User Guide

ISP-1600-UG00

2073

Chapter 45: Errors and Warnings InstallScript Error Information

Table 45-17: InstallScript Syntax or Compiler Errors (cont.) Error Number C8021 C8022 C8023 C8024 C8025 C8026 C8027 C8028 C8031 C8032 C8033 C8034 C8035 C8036 C8037 C8038 C8039 C8040 C8042 C8043 C8044 C8045 C8046 C8047 C8048 C8049 C8050 Message missing 'begin' after 'typedef' comma or semicolon expected right bracket expected invalid array/string size undefined identifier invalid use of identifier missing operand unresolved operator uncalled function missing member reference unsubscripted array missing expression statement label required too many arguments variable required numeric value required string value required incomplete argument list string or array type required typedef pointer type required typedef type required member name not found numeric variable required can only take address of variable macro name missing missing expression for #if/#elif invalid expression for #if/#elif

2074

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Table 45-17: InstallScript Syntax or Compiler Errors (cont.) Error Number C8051 C8052 C8053 C8054 C8055 C8057 C8058 C8059 C8062 C8063 C8064 C8065 C8066 C8067 C8068 C8069 C8070 C8071 C8072 C8073 C8074 C8075 C8076 C8077 C8079 C8080 C8081 Message missing end of string literal macro expansion text too large identifier not a #define macro include file name missing #elif not preceded by #if #else not preceded by #if #endif not preceded by #if unrecognized preprocessor command constant operand required input line too long unterminated comment string literal exceeds 255 characters missing #endif statement at end of file integer constant too large unrecognized character encountered preprocessor command must be first on line string constant expected colon expected 'elseif' cannot follow 'else' missing 'then' keyword 'else' clause already encountered 'default' label already encountered multiple case labels for statement label already defined invalid statement missing arguments for function invalid result for assignment

InstallShield 2010 User Guide

ISP-1600-UG00

2075

Chapter 45: Errors and Warnings InstallScript Error Information

Table 45-17: InstallScript Syntax or Compiler Errors (cont.) Error Number C8082 C8083 C8084 C8085 C8086 C8087 C8088 C8089 C8090 C8091 C8092 C8093 C8097 C8098 C8099 C8100 C8101 C8112 C8113 C8114 C8126 C8522 Message missing '(' after switch missing ')' after switch missing 'case' after switch missing '=' missing 'to' or 'downto' cannot return value from program not inside if statement not inside for statement not inside repeat statement not inside while statement function called but not defined size required for string in typedef syntax error missing '.name' after DLL name DLL function name expected function not defined for this DLL must specify DLL for this function typedef includes instance of self local variables cannot be external preprocessor user define error 'text' : string variable required Access is denied.

Error C8001
'program' : multiple main programs defined

Description
The keyword program was encountered after the main program block.

2076

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Troubleshooting Tips
A script can contain only one main program blockbeginning with the keyword program and ending with the keyword endprogram. Restructure your script to use only one main program block. If your script consists of multiple source files, this error message occurs if more than one of those source files contains a main program block.

Error C8002
'text' : function name expected

Description
The compiler expected to encounter a function name at the location indicated by text.

Notes
Check for a missing or mistyped function name before a parameter list. Check for missing semicolons in preceding lines.

Error C8003
'name' : function has no prototype declaration

Description
The function specified by name has not been declared in a prototype statement.

Notes
If the function has not been declared, insert a prototype statement before the current block (main program or function definition). If the function has been declared ahead of the current block, compare the function declaration in the prototype statement with the function header in the function definition. Be sure the spelling of the function name is identical in both places and that the number and types of parameters matches. If the function has been declared later in the script, move the declaration before the current block.

Error C8004
'name' : identifier already declared

Description
The identifier specified by name has already been declared in the current block. Identifiers can be declared only once in the same block.

InstallShield 2010 User Guide

ISP-1600-UG00

2077

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Examine the main program block or function block where the error occurred to find the first declaration of the identifier. If the second declaration is simply a duplicate of the first, delete it. If you intended the second declaration to be a different variable than the first, rename the identifier in the second declaration and update all statements in the script that reference it. If you cannot find a previous declaration of the variable, you may be declaring an identifier whose name is reserved in InstallScript. Reserved words are syntax colored in the script editor.

Error C8005
'name' : function was declared as DLL function

Description
The function definition for the function specified by name is invalid because that function has been declared in a prototype statement as a DLL function.

Notes
If the function is not a DLL function, remove the DLL file name from the function prototype. If the name of the user-defined function conflicts with the DLL function name, rename the user-defined function and update all statements in the script that reference it. Be sure the user-defined function has been declared in a prototype statement.

Error C8006
'text' : missing '(' after function name

Description
The compiler expected to find the opening parenthesis that follows a function name in a function definition; the character or characters indicated by text were encountered instead.

Notes
Check that the functions parameter list is enclosed within parentheses. If the function takes no parameters, the parentheses will be empty. Verify that only space characters come between the function name and its parameter list.

Error C8007
'text' : comma expected

Description
The character or characters specified by text were encountered at a location where a comma was expected.

2078

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
If the error occurred in a function declaration, then a comma required to separate parameter declarations is probably missing. If the error occurred in a function call, then a comma required to separate parameters is probably missing.

Error C8008
'text' : identifier expected

Description
The character or characters specified by text were encountered at a location where an identifier was expected.

Notes
If this error occurs in a variable declaration, check that the data type is followed by an identifier, with no intervening punctuation; check that the identifier contains only allowable characters. If this error occurs in a function call, check that each pair of argument is delimited by one and only one comma.

Error C8009
'text' : too many parameters

Description
The character or characters specified by text were encountered in a function call parameter list that contains more parameters than have been declared for the function.

Notes
To identify the argument or arguments that do not belong in the function call, compare the number and types of arguments in the function call to the number and types of parameters declared for that function.

Error C8010
'text' : too many parameters

Description
The character or characters specified by text were encountered at a location where a right parenthesis was expected.

Notes
This error is usually triggered when the right parentheses is missing from the parameter list of a function header in a function definition.

InstallShield 2010 User Guide

ISP-1600-UG00

2079

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8011
'end' : missing 'begin' at start of function

Description
The keyword begin is missing in a function declaration.

Notes
Insert the keyword begin before the first statement in the function. Local variable declarations should appear between the function header and the keyword begin. The function header itself should not be terminated with a semicolon.

Error C8012
'text' : semicolon expected

Description
The character or characters specified by text were encountered at a location where a semicolon was expected.

Notes
Insert a semicolon to terminate the statement that appears just before the error location.

Error C8013
unexpected end of source file

Description
The compiler reached the end of the source file without encountering the keyword required to close the current program or function block.

Troubleshooting Tips
If your script contains function definitions, check that each function definition is terminated with the keyword end and a semicolon. Check that typedef blocks are closed with an end statement. Check that all flow control blocks are correctly closed. Check that all #if, #ifdef, and #ifndef statements have a matching #endif statement.

Error C8014
'name' : identifier already defined

Description
The identifier specified by name has already been declared in the structure.
2080 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Examine the script and any scripts included before the error location to find the first declaration of the identifier. If the second declaration is simply a duplicate of the first, delete it. If you intended the second declaration to create a different identifier than the first, rename the identifier in the second declaration and update all statements in the script that reference it.

Error C8015
'name' : member name already defined

Description
The member identified by name has already been declared in the structure.

Notes
Examine the structure in which the error occurred to find the first declaration of the member. If the second declaration is simply a duplicate of the first, delete it. If you intended the second declaration to be a different member than the first, rename the member in the second declaration and update all statements in the script that reference it.

Error C8016
'name' : undefined label:

Description
The identifier specified by name is used in a goto statement to reference a label that has not been defined.

Notes
The error is located in the block directly above the error location. Find the goto statement that references name. If the goto statement is in a program block, it must reference a label that has been defined in the program block. If the goto statement is in a function definition, it must reference a label that has been defined in that function definition. Determine where you want control to flow and define the label at that location.

Error C8017
'text' : expected typedef (struct) name

Description
The character or characters specified by text were encountered at a location where a typedef declaration was expected.

Notes
Check that a data type has been specified for the variable being declared. Verify that the reserved word for that data type is spelled correctly and is in all upper case.

InstallShield 2010 User Guide

ISP-1600-UG00

2081

Chapter 45: Errors and Warnings InstallScript Error Information

If more than one variable is declared for that data type, check that the individual identifier names are separated by commas and not some other punctuation mark. Verify that the data declaration is terminated with a semicolon. If the error occurs in a function prototype that declares a pointer to a structure as a parameter, check that the structure has been declared ahead of the function prototype.

Error C8018
'text' : typedef object illegal in this context

Description
The structure type specified by text was encountered at a location where it is not allowed.

Notes
This error occurs in a function prototype that declares a structure type as one of its parameters. This is not allowed. Instead, declare the parameter as a pointer to a structure by following the name of the structure type with the keyword POINTER, as shown below:
typedef RECT begin SHORT sX; SHORT sY; end; RECT Rectangle; RECT POINTER pRect; prototype SizeRectangle(RECT POINTER);

Error C8019
'text' : expected type declaration

Description
The character or characters specified by text were encountered at a location where a data declaration was expected.

Notes
This error generally occurs when a semicolon is missing at the end of a data declaration in a line ahead of the error location. It also occurs in a function definition when the function header is terminated with a semicolon.

Error C8020
'text' : parameter list expected

2082

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Description
The character or characters specified by text were encountered immediately after a prototype declaration for which there was no parameter list.

Notes
Specify the parameter list for the function above the error location. If the function takes no parameters, specify an empty list by placing opening and closing parenthesis after the function name.

Error C8021
'text' : missing 'begin' after 'typedef'

Description
The character or characters specified by text were encountered in a typedef statement where the keyword begin was expected. In a typedef statement, the keyword begin must follow the structure name.

Notes
Insert the keyword begin after the structure name, with no intervening punctuation.

Error C8022
'text' : comma or semicolon expected

Description
The character or characters specified by text were encountered at a location where a comma or semicolon was expected.

Notes
If this error occurs near a data declaration, check that the identifier is valid and that the data declaration is terminated with a semicolon. If two or more identifiers are being declared in the same statement, verify that they are delimited by commas.

Error C8023
'text' : right bracket expected

Description
The character or characters specified by text were encountered at a location where a right bracket was expected.

Notes
This error occurs when the closing right bracket is missing from a reference to an array.

InstallShield 2010 User Guide

ISP-1600-UG00

2083

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8024
'text' : invalid array/string size

Description
The character or characters specified by text may not be used to declare the size of a string or array.

Notes
If the size indicator is a constant, verify that it is spelled correctly. Verify that the size of the array is greater than 0.

Error C8025
'text' : undefined identifier

Description
The identifier specified by text has not been declared.

Notes
All identifiers in a script must be declared before they can be referenced in the main program block or in a function block. Check that the identifier has been declared. if it has, check that spelling used in the declaration matches the spelling of the identifier at the error location.

Note: Your script might be calling an unsupported function. See Unsupported Functions for more information.

INSTALLDIR: undefined identifier when Compiling After Conversion Error C8025 specifies that the identifier (INSTALLDIR in this case) has not been declared. All identifiers in a script must be declared before they can be referenced in the main program block or in a function block.

Note: The exact error message for error C8025 is not a specific error. It is issued to anything undefined.

As part of the changes that take place during the conversion process (from InstallScript MSI to an InstallScript project), INSTALLDIR should have been changed to TARGETDIR throughout various IDE elements. Error C8025 occurs when the value of TARGETDIR is not set in your script. Therefore, the value of TARGETDIR must be set in your script, as it is by default in the OnFirstUIBefore event handler function. You can use the following code to set TARGETDIR:
if ( ALLUSERS ) then TARGETDIR = PROGRAMFILES ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME; else TARGETDIR = FOLDER_APPDATA ^ IFX_COMPANY_NAME ^ IFX_PRODUCT_NAME;

2084

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8026
'text' : invalid use of identifier

Description
The identifier specified by text is being used incorrectly in a statement.

Notes
This error message can be triggered by a number of errors, such as the use of a structure type name, rather than the structure name, in an operation. Examine the statement at the error location and check that all identifiers in the statement are being used correctly.

Error C8027
missing operand

Description
The compiler was unable to find the operand that was expected after an operator.

Notes
This error message may be displayed when the compiler encounters an incomplete statement ending with an operator at the end of the source file.

Error C8028
'text' : unresolved operator

Description
The character or characters specified by text were encountered after an expression that could not be resolved.

Notes
This error occurs when an operand is missing from an expression. Examine each operator in the expression and make sure that each one has the operands it requires.

Error C8031
'text' : uncalled function

Description
The character or characters specified by text were encountered after a function name, where the opening parenthesis of the argument list was expected. This error occurs in statements in which the result of a function call is assigned to a variable. The message is triggered by an error in the argument list that follows the function name.

InstallShield 2010 User Guide

ISP-1600-UG00

2085

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Check that the argument list is delimited from the function name by an opening parenthesis. If the argument list was not specified, insert it after the function name; when calling a function that takes no parameters, place empty set of opening and closing parentheses after the function name.

Error C8032
'text' : missing member reference

Description
The character or characters specified by text were encountered at a location were a member name was expected.

Notes
The line of code at the error location references a structure rather than a member of a structure. Determine which member of the structure you intended to reference and insert that member name. Remember to use the member operator to delimit the structure name and the member name.

Error C8033
'text' : unsubscripted array

Description
The identifier that precedes the character or characters specified by text is an unsubscripted array variable. InstallScript does not allow references to a complete array structure. You must reference elements in the array individually.

Notes
Determine which element of the array you want to reference and indicate its position in the array with a subscript. The subscript must be placed within square brackets and positioned immediately after the array name.

Error C8034
'text' : missing expression

Description
The character or characters specified by text were encountered at a location were an expression was expected.

Notes
This error generally occurs in an assignment statement when the value to be assigned is missing. Insert an expression to the right of the assignment operator. If the error occurs in a statement that references a constant, verify that the definition of that constant includes both the constant name and a value.
2086 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8035
'text' : statement label required

Description
The character or characters specified by text were encountered after the keyword goto, where a label is required.

Notes
Add a label after the keyword goto or delete the goto statement.

Error C8036
'name' : too many arguments

Description
The function specified by name is being called with too many arguments.

Notes
Compare the arguments in the function call with the parameter list in the declaration for that function. Delete the argument or arguments in the function call that are not defined in the declaration.

Error C8037
'text' : variable required

Description
The constant, literal value or structure member specified by text is being passed as an argument in a parameter position that requires a variable.

Notes
Declare a variable of the type required for the parameter; assign the constant or literal value to that variable; then pass the variable instead of the constant or literal value. InstallShield does not allow a structure member to be passed by reference. Declare a variable of the same type as the structure member; assign the value of the structure member to the new variable; then pass the variable instead. When the function returns, assign the value of variable to the structure member.

Error C8038
'text' : numeric value required

Description
The non-numeric argument specified by text was passed in a parameter position requiring a numeric argument.

InstallShield 2010 User Guide

ISP-1600-UG00

2087

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Make sure all arguments passed are of the correct data types for the parameter positions they occupy. Also make sure no arguments are missing.

Error C8039
'value' : string value required

Description
The number specified by value was encountered in an expression, statement, or function argument that requires string data.

Notes
In a string operation, check that all operands and operators are compatible with string data. In an assignment statement, verify that the value you are assigning to a string variable is itself a string. In a function call, be sure that you are not passing non-string data in a parameter position that requires a string.

Error C8040
'name' : incomplete argument list

Description
One or more arguments are missing in the call to the function specified by name.

Notes
To identify the missing argument, compare the number and types of arguments in the function call to the number and types of parameters for that function. If all of the arguments are present, check that they are delimited by commas.

Error C8042
'[' : string or array type required

Description
The identifier to the left of the bracket must be a string or array type.

Notes
This error occurs when you specify an index value for a variable that is not a string or array. Examine the identifier to the left of the bracket. If it is not a string or array, delete the index value or declare the variable as a string or array.

2088

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8043
'text' : typedef pointer type required

Description
The character or characters specified by text can be used only with a pointer to a structure.

Notes
A common reason for this error is the use of a structure pointer operator between a structure name and a member name. The structure pointer operator can be used only to specify the member of a record that is referenced with a pointer to a structure. Replace the structure pointer operator with a member operator.

Error C8044
'text' : typedef type required

Description
The character or characters specified by text can be used only with a structure that has been declared in a typedef statement.

Notes
A common reason for this error is the use of a member operator between a pointer to a structure and a member name. The member operator can be used only to specify the member of a structure that is referenced with a structure name. Replace the member operator with a structure pointer operator.

Error C8045
'name' : member name not found

Description
The member specified by name does not exist in the structure you are referencing.

Notes
Check the structure definition for the specified member. Check the spelling of the member name.

Error C8046
numeric variable required

Description
A non-numeric argument was passed in a parameter position requiring a numeric variable.

InstallShield 2010 User Guide

ISP-1600-UG00

2089

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Replace the argument with a numeric variable.

Error C8047
'&' : can only take address of variable

Description
The compiler encountered an address operation on a constant or literal.

Notes
The address operator ( & ) can be used only with a variable.

Error C8048
macro name missing

Description
The #define statement at the error location has no macro name.

Notes
Insert a macro name after the #define preprocessor directive and before the macro value.

Error C8049
missing expression for #if/#elif

Description
The #if or #elif preprocessor directive is not followed by a valid expression to determine the flow of compilation.

Notes
This error message is triggered if an expression has not been specified after an #if or #elif keyword. It can also be triggered if an invalid expression follows one of those directives.

Error C8050
'text' : invalid expression for #if/#elif

Description
The character or characters specified by text are invalid in the expression following the #if or #elif preprocessor command.

2090

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
This error message is triggered if an invalid expression after an #if or #elif keyword.

Error C8051
missing end of string literal

Description
The string literal in a #define statement has no closing quotation mark.

Notes
Look for a #define statement above the line on which the error was detected. For a string constant, enclose the literal in opening and closing quotation marks. Numeric constants should not be enclosed within quotation marks.

Error C8052
macro expansion text too large

Description
The text specified for the identifier in a #define statement exceeds 256 characters.

Notes
Either shorten the string specified for that identifier or divide the text into two or more shorter strings and specify each in a #define statement. Then concatenate the strings in your program.

Error C8053
'name' : identifier not a #define macro

Description
The identifier specified by name, which is used in an #undef statement, has not been defined.

Notes
Check the spelling of the identifier specified by name.

Error C8054
include file name missing

Description
The preprocessor directive #include does not specify the name of the file to include.

InstallShield 2010 User Guide

ISP-1600-UG00

2091

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Specify the name of a source file you want to include or delete the preprocessor directive.

Error C8055
#elif not preceded by #if

Description
The compiler encountered an #elif directive that was not preceded by an #if directive.

Notes
Examine the statements that precede the error location and restructure the conditional compile directives to start with an #if directive.

Error C8057
#else not preceded by #if

Description
The compiler encountered an #else directive that was not preceded by an #if directive.

Notes
Examine the statements that precede the error location and restructure the conditional compile directives to start with an #if directive.

Error C8058
#endif not preceded by #if

Description
The compiler encountered an #endif directive that was not preceded by an #if directive.

Notes
Examine the statements that precede the error location and restructure the conditional compile directives to start with an #if directive.

Error C8059
'text' : unrecognized preprocessor command

Description
The character or characters specified by text and preceded by the symbol # is not recognized as a preprocessor command.

2092

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Verify that the preprocessor command is valid in an InstallShield script and that it is spelled correctly.

Error C8062
'text' : constant operand required

Description
The character or characters specified by text were encountered in a statement where a constant was expected.

Notes
This error message is triggered in a switch..endswitch block when the keyword case is not followed by a constant or literal.

Error C8063
input line too long

Description
A source code line exceeds 1,024 characters.

Notes
Divide the line into two or more lines.

Error C8064
unterminated comment

Description
The comment that begins at the error location is not terminated.

Notes
Find the end of the comment. Insert comment termination characters or correct the comment termination characters if they were entered incorrectly.

Error C8065
string literal exceeds 255 characters

Description
The string literal at the error location has more than 255 characters.

InstallShield 2010 User Guide

ISP-1600-UG00

2093

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Divide the string literal into two or more string literals and concatenate them.

Error C8066
missing #endif statement at end of file

Description
An #if directive that appears in the script does not have a corresponding #endif directive.

Notes
Examine the preprocessor directives in your script. Make sure that all #if directives have a corresponding #endif directive.

Error C8067
'number' : integer constant too large

Description
The value specified by number is too large for the number variable.

Notes
The valid range of NUMBER data is -2,147,483,648 and +2,147,483,647. If you specify a value in the range +2,147,483,647 to +4,294,967,295, that value will overflow and the result will be a negative number. If the value is greater than 4,294,967,299, this error message will be displayed.

Error C8068
'char' : unrecognized character encountered

Description
The character specified by char was not recognized by the compiler.

Notes
Certain characters, such as $ and {, are not recognized by the compiler.

Error C8069
'#' : preprocessor command must be first on line

Description
The preprocessor directive identified by the symbol # was encountered at a location where it is not allowed. A preprocessor directive must be the first keyword in any line where it appears.

2094

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
The symbol # is reserved to identify preprocessor directives. It has no other valid use in InstallScript. Examine the line that produced the error. If the symbol # appears in an identifier, rename that identifier there and everywhere else in the script where it is referenced.

Error C8070
'text' : string constant expected

Description
The character or characters specified by text were encountered in a statement where a string constant was expected.

Notes
This error message is triggered in a switch..endswitch block when the keyword case is not followed by a string constant. In a switch..endswitch block, the constants specified in the case statements must be the same data type as the variable or expression result specified in the switch statement.

Error C8071
colon expected

Description
The compiler expected a colon in the statement.

Notes
This error occurs in a switch statement when the constant after the keyword case is not followed by a colon. Insert a colon between the constants and the statements for that case.

Error C8072
'elseif' : 'elseif' cannot follow 'else'

Description
The keyword elseif was encountered after an else statement in an if..endif block.

Notes
The keyword elseif cannot be used in an if..endif block after an else statement. Restructure the if..endif block to avoid this error.

Error C8073
'text' : missing 'then' keyword

InstallShield 2010 User Guide

ISP-1600-UG00

2095

Chapter 45: Errors and Warnings InstallScript Error Information

Description
The character or characters specified by text were encountered in an if block where the keyword then was expected.

Notes
Locate the if statement that immediately precedes the error location. Insert the keyword then after the conditional expression that follows the keyword if.

Error C8074
'else' : 'else' clause already encountered

Description
Two else statements were encountered in an if..endif block.

Notes
An if..endif block can include only one else branch. If you require multiple conditional branching, use an if..endif block that includes elseif statements or a switch..endswitch block instead.

Error C8075
'text' : 'default' label already encountered

Description
A second default case was encountered in a switch..endswitch statement.

Notes
A switch..endswitch statement can include only one instance of the keyword default to specify a default case. Restructure the switch....endswitch statement to eliminate one of the default cases. In some versions of InstallShield, this error message is displayed when multiple case labels are encountered in a switch block.

Error C8076
'case' : multiple case labels for statement

Description
The compiler encountered the keyword case where it expected to find the statement or statements to be executed for the last defined case.

Notes
The case statement that immediately precedes the character or characters specified by text is incomplete. It may be missing a terminating semicolon.

2096

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

In some versions of InstallShield, this error message is displayed when more than one default statement is encountered in a switch block.

Error C8077
'name' : label already defined

Description
The label indicated by name has already been used in the main program block or function.

Notes
Each label in the program block or in a function block must be unique.

Error C8079
'text' : invalid statement

Description
The statement at the location indicated by text specifies a process that is not allowed or is invalid in the current context.

Troubleshooting Tips
Examine the statement at the error location. Verify that the process is valid. Examples of invalid statements are assignment statements with a constant or an arithmetic operation on the left side of the assignment operator and an end statement directly below a label. If the statement at the error location is valid, examine statement blocks (such as record declarations, control statements and function definitions) in the lines above the error location. Verify that each statement block is terminated with the correct keyword.

Error C8080
'text' : missing arguments for function

Description
The character or characters specified by text were encountered after a function call where an argument list was expected.

Notes
Determine which arguments are required by the function and revise the call to include a complete argument list within parentheses.

Error C8081
'text' : invalid result for assignment

InstallShield 2010 User Guide

ISP-1600-UG00

2097

Chapter 45: Errors and Warnings InstallScript Error Information

Description
The character or characters specified by text cannot be assigned the value specified by the assignment statement.

Notes
This error occurs when you attempt to assign a value to a structure. InstallScript does not allow direct assignment to a structure. You must assign a value to each member of the structure individually.

Error C8082
'text' : missing '(' after switch

Description
The character or characters specified by text were encountered in a switch..endswitch block at a location where a left parenthesis was expected.

Notes
Examine the switch statement in which this error occurred. The expression that follows the keyword switch must be enclosed within parentheses.

Error C8083
'text' : missing ')' after switch

Description
The character or characters specified by text were encountered in a switch..endswitch block at a location where a right parenthesis was expected.

Notes
Examine the switch statement in which this error occurred. The expression that follows the keyword switch must be enclosed within parentheses.

Error C8084
'text' : missing 'case' after switch

Description
The character or characters specified by text were encountered in a switch..endswitch block at a location where a case statement was expected.

Notes
This error will occur if the switch statement is terminated with a semicolon or is not followed immediately by a case statement.

2098

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8085
'text' : missing '='

Description
The character or characters specified by text were encountered in a for..endfor block at a location where an equal sign was expected.

Notes
This error occurs when the equal sign is missing in the expression that follows the keyword for. Examine the for statement at which the error occurred and verify that the expression that follows the keyword for is structured correctly.

Error C8086
'text' : missing 'to' or 'downto'

Description
The character or characters specified by text were encountered in a for..endfor block at a location where an equal sign was expected.

Notes
This error occurs when the keyword to or downto is missing in a for statement.

Error C8087
cannot return value from program

Description
The main program block contains a return statement. You cannot return a value from a program.

Notes
Remove the return statement from the program block.

Error C8088
'endif' : not inside if statement

Description
The keyword endif could not be matched to a previous if statement.

Notes
Examine the if..endif block at the error location. Verify that the keyword endif has a corresponding if statement. This error is often triggered after an earlier error in an if..endif block.

InstallShield 2010 User Guide

ISP-1600-UG00

2099

Chapter 45: Errors and Warnings InstallScript Error Information

Error C8089
'endfor' : not inside for statement

Description
The keyword endfor could not be matched to a previous for statement.

Notes
Examine the for..endfor block at the error location. Verify that the keyword endfor has a corresponding for statement. This error is often triggered after an earlier error in a for..endfor block.

Error C8090
'until' : not inside repeat statement

Description
The keyword until could not be matched to a previous repeat statement.

Notes
Examine the repeat..until block at the error location. Verify that the keyword until has a corresponding repeat statement. This error is often triggered after an earlier error in a repeat..until block.

Error C8091
'endwhile' : not inside while statement

Description
The keyword endwhile could not be matched to a previous while statement.

Notes
Examine the while..endwhile block at the error location. Verify that the keyword endwhile has a corresponding while statement. This error is often triggered after an earlier error in a while..endwhile block.

Error C8092
'name' : function called but not defined

Description
The function specified by name has been prototyped and called in the body of the script, but it has not been defined.

2100

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
This error can occur if the function name is not spelled identically in the prototype, the function call and the function definition. It can also occur if the function definition appears in a file that should have been included (with an #include statement) but was not.

Error C8093
'name' : size required for string in typedef

Description
The identifier specified by name is a string that has been defined as a member in a typedef block, but it does not include a size specification.

Notes
Specify the size of all STRING declarations in a structureInstallScripts autosizing feature does not work in typedef statements.

Error C8097
'text' :syntax error

Description
The character or characters specified by text triggered an unclassified syntax error.

Notes
This error message is triggered for syntax errors for which there is not a specific error message.

Error C8098
'text' : missing '.name' after DLL name

Description
The character or characters specified by text were encountered after a DLL file name, where a function in the DLL file was expected.

Notes
When calling a function from a DLL, specify the function name, not the DLL file name.

Error C8099
'text' : DLL function name expected

Description
The character or characters specified by text were encountered after a DLL file name, where a function in the DLL file was expected.
InstallShield 2010 User Guide ISP-1600-UG00 2101

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
This error occurs when the function name specified with a DLL file name has not been declared in a prototype statement. Verify that this function has been prototyped; if it has, check the spelling of the function name.

Error C8100
'name' : function not defined for this DLL

Description
The function specified by name has not been prototyped for the DLL whose name precedes it.

Notes
This error occurs when you have prototyped functions from two or more DLLs and then called one of those functions with the wrong DLL name.

Error C8101
'name' : must specify DLL for this function

Description
The function specified by name was prototyped twice from two different DLLs.

Notes
When calling functions with identical names from two or more DLLs, you must qualify the function name by prefixing it with the DLL name followed by a period, as in the example below:
prototype MYDLL.UsefulFunction(INT, POINTER); prototype YOURDLL.UsefulFunction(INT, POINTER); export prototype MyFunc(HWND); function MyFunc(hMSI) NUMBER nValue; POINTER psvString; begin MYDLL.UsefulFunction(nValue, psvString); end;

Error C8112
'name' : typedef includes instance of self

Description
The data type of the member specified by name is invalid. A typedef cannot contain a member that is an instance of itself.

2102

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Restructure your typedefs to avoid this error.

Error C8113
'external' : local variables cannot be external

Description
The keyword external was encountered in data declaration within a function block.

Notes
Data that is local to a function cannot be declared external.

Error C8114
'text' : preprocessor user define error

Description
This message is triggered by an #error directive.

Error C8115

Project: This information applies to InstallScript projects.


'function name' : return type mismatch with prototype

Description
This message occurs when the return type of a script-defined function (the data type of the value returned by the function) is not the same in the function definition as it is in the function declaration. Note that if you do not explicitly specify a return type, the return type is assumed to be NUMBER.

Error C8126

Project: This information applies to InstallScript projects.


'text' : string variable required

Description
The character or characters specified by text were encountered at a location where a string declaration was expected.

InstallShield 2010 User Guide

ISP-1600-UG00

2103

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
To declare an array other than a character array (that is, a string), use parentheses rather than brackets; for example:
NUMBER nArray(3);

Error C8522

Project: This information applies to InstallScript projects.


Access is denied.

Description
InstallShield could not open the specified file.

Notes
This error message may occur because the specified file is read-only. In the Windows Explorer, locate the file and check its properties.

InstallScript Fatal Errors


Fatal errors are those that prevent the compilation from continuing. They are caused by missing include files, incorrectly specified file names, disk I/O errors, and insufficient system resources; the compiler also has certain built-in limitations, such as the limit on include files, that will trigger a fatal error if exceeded.
Table 45-18: InstallScript Fatal Errors Error F8501 F8502 F8503 F8504 F8505 F8506 F8508 F8509 F8510 F8511 Description I/O error on action file I/O error on debug file Cant open script input file Cant open .inx output file Cant open .dbg debug file out of memory too many macro expansions in line invalid delimiter for include file name missing delimiter for include file name cant open include file

2104

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Table 45-18: InstallScript Fatal Errors (cont.) Error F8512 F8513 F8514 F8515 F8516 F8517 F8518 F8519 Description include file plus path is too large too many nested #include files #if statements too deeply nested macro expansion buffer overflow maximum error count reached too many include files I/O error on link file user define fatal error

Error F8501
I/O error on action file

Description
An error occurred when InstallShield attempted to access an intermediate file created during compilation.

Notes
Each time you compile your setup, InstallShield creates intermediate files with the following file extensions: .dbg, .ino, .inx and .obs. After compilation, these files remain in the scripts folder. This message is displayed when an error occurs on an attempt to access the action file; that file has the extension .obs). Among the possible causes:

The disk is full. Create more available disk space by deleting unwanted files; then compile again. There are insufficient system resources (file handles and/or memory). Close any other applications that are open; then compile again. If the error occurs on a system with sufficient disk space and system resources, investigate other obvious reasons why file access might fail: The action file may be damaged. Rename it or delete it from the Scripts folder; then compile again. If the action file is in a shared folder on a file server, verify that you have network rights to write to that folder. If an action file exists from a previous compile, check that its file attributes have not been changed to read-only, system, or hidden. Check too that the file is not already open by another application or user.

Error F8502
I/O error on debug file

InstallShield 2010 User Guide

ISP-1600-UG00

2105

Chapter 45: Errors and Warnings InstallScript Error Information

Description
An error occurred when InstallShield attempted to access an intermediate file created during compilation.

Notes
Each time you compile your setup, InstallShield creates intermediate files with the following file extensions: .dbg, .ino, .inx and .obs. After compilation, these files remain in the scripts folder. This message is displayed when an error occurs on an attempt to access the debug file; that file has the extension .dbg). Among the possible causes:

The disk is full. Create more available disk space by deleting unwanted files; then compile again. There are insufficient system resources (file handles and/or memory). Close any other applications that are open; then compile again. If the error occurs on a system with sufficient disk space and system resources, investigate other obvious reasons why file access might fail: The debug file may be damaged. Rename it or delete it from the Scripts folder; then compile again. If the debug file is in a shared folder on a file server, verify that you have network rights to write to that folder. If a .dbg file exists from a previous compile, check that its file attributes have not been changed to read-only, system, or hidden. Check too that the file is not already open by another application or user.

Error F8503
Can't open script input file

Description
The compiler was unable to open the script file specified.

Notes
Verify the location and name of the file. You may have misspelled the file name or specified an incorrect path.

Error F8504
Can't open .inx output file

The compiler was unable to create the file for the compiled script.

Notes
This error is generated if InstallShield cannot create or recreate the .inx file. Under normal circumstances, the following problems can cause this error:

The disk is full. Create more available disk space by deleting unwanted files; then compile again.

2106

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

There are insufficient system resources (file handles and/or memory). Close any other applications that are open; then compile again. If the error occurs on a system with sufficient disk space and system resources, investigate other obvious reasons why file access might fail: If the target file is in a shared folder on a file server, verify that you have network rights to write to that folder. If an .inx file exists from a previous compile, check that its file attributes have not been changed to read-only, system, or hidden. Check too that the file is not already open by another application or user.

Error F8505
Can't open .dbg debug file

The compiler was unable to create the debug file. This file contains the information required to run the script with the debugger.

Notes
The following problems will cause this error:

The disk is full. Create more available disk space by deleting unwanted files; then compile again. There are insufficient system resources (file handles and/or memory). Close any other applications that are open; then compile again.

If the error occurs on a system with sufficient disk space and system resources, investigate other obvious reasons why file access might fail:

If the debug file is in a shared folder on a file server, verify that you have network rights to write to that folder. If a .dbg file exists from a previous compilation, check that its file attributes have not been changed to read-only, system, or hidden. Check too that the file is not already open by another application or user.

Error F8506
Out of memory

Description
The compiler was unable to allocate sufficient memory to complete the compilation.

Notes
Close any other applications that are open; then compile again. If the problem persists, restart Windows; then load InstallShield and compile again.

Error F8508
too many macro expansions in line

InstallShield 2010 User Guide

ISP-1600-UG00

2107

Chapter 45: Errors and Warnings InstallScript Error Information

Description
The specified line contains too many macros; the maximum number of macros per line is 100.

Notes
Reduce the number of macros on the line by breaking the line into two or more lines.

Error F8509
invalid delimiter for include file name

Description
The file name specified after the preprocessor directive #include is missing the initial quotation mark or angled bracket ( < ).

Notes
File names specified with the preprocessor directive #include must be enclosed by quotation marks (file name) or angled brackets (<file name>). Insert a quotation mark or opening angled bracket before the file name. Note that if you insert an initial quotation mark, the file name must be followed by a closing quotation mark; if you insert an opening angled bracket, the file name must be followed by a closing angled bracket ( > ).

Error F8510
missing delimiter for include file name

Description
The file name specified after the preprocessor directive #include is missing the closing quotation mark or angled bracket ( < ).

Notes
File names specified with the preprocessor directive #include must be enclosed by quotation marks (file name) or angled brackets (<file name>). Insert a quotation mark or closing angled bracket after the file name. Note that if the file name has an opening quotation mark, you must insert a quotation mark after the file name; if the file name has an opening angled bracket, you must insert a closing angled bracket ( > ).

Error F8511
cannot open include file

Description
The compiler was unable to find or open a file that has been included in the script.

Troubleshooting Tips
The following problems can cause this error:
2108 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

The file name in an #include statement is misspelled. A file name in an #include statement is specified without a full path, but the file cannot be found in the source directory. You do not have rights to open files on the network drive where the file resides. The file is damaged.

Error F8512
include file plus path is too large

Description
The path specified in an #include statement exceeds the maximum length of 256 characters

Notes
Move the included files to a folder that can be referenced with a path whose length is less than 256 characters.

Error F8513
too many nested #include files

Description
InstallScript allows nesting of include files up to a maximum of 8 levels. This limit has been exceeded.

Notes
Reduce the number of nested levels.

Error F8514
#if statements too deeply nested

Description
InstallScript allows nesting of #if statements up to a maximum of 10 levels. This limit has been exceeded.

Notes
Reduce the number of nested levels.

Error F8515
macro expansion buffer overflow

Description
The expansion of macros in the error line exceeds the maximum of 1024 characters.
InstallShield 2010 User Guide ISP-1600-UG00 2109

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
Restructure your code to eliminate this error.

Error F8516
maximum error count reached

Description
The maximum number of errors specified on the Compile/Link tab of the Settings dialog box has been reached.

Notes
For more information about the Compile/Link tab of the Settings dialog box, see Compile/Link Tab.

Error F8517
too many include files

Description
The maximum number of include was exceeded.

Notes
A setup script can include no more that 100 source files. Combine two or more source files to bring the total number down to 100.

Error F8518
I/O error on link file

Description
An error occurred when InstallShield attempted to write to the link file.

Notes
Each time you compile your setup, InstallShield creates intermediate files with the following file extensions: .dbg, .ino, .inx and .obs. After compilation, these files remain in the scripts folder. This message is displayed when an error occurs on an attempt to access the link file (.ino). This error might be caused by the following:

The disk is full. Create more available disk space by deleting unwanted files and then recompile. The link file is damaged. Rename it or delete it from Scripts folder and then recompile.

Error F8519
user define fatal error

2110

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 45: Errors and Warnings InstallScript Error Information

Description
This message is triggered by an #error directive.

InstallScript Internal Errors


C9001 internal error

Error C9001
'text' : internal error

Description
The character or characters specified by text triggered an unclassified syntax error.

Notes
This error message is triggered by syntax errors for which there is not a specific error message.

InstallScript Warnings
The compiler issues warning messages to alert you to irregularities in the script that may result in inefficiencies or run-time errors.

Caution: Warnings do not interrupt script compilation unless Warnings as errors is selected in the Compiler Settings dialog, or if the number of warnings exceeds the maximum specified. The default maximum value is 50. Table 45-19: InstallScript Warnings Warning Number C7501 C7502 C7503 C7505 Message macro redefinition string/array size exceeds recommended limit function defined but never called typedef definition differs from previous

Warning C7501
'name' : macro redefinition

Description
The identifier specified by name has already been used in a #define statement.

InstallShield 2010 User Guide

ISP-1600-UG00

2111

Chapter 45: Errors and Warnings InstallScript Error Information

Notes
If the second definition is simply a duplicate of the first, delete it. If you intended the second definition to be different from the first, rename the identifier in the second definition and update all statements in the script that reference it.

Warning C7502
'size' : string/array size exceeds recommended limit

Description
The numeric value specified by size indicates the size of a string or array that is larger than InstallScripts recommended maximum.

Notes
To avoid unexpected effects, reduce the size of the array.

Warning C7503
'name' : function defined but never called

Description
The function specified by name is not called in your setup.

Notes
To reduce the size of your setup, remove the unused function from your script.

Warning C7505
'name' : typedef definition differs from previous

Description
The data structure specified by name is defined in multiple library files (.obl files).

Notes
If the definitions are simply duplicates, delete all but one. If you intended the definitions to be different, rename the data structures to have unique names and update all statements in the script that reference them.

2112

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Virtualization Conversion Errors and Warnings


When you are converting a Windows Installer package to a virtual application, errors and warnings may occur. Some of the errors and warnings are applicable to any type of package virtualization, and others are specific to the virtualization solution for which you are preparing packages.

Error -9000: Unknown Exception


The following table documents this message:
Table 46-1: Error -9000: Unknown Exception Category Type: Message: Cause: Resolution: Description Error
An unknown exception occurred.

This is an unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Error -9001: Unknown COM


The following table documents this message:
Table 46-2: Error -9001: Unknown COM Category Type: Message: Resolution: Description Error
Internal error.

Contact InstallShield Technical Support.

Error -9002: Error Opening Package


The following table documents this message:
Table 46-3: Error -9002: Error Opening Package Category Type: Message: Cause: Description Error
An error occurred when opening the package.

This is an unexpected internal error when reading the Windows Installer package.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2113

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-3: Error -9002: Error Opening Package Category Resolution: Description Check to make sure that the package is accessible to the user. If the error persists and the package is on a network share, copy the package locally (to avoid any network connection issues) and try again. If this does not solve the problem, perform these additional investigational steps and then contact InstallShield Technical Support.

Error -9003: Error Saving Package


The following table documents this message:
Table 46-4: Error -9003: Error Saving Package Category Type: Message: Cause: Resolution: Description Error
An error occurred when saving the package.

This is an unexpected internal error when trying to save the Citrix profile. Check to see if the user has proper access to the location the profile is being built to. If this does not solve the problem, perform these additional investigational steps and then contact InstallShield Technical Support.

Error -9004: Process Cancelled By User


The following table documents this message:
Table 46-5: Error -9004: Process Cancelled By User Category Type: Message: Cause: Resolution: Description Error
Process cancelled by user.

The user clicked the Cancel button to stop the build. Restart the build process.

2114

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9005: Error Creating Temporary Folder


The following table documents this message:
Table 46-6: Error -9005: Error Creating Temporary Folder Category Type: Message: Cause: Description Error
An error occurred while creating a temporary folder

You encounter this error when the user does not have permission to write to C:\TMP, or the drive is out of disk space. Obtain write access to C:\TMP, and free some disk space on the drive, and then rebuild the profile.

Resolution:

Error -9006: Error Decompressing Package


The following table documents this message:
Table 46-7: Error -9006: Error Decompressing Package Category Type: Message: Cause: Description Error
An error occurred while decompressing the package 'PackageName'.

You encounter this error when the package is a compressed Windows Installer package (.msi) and errors were generated when InstallShield attempted to perform an administrative installation to extract the files. When this error occurred, you should have also received a return error code from Windows Installer. Look up that error code in the Windows Installer Help Library to determine the cause of the problem. If you did not receive a return error code from Windows Installer, this error could have been caused by the package not being authored properly. In the Windows Installer package, check to see if the AdminExecuteSequence table was defined. If that table is missing, the package cannot be decompressed.

Resolution:

Error -9007: File With Extension Not Found


The following table documents this message:
Table 46-8: Error -9007: File With Extension Not Found Category Type: Message: Description Error
No file found with the extension 'ComponentKeyName'.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2115

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-8: Error -9007: File With Extension Not Found Category Cause: Resolution: Description This is an unexpected error that occurred when file extensions were being processed. Check to make sure that the executable for the file extension exists and that it is set as the key file in its component.

Error -9008: Error Extracting Icon


The following table documents this message:
Table 46-9: Error -9008: Error Extracting Icon Category Type: Message: Cause: Resolution: Description Error
An error occurred while extracting the icon 'IconKeyName'

This is an unexpected error that occurred when an icon listed in the Icon table was being extracted. Verify that the Icon entry in the Icon table is valid. If necessary, replace it with a valid icon.

Error -9009: Unknown Provider


The following table documents this message:
Table 46-10: Error -9009: Unknown Provider Category Type: Message: Cause: Resolution: Description Error
The specified provider is unknown 'ProviderName'.

This is an unexpected internal error. Invalid data may have been modified via the Direct Editor causing this error. Delete the Release you are building, and then create a new one and rebuild.

2116

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9010: Invalid Target File Name


The following table documents this message:
Table 46-11: Error -9010: Invalid Target File Name Category Type: Message: Cause: Resolution: Description Error
The target file name is invalid. 'FileName'

This is an unexpected internal error. Invalid data may have been modified via the Direct Editor causing this error. Verify the Name field on the Citrix Assistant / ThinApp Assistant Profile Information page and make sure the name does not contain any invalid file name characters.

Error -9011: Error Reading MSI Table


The following table documents this message:
Table 46-12: Error -9011: Error Reading MSI Table Category Type: Message: Cause: Description Error
Unexpected error reading MSI table 'TableName'

This is an unexpected error that occurred when the specified Windows Installer table was being processed. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Resolution:

Error -9012: Unexpected Error in Method


The following table documents this message:
Table 46-13: Error -9012: Unexpected Error in Method Category Type: Message: Cause: Resolution: Description Error
Unexpected error in method 'MethodName'

This is an unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2117

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9013: Type Library Not Found


The following table documents this message:
Table 46-14: Error -9013: Type Library Not Found Category Type: Message: Cause: Description Error
Type library not found: 'TypeLibraryName'

You encounter this error when a type library file was not found when trying to extract COM information. Check to see if the type library file exists in the proper location when building the profile. If this does not resolve the problem, perform these additional investigational steps and then contact InstallShield Technical Support.

Resolution:

Error -9014: ShellExecute Failed


The following table documents this message:
Table 46-15: Error -9014: ShellExecute Failed Category Type: Message: Cause: Resolution: Description Error
ShellExecute failed: 'CommandLine'

You encounter this error when the specified command line failed to launch a process. Check to see if the executable file name shown is a valid file and that the user has the proper access rights to run it. If this does not resolve the problem, perform these additional investigational steps and then contact InstallShield Technical Support.

Error -9015: Unable to Determine Full Path for Driver


The following table documents this message:
Table 46-16: Error -9015: Unable to Determine Full Path for Driver Category Type: Message: Description Warning
Unable to determine the full path for driver 'DriverName'

2118

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-16: Error -9015: Unable to Determine Full Path for Driver Category Cause: Description You encounter this error when a driver referenced in the ODBCDataSource table is not being installed by the package. This error can be resolved in one of two ways: Editing the Windows Installer Package 1. Edit the package in InstallShield using Direct Edit mode. 2. Navigate to the ISVirtualPackage table. 3. Create an entry as follows to identify the full path of the missing driver: Name: <DriverName> Description Value:
Path to Driver

Resolution:

Manually Installing the Driver Install the missing driver on your machine and then rebuild the Citrix profile.

Warning -9016: Contents of Table Ignored


The following table documents this message:
Table 46-17: Warning -9016: Contents of Table Ignored Category Type: Message: Cause: Resolution: Description Warning
Contents of table 'TableName' will be ignored

This error message identifies a known limitation of Citrix conversion. If the contents of the table is deemed critical, repackage the application, and then rebuild the Citrix profile.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2119

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9017: .NET 1.x Assembly Not Supported


The following table documents this message:
Table 46-18: Warning -9017: .NET 1.x Assembly Not Supported Category Type: Message: Description Warning
Assembly 'AssemblyName' is a .NET 1.x assembly and will not be converted correctly. Only .NET 2.0/3.0 assemblies are currently supported. You may wish to repackage this package first.

Cause:

You encounter this error when attempting to convert a package containing a .NET 1.x assembly. Only .NET 2.0/3.0 assemblies are currently supported. Repackage the application, and then rebuild the Citrix profile.

Resolution:

Warning -9018: Custom Actions Ignored


The following table documents this message:
Table 46-19: Warning -9018: Custom Actions Ignored Category Type: Message: Cause: Description Warning
Custom action 'CustomActionName' will be ignored.

When converting a Windows Installer package to a Citrix profile, all custom actions are ignored. Any modifications to a target machine that a custom action in this Windows Installer package may create will not be propagated into the Citrix profile.

Note: When a custom action that does not modify the system or perform any part of the installation (such as a predefined custom action or a Type 19 custom action) is encountered, no message is generated. If a Type 51 custom action is encountered (which sets a property from a formatted text string), it is automatically resolved. If a Type 35 custom action is encountered, it is resolved only if it is referenced in the Directory table.

2120

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-19: Warning -9018: Custom Actions Ignored Category Resolution: Description The resolution that you should perform depends upon the purpose of the custom action:

If the custom action merely automatically enters a value or makes some other kind of minor modification, you can ignore this warning. If the custom action does something which could change the behavior of the installation (such as setting a Property), you may need to resolve this issue.

To resolve this issue, first attempt to launch the converted package on Citrix XenApp. If you receive any application errors, you need to repackage this application.

To repackage a Windows Installer package to capture custom action functionality: 1. Use the Repackaging Wizard to repackage this application. The Repackaging Wizard monitors system changes as an application is installed, and then that data is converted into a Repackager project. 2. Build the Repackager project to generate a revised Windows Installer package. This new Windows Installer package does not contain any custom actions, but (as a result of being repackaged) it will include the functionality performed by the original custom action.

Warning -9019: Conditionalized Components


The following table documents this message:
Table 46-20: Warning -9019: Conditionalized Components Category Type: Message: Cause: Description Warning
There exist one or more conditionalized components which may not be converted correctly

This warning is generated when attempting to convert conditionalized components because conditions on components are not evaluated. As a result, InstallShield includes the component in the virtual package. If you do not want to include the component in the virtual package, modify your .msi package or your project file to exclude that component. Then rebuild the virtual application. If you do want the virtual package to contain this component, you can ignore this warning.

Resolution:

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2121

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9020: Directory With Null Parent


The following table documents this message:
Table 46-21: Error -9020: Directory With Null Parent Category Type: Message: Cause: Resolution: Description Error
Directory 'DirectoryName' has a null parent and will be ignored.

This error occurs if a directory table entry (other than TARGETDIR) is null. Evaluate the ThinApp application to see if it works. If it does not work properly, you may want to consider repackaging the package.

Error -9021: Unable to Extract COM Data


The following table documents this message:
Table 46-22: Error -9021: Unable to Extract COM Data Category Type: Message: Cause: Description Error
Unable to extract COM data for 'FileName'

This Windows Installer package has an entry in the TypeLib or SelfReg table that contains COM data that InstallShield cannot convert to application data. Depending upon which file cannot be COM extracted, it is possible that this application will still work properly in Citrix XenApp isolation environment if you repackage this Windows Installer package with COM table mapping turned off. COM data is stored in the Windows Registry. So, if you repackage this Windows Installer package, the capture process will be able to obtain all of this data because it captures all modifications to the Registry and does not have to rely on COM extraction.

Resolution:

To resolve this issue, you need to repackage your Windows Installer package with COM table mapping turned off.

Error -9022: Complus Table


The following table documents this message:
Table 46-23: Error -9022: Complus Table Category Type: Description Error

2122

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-23: Error -9022: Complus Table Category Message: Cause: Description
The conversion process does not support data in the MSI table 'Complus'.

You encounter this error when the Windows Installer package that you are converting includes a Complus table. During the conversion process, the Complus table is not read. The Complus table contains information needed to install COM+ applications. While Citrix XenApp supports communicating with COM+ applications, it does not support installing COM+ services. Therefore, this application cannot be deployed on Citrix XenApp.

Resolution:

Error -9024: FileSFPCatalog


The following table documents this message:
Table 46-24: Error -9024: FileSFPCatalog Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'FileSFPCatalog'.

You encounter this error when the Windows Installer package that you are converting includes a FileSFPCatalog table. During the conversion process, the FileSFPCatalog table is not read. The FileSFPCatalog table associates specified files with the catalog files used by system file protection. If this file is necessary for the function of the application, you need to use Repackager to repackage the application.

Resolution:

Warning -9025: Font Table


The following table documents this message:
Table 46-25: Warning -9025: Font Table Category Type: Message Cause: Description Warning
The conversion process does not support data in the MSI table 'Font'.

You encounter this warning when the Windows Installer package that you are converting includes a Font table. During the conversion process, the Font table is not read.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2123

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-25: Warning -9025: Font Table Category Resolution: Description The Font table contains the information for registering font files with the system. If this Windows Installer package installs fonts to the C:\Windows\Fonts folder, then you wont have a problem, because fonts in the C:\Windows\Fonts folder are automatically registered with the operating system. However, if this Windows Installer package installs fonts in another folder, you need to perform one of the following options to resolve this issue:

Option 1: Edit the Windows Installer PackageOpen the Windows Installer package in InstallShield and modify it so that all fonts are installed into the C:\Windows\Fonts folder. Option 2: Repackage the ApplicationUse the Repackaging Wizard to repackage this application, and then build the Repackager project to generate a revised Windows Installer package.

Warning -9026: LaunchCondition Table


The following table documents this message:
Table 46-26: Warning -9026: LaunchCondition Table Category Type: Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'LaunchCondition'.

You encounter this warning when the Windows Installer package that you are converting includes a LaunchCondition table. During the conversion process, the LaunchCondition table is not read. The LaunchCondition table contains a list of conditions that all must be satisfied for the installation to begin. For example, if an application requires Windows XP to run, Windows XP is listed in the LaunchCondition table. Because this table is not read, no check is performed. Therefore, when a user on an operating system other than Windows XP launches this Citrix profile, the application may not function properly. To resolve this issue, perform one of the following tasks:

Resolution:

Option 1: Set Requirements on the Profile Requirements PageIf the launch conditions only include operating system, service pack, and language requirements, open this package in the Citrix Assistant, and set those Operating System and Language requirements on the Profile Requirements page. Then deploy this application as a Citrix profile. Option 2: Determine if Launch Conditions are MetReview the launch conditions listed in the table, and determine if the desktops in your enterprise meet those requirements. If all of the desktops meet those requirements, you can deploy this application as a Citrix profile. If the desktops do not meet those requirements (such as having Internet Explorer 6.0 instead of 7.0), upgrade those desktops to meet these requirements, and then deploy this application as a Citrix profile.

2124

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9027: LockPermissions Table


The following table documents this message:
Table 46-27: Warning -9027: LockPermissions Table Category Type Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'LockPermissions'.

You encounter this warning when the Windows Installer package that you are converting includes a LockPermissions table. During the conversion process, the LockPermissions table is not read. The LockPermissions table is used to secure individual portions of your application (files, registry keys, and created folders) in a locked-down environment. Citrix does not support permissions on files, registry keys, or created folders. You cannot modify permissions on any of the applications ACLs (access control lists). Because users will have full permissions when running this application in the isolation environment, this warning will not result in any problems.

Resolution:

Error -9028: MoveFile Table


The following table documents this message.
Table 46-28: Error -9028: MoveFile Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'MoveFile'.

You encounter this error when the Windows Installer package that you are converting includes a MoveFile table. During the conversion process, the MoveFile table is not read. This MoveFile table contains a list of files to be moved or copied from a specified source directory to a specified destination directory. Because this table is not read, you need to do one of the following to resolve this issue:

Resolution:

Option 1: Edit the Windows Installer PackageOpen the Windows Installer package in InstallShield and modify it to eliminate the use of the MoveFile table by installing additional files in the specified directories. Option 2: Repackage the ApplicationUse the Repackaging Wizard to repackage this application, and then build the Repackager project to generate a revised Windows Installer package. Option 3: Write a Pre-Launch ScriptWrite a pre-launch script that performs the file moving operations identified in the MoveFile table upon application launch.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2125

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9029: MsiDriverPackages Table


The following table documents this message:
Table 46-29: Error -9029: MsiDriverPackages Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'MsiDriverPackages'.

You encounter this error when the Windows Installer package that you are converting includes a MsiDriverPackages table. During the conversion process, the MsiDriverPackages table is not read. The MsiDriverPackages table includes one record for each driver package component in the application. Citrix XenApp does not support any type of driver. For example, when installing a printer, you can install the printer software within the isolation environment, but not the printer drivers. Therefore, to resolve this issue, you need to install any required drivers outside of the isolation environment on the user desktop machines.

Resolution:

Warning -9030: ODBCTranslator Table


The following table documents this message:
Table 46-30: Warning -9030: ODBCTranslator Table Category Type: Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'ODBCTranslator'.

You encounter this error when the Windows Installer package that you are converting includes a ODBCTranslator table. During the conversion process, the ODBCTranslator table is not read. The ODBCTranslator table lists the ODBC translators belonging to the installation. ODBC translators translate one form of raw data into another form that can be used with a specific database type. Ignoring the ODBCTranslator table should not prevent your application from functioning properly. However, if it does, you need to use Repackager to repackage the application.

Resolution:

2126

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9031: RemoveFile Table


The following table documents this message:
Table 46-31: Warning -9031: RemoveFile Table Category Type: Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'RemoveFile'.

You encounter this error when the Windows Installer package that you are converting includes a RemoveFile table. During the conversion process, the RemoveFile table is not read. This warning is displayed only if the application installation removes files during install (not uninstall). The RemoveFile table contains a list of files to be removed. If this file removal requirement is just a clean-up step, that does not impact the function of the application, you do not need to address this issue. However, if the existence of the files listed in the RemoveFile table prevents the application from functioning, you need to set the isolation option of the files to Ignore so that they are not visible to the isolation environment. The Ignore option directs the isolation environment to always look for the file on the system (ignoring the one inside the isolation environment).

Resolution:

Warning -9032: RemoveIniFile Table


The following table documents this message:
Table 46-32: Warning -9032: RemoveIniFile Table Category Type: Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'RemoveIniFile'.

You encounter this error when the Windows Installer package that you are converting includes a RemoveIniFile table. During the conversion process, the RemoveIniFile table is not read. The RemoveIniFile table contains the information an application needs to delete from a .ini file. If the removal of this entry is necessary for the function of the application, you need to use Repackager to repackage the application.

Resolution:

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2127

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9033: RemoveRegistry Table


The following table documents this message:
Table 46-33: Warning -9033: RemoveRegistry Table Category Type: Message: Cause: Description Warning
The conversion process does not support data in the MSI table 'RemoveRegistry'.

You encounter this error when the Windows Installer package that you are converting includes a RemoveRegistry table. During the conversion process, the RemoveRegistry table is not read. The RemoveRegistry table contains the registry information the application needs to delete from the system registry. If this removal requirement is just a clean-up step, that does not impact the function of the application, you do not need to address this issue. However, if the existence of the registry keys listed in the RemoveRegistry table prevents the application from functioning, you need to set the isolation option of the registry keys to Ignore so that they are not visible to the isolation environment. The Ignore option directs the isolation environment to always look for the registry key on the system (ignoring the one inside the isolation environment).

Resolution:

Error -9036: ISCEInstall Table


The following table documents this message:
Table 46-34: Error -9036: ISCEInstall Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'ISCEInstall'.

You encounter this error when the Windows Installer package that you are converting includes a ISCEInstall table. During the conversion process, the ISCEInstall table is not read. The ISCEInstall table is used to install Windows mobile applications. The conversion of mobile applications to Citrix profiles is not supported.

Resolution:

Error -9037: ISComPlusApplication Table


The following table documents this message:
Table 46-35: Error -9037: ISComPlusApplication Table Category Type: Description Error

2128

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-35: Error -9037: ISComPlusApplication Table Category Message: Cause: Description
The conversion process does not support data in the MSI table 'ISComPlusApplication'.

You encounter this error when the Windows Installer package that you are converting includes a ISComPlusApplication table. During the conversion process, the ISComPlusApplication table is not read. The ISComPlusApplication table contains information about COM+ applications. While Citrix XenApp supports communicating with COM+ applications, it does not support installing COM+ services. Therefore, this application cannot be deployed on Citrix XenApp.

Resolution:

Error -9038: ISPalmApp Table


The following table documents this message:
Table 46-36: Error -9038: ISPalmApp Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'ISPalmApp'.

You encounter this error when the Windows Installer package that you are converting includes a ISPalmApp table. During the conversion process, the ISPalmApp table is not read. The ISPalmApp table is used to install Palm mobile applications. The conversion of mobile applications to Citrix profiles is not supported.

Resolution:

Error -9039: ISSQLScriptFile Table


The following table documents this message:
Table 46-37: Error -9039: ISSQLScriptFile Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'ISSQLScriptFile'.

You encounter this error when the Windows Installer package that you are converting includes a ISSQLScriptFile table. During the conversion process, the ISSQLScriptFile table is not read.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2129

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-37: Error -9039: ISSQLScriptFile Table Category Resolution: Description The ISSQLScriptFile table lists SQL scripts. When a Windows Installer package is installed, it can run an SQL script to update a database. An application running as a Citrix profile cannot update a database. To resolve this issue, you need to update the database prior to using the converted Citrix profile using one of the following methods:

Use scripts to update the database manually. Update it by running the Windows Installer installation on one of the machines in your network that has access to that database.

Error -9040: ISVRoot Table


The following table documents this message:
Table 46-38: Error -9040: ISVRoot Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'ISVRoot'.

You encounter this error when the Windows Installer package that you are converting includes a ISVRoot table. During the conversion process, the ISVRoot table is not read. The ISVRoot table installs a Web site. An application running as a Citrix profile in an isolation environment cannot create a Web site. Therefore, creating Citrix profiles for applications that create Web sites during installation is not supported.

Resolution:

Error -9041: ISXmlFile Table


The following table documents this message:
Table 46-39: Error -9041: ISXmlFile Table Category Type: Message: Cause: Description Error
The conversion process does not support data in the MSI table 'ISXmlFile'.

You encounter this error when the Windows Installer package that you are converting includes a ISXmlFile table. During the conversion process, the ISXmlFile table is not read. The ISXmlFile table modifies XML files. If the modification of XML files is required in order for this application to operate properly, you need to use Repackager to repackage this application.

Resolution:

2130

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9051: Package Decompression Canceled


The following table documents this message:
Table 46-40: Error -9051: Package Decompression Canceled Category Type: Message: Cause: Description Error
Package decompression canceled by the user

The user cancelled the process of decompression of compressed MSI packages.

Error -9100: CreateInstance of Package Object Failed


The following table documents this message:
Table 46-41: Error -9100: CreateInstance of Package Object Failed Category Type: Message: Cause: Resolution: Description Error
CreateInstance of the Citrix package object failed.

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9101: Create Operation of Package Object Failed


The following table documents this message:
Table 46-42: Error -9101: Create Operation of Package Object Failed Category Type: Message: Cause: Resolution: Description Error
Create operation on Citrix package object failed 'ObjectName'.

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2131

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9102: Failed to Write Header Information


The following table documents this message:
Table 46-43: Error -9102: Failed to Write Header Information Category Type: Message: Cause: Resolution: Description Error
Failed to write package header information.

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9103: Citrix Finalization Failed


The following table documents this message:
Table 46-44: Error -9103: Citrix Finalization Failed Category Type: Message: Cause: Resolution: Description Error
Citrix Finalization Failed

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9104: Citrix Save Failed


The following table documents this message:
Table 46-45: Error -9104: Citrix Save Failed Category Type: Message: Cause: Resolution: Description Error
Citrix Save Failed

Unexpected internal error. This error may sometimes occur when the profile is to be digitally signed. Deselect the option to digitally sign the Citrix profile and then rebuild it.

2132

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9105: Error Initializing Citrix Writer


The following table documents this message:
Table 46-46: Error -9105: Error Initializing Citrix Writer Category Type: Message: Cause: Resolution: Description Error
Unexpected error initializing Citrix writer

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9106: Error Initializing Citrix Package


The following table documents this message:
Table 46-47: Error -9106: Error Initializing Citrix Package Category Type: Message: Cause: Resolution: Description Error
Unexpected error initializing Citrix package

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9107: Error Writing Citrix File Entries


The following table documents this message:
Table 46-48: Error -9107: Error Writing Citrix File Entries Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix file entries.

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2133

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9108: Error Determining Source File Path


The following table documents this message:
Table 46-49: Error -9108: Error Determining Source File Path Category Type: Message: Cause: Resolution: Description Error
Unexpected error determining source file path for 'FileName'

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9109: Error Writing Citrix Folder Entries


The following table documents this message:
Table 46-50: Error -9109: Error Writing Citrix Folder Entries Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix folder entries

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

Error -9110: Error Writing Citrix Registry Entries


The following table documents this message:
Table 46-51: Error -9110: Error Writing Citrix Registry Entries Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix registry entries

Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.

2134

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9113: Error Writing Citrix INI File Entries


The following table documents this message:
Table 46-52: Error -9113: Error Writing Citrix INI File Entries Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix INI file entries

Unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Error -9114: Error Writing Citrix Shortcuts


The following table documents this message:
Table 46-53: Error -9114: Error Writing Citrix Shortcuts Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix shortcuts

A catastrophic error has occurred while writing shortcuts to the profile. Verify that shortcuts point to a valid file. Try to narrow down issue by only keeping one shortcut and then try to rebuild.

Error -9115: Error Saving Citrix Profile


The following table documents this message:
Table 46-54: Error -9115: Error Saving Citrix Profile Category Type: Message: Cause: Resolution: Description Error
Unexpected error saving Citrix profile

A catastrophic error has occurred while saving the Citrix profile. Perform preliminary investigational steps and then contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2135

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9116: Error Creating Empty Citrix Profile


The following table documents this message:
Table 46-55: Error -9116: Error Creating Empty Citrix Profile Category Type: Message: Cause: Resolution: Description Error
Unexpected error creating empty Citrix profile

InstallShield is unable to create a new internal instance of a Citrix profile. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Error -9117: Error Creating Intermediate Folder


The following table documents this message:
Table 46-56: Error -9117: Error Creating Intermediate Folder Category Type: Message: Cause: Description Error
Unexpected error creating intermediate folder

InstallShield is unable to create the intermediate folder used for the build. This error could occur if the user does not have permission to write to C:\TMP. Obtain write access to C:\TMP and then rebuild the profile.

Resolution:

Error -9118: Error Initializing Citrix Profile


The following table documents this message:
Table 46-57: Error -9118: Error Initializing Citrix Profile Category Type: Message: Cause: Resolution: Description Error
Unexpected error initializing Citrix profile.

The initial values on the new profile could not be set. Check the package name, description, version, and security settings for any possible causes.

2136

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9119: Error Creating Default Target in Citrix Profile


The following table documents this message:
Table 46-58: Error -9119: Error Creating Default Target in Citrix Profile Category Type: Message: Cause: Resolution: Description Error
Unexpected error creating default target in Citrix profile

Initial target in the new profile could not be created. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Error -9120: Error Deleting File From Profile


The following table documents this message:
Table 46-59: Error -9120: Error Deleting File From Profile Category Type: Message: Cause: Resolution: Description Error
Unexpected error deleting file 'FileName' from profile

Specified file could not be deleted from profile. Check to see if the file exists and if the user has access rights to the file. If that did not resolve the problem, perform these additional investigational steps and then contact InstallShield Technical Support.

Error -9121: Failed to Copy File into Citrix Profile


The following table documents this message:
Table 46-60: Error -9121: Failed to Copy File into Citrix Profile Category Type: Message: Cause: Description Error
Failed to copy file into Citrix profile. Error: 'Name' File: 'Name'

Specified file could not be copied into profile.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2137

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-60: Error -9121: Failed to Copy File into Citrix Profile Category Resolution: Description Check to see if the file exists and if the user has access rights to the file. Also, when this error occurred, you should have also received a return error code from Windows Installer. Look up that error code in the Windows Installer Help Library to determine the cause of the problem.

Error -9122: Target Does Not Exist in Citrix Profile


The following table documents this message:
Table 46-61: Error -9122: Target Does Not Exist in Citrix Profile Category Type: Message: Cause: Resolution: Description Warning
The target for shortcut 'ShortcutName' does not exist in the Citrix profile. Excluding shortcut.

Actual file that shortcut points to is not included in the package. Exclude the shortcut by clearing the selection on the Citrix Assistant Profile Shortcuts page, and then rebuild the profile.

Error -9124: No Shortcuts Created for this Profile


The following table documents this message:
Table 46-62: Error -9124: No Shortcuts Created for this Profile Category Type: Message: Cause: Resolution: Description Error
No shortcuts were created for this profile

A Citrix profile must include at least one valid shortcut. Add a shortcut on the Citrix Assistant Profile Shortcuts page, and then rebuild the profile.

2138

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9125: Error Writing Citrix File Type Associations


The following table documents this message:
Table 46-63: Error -9125: Error Writing Citrix File Type Associations Category Type: Message: Cause: Resolution: Description Error
Unexpected error writing Citrix file type associations

Unable to write file type associations. Perform preliminary investigational steps and then contact InstallShield Technical Support.

Error -9126: Failed to Sign Profile Using Certificate


The following table documents this message:
Table 46-64: Error -9126: Failed to Sign Profile Using Certificate Category Type: Message: Cause: Resolution: Description Error
Failed to sign the profile using the supplied certificate

The certificate that is being used in invalid. Obtain a valid certificate and rebuild the profile.

Error -9127: Could Not Create Script Execution


The following table documents this message:
Table 46-65: Error -9127: Could Not Create Script Execution Category Type: Message: Cause: Resolution: Description Error
Could not create script execution for ScriptName

The specified script contains invalid data. On the Citrix Assistant Build Settings page, delete the script from the profile, re-add it, and then rebuild the profile. If you are still having problems, perform these additional investigational steps and then contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2139

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9128: Duplicate Shortcut


The following table documents this message:
Table 46-66: Warning -9128: Duplicate Shortcut Category Type: Message: Cause: Description Warning
'ShortcutName' shortcut already exists in the profile. Excluding duplicate shortcut.

There are multiple shortcuts defined in this profile that refer to different Start Menu locations or to other locations in the package. These shortcuts are not needed. On the Citrix Assistant Profile Shortcuts page, unselect these shortcuts, and then rebuild the profile.

Resolution:

Warning -9129: Duplicate Shortcut Names


The following table documents this message:
Table 46-67: Warning -9129: Duplicate Shortcut Names Category Type: Message: Description Warning
'ShortcutName' shortcut already exists in the profile, but with different command line parameters. A new unique shortcut 'NewShortcutName(1)' will be created in the profile.

Cause:

There are two shortcuts defined in this profile that have the same name, even though they have different command line parameters. On the Citrix Assistant Profile Shortcuts page, rename one of these shortcuts and then rebuild the profile.

Resolution:

Warning -9130: Duplicate Shortcut Targets


The following table documents this message:
Table 46-68: Warning -9130: Duplicate Shortcut Targets Category Type: Message: Description Warning
'ShortcutName' shortcut already exists in the profile, but with different target. A new unique shortcut 'NewShortcutName(1)' will be created in the profile.

2140

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-68: Warning -9130: Duplicate Shortcut Targets Category Cause: Description There are two shortcuts defined in this profile that have the same name, even though they have different targets. On the Citrix Assistant Profile Shortcuts page, rename one of these shortcuts and then rebuild the profile.

Resolution:

Warning -9131: Unable to Resolve Installer Variable


The following table documents this message:
Table 46-69: Warning -9131: Unable to Resolve Installer Variable Category Type: Message: Cause: Description Warning
Unable to resolve an installer variable in the string 'StringName'

Not all Windows Installer variables can be resolved at build time. This can result in errors if your application requires a specific value. Repackage this application and rebuild the profile, or use a constant value in the Windows Installer package.

Resolution:

Warning -9132: 16 Color Shortcut Icon Not Found


The following table documents this message:
Table 46-70: Warning -9132: 16 Color Shortcut Icon Not Found Category Type: Message: Cause: Description Warning
No 16 color icon found for 'ShortcutName' shortcut. Shortcut icon may look distorted when published.

The icon used for this shortcut does not contain a 16-color image. Since Citrix currently does not support images with a higher number of colors, this icon may look distorted when shown and published in Citrix XenApp. You can modify the shortcut to use a different icon or add a 16-color image to the one currently used.

Resolution:

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2141

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9133: Shortcut Icon Not Found


The following table documents this message:
Table 46-71: Warning -9133: Shortcut Icon Not Found Category Type: Message: Cause: Description Warning
No icon found for 'ShortcutName' shortcut. Using generic Windows application icon instead.

If no icon can be loaded for this shortcut, the generic Windows application icon is used. This can happen if the file used is corrupt or if extracting an image from it is not possible. Modify the shortcut to use a different icon.

Resolution:

Warning -9134: Failure to Extract Icon from Executable


The following table documents this message:
Table 46-72: Warning -9134: Failure to Extract Icon from Executable Category Type: Message: Cause: Resolution: Description Warning
Failed to extract icon from executable 'filename'. Make sure the executable is not corrupt.

A corrupt icon file may cause this warning. Modify the shortcut to use a different icon.

Error -9135: Shortcut Target is 16-Bit


The following table documents this message:
Table 46-73: Error -9135: Shortcut Target is 16-Bit Category Type: Message: Cause: Resolution: Description Error
The target for shortcut 'ShortcutName' is 16-bit. This application may not function properly in the Citrix Isolation Environment.

The file this shortcut points to is a 16-bit application. Replace file with a newer 32-bit version. Can also test and see if the application works properly in the Citrix environment.

2142

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9136: Some Files May Not Be Decompressed


The following table documents this message:
Table 46-74: Warning -9136: Some Files May Not Be Decompressed Category Type: Message: Cause: Description Warning
Some files may not be decompressed from this package because it contains features with a default install level of 0.

When installing a compressed Windows Installer package, the build engine runs an administrative installation of it to decompress it. One limitation of an administrative installation is that it does not decompress a file if the feature it is contained in has a default install level of 0. If there are any files in any components contained within those features, InstallShield will generate an error when it attempts to copy those files into the Citrix profile, because they will not exist in the source location. To resolve this issue, edit the Windows Installer package and set the default install level of that feature to something other than 0.

Resolution:

Warning -9137: Destination Directory Cannot Be Found


The following table documents this message:
Table 46-75: Warning -9137: Destination Directory Cannot Be Found Category Type: Message: Description Warning
The destination directory for the 'FileName' file cannot be found. You should consider Repackaging this application before proceeding with the conversion process.

Cause: Resolution:

This is an internal error. Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2143

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9138: Ignoring a DuplicateFile Table Entry


The following table documents this message:
Table 46-76: Warning -9138: Ignoring a DuplicateFile Table Entry Category Type: Message: Cause: Description Warning
Ignoring a DuplicateFile table entry because unable to resolve the property used for the DestFolder: 'INVALIDPATH'

You might encounter this error when the Windows Installer package that you are converting includes one or more entries in the DuplicateFile table, and a property that is used in the DestFolder column for one of those entries in the DuplicateFile table cannot be resolved. For example, if the destination for a duplicate file is set by a custom action, that destination cannot be resolved during the conversion. The DuplicateFile table contains a list of files that need to be duplicated during installation, either to a different directory than the original file or to the same directory but with a different name. Because a destination in this table cannot be resolved, you need to do one of the following to resolve this issue:

Resolution:

Option 1: Edit the Windows Installer PackageOpen the Windows Installer package in InstallShield and modify it to eliminate the use of the problematic entry in the DuplicateFile table by including any additional copies of that file. Option 2: Repackage the ApplicationUse the Repackaging Wizard to repackage this application, and then build the Repackager project to generate a revised Windows Installer package. Option 3: Write a Pre-Launch ScriptWrite a pre-launch script thatupon application launchperforms the file copy operations for the problematic entry in the DuplicateFile table.

Warning -9150: Warning Building Windows Installer Package


The following table documents this message:
Table 46-77: Warning -9150: Warning Building Windows Installer Package Category Type: Message: Cause: Description Warning
Warning building Windows Installer package: Warning number and message.

This warning indicates that InstallShield encountered a build warning when it built the new Basic MSI project and releases for the App-V application that you are creating. You may need to resolve the warning in the Basic MSI project that InstallShield created in the AppVPackage subfolder when you built the App-V application. However, note that InstallShield overwrites the Basic MSI project each time that you rebuild the App-V application.

Resolution:

2144

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9151: Error Building Windows Installer Package


The following table documents this message:
Table 46-78: Error -9150: Error Building Windows Installer Package Category Type: Message: Cause: Description Error
Error building Windows Installer package: Error number and message.

This error indicates that InstallShield encountered a build error when it built the new Basic MSI project and releases for the App-V application that you are creating. You may need to resolve the error in the Basic MSI project that InstallShield created in the AppVPackage subfolder when you built the App-V application. However, note that InstallShield overwrites the Basic MSI project each time that you rebuild the App-V application.

Resolution:

Error -9200: ThinApp Must Be Installed


The following table documents this message:
Table 46-79: Error -9200: ThinApp Must Be Installed Category Type: Message: Cause: Resolution: Description Error
A licensed or demo version of ThinApp must be installed on this machine in order to successfully build ThinApp applications. (www.vmware.com)

ThinApp is not installed. Install ThinApp.

Warning -9201: Extension for Shortcut Files Must Be .exe


The following table documents this message:
Table 46-80: Warning -9201: Extension for Shortcut Files Must Be .exe Category Type: Message: Cause: Resolution: Description Warning
The extension for the target for shortcut 'ShortcutName' is not '.exe'. Excluding shortcut.

Shortcuts that do not have a filename extension of .exe are excluded. No action is required.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2145

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9202: No Applications Were Created


The following table documents this message:
Table 46-81: Error -9202: No Applications Were Created Category Type: Message: Cause: Resolution: Description Error
No applications were created.

Either the Windows Installer package had no shortcuts or all shortcuts were excluded. Make sure that the source Windows Installer .msi package has at least one shortcut to an .exe file.

Error -9203: ThinApp Tool is Missing


The following table documents this message:
Table 46-82: Error -9203: ThinApp Tool is Missing Category Type: Message: Cause: Resolution: Description Error
ThinApp: 'ToolName' was not found

One of the ThinApp tools required to build a ThinApp application was not found. Reinstall ThinApp.

Error -9204: Duplicate Shortcut


The following table documents this message:
Table 46-83: Error -9204: Duplicate Shortcut Category Type: Message: Cause: Resolution: Description Warning
'ShortcutName' shortcut already exists. Excluding duplicate shortcut.

The source package has two shortcuts that both point to the same .exe target. No action is required.

2146

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9205: Identically Named Shortcut Already Exists, But With Different Parameters
The following table documents this message:
Table 46-84: Error -9205: Identically Named Shortcut Already Exists, But With Different Command Line Parameters Category Type: Message: Cause: Resolution: Description Warning
'ShortcutName' shortcut already exists, but with different command line parameters. A new, unique shortcut will be created.

Two shortcuts in the package differed in arguments only. No action is required.

Error -9206: Identically Named Shortcut Already Exists, But With a Different Target
The following table documents this message:
Table 46-85: Error -9206: Identically Named Shortcut Already Exists, But With a Different Target Category Type: Message: Cause: Resolution: Description Warning
'ShortcutName' shortcut already exists, but with a different target. A new, unique shortcut will be created.

Two shortcuts differed in the target pointed to only. No action is required.

Error -9207: Error During Build Process (vregtool.exe)


The following table documents this message:
Table 46-86: Error -9207: Error During Build Process (vregtool.exe) Category Type: Message: Cause: Description Error
An error occurred during the ThinApp build process (vregtool.exe).

An unexpected error occurred while running the vregtool.exe step of the ThinApp build process.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2147

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-86: Error -9207: Error During Build Process (vregtool.exe) Category Resolution: Description The cause of this error may be discernible by the progress messages that were displayed just before this error occurred. Also, make sure none of the files/folders in the build folder hierarchy are locked.

Error -9208: Error Occurred During Build Process (vftool.exe)


The following table documents this message:
Table 46-87: Error -9208: Error Occurred During Build Process (vftool.exe) Category Type: Message: Cause: Resolution: Description Error
An error occurred during the ThinApp build process (vftool.exe)

An unexpected error occurred while running the vftool.exe step of the ThinApp build process. The cause of this error may be discernible by the progress messages that were displayed just before this error occurred. Also, make sure none of the files/folders in the build folder hierarchy are locked.

Error -9209: Error Occurred During Build Process (tlink.exe)


The following table documents this message:
Table 46-88: Error -9209: Error Occurred During Build Process (tlink.exe) Category Type: Message: Cause: Resolution: Description Error
An error occurred during the ThinApp build process (tlink.exe)

An unexpected error occurred while running the tlink.exe step of the ThinApp build process. The cause of this error may be discernible by the progress messages that were displayed just before this error occurred. Also, make sure none of the files/folders of the build folder hierarchy are locked.

2148

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9300: Unhandled Exception During AdviseFile Operation


The following table documents this message:
Table 46-89: Error -9300: Unhandled Exception During AdviseFile Operation Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the AdviseFile operation for rule 'RuleName'

Contact InstallShield Technical Support.

Error -9301: Unhandled Exception During AdviseRegistry Operation


The following table documents this message:
Table 46-90: Error -9301: Unhandled Exception During AdviseRegistry Operation Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the AdviseRegistry operation for rule 'RuleName'

Contact InstallShield Technical Support.

Error -9302: Unhandled Exception During Command Action


The following table documents this message:
Table 46-91: Error -9302: Unhandled Exception During Command Action Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the command action with the description 'CommandActionName'

Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2149

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9303: Unhandled Exception During Alter File Action


The following table documents this message:
Table 46-92: Error -9303: Unhandled Exception During Alter File Action Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the alter file action with the description 'FileName'

Contact InstallShield Technical Support.

Error -9304: Unhandled Exception During Alter Registry Action


The following table documents this message:
Table 46-93: Error -9304: Unhandled Exception During Alter Registry Action Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the alter registry action with the description 'RegistryName'

Contact InstallShield Technical Support.

Error -9305: Unhandled Exception During Create Action


The following table documents this message:
Table 46-94: Error -9305: Unhandled Exception During Create Action Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the create action with the description 'CreateName'

Contact InstallShield Technical Support.

2150

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9306: Unhandled Exception During Execution of Rules Engine


The following table documents this message:
Table 46-95: Error -9306: Unhandled Exception During Execution of Rules Engine Category Type: Message: Resolution: Description Error
An unhandled exception occurred during the execution of the rules engine.

Contact InstallShield Technical Support.

Error -9401: Error Initializing App-V Writer


The following table documents this message:
Table 46-96: Error -9401: Error Initializing App-V Writer Category Type: Message: Resolution: Description Error
Unexpected error initializing App-V writer.

Contact InstallShield Technical Support.

Error -9402: Error Initializing App-V Package


The following table documents this message:
Table 46-97: Error -9402: Error Initializing App-V Package Category Type: Message: Resolution: Description Error
Unexpected error initializing App-V package.

Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2151

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9403: Error Writing App-V File Entries


The following table documents this message:
Table 46-98: Error -9403: Error Writing App-V File Entries Category Type: Message: Resolution: Description Error
Unexpected error writing App-V file entries.

Contact InstallShield Technical Support.

Error -9404: Error Writing App-V Folder Entries


The following table documents this message:
Table 46-99: Error -9404: Error Writing App-V Folder Entries Category Type: Message: Resolution: Description Error
Unexpected error writing App-V folder entries

Contact InstallShield Technical Support.

Error -9405: Error Writing App-V Registry Entries


The following table documents this message:
Table 46-100: Error -9405: Error Writing App-V Registry Entries Category Type: Message: Resolution: Description Error
Unexpected error writing App-V registry entries.

Contact InstallShield Technical Support.

2152

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9406: Error Writing App-V INI File Entries


The following table documents this message:
Table 46-101: Error -9406: Error Writing App-V INI File Entries Category Type: Message: Resolution: Description Error
Unexpected error writing App-V INI file entries.

Contact InstallShield Technical Support.

Error -9407: Error Writing App-V Shortcuts


The following table documents this message:
Table 46-102: Error -9407: Error Writing App-V Shortcuts Category Type: Message: Resolution: Description Error
Unexpected error writing App-V shortcuts.

Contact InstallShield Technical Support.

Error -9408: Error Writing App-V File Type Data


The following table documents this message:
Table 46-103: Error -9408: Error Writing App-V File Type Data Category Type: Message: Resolution: Description Error
Unexpected error writing App-V file type data.

Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2153

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9409: Error Saving App-V Data


The following table documents this message:
Table 46-104: Error -9409: Error Saving App-V Data Category Type: Message: Resolution: Description Error
Unexpected error saving App-V data.

Contact InstallShield Technical Support.

Error -9410: Error Determining Source File Path


The following table documents this message:
Table 46-105: Error -9410: Error Determining Source File Path Category Type: Message: Cause: Description Error
Unexpected error determining source file path for 'FileName'.

The installation location of a file, which is determined by some run time property, cannot be determined by the App-V virtual converter. Locate the file in InstallShield and provide a known directory.

Resolution:

Error -9411: OSD File Template Could Not Be Extracted


The following table documents this message:
Table 46-106: Error -9411: OSD File Template Could Not Be Extracted Category Type: Message: Resolution: Description Error
The Microsoft App-V OSD file template could not be extracted. The OSD file generation will not operate properly.

Contact InstallShield Technical Support.

2154

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9412: OSD File Could Not Be Saved


The following table documents this message:
Table 46-107: Error -9412: OSD File Could Not Be Saved Category Type: Message: Resolution: Description Error
The Microsoft App-V OSD file could not be saved. The OSD file generation will not operate properly.

Contact InstallShield Technical Support.

Error -9413: App-V OSD Save


The following table documents this message:
Table 46-108: Error -4313: App-V OSD Save Category Type: Message: Resolution: Description Error
The Microsoft App-V OSD file could not be saved. The OSD file generation will not operate properly.

Contact InstallShield Technical Support.

Warning -9414: Local App-V Application Specified as a Dependency of the Primary Application
The following table documents this message:
Table 46-109: Warning -9414: Local App-V Application Specified as a Dependency of the Primary Application Category Type: Message: Description Warning
A local App-V application was specified as a dependency of the primary application. The primary application may not run correctly if it is relocated to a different location.

Cause:

The user specified a dependent App-V application that is either on the local drive or on a mapped drive. This is determined by examining the HREF attribute of the CODEBASE tag in the dependency applications OSD file. Dependency applications should be referenced by a portable mechanism using either a non-FILE protocol or by using a network URL.

Resolution:

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2155

Chapter 46: Virtualization Conversion Errors and Warnings

Error -9415: Dependency Application Was Not Found


The following table documents this message:
Table 46-110: Error -9415: Dependency Application Was Not Found Category Type: Message: Cause: Resolution: Description Error
Dependency application was not found: 'ApplicationName'.

A specified App-V dependency application file was not found. Check the path of the specified App-V dependency application.

Warning -9416: Invalid Primary Application Directory


The following table documents this message:
Table 46-111: Warning -9416: Invalid Primary Application Directory Category Type: Message: Cause: Description Error
The specified Primary Application Directory, 'DirectoryName', does not exist.

This may be caused if the directories specified in the Windows Installer package have changed after a valid Primary Application Directory was specified. Specify a valid Primary Application Directory using the supplied browse folder in InstallShield.

Resolution:

Error -9417: Dependency Applications OSD File Contains an Invalid HREF Value
The following table documents this message:
Table 46-112: Error -9417: Dependency Applications OSD File Contains an Invalid HREF Value Category Type: Message: Cause: Description Error
Dependency application OSD file contains an invalid value for the HREF field of the CODEBASE tag: 'HREF_Field_Value'

The CODEBASE tag of the dependency applications OSD file may have an empty or non-existent HREF attribute.

2156

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Table 46-112: Error -9417: Dependency Applications OSD File Contains an Invalid HREF Value Category Resolution: Description Make sure that the CODEBASE tag of the dependency applications OSD file has a valid HREF attribute.

Error -9418: Error While Privatizing Side-By-Side Assemblies


The following table documents this message:
Table 46-113: Error -9418: Error While Privatizing Side-By-Side Assemblies Category Type: Message: Cause: Description Error
An error occurred while privatizing Side-By-Side assemblies.

When converting to an App-V package, files installed to the win32 Sxs assembly cache need to be privatized so that the App-V runtime can find them. This error occurs if there was an unexpected failure in that process. Contact InstallShield Technical Support.

Resolution:

Error -9419: Error Inserting Watermark


The following table documents this message:
Table 46-114: Error -9419: Error Inserting Watermark Category Type: Message: Resolution: Description Error
An error has occurred inserting the evaluation watermark into the App-V Package.

Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2157

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -9500: Shortcut Missing


The following table documents this message:
Table 46-115: Warning -9500: Shortcut Missing Category Type: Message: Cause: Resolution: Description Warning
The target for shortcut 'FileName' does not exist. Excluding shortcut.

The target file of a shortcut in the project does not exist. Repackage this application and then rebuild the virtual package.

Error -10000: Process Cancelled By User


The following table documents this message:
Table 46-116: Error -10000: Process Cancelled By User Category Type: Message: Cause: Description Error
Process cancelled by user.

User clicked Cancel to cancel the profile conversion process.

Warning -10001: Suite File Missing


The following table documents this message:
Table 46-117: Warning -10001: Suite File Missing Category Type: Message: Cause: Resolution: Description Warning
The suite MSI file 'FileName' is missing and will be excluded from the conversion.

An MSI file that is part of a suite conversion was not found. Make sure the input file for the suite conversion process exists.

2158

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Warning -10002: Suite File is Duplicate


The following table documents this message:
Table 46-118: Warning -10002: Suite File is Duplicate Category Type: Message: Cause: Description Warning
The suite MSI file 'FileName' appears to be the same as the main MSI file and we will exclude this file from the conversion process.

A suite conversion was attempted where the main Windows Installer file (.msi) and one of the additional Windows Installer files specified were the same. Specify unique Windows Installer files as part of the suite conversion process.

Resolution:

Warning -10003: Application File Missing


The following table documents this message:
Table 46-119: Warning -10003: Application File Missing Category Type: Message: Cause: Description Error
Application file not found 'ApplicationName'

A file referenced by the installation was not found by the App-V virtual converter. It is likely that the file reference is broken in the installation. Use InstallShield to locate the file in the installation and either fix the link or delete it.

Resolution:

Warning -10004: INI File Missing


The following table documents this message:
Table 46-120: Warning: -10004: INI File Missing Category Type: Message: Resolution: Description Error
INI file not found 'INI_File_Name'.

Contact InstallShield Technical Support.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2159

Chapter 46: Virtualization Conversion Errors and Warnings

Fix 11000: Excluding TCPIP Registry Entries


The following table documents this message:
Table 46-121: Fix 11000: Excluding TCPIP Registry Entries Category Type: Message: Action: Description Fix
Excluding TCPIP registry entries from the Citrix profile.

All TCPIP registry entries will be excluded from the Citrix profile.

Fatal Error 11001: Fail on VMware


The following table documents this message:
Table 46-122: Fatal Error 11001: Fail on VMware Category Type: Message: Cause: Action: Description Fatal
VMware cannot be virtualized.

Conversion will fail when the application being virtualized is VMware. This error message is displayed: VMware cannot be virtualized.

Warning 11003: Control Panel Applet - Citrix


The following table documents this message:
Table 46-123: Warning 11003: Control Panel Applet - Citrix Category Type: Message: Action: Description Warning
The Control Panel Applet [AppletName] will not appear in Control Panel.

A warning is displayed when the application contains a Control Panel applet.

2160

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

Fix 11004: Control Panel Applet - ThinApp


The following table documents this message:
Table 46-124: Fix 11004: Control Panel Applet - ThinApp Category Type: Message: Action: Description Fix
Generating shortcut for the Control Panel Applet located at 'DirectoryPath'

A default shortcut is created for ThinApp Control Panel applets.

Fatal Error 11005: QuickTime 7.4.1 Causes Fatal Error


The following table documents this message:
Table 46-125: Error 11005: QuickTime 7.4.1 Causes Fatal Error Category Type: Message: Cause: Resolution: Description Fatal Error
QuickTime 7.4.1 is known to have errors when running from a virtual package. Use QuickTime 7.4.5 instead.

QuickTime 7.4.1 cannot be virtualized correctly. Obtain QuickTime 7.4.5 and repeat the conversion process.

Fix 11006: Adobe Distiller Exclude AdobePDFSettings


The following table documents this message:
Table 46-126: Fix 11006: Adobe Distiller Exclude AdobePDFSettings Category Type: Message: Action: Description Fix
Excluding the registry key Software\Adobe\Acrobat Distiller\AdobePDFSettings. Adobe Distiller will recreate these settings on first use.

The AdobePDFSettings registry settings are excluded.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2161

Chapter 46: Virtualization Conversion Errors and Warnings

Fix 11007: Exclude URL Shortcut


The following table documents this message:
Table 46-127: Fix 11007: Adobe Distiller Exclude AdobePDFSettings Category Type: Message: Action: Description Fix
Excluding shortcut to .URL file. App-V does not launch these files properly.

The shortcut to the .URL file is excluded.

Steps to Take Before Calling Technical Support


Before contacting InstallShield Technical Support, perform the following steps to attempt to clearly identify the problem you are having:

Check packageTo determine if this error is caused by a problem with the specific package you are

converting, try to build a Citrix profile of a simple package that contains only one file.
Check machine and OSTo determine if this error is caused by a configuration on a particular machine or operating system, attempt to build this Citrix profile on another machine or operating system. Check individual filesTo determine if this is error limited to a specific item, find out if removing or

excluding a particular item will build error free.

Application Features Requiring Pre- or Post-Conversion Actions


Some application features are ignored when creating a Citrix profile. Therefore, some additional pre- or post-conversion actions must be taken in order for the virtual application to work. One action you could take to try to include ignored features in a virtual application is to first repackage the application using the Repackaging Wizard that is included with Repackager, and then convert the repackaged application to a virtual package.

Edition: Repackager is available in the Premier edition of InstallShield. It is also included with AdminStudio.

2162

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

Chapter 46: Virtualization Conversion Errors and Warnings

The following table lists the application features which require additional, manual conversion steps:
Table 46-128: Application Features Ignored During Profile Conversion Windows Installer Feature User-Defined Custom Actions Manual Conversion Steps When converting a Windows Installer package to a Citrix profile, all custom actions are ignored. For user-defined custom actions, a warning message is generated. Any modifications to a target machine that a custom action in this Windows Installer package may create will not be propagated into the Citrix profile. The resolution that you should perform depends upon the purpose of the custom action:

If the custom action merely automatically enters a value or makes some other kind of minor modification, you can ignore this warning. If the custom action does something which could change the behavior of the installation (such as setting a Property), you may need to resolve this issue.

To resolve this issue, first attempt to launch the converted package on Citrix XenApp. If you receive any application errors, you need to repackage this application, by performing the following steps.

To successfully convert a package with user-defined custom actions: 1. Use the Repackaging Wizard to repackage this application.The Repackaging Wizard monitors system changes as an application is installed, and then that data is converted into a Repackager project. 2. Build the Repackager project to generate a revised Windows Installer package. This new Windows Installer package does not contain any custom actions, but (as a result of being repackaged) it will include the functionality performed by the original custom action. Services Citrix XenApp does not support any type of services. Therefore, to resolve this issue, you need to install any required services outside of the isolation environment on the user desktop machines.

To successfully convert a package with services: 1. If you have an application and a service bundled in the same Windows Installer package, you need to create a separate Windows Installer package containing just the service. 2. Install the service on each of the user desktop machines. The Citrix profile of this application should now be able to run in an isolation environment on machines that already have the service installed. COM+ While Citrix XenApp supports communicating with COM+ applications, it does not support installing COM+ services. Therefore, an application that contains COM+ services cannot be deployed on Citrix XenApp.

InstallShield 2010 Virtualization Guide

ISP-1600-VG00

2163

Chapter 46: Virtualization Conversion Errors and Warnings

2164

ISP-1600-VG00

InstallShield 2010 Virtualization Guide

47
Automation Interface
The InstallShield Help Library explains how to use the InstallShield interface to author all elements of your installation and then build a release. For advanced developers, InstallShield exposes a COM interface that allows you to perform many of the same tasks from a program, such as a Visual Basic executable, or a script, such as a VBScript file in Windows Scripting Host. By calling methods, setting properties, accessing collections, and so on, through the automation interface, you can open a project and modify its features and component data in many of the same ways that you would in the InstallShield interface. The highest-level object in the automation interface is the ISWiProject Object. The first thing you must do to access the interface is create this object. Then, you can use its objects, methods, and properties to modify your project.

Note: The automation interface affects a project only at design time and not run time.

Automation Objects
Each InstallShield automation object represents an installation element such as a feature, a component, or a file. This section describes each of the InstallShield automation objects. The highest-level object in the automation interface is the ISWiProject Object. The first thing you must do to access the interface is create this object. Then, you can use its objects, methods, and properties to modify your project.

ISWiProject Object
Project: This information does not apply to QuickPatch projects.

InstallShield 2010 User Guide

ISP-1600-UG00

2165

Chapter 47: Automation Interface Automation Objects

ISWiProject contains the interface for opening, closing, and saving an InstallShield project (.ism) file. When InstallShield is installed on your system, you can instantiate a copy of ISWiProject with the following VB and VBScript syntax:
Set m_ISWiProject = CreateObject("IswiAuto16.ISWiProject")

To open an installation project, call the OpenProject method, as follows:


' Build path to the .ism file strFile = "C:\<WindowsFolder>\Profiles\<UserName>\Personal\MySetups\Test.ism" m_ISWiProject.OpenProject strFile

Build Status Events


The ISWiProject object raises the following status events:

Public Event ProgressIncrement(ByVal lIncrement As Long, pbCancel As Boolean) Public Event ProgressMax(ByVal lMax As Long, pbCancel As Boolean) Public Event StatusMessage(ByVal sMessage As String, pbCancel As Boolean)

These events are raised during the build process and provide status updates. You can set pbCancel to stop the build. Many feature properties and attributes are available in the automation interface through this objects methods, properties, and collections. The following table lists the ISWiProject Object members. Remember that some methods, properties, and collections are only available for a particular project type.

2166

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-1: ISWiProject Object Members Name ActiveLanguage Project All Type Description

Read-Write Gets or sets the default language of the project. Specify a single Property language as a language ID. The automation interface uses the default language whenever you get or set a localizable property, such as ISWiShortcut's DisplayName. In InstallShield, localizable properties must use a string entry. If the property has a string identifier, the string that you enter for the property becomes the string entrys value for the default language.

AddAdvancedFile

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript MSI All Basic MSI, InstallScript MSI Basic MSI All All All Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Method

Creates an advanced file with the specified name and (optionally) in the specified disk image in the current project.

AddAutomaticUpg radeEntry

Method

Creates a new ISWiAutomaticUpgradeEntry item and returns a handle to that object.

AddComponent AddCustomAction

Method Method

Creates an ISWiComponent object in the current project. Creates an ISWiCustomAction object in the current project.

AddDimReference AddFeature AddLanguage AddPathVariable AddProductConfig

Method Method Method Method Method

Creates an ISWiDimReference object in the current project. Creates an ISWiFeature object in the current project. Adds a language to the current project. Adds a path variable to the current project. Creates an ISWiProductConfig object in the current project.

AddProperty

Method

Creates a new ISWiProperty item and returns a handle to that object.

AddSetupFile

Method

Creates a support file with the specified name in the current project.

InstallShield 2010 User Guide

ISP-1600-UG00

2167

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name AddSetupType Project InstallScript, InstallScript Object All Type Method Description Creates a setup type with the specified name in the current project.

AddSqlServerCon nection AddUpgradeTable Entry

Method

Adds a new server connection to the current project.

Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI

Method

Creates a new ISWiStaticUpgradeEntry item and returns a handle to that object.

AdminExecuteSeq uence

Read-only Property

Returns an ISWiSequence collection representing the Administration Execute sequence in the current project.

AdminUISequence

Read-only Property

Returns an ISWiSequence collection representing the Administration User Interface sequence in the current project.

AdvtExecuteSequ ence

Read-only Property

Returns an ISWiSequence collection representing the Advertisement Execute sequence in the current project.

AdvtUISequence

Read-only Property

Returns an ISWiSequence collection representing the Advertisement User Interface sequence in the current project. (Note that validation rule ICE78 requires the Advertisement User Interface sequence to be empty. For more information, see ICEs.) Calling this method builds the patch configuration identified by the strPatchConfiguration variable. This action has the same effect as right-clicking on a patch configuration in the Patch Design view and then selecting 'Build Patch'. Builds a patch package based on a .pcp file.

BuildPatchConfigu Basic MSI, ration InstallScript MSI

Method

BuildPCPFile

Basic MSI, InstallScript MSI All Basic MSI, InstallScript, InstallScript MSI

Method

CloseProject CompanyName

Method

Closes an InstallShield installation project.

Read-Write Specifies the company name. Property

Project: In Basic MSI and InstallScript MSI projects, this property corresponds with the Publisher setting in the General Information view. In InstallScript projects, this property corresponds with the Company Name setting in the General Information view.

2168

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name CompanyPhone Project Basic MSI, InstallScript, InstallScript MSI Type Description

Read-Write Specifies the phone number that you would like end users to call for Property technical support. This phone number is displayed on the Support Information dialog of Add or Remove Programs. This property corresponds with the Support Phone Number setting in the General Information view. Read-Write Specifies the URL that you would like end users to visit for technical Property support. This URL is used as a hyperlink on the Support Information dialog of Add or Remove Programs. This property corresponds with the Publisher/Product URL setting in the General Information view. Method Caution: The CreatePatch method is deprecated for new development. It has been replaced with the BuildPCPFile and BuildPatchConfiguration methods. Method Creates a new project file (.ism).

CompanyURL

Basic MSI, InstallScript, InstallScript MSI

CreatePatch

Basic MSI, InstallScript MSI

CreateProject

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

DeleteAdvancedFil Basic MSI, e InstallScript, InstallScript MSI, InstallScript Object DeleteComponent DeleteCustomActi on All Basic MSI, InstallScript MSI Basic MSI

Method

Deletes the specified advanced file from the current project.

Method Method

Deletes the specified component from the project. Deletes an ISWiCustomAction object in the current project.

DeleteDimReferen ce

Method

Deletes a specific DIM reference from the current project.

DeleteMergeModu Basic MSI, le InstallScript MSI DeletePathVariabl e All

Method

Deletes a merge module from the current project.

Method

Deletes a path variable from the current project.

InstallShield 2010 User Guide

ISP-1600-UG00

2169

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name DeleteProductCon fig Project Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI, InstallScript Object InstallScript, InstallScript Object All Type Method Description Deletes an ISWiProductConfig object from the current project.

DeleteProperty

Method

Deletes a property from the Property table.

DeleteSetupFile

Method

Deletes the specified support file from the current project.

DeleteSetupType

Method

Deletes the specified setup type from the current project.

DeleteSQLConnec tion DeselectLanguag e DotNetFramework Path

Method

Remove a SQL Server connection from the current project.

All

Method

Deselects a language from the current project.

Basic MSI, InstallScript MSI All

Read-Write Specifies the path to the Microsoft .NET Framework. This parameter Property is optional.

ExportProject

Method

Causes the .ism file to use the XML representation, which is better suited for source code integration. Exports string entries to a text file. Generates a new, unique GUID as a string. Converts an .isv file (a text file kept in a source code integration program) to an InstallShield .ism project file.

ExportStrings GenerateGUID ImportProject

All All All

Method Method Method

Note: The .isv file format has been deprecated to version 2.x of InstallShield for Windows Installer and versions of InstallShield Developer prior to 8.x. ImportStrings INSTALLDIR All Basic MSI, InstallScript MSI Method Imports string entries from a text file.

Read-Write Sets the INSTALLDIR property for the project. A typical value is Property [ProgramFilesFolder]CompanyName\ProductName.

2170

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name InstallExecuteSeq uence Project Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Type Read-only Property Description Returns an ISWiSequence collection representing the Installation Execute sequence in the current project.

InstallUISequence

Read-only Property

Returns an ISWiSequence collection representing the Installation User Interface sequence in the current project.

ISWiAdvancedFile s

Collection

Contains every advanced file (as an ISWiAdvancedFile object) in your project.

ISWiAutomaticUpg Basic MSI, radeEntries InstallScript MSI ISWiComponents ISWiCustomAction s All Basic MSI, InstallScript MSI

Collection

Returns a collection of ISWiAutomaticUpgradeEntry items. This collection presents a list of Automatic Upgrade Items as they are defined in the IDE. Contains all of the components in this project. Contains all of the custom actions in this project.

Collection Collection

ISWiDimDependen Basic MSI cies ISWiDimReferenc es ISWiFeatures ISWiLanguages ISWiPathVariables Basic MSI

Collection

Contains all of the DIM dependencies associated with a DIM reference. Contains every DIM reference in the current project.

Collection

All All All

Collection Collection Collection

Contains all features names and their components. Contains all of the languages included in the current project. Contains all of the path variables that are associated with the current project. Contains all of the product configurations in this project.

ISWiProductConfi gs ISWiProperties

All

Collection

Basic MSI, InstallScript MSI Basic MSI, InstallScript, InstallScript MSI, InstallScript Object

Collection

Contains all of the Windows Installer properties in this project.

ISWiSetupFiles

Collection

Contains every support file (as an ISWiSetupFile object) in your project.

InstallShield 2010 User Guide

ISP-1600-UG00

2171

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name ISWiSetupTypes Project InstallScript, InstallScript Object Basic MSI, InstallScript MSI Type Collection Description Contains every setup type (as an ISWiSetupType object) in your project.

ISWiSISProperties

Collection

Contains all of the Summary Information Stream properties in this project.

ISWiSQLConnectio All ns ISWiUpgradeTable Entries Basic MSI, InstallScript MSI

Collection

Contains all of the SQL Server connections in the current project.

Collection

Returns a collection of ISWiStaticUpgradeEntry items. This collection presents a list of static major upgrade items, as defined in the IDE.

MergeModuleSear Basic MSI, chPath InstallScript MSI

Read-Write Specifies one or more comma-delimited folders that contain the Property merge module (.msm) files referenced by your project.

Note: If you plan to use the ISWiRelease.Build method, you should set this property. MinimumTargetDo tNetVersion Basic MSI, InstallScript MSI Read-Write Specifies the minimum version of the .NET Framework that the Property installation requires on the target system. This parameter is optional. The default is the latest version of the .NET Framework the InstallShield interface supports. Read-Write Specifies the minimum version of Windows Installer that the Property installation requires on the target system. This parameter is optional. The default is the latest version of Windows Installer that the InstallShield interface supports. Read-Write These properties are used only with merge module projects. Every String merge module has a record in the ModuleSignature table. The Properties ModuleID field of the ModuleSignature table is composed of two sections: ModuleID.ModuleIDGUID. For example,

MinimumTargetM SIVersion

Basic MSI, InstallScript MSI, Merge Module Merge Module

ModuleID and ModuleIDGUID


OpenProject All Method

IDID.019880FB_04F2_4D4B_99C9_9A0A12185229The ModuleID property gets or sets IDID. The ModuleIDGUID property gets or sets 019880FB_04F2_4D4B_99C9_9A0A12185229.

Opens an InstallShield installation project (.ism file). This method fails if the project is open in the InstallShield user interface.

PackageCode

Basic MSI, InstallScript MSI

Read-Write Gets or sets the package code as a string GUID. The GUID must be Property surrounded by braces{12345678-1234-1234-12341234567890AB}, for example.

2172

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name ProductCode Project All Type Description

Read-Write Gets or sets the product code as a string GUID. The GUID must be Property surrounded by braces{12345678-1234-1234-12341234567890AB}, for example. This property is not available for merge module projects.

ProductName

All

Read-Write Gets or sets the product name. Property Read-Write Contains the version number of the project as a string. Property Read-Write Enables you to save your project file (.ism) as the current schema Property version of InstallShield or as an earlier schema version every time that it is saved through the automation interface. Saving a project to an earlier schema enables users who have not upgraded to the same version of InstallShield to open and maintain your project. Specify one of the following schema version values in this property:

ProductVersion

All

ProjectSchemaVe rsion

All

epvCurrent (1)Current version of InstallShieldapplies to Basic MSI, InstallScript, and InstallScript MSI projects epv140 (12)InstallShield 2008applies to Basic MSI, InstallScript, and InstallScript MSI projects epv120 (11)InstallShield 12applies to Basic MSI, InstallScript, and InstallScript MSI projects epv1150 (10)InstallShield 11.5applies to Basic MSI, InstallScript, and InstallScript MSI projects epv110 (9)InstallShield 11applies to Basic MSI, InstallScript, and InstallScript MSI projects epv1050 (8)InstallShield 10.5applies to Basic MSI, InstallScript, and InstallScript MSI projects epv100 (7)InstallShield Xapplies to Basic MSI, InstallScript, and InstallScript MSI projects epv90 (6)InstallShield DevStudio 9.0applies to Basic MSI, InstallScript, and InstallScript MSI projects epv801 (5)InstallShield Developer 8.01applies to Basic MSI and InstallScript MSI projects epv80 (4)InstallShield Developer 8.0applies to Basic MSI and InstallScript MSI projects epv704 (3)InstallShield Developer 7.04applies to Basic MSI and InstallScript MSI projects epv701 (2)InstallShield Developer 7.01applies to Basic MSI and InstallScript MSI projects

InstallShield 2010 User Guide

ISP-1600-UG00

2173

Chapter 47: Automation Interface Automation Objects

Table 47-1: ISWiProject Object Members (cont.) Name ProjectSchemaVe rsion (cont.) Project Type Description Note that when you save your project to an earlier version of an InstallShield product, the schema of your project is modified to conform to the earlier version; any tables or columns that are available in the later version of the InstallShield product but not in the earlier version are lost during the downgrade process. If you save an InstallScript project as an earlier schema version, the script file (.rul) is not downgraded to the earlier version; only the .ism file is downgraded. If a script file created or modified in the later version of the InstallShield product contains functions that are not available in the earlier version, your script will not compile in the earlier version. RemoveFeature SaveProject SelfRegistrationM ethod All All Basic MSI, InstallScript MSI, Merge Module Method Method Deletes a feature from the project. Saves an InstallShield installation project.

Read-Write Specifies the self-registration method that should be used for files Property that are designated as self-registering. Valid options are:

esrISSelfReg (0)Use the InstallShield self-registration table (ISSelfReg) for all self-registering files. esrSelfReg (1)Use the Windows Installer self-registration table (SelfReg) for all self-registering files.

SkipUpgradeValid ators

Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI

Read-Write Enables you to skip the upgrade validators that normally run at the Property end of the build.

UpgradeCode

Read-Write Gets or sets the Upgrade Code property as a string GUID. The GUID Property must be surrounded by braces{12345678-1234-1234-12341234567890AB}, for example. This property is not available for merge module projects.

UseXMLProjectFor All mat

Boolean Specifies whether the project file should use the XML file format. Read-Write Property

AddAdvancedFile Method

Project: The AddAdvancedFile method applies to the following project types. Basic MSI InstallScript InstallScript MSI InstallScript Object

2174

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

The AddAdvancedFile method creates an advanced file object with the specified name and (optionally) in the specified disk image in the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pAdvancedFile As ISWiAdvancedFile Set pAdvancedFile = pProj.AddAdvancedFile ("C:\My Files\MyLastDiskFile.ext", edtLastDisk) pProj.SaveProject pProj.CloseProject

Syntax
AddAdvancedFile (FileName As String, Optional DiskType As ISWiDiskType = edtDisk1) As ISWiAdvancedFile

Parameters
Table 47-2: AddAdvancedFile Method Parameters Parameter FileName Description Pass the fully qualified filename for the advanced file that you want to add. This optional parameter specifies the Advanced Files folder in which you want to add the advanced file. Specify one of the following values.

DiskType

edtDisk1 (1)Add the advanced file to the Disk 1 folder. This is the default value for this optional parameter. edtLastDisk (-1Add the advanced file to the Last Disk folder. edtOther (0)Add the advanced file to the Other folder.

Applies To
ISWiProject

AddAutomaticUpgradeEntry Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the AddAutomaticUpgradeEntry method to create a new IswiAutomaticUpgradeEntry item and return a handle to that object.

InstallShield 2010 User Guide

ISP-1600-UG00

2175

Chapter 47: Automation Interface Automation Objects

Syntax
AddAutomaticUpgradeEntry()

Sample
'############################################### '# THIS SAMPLE WILL NOT EXECUTE PROPERLY WITHOUT A VALID PROJECT PATH '############################################### set pProject = CreateObject("IswiAuto16.ISWiProject") pProject.OpenProject("C:\Documents and Settings\Testlab\My Documents\MySetups\your project name-21.ism")

'############################################### 'To create a new entry dim pAutoEntry set pAutoEntry = pProject.AddAutomaticUpgradeEntry() pAutoEntry.Name ="AutoEntry" pAutoEntry.ReleaseFlags = "AutoFlag" pAutoEntry.UpgradedSetupPath = "AutoPath" '############################################### 'To find and delete an existing entry set pAutoEntry = nothing set pAutoEntry = pProject.IswiAutoUpgradeEntries("AutoEntry") pAutoEntry.Delete pProject.SaveProject pProject.CloseProject

Applies To ISWiProject

AddComponent Method
The AddComponent method creates a component object with the specified name in the current project. The following Visual Basic lines demonstrate this method:
Dim pComponent As ISWiComponent Set pComponent = m_pProject.AddComponent ("New_Component")

When the component is added, a GUID is automatically generated for it (see the GUID property for ISWiComponent). After you have added the component, you can set its other properties and associate it with a feature.

Syntax
AddComponent (ComponentKey As String) As ISWiComponent

2176

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-3: AddComponent Method Parameters Parameter ComponentKey Description The component key is the same as the name of the component that is displayed in the Setup Design views. This string must contain only alphanumeric characters, dots (.), or underscores (_), and it must begin with a letter or an underscore. ComponentKey must be unique among your project's component names. Component names are case sensitive.

Applies To
ISWiProject

AddCustomAction Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the AddCustomAction method to add a custom action to the current project. To insert a custom action into a sequence, use the InsertCustomAction method.

Syntax
AddCustomAction (CustomActionKey As String) as ISWiCustomAction

Parameters
Table 47-4: AddCustomAction Method Parameters Parameter CustomActionKey Description The string name of the custom action you want to create.

Applies To
ISWiProject

InstallShield 2010 User Guide

ISP-1600-UG00

2177

Chapter 47: Automation Interface Automation Objects

AddDimReference Method

Project: This information applies to Basic MSI projects.

The AddDimReference method enables you to create an ISWiDimReference object in your project. AddDimReference is a member of ISWiProject.

Syntax
AddDimReference(DimReferenceKey As String) As ISWiDimReference

Parameters
Table 47-5: AddDimReference Method Parameters Parameter DIMReferenceKey Description The DIM reference key is the same as the name of the DIM reference being displayed in your installation project. This string must contain only alphanumeric characters, dots (.), or underscores (_), and it must begin with a letter or an underscore. DIMReferenceKey must be unique among your project's DIM reference names.

Applies to
ISWiProject

AddFeature Method
The AddFeature method creates a feature with the specified name. AddFeature is a member of ISWiProject. The new feature is added to the current project as a top-level feature, but when this method is a member of an ISWiFeature object, the new feature is added as a subfeature of the current feature. The feature is created with the same default properties that new features have when you add them in the IDE. The following Visual Basic lines demonstrate calling AddFeature to add a feature, a subfeature, and then associate an existing component with the subfeature:
Dim pProject As ISWiProject Set pProject = New ISWiProject pProject.OpenProject "C:\MySetups\SampleApp.ism" Dim pFeat1, pFeat2 As ISWiFeature Dim sFeat1Name, sFeat2Name As String sFeat1Name = "ParentFeature" sFeat2Name = "SubFeature"

2178

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

' Add the feature ParentFeature, then SubFeature under ParentFeature Set pFeat1 = pProject.AddFeature(sFeat1Name) Set pFeat2 = pFeat1.AddFeature(sFeat2Name) Dim pComp Dim sCompName As String ' Add the existing component NewComponent1 to SubFeature sCompName = "NewComponent1" Set pComp = pProject.ISWiComponents.Item(sCompName) pFeat2.AttachComponent pComp pProject.SaveProject pProject.CloseProject

After you have added the feature, you can set its other properties and associate components with it.

Syntax
AddFeature (FeatureKey As String) As ISWiFeature

Parameters
Table 47-6: AddFeature Method Parameters Parameter FeatureKey Description The feature key is the same as the name of the feature that is displayed in the Setup Design views. The name becomes the index for the new ISWiFeature object. This string must contain only alphanumeric characters, dots (.), or underscores (_), and it must begin with a letter or an underscore. FeatureKey must be unique among your project's feature names. Feature names are case sensitive.

Applies To
ISWiProject ISWiFeature

AddLanguage Method
Call the AddLanguage method to add a language to the current project. Using this method is similar to adding a language in the General Information view in InstallShield. You can set the properties of the new language with the ISWiLanguage object.

Syntax
AddLanguage (LangId As String)

InstallShield 2010 User Guide

ISP-1600-UG00

2179

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-7: AddLanguage Method Parameters Parameter LangId Description Pass the language ID (as a string) that you want to add to the current project. For example:
oProject.AddLanguage "1035"

Applies To
ISWiProject

AddPathVariable Method
Call the AddPathVariable method to add a path variable to your project. Using this method is similar to adding a path variable from the Path Variables view in InstallShield. You can set the properties of the new path variable with the ISWiPathVariable object.

Important: Predefined path variables cannot be modified or deleted. If you attempt to do so, exception error 3142 occurs. For more information, see Predefined Path Variables.

Syntax
AddPathVariable (sName As String) As ISWiPathVariable

Parameters
Table 47-8: AddPathVariable Method Parameters Parameter sName Description Specifies the name of the path variable.

Applies To
ISWiProject

AddProductConfig Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

2180

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Call the AddProductConfig method to add a product configuration to your project. Using this method is similar to adding a product configuration with the Release Wizard or the Releases view of the IDE. You can set the properties of the new product configuration with the ISWiProductConfig object.

Syntax
AddProductConfig (ProductConfigKey As String) As ISWiProductConfig

Parameters
Table 47-9: AddProductConfig Method Parameters Parameter ProductConfigKey Description Holds the name of your new product configuration.

Applies To
ISWiProject

AddProperty Method
The AddProperty method creates a new ISWiProperty item and returns a handle to that object. The string parameter associated with this method is the new property name.

Applies To
ISWiProject

AddSetupFile Method

Project: The AddSetupFile method applies to the following project types. Basic MSI InstallScript InstallScript MSI InstallScript Object

The AddSetupFile method creates a support file with the specified name in the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pSetupFile As ISWiSetupFile Set pSetupFile = pProj.AddSetupFile ("C:\My Files\MySupportFile.ext") pProj.SaveProject pProj.CloseProject

InstallShield 2010 User Guide

ISP-1600-UG00

2181

Chapter 47: Automation Interface Automation Objects

Syntax
AddSetupFile (FileName As String) As ISWiSetupFile

Parameters
Table 47-10: Parameter FileName

AddSetupFile Method Parameters


Description Pass the fully qualified file name for the support file that you want to add.

Applies To
ISWiProject

AddSetupType Method

Project: This information does not apply to Basic MSI projects.

The AddSetupType method creates a setup type with the specified name in the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pSetupType As ISWiSetupType Set pSetupType = pProj.AddSetupType ("Client Setup - Save Space") pProj.SaveProject pProj.CloseProject

Syntax
AddSetupType (Name As String) As ISWiSetupType

2182

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-11: AddSetupType Method Parameters Parameter Name Description Pass the name for the setup type that you want to add. The name should be the text that you want to use as the display name. The automation interface automatically generates a valid primary key for the new setup type based on the name that you specify for this parameter.

Applies To
ISWiProject

AddSQLServerConnection Method
Call the AddSQLServerConnection method to add a new server connection to your project.

Syntax
Function AddSQLServerConnection(strConnectionName As String) As ISWiSQLConnection

Parameters
Table 47-12: AddSQLServerConnection Method Parameters Parameter ConnectionName Description Specify the name of the new connection you want to establish.

Return Values
This method returns ISWiSQLConnection object.

Applies To
ISWiProject

AddUpgradeTableEntry Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

InstallShield 2010 User Guide

ISP-1600-UG00

2183

Chapter 47: Automation Interface Automation Objects

Call the AddUpgradeTableEntry method to create a new IswiStaticUpgradeEntry item and return a handle to that object.

Syntax
AddUpgradeTableEntry()

Sample
'############################################### '# THIS SAMPLE WILL NOT EXECUTE PROPERLY WITHOUT A VALID PROJECT PATH '############################################### set pProject = CreateObject("IswiAuto16.ISWiProject") pProject.OpenProject("C:\Documents and Settings\Testlab\My Documents\MySetups\your project name-21.ism")

'############################################### 'To create a new entry dim pTableEntry set pTableEntry = pProject.AddUpgradeTableEntry() pTableEntry.UpgradeCode ="{12345678-1234-1234-1234-123456789012}" pTableEntry.VersionMin = "1.0" pTableEntry.VersionMax = "2.0" pTableEntry.Language = "0" pTableEntry.Remove = "" pTableEntry.ActionProperty = "ACTIONPROP_AUTOMATION" pTableEntry.Attributes = 5 '############################################### 'To find and delete an existing entry set pTableEntry =pProject.IswiUpgradeTableEntries("{12345678-1234-1234-1234-123456789012}") pTableEntry.Delete pProject.SaveProject pProject.CloseProject

Applies To
ISWiProject

BuildPatchConfiguration Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call BuildPatchConfiguration to build the patch configuration identified by the strPatchConfiguration parameter. This action has the same effect as right-clicking on a patch configuration in the Patch Design view and then selecting Build a Patch.

2184

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Syntax
BuildPatchConfiguration (strPatchConfigName as string)

Parameters
Table 47-13: BuildPatchConfiguration Method Parameters Parameter strPatchConfigName Description Enter the fully qualified path to your project.

Properties
Table 47-14: Properties Associated with BuildPatchConfiguration Method Property PatchConfigErrorCount Description Include the error count associated with a particular build. Include the warning count associated with a particular build.

PatchConfigWarningCount

Sample
'Create the project object dim pProject set pProject = CreateObject("IswiAuto16.ISWiProject")

'Call the OpenProject method '#################################################################### '# THIS SAMPLE WILL NOT EXECUTE PROPERLY WITHOUT A VALID PROJECT PATH '#################################################################### 'pProject.OpenProject("\Your project.ism") pProject.OpenProject("C:\Documents and Settings\Testlab\My Documents\MySetups\your project name-21.ism") 'Call the OpenProject method '################################################################################ '# THIS SAMPLE WILL NOT EXECUTE PROPERLY WITHOUT A VALID PATCH CONFIGURATION NAME '################################################################################ pProject.BuildPatchConfiguration "Config1" MsgBox "Patch Congifuration Config1 build with " & _ pProject.PatchConfigErrorCount & " Errors and " & _ pProject.PatchConfigWarningCount & " Warnings"

Applies To
ISWiProject

InstallShield 2010 User Guide

ISP-1600-UG00

2185

Chapter 47: Automation Interface Automation Objects

BuildPCPFile Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

The BuildPCPFile method builds a patch package (.msp) file based on the settings in a patch creation properties (.pcp) file. You do not need to have a project open in order to create a patch.

Syntax
BuildPCPFile (strPCPFile As String, strPatchFile As String, strLogFile As String, bCreateUpdateExe As Boolean) As Long

Parameters
Table 47-15: BuildPCPFile Method Parameters Parameter strPCPFile Description Specify the fully qualified path to a .pcp file. You can create or modify a .pcp file through the Patch Design view. Specify the fully qualified path for the .msp file you want to create. Any existing file with this name is overwritten. The file cannot be created if the directory you provided does not exist. Specify the fully qualified path to the .log file that records this method's status and success in creating the patch package. If the file exists, the current status is appended to it. Set this option to True to have the package wrapped in an executable that applies the patch.

strPatchFile

strLogFile

bCreateUpdateExe

Return Values
BuildPCPFile() returns the result returned by the Windows Installer function UiCreatePatchPackage. The BuildPCPFile method builds a patch package (.msp) file based on the settings in a patch creation properties (.pcp) file. You do not need to have a project open in order to create a patch.

Applies To
ISWiProject

CloseProject Method
Call CloseProject to close the .ism file you opened with OpenProject.
2186 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Syntax
CloseProject ()

Return Values
CloseProject always returns 0.

Applies To
ISWiProject

CreatePatch Method

Caution: This method is deprecated for new development and has been replaced with the BuildPCPFile and BuildPatchConfiguration methods. To facilitate backward compatibility with existing build scripts, the CreatePatch method calls the BuildPCPFile method.

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Syntax
CreatePatch()

Applies To
ISWiProject

CreateProject Method
The CreateProject method creates a new InstallShield project file (.ism) for a Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, or Merge Module project.

Syntax
CreateProject (strISWiProjectFile As String, ByVal projectType As ISWiProjectType)

InstallShield 2010 User Guide

ISP-1600-UG00

2187

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-16: CreateProject Method Parameters Parameter strISWiProjectFile Description Enter the fully qualified path to the .ism file that you want to create. Include the full file name. Specify what type of project you want to create. Valid values are:

projectType

eptMsi (1)Creates a Basic MSI project. eptScript (1)Creates an InstallScript MSI project. eptPro (9)Creates an InstallScript project. eptProObj (10)Creates an InstallScript Object project. eptMsm (2)Creates a Merge Module project.

Sample
The following sample code creates a Basic MSI project called TestProject.ism.
Dim pProject As ISWiAuto16.ISWiProject Set pProject = CreateObject("ISWiAuto16.ISWiProject") Dim sProjectName As String sProjectName = "C:\InstallShield 2010 Projects\TestProject.ism" pProject.CreateProject sProjectName, eptMsi pProject.OpenProject sProjectName, False pProject.CloseProject

Applies To
ISWiProject

DeleteAdvancedFile Method

Project: The DeleteAdvancedFile method applies to the following project types. Basic MSI InstallScript InstallScript MSI InstallScript Object

The DeleteAdvancedFile method deletes the specified advanced file from the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pAdvancedFile As ISWiAdvancedFile
2188 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Set pAdvancedFile = pProj.ISWiAdvancedFiles.Item(1) pProj.DeleteAdvancedFile pAdvancedFile pProj.SaveProject pProj.CloseProject

Syntax
DeleteAdvancedFile (pAdvancedFile As ISWiAdvancedFile) As Long

Parameters
Table 47-17: DeleteAdvancedFile Method Parameters Parameter pAdvancedFile Description Specify the advanced file object to be deleted.

Applies To
ISWiProject

DeleteComponent Method
Call DeleteComponent to delete a component in the project. Similar to deleting a component in the Setup Design views, DeleteComponent both removes a component from its feature and permanently deletes it from the project. You can use the following lines to delete all components associated with the feature FeatureName1:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeat As ISWiFeature Dim pComp As ISWiComponent Set pFeat = pProj.ISWiFeatures.Item("FeatureName1") For Each pComp In pFeat.ISWiComponents pProj.DeleteComponent pComp Next pProj.SaveProject pProj.CloseProject

Syntax
DeleteComponent (Component As ISWiComponent)

InstallShield 2010 User Guide

ISP-1600-UG00

2189

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-18: DeleteComponent Method Parameters Parameter Component Description Specify the ISWiComponent object that the method will delete.

Applies To
ISWiProject

DeleteCustomAction Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the DeleteCustomAction method to completely delete a custom action from the current project.

Syntax
DeleteCustomAction (CustomAction As ISWiCustomAction)

Parameters
Table 47-19: DeleteCustomAction Method Parameters Parameter CustomAction Description Pass the ISWiCustomAction object you want to delete from the current project.

Applies To
ISWiProject

DeleteDimReference Method

Project: This information applies to Basic MSI projects.

The DeleteDimReference method enables you to delete a specific DIM reference from your installation project. DeleteDimReference is a member of ISWiProject.

2190

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Syntax
DeleteDimReference(DimReference As ISWiDimReference)

Parameters
Table 47-20: DeleteDimReference Method Parameters Parameter DimReference Description Holds the name of the DIM reference that you want to remove from your installation project.

Applies To
ISWiProject

DeleteMergeModule Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the DeleteMergeModule method to completely delete a merge module from the current project.

Syntax
DeleteMergeModule (FileName As String)

Parameters
Table 47-21: DeleteMergeModule Method Parameters Parameter FileName Description Pass the fully qualified file name for the merge module (.msm) file that you want to delete from the project.

Applies To
ISWiProject Object

DeletePathVariable Method
Call the DeletePathVariable method to delete a path variable from your project. Using this method is similar to deleting a path variable from the Path Variables view in InstallShield.

InstallShield 2010 User Guide

ISP-1600-UG00

2191

Chapter 47: Automation Interface Automation Objects

Important: Predefined path variables cannot be modified or deleted. If you attempt to do so, exception error 3142 occurs. For more information, see Predefined Path Variables.

Syntax
DeletePathVariable (pPathVar ISWiPathVariable) As Long

Parameters
Table 47-22: DeletePathVariable Method Parameters Parameter pPathVar Description Pass the ISWiPathVariable object for the path variable that you want to delete.

Applies To
ISWiProject

DeleteProductConfig Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the DeleteProductConfig method to delete a product configuration from your project. Using this method is similar to deleting a product configuration in the Releases view of the IDE.

Syntax
DeleteProductConfig (ProductConfig As ISWiProductConfig)

Parameters
Table 47-23: DeleteProductConfig Method Parameters Parameter ProductConfigKey Description Pass the name of the product configuration that you want to delete.

Applies To
ISWiProject

2192

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

DeleteProperty Method

Project: This information does not apply to the following project types: InstallScript InstallScript Object

Call the DeleteProperty method to delete a property from the Property table. The function returns 0 if successful.

Syntax
Public Function DeleteProperty(ByVal pProperty As ISWiProperty) As Long

Parameters
Table 47-24: DeleteProperty Method Parameters Parameter Property Description Pass the name of the property you want to delete.

Sample Code
Dim proj As IswiAuto16.ISWiProject Set proj = New IswiAuto16.ISWiProject proj.OpenProject "c:\mysetups\your project name-3.ism" Dim pProp As IswiAuto16.ISWiProperty Set pProp = proj.ISWiProperties.Item(1)

Applies To
ISWiProject

DeleteSetupFile Method

Project: The DeleteSetupFile method applies to the following project types. Basic MSI InstallScript InstallScript MSI InstallScript Object

The DeleteSetupFile method deletes the specified support file from the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pSetupFile As ISWiSetupFile

InstallShield 2010 User Guide

ISP-1600-UG00

2193

Chapter 47: Automation Interface Automation Objects

Set pSetupFile = pProj.ISWiSetupFiles.Item(1) pProj.DeleteSetupFile pSetupFile pProj.SaveProject pProj.CloseProject

Syntax
DeleteSetupFile (pSetupFile As ISWiSetupFile) As Long

Parameters
Table 47-25: DeleteSetupFile Method Parameters Parameter pSetupFile Description The support file object to be deleted.

Applies To
ISWiProject

DeleteSetupType Method

Project: This information does not apply to Basic MSI projects.

The DeleteSetupType method deletes the specified setup type from the current project. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pSetupType As ISWiSetupType Set pSetupType = pProj.ISWiSetupTypes.Item(1) pProj.DeleteSetupType pSetupType pProj.SaveProject pProj.CloseProject

Syntax
DeleteSetupType (pSetupType As ISWiSetupType) As Long

2194

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-26: DeleteSetupType Method Parameters Parameter pSetupType Description The setup type object to be deleted.

Applies To
ISWiProject

DeleteSQLConnection Method
Call the DeleteSQLConnection method to remove a SQL Server Connection from the project.

Syntax
Function DeleteSQLConnection(Connection As ISWiSQLConnection) As Long

Parameters
Table 47-27: DeleteSQLConnection Method Parameters Parameter Connection Description Specify the connection you want to remove from the project.

Applies To
ISWiProject

DeselectLanguage Method
Call the DeselectLanguage method to deselect a language from the current project.

Syntax
DeselectLanguage (LangId As String)

InstallShield 2010 User Guide

ISP-1600-UG00

2195

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-28: DeselectLanguage Method Parameters Parameter LangId Description Pass the language ID you want to deselect in a string, as in oProject.DeleteLanguage "1036".

Applies To
ISWiProject

ExportProject Method
Call ExportProject to convert an .ism file to XML format before checking it into a source code control program.

Note: When a project file format is converted to either XML or binary format, the project file extension remains *.ism.

Note: The .isv file format has been deprecated to version 2.x of InstallShield for Windows Installer and versions of InstallShield Developer prior to 8.x.

Syntax
ExportProject (strISWiTextProjectFile As String, Optional strISWiProjectFile As String) As Long

Parameters
Table 47-29: ExportProject Method Parameters Parameter strISWiTextProjectFile strISWiProjectFile Description Enter the fully qualified path to the .isv file. Enter the fully qualified path to the .ism file. This parameter is optional only if the .ism file is already open.

Applies To
ISWiProject

2196

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

ExportStrings Method
Call ExportStrings to copy all or a portion of the string entries for a specific language to a tab-delimited Unicode text file (.txt). You can provide the .txt file to a translator who can update the file with translated text. After it has been translated, you can import the translated string entries into your project by calling the ImportStrings method.

Syntax
ExportStrings (strfile As String, dTimeStamp As Date, sLang As String) As Boolean

Parameters
Table 47-30: ExportStrings Method Parameters Parameter strfile Description Enter the fully qualified path to the text file that will contain the exported strings. If the file exists, the automation interface overwrites it. ExportStrings creates a Unicode file. dTimeStamp All string entries have a date and time that they were last modified. This timestamp is useful if you want to give the translator only the string entries that are new or have been modified since the last round of translations. To export only the string entries that have been modified since a specific date, specify the earliest date for the string entries you want to export. The automation interface exports the string entries that have changed on or since that date. To export all of the entries for the specified language, enter the number 0. sLang Specify the identifier for the language whose string entries you want to export to the text file.

Applies To
ISWiProject

GenerateGUID Method
The ProjectGenerateGUID method generates a new, unique GUID as a string.

Applies To
ISWiProject

ImportProject Method

Note: This method has been deprecated to version 2.x of InstallShield for Windows Installer and versions of InstallShield Developer prior to 8.x.

InstallShield 2010 User Guide

ISP-1600-UG00

2197

Chapter 47: Automation Interface Automation Objects

Call ImportProject to convert an .isv file to an .ism file. If you access your project from a source code control program, InstallShield saves it as a text (.isv) file. However, OpenProject and ISCmdBld.exe both require a standard InstallShield project (.ism) file. Later, you can call ExportProject to convert the .ism file back to an .isv file before checking it in to your source control program. ImportProject fails if the project is already open in the automation interface or in InstallShield.

Syntax
ImportProject (strISWiProjectFile As String, strISWiTextProjectFile As String) As Long

Parameters
Table 47-31: ImportProject Method Parameters Parameter strISWiProjectFile strISWiTextProjectFile Error Codes Description Enter the fully qualified path to the resulting .ism file. Enter the fully qualified path to the .isv file. 1007The project file is already opened. 1009Could not import the project. 1012The .isv file is missing.

Applies To
ISWiProject

ImportStrings Method
Call ImportStrings to import the contents of a tab-delimited text file (.txt) into the project for a specific language. This method is useful when you have exported the entries to a text file and had them translated.

Syntax
ImportStrings (strfile As String, sLang As Integer, Optional Enum eiType, Optional strLogFile As String) As Boolean

2198

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-32: ImportStrings Method Parameters Parameter strfile Description Enter the fully qualified path to the text file that contains the string entries that you want to import. Specify the identifier for the language whose string entries you want to import to the project. Specify how you want to handle conflicts when importing string entries:

sLang

eiType


strLogFile

eiIgnore (0)Do not replace the string entrys value if it already exists in the project for the specified language. eiOverwrite (1)Replace the projects existing string entry with the one in the text file. This is the default value for this optional parameter.

Specify the fully qualified path to the log file that should contain the status and success of importing the string entries. The log file records any conflicts in importing string entries and lists any improperly formatted, hence unusable, entries. If the log file exists, it is overwritten.

Note: This parameter is optional.

Applies To
ISWiProject

OpenProject Method

Project: This information does not apply to QuickPatch projects.

Call OpenProject with the fully qualified path to your InstallShield project (.ism) file to be able to modify it. This method is equivalent to loading a project in the IDE.

Note: The ISWiProject.OpenProject method fails if the project is open in the InstallShield user interface.

Syntax
OpenProject (strISWiProjectFile As String, Optional ByVal bReadOnly As Boolean) As Long

InstallShield 2010 User Guide

ISP-1600-UG00

2199

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-33: OpenProject Method Parameters Parameter strISWiProjectFile bReadOnly Description Enter the fully qualified path to the .ism file. Determines whether the project is opened with write privileges. True opens the project as a readonly file. The default value for this optional parameter is False.

Return Values and Errors


Table 47-34: OpenProject Method Return Values and Errors Return Value 0 1 Description Project successfully opened. Project opened, but is locked by some other process. Attempted to open project for write access, but project opened in read-only mode. There was a problem creating the merge module catalog. Verify that the merge module search path is correct (via the File Locations tab of the Options dialog box or using -o for the Standalone Build), verify that no merge modules on the merge module path are corrupt, or self-register IsMMUpdater2.dll. Unable to open file: %1. Ensure that the file is a valid InstallShield project. Unable to open file: %1. This project was created using a previous version of InstallShield Developer, InstallShieldWindows Installer or InstallShield Express. Unable to open file: %1. This project was created using InstallShield Professional or InstallShield Express 2.xx. Unable to open file: %1. The project was created using a more recent version of InstallShield Developer or the project has been updated to a more recent version of InstallShield, InstallShield DevStudio, or InstallShield Developer.

Error Code 1100

Error Code 1101

Error Code 1102

Error Code 1103

Applies To
2200 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

ISWiProject

RemoveFeature Method
The RemoveFeature method permanently deletes a feature from the current project. For example, the following code fragment opens a project, deletes the feature named NewFeature1, and then saves and closes the project:
Dim pProj As ISWiProject Dim pFeat As ISWiFeature Set pProj = New ISWiProject pProj.OpenProject "C:\Test\SampleProject.ism" Set pFeat = pProj.ISWiFeatures.Item("NewFeature1") pProj.RemoveFeature pFeat pProj.SaveProject pProj.CloseProject

When RemoveFeature is a member of ISWiFeature, it cannot be used to delete the current feature. However, you can call it to delete a subfeature, such as the first subfeature under NewFeature1 in the following example:
Set pFeat = pProj.ISWiFeatures.Item("NewFeature1") pProj.RemoveFeature pFeat.Features(1)

Syntax
RemoveFeature (Feature As ISWiFeature) As Long

Parameters
Table 47-35: RemoveFeature Method Parameters Parameter Feature Description The item in ISWiFeatures you want to remove.

Applies To
ISWiProject ISWiFeature

SaveProject Method
Call SaveProject to save any changes you have made to your .ism file through the automation interface.

Syntax
SaveProject ()

InstallShield 2010 User Guide

ISP-1600-UG00

2201

Chapter 47: Automation Interface Automation Objects

Return Values and Errors


Table 47-36: SaveProject Method Values Return Value ERROR_SUCCESS (0) Error Code 1104 Description Project is saved. Unable to save file: %1. The project is open in readonly mode or is being used by another process.

Applies To
ISWiProject

ISWiAdvancedFile Object
Project: The ISWiAdvancedFile object applies to the following project types. Basic MSI InstallScript InstallScript MSI InstallScript Object

ISWiAdvancedFile represents an advanced file belonging to your project. The advanced file can be an existing one from the Support Files view (or the Support Files/Billboards view) in InstallShield or one added by calling AddAdvancedFile. Use the project's ISWiAdvancedFiles collection to access a specific advanced file. You must specify either an index number or the file key for the Item property of ISWiAdvancedFiles. The file key is visible in the IDE only as the first entry in the Direct Editor view's ISDisk1 table. Instead of using the file key, you could write code similar to the following example to check for a certain file name:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pAdvancedFile As ISWiAdvancedFile For Each pAdvancedFile In pProj.ISWiAdvancedFiles If UCase(pAdvancedFile.BuildSourcePath) = "C:\MY FILES\MYADVANCEDFILE.EXT" Then Exit For End If Next pProj.SaveProject pProj.CloseProject

If the file C:\My Files\MyAdvancedFile.ext is found among the project's setup files, the For loop ends, and pAdvancedFile holds a copy of the ISWiAdvancedFile object for C:\My Files\MyAdvancedFile.ext.

2202

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-37: ISWiAdvancedFile Object Members Name Name Type Read-Only Property Description Stores the file key of the advanced file. See the description of ISWiFile above for more information about the file key. Stores the advanced file's fully qualified source filename. Any path variables are resolved to the actual path. This enumerated integer property specifies the Advanced Files folder in which you want to add the advanced file. Specify one of the following values:

BuildSourcePath

Read-Write Property

Disk

Read-Write Property

edtDisk1 (1)Specifies the Disk 1 folder. edtLastDisk (-1)Specifies the Last Disk folder. edtOther (0)Specifies the Other folder.

Applies To
ISWiProject

ISWiAutomaticUpgradeEntry Object
The ISWiAutomaticUpgradeEntry object represents an automatic upgrade item in the Upgrades view of the InstallShield interface.

InstallShield 2010 User Guide

ISP-1600-UG00

2203

Chapter 47: Automation Interface Automation Objects

Members
Table 47-38: ISWiAutomaticUpgradeEntry Object Members Name Delete Type Method Description Deletes the AutomaticUpgradeEntry from the project file. Sets the name of the upgrade item as displayed in the IDE. Sets the path to the MSI package that needs to be upgraded. The build engine will create the settings required to upgrade this setup. Configure this upgrade entry to only be built into the setup when a certain release flag has been set.

Name

Read-Write Property

UpgradedSetupPath

Read-Write Property

ReleaseFlag

Read-Write Property

Applies To
ISWiProject

ISWiCustomAction Object
Project: This information does not apply to the following project types: InstallScript InstallScript Object

ISWiCustomAction represents a custom action in the Custom Actions and Sequences view (or the Custom Actions view) of InstallShield. You can retrieve a custom action by specifying an item in the ISWiCustomActions collection.

2204

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-39: ISWiCustomAction Object Members Property ActionType Type Read-Write Property Description Holds the numeric custom action type. For more information, see Custom Action Types. An optional comment for the custom action. The name of the custom action. Specifies the source of the custom action. See Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View) for the required Source property for different types of custom actions. Sets a custom action source property, same as the Source property. SourceEx replaces the existing binary record for the new path when you change a source that is stored in the Binary table. If other custom actions use the path, their path is also updated. Source creates a new binary record when other custom actions use the path. Only the path in the custom action is updated. Specifies the target of the custom action. See Creating Custom Actions in the Custom Actions and Sequences View (or the Custom Actions View) for the required Target property for different types of custom actions.

Comment

Read-Write Property

Name Source

Read-Write Property Read-Write Property

SourceEx

Write-Only Property

Target

Read-Write Property

Applies To
ISWiProject

ISWiComponent Object
ISWiComponent represents a component in the InstallShield user interface. You can retrieve a component by specifying an item in the ISWiComponents collection. The component can be one created in the IDE or as a result of calling AddComponent. Many component attributes are available in the automation interface through this objects methods and properties. Refer to the following table to see which methods, properties, and collections are available for your project type.

InstallShield 2010 User Guide

ISP-1600-UG00

2205

Chapter 47: Automation Interface Automation Objects

Members
Table 47-40: ISWiComponent Object Members Name AddComponentSu bFolder Project InstallScript, InstallScript Object Basic MSI, InstallScript MSI, Merge Module Type Method Description Adds a subfolder to the current ISWiComponent.

AddDynamicFileLi nking

Method

Adds a dynamic file link to the current component.

AddEnvironmentVa Basic MSI, r InstallScript MSI, Merge Module AddFile Attrib64BitCompo nent All Basic MSI, InstallScript MSI, Merge Module

Method

Adds an environment variable to the current component.

Method Read-Write Property

Adds a file to the current component. Set this property to True to have the component registered as 64-bit. Setting this property to False causes the component to be registered as 32-bit. If the component is 64-bit and is replacing a 32-bit component, be sure to provide a new GUID via the GUID property. Note that 64-bit support requires version 2.0 of the Windows Installer service.

Comments

All

Read-Write Property Read-Write Property

Gets or sets the comments for this component.

Compressed

InstallScript, InstallScript Object

This Boolean property gets or sets the component's Compressed property, which specifies whether to compress the component's files (True) or leave them uncompressed (False) when the files are stored in a cabinet file by the release builder. Contains any condition associated with the component.

Condition

Basic MSI, InstallScript MSI, Merge Module All

Read-Write Property

Destination

Read-Write Property

Gets or sets the component's destination. The following formats are valid:

(Windows Installer based projects only:) [INSTALLDIR] (Windows Installer based projects only:) [ProgramFilesFolder]Subfolder (InstallScript projects only:) <TARGETDIR> (InstallScript projects only:) <WINDIR>\Subfolder C:\FolderName

2206

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name DeviceDriverFlags Project Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description This property is no longer supported.

DeviceDriverFlags Ex

Read-Write Property

This property enables you to specify the flag settings for device drivers and run-time options directly from the automation layer.

DeviceDriverSetRe dist

Read-Write Property

This property sets the .dll used at run time for all device driver installations.

DeviceDriverUse6 4BitRedist

Read-Write Property

This property is no longer supported.

DeviceDriverUseLo Basic MSI, calizedRedist InstallScript MSI, Merge Module Difference InstallScript, InstallScript Object

Read-Write Property

This property is no longer supported.

Read-Write Property

This Boolean property gets or sets the component's Difference property, which specifies whether to accept (True) or override (False) the default behavior of the media builder when building a differential mediawhich is to exclude a file in this component from the differential media if the same file (with the same date and time, size, and attributes) exists in each of the specified comparison media. To install your assembly as private, set this attribute to the FileKey of the file that contains your assembly. If this property is set to NULL, your assembly will be installed to the Global Assembly Cache. This Boolean property gets or sets the component's .NET Assembly property, which specifies whether the component's files are installed as local .NET assemblies (True) or not installed as assemblies (False). Set this to True if your .NET assembly needs to be available from COM calls.

DotNetApplication File

Basic MSI, InstallScript MSI, Merge Module InstallScript, InstallScript Object

Read-Write Property

DotNetAssembly

Read-Write Property

DotNetCOMInterop Basic MSI, InstallScript MSI, Merge Module DotNetInstallerCla ss Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

Read-Write Property

Set this to True if your assembly implements methods from the .NET Installer namespace.

InstallShield 2010 User Guide

ISP-1600-UG00

2207

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name DotNetInstallerCla ssArgCommit Project Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description This property allows you to specify argument lists for the Installer class when the Commit method is called.

DotNetInstallerCla ssArgInstall

Read-Write Property

This property allows you to specify the argument lists for the Install execution context for the Installer class.

DotNetInstallerCla ssArgRollback

Read-Write Property

This property allows you to specify argument lists for the Installer class when the Rollback method is called.

DotNetInstallerCla ssArgUninstall

Read-Write Property

This property allows you to specify the argument lists for the Uninstall execution context for the Installer class.

DotNetPrecompile

Read-Write Property

If this property is set to True, at installation the setup creates a native image from the .NET assembly and installs it to the native image cache on the target system. This allows the assembly to load and execute faster, because it restores code and data structures from the native image cache rather than from just-in-time (JIT) compilation. This property instructs the build engine on how to handle your assembly. Set it to one of the following values:

DotNetScanAtBuild Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

ednbNone (0)Build does nothing. ednbProps (1)Build scans your assembly for properties. ednbDepAndProps (2)Build scans your assembly for properties and dependencies.

ExtractAtBuild

Basic MSI, InstallScript MSI, Merge Module InstallScript, InstallScript Object Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

Gets or sets the component's COM Extract at Build setting. Possible values are True and False.

FTPLocation

Read-Write Property

Gets or sets the component's FTP Location property, which specifies an FTP location for the component.

GUID

Read-Write Property

Holds a string GUID, also known as the Component Code property, surrounded by braces{12345678-1234-12341234-1234567890AB}, for example.

2208

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name HTTPLocation Project InstallScript, InstallScript Object All All Type Read-Write Property Description Gets or sets the component's HTTP Location property, which specifies an HTTP location for the component.

ImportINIFile ImportRegFile

Method Method

Imports INI files from the automation layer. Merges the contents of a REG file with the registry data for this component. If this Boolean property is true, the key file for this component is a device driver package; if the property is false, the key file is not a device driver package.

IsDeviceDriver

Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

IsPlatformSelected InstallScript, InstallScript Object

Read-Write Property

In conjunction with the PlatformSuiteCheck property, gets or sets the component's Platform Suite(s) property, which specifies to what platform suites, if any, the component is specific. Use the following constants to set this property:

epsMSBackOffice = 32 (&H20) epsMSSmallBusinessServer = 256 (&H100) epsMSSmallBusinessServerWithRestrictiveLiscenses = 512 (&H200) epsTerminalServices = 16 (&H10) epsWin2kAdvSvrOrWinDotNetEnterpriseServer = 128 (&H80) epsWin2kOrWinDotNetDatacenterServer = 64 (&H40) epsWinServer = 4 epsWinWorkstation = 8 epsWinXPHome = 2 epsWinXPPro = 1 epsArchIa64 = 1024 (&H400) epsArchAmd64 = 2048 (&H800) epsArchIntel32 = 4096 (&H1000) epsWinServer2003R2 = 8192 (&H2000)

For example:
pFeature.IsPlatformSelected(epsWinXPHome) = True

ISWiComponentSu bFolders

InstallScript, InstallScript Object

Collection

Contains all of the subfolders associated with this component.

InstallShield 2010 User Guide

ISP-1600-UG00

2209

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name ISWiDynamicFileLi nkings Project Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module All All Basic MSI, InstallScript MSI, Merge Module Type Collection Description Contains all of the dynamic file links that are associated with a specified component.

ISWiEnvironmentV ars

Collection

Contains all of the environment variables that are associated with this component.

ISWiFiles ISWiFolders KeyPath

Collection Collection Read-Write Property

Contains all of the files associated with this component. Contains all of the folders associated with this component.

Note: ISWiComponent.KeyPathType must be set before setting ISWiComponent.KeyPath. Errors result if this is done in the reverse order. Contains the file or registry entry that serves as this component's key path. The exact type is indicated by the KeyPathType property, below. When the key path is a key file, it contains the file key. You can view this value in the Key column of a component's file list, but be aware that file keys are subject to change when the files are dynamically linked. The file key is the same as the Name property of an ISWiFile object. When the key path is a registry value, there is a specially formatted string that contains the registry key. The path to the registry key is enclosed in square brackets and separated from the value name with a vertical bar (or pipe character). For example, the following lines set the key path for the component m_MyComponent to the value MyName under HKEY_LOCAL_MACHINE\Software\MyCompany\Settings:
m_MyComponent.KeyPathType = kptRegistry m_MyComponent.KeyPath = "[HKEY_LOCAL_MACHINE\Software\MyCompany\Setting s]|MyName"

A file cannot serve as the key file if it is dynamically linked.

2210

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name KeyPathType Project Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description ISWiComponent.KeyPathType must be set before setting ISWiComponent.KeyPath. Errors result if this is done in the reverse order.Stores a value that points to the precise type of key path contained in the KeyPath property. Specify one of the following types:

kptRegistry (1) kptFile (2) kptFolder (3) kptODBC (4)

Note that the automation interface can set the key path type only to kptRegistry or kptFile, but the other values are possible return values if you are reading the current key path type. Miscellaneous InstallScript, InstallScript Object All Read-Write Property Gets or sets the component's Miscellaneous property, which associates a text string with the component.

Name

Read-Only Property Read-Write Property

Component name of the current item in the collection.

NeverOverwrite

Basic MSI, InstallScript MSI, Merge Module

Instructs the installer whether to replace an existing component. Specify True to leave the existing component or False to replace it.

InstallShield 2010 User Guide

ISP-1600-UG00

2211

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name OSFilter Project InstallScript, InstallScript MSI, InstallScript Object Type Read-Write Property Description Gets or sets the component's Operating Systems setting. If the target machines operating system does not match one of the operating systems that are specified for this setting, the component is not installed. By default, components are operating system independent, meaning that none of the components data are specific to certain operating systems. Use the following constants to set this property:

eosOSIndepedent = 0 eosWin95 = &H10 (16) eosWin98 = &H40 (64) eosWinMe = &H80 (128) eosWinNT4 = &H10000 (65536) eosWin2000 = &H100000 (1048576) eosWinXP = &H400000 (4194304) eosWinServer2003 = &H800000 (8388608) eosWinVista = &H1000000 (16777216)These constants are for Windows Vista and Windows Server 2008. eosWin7 = &H2000000 (33554432)These constants are for Windows 7 and Windows Server 2008 R2. eosAll = &3D100D0 (64028880)

You can specify multiple platforms; for example, eosWin7 Or eosWinServer2008 Or eosWinVista Or eosWinServer2003.

Tip: Use this property with the IsPlatformSelected property to distinguish between Windows Vista and Windows Server 2008, or between Windows 7 and Windows Server 2008 R2.

2212

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name OverwriteMainOpti ons Project InstallScript, InstallScript Object Type Read-Write Property Description In conjunction with the OverwriteSubOptionsVersion and OverwriteSubOptionsDate properties, gets or sets the component's Overwrite property, which specifies whether the component's files overwrite already-existing versions on the target system always, never, or conditionally based on date/ time stamp or version number. Use the following constants to set this property:

ecomoAlways (0)Files on the target system are always overwritten. ecomoByDate (1)Files on the target system are conditionally overwritten based on date/time stamp as specified by the OverwriteSubOptionsDate property. ecomoByVersion (2)Files on the target system are conditionally overwritten based on version number as specified by the OverwriteSubOptionsVersion property. ecomoByVersionThenDate (3)Files on the target system are conditionally overwritten based on version number or, if the file on your distribution media and the file on the target system have the same version number or if neither file has a version number, by date/time stamp as specified by the OverwriteSubOptionsVersion and OverwriteSubOptionsDate properties. ecomoNever (4)Files on the target system are never overwritten.

OverwriteSubOptio nsDate InstallScript, InstallScript Object Read-Write Property

In conjunction with the OverwriteMainOptions and OverwriteSubOptionsVersion properties, gets or sets the component's Overwrite property, which specifies whether the component's files overwrite already-existing versions on the target system always, never, or conditionally based on date/ time stamp or version number. Ignored if OverwriteMainOptions is set to ecomoAlways, ecomoByVersion, or ecomoNever. Use the following constants to set this property:

ecomsoNewer (0)A file on the target system is overwritten if the file on your distribution media has a more recent date and time stamp. ecomsoNewerOrSame (1)A file on the target system is overwritten if the file on your distribution media has a more recent or the same date and time stamp. ecomsoOlder (2)A file on the target system is overwritten if the file on your distribution media has a less recent date and time stamp.

InstallShield 2010 User Guide

ISP-1600-UG00

2213

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name OverwriteSubOptio nsVersion Project InstallScript, InstallScript Object Type Read-Write Property Description In conjunction with the OverwriteMainOptions and OverwriteSubOptionsDate properties, gets or sets the component's Overwrite property, which specifies whether the component's files overwrite already-existing versions on the target system always, never, or conditionally based on date/ time stamp or version number. Ignored if OverwriteMainOptions is set to ecomoAlways, ecomoByDate, or ecomoNever. Use the following constants to set this property:

ecomsoNewer (0)A file on the target system is overwritten if the file on your distribution media has a higher version number. ecomsoNewerOrSame (1)A file on the target system is overwritten if the file on your distribution media has a higher or the same version number. ecomsoOlder (2)A file on the target system is overwritten if the file on your distribution media has a lower version number.

Permanent

All

Read-Write Property

This property corresponds to the Permanent component property in the IDE. Set Permanent to True to make sure the component is never removed; False otherwise. In conjunction with the IsPlatformSelected property, gets or sets the component's Platform Suite(s) property, which specifies to what platform suites, if any, the component is specific. Use the following constants to set this property:

PlatformSuiteChec InstallScript, k InstallScript Object

Read-Write Property

ecpscAll (0)The setup installs the component's files only if all of the suites that are specified by the IsPlatformSelected property exist on the target system. ecpscAtLeastOne (1)The setup installs the component's files only if at least one of the suites that are specified by the IsPlatformSelected property exist on the target system. ecpscSuiteIndependent (2)Installation of the component's files does not depend on the target system's suite.

PotentiallyLocked

InstallScript, InstallScript Object

Read-Write Property

This Boolean property gets or sets the component's Potentially Locked property, which specifies whether alreadyinstalled versions of the component's files may be locked that is, in use by another applicationduring setup. Provides the complete path to a .reg file to have it merged with the component's registry entries at build time.

RegFileToMergeAt Build

Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

2214

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name RegistrationType Project Basic MSI, InstallScript MSI, Merge Module Type Property Description The following options are available for determining the source of the registration information for this component:

rgtNone (0)InstallShield will not dynamically extract the data or mark the component as self-registering, but any information in the COM Registration advanced setting will be registered. rgtSelfReg (-1)The files in this component will have their self-registration routines invoked by the installer. rgtExtractAtBuild (-2)Dynamically extracts COM registration information when you build a release.

Because the Registration Type property has been removed from the component views in the IDE, setting the RegistrationType property in the automation interface has the following effects:

Using rgtNone sets the component's COM Extract at Build property to No. Using rgtSelfReg sets the component's COM Extract at Build property to No, and sets each file in the component to use self-registration. Using rgtExtractAtBuild sets the component's COM Extract at Build property to Yes, and sets each file in the component not to use self-registration.

RemoteInstallation

Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

Use one of the following options to install the component's files locally or leave them on the distribution medium:

rfsLocal (0)Installs the files to the folder stored in the component's Destination property. rfsSource (1)Leaves the files on the distribution medium. rfsOptional (2)The component follows the feature's property.

RemoveComponen InstallScript, tSubFolder InstallScript Object RemoveDynamicFi leLinking Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module All

Method

Removes a subfolder to the current ISWiComponent.

Method

Removes a dynamic file link from the current component.

RemoveEnvironme ntVar

Method

Removes an environment variable from the current component.

RemoveFile

Method

Removes a file from the current component.

InstallShield 2010 User Guide

ISP-1600-UG00

2215

Chapter 47: Automation Interface Automation Objects

Table 47-40: ISWiComponent Object Members (cont.) Name SelfRegister Project InstallScript, InstallScript Object All Type Read-Write Property Description This Boolean property gets or sets the component's SelfRegister property, which specifies whether the component's files are self-registering. True indicates that the installer should increment a reference count for each file in this component when it is installed, False otherwise. Provides the name of a folder in the compressed setup package or in the release location where this component's files will be stored when you build a release. This property is identical to the Source Location component property in the IDE. Set this property to True to have the installer re-evaluate the condition when this component is reinstalled, False otherwise.

SharedDLLRefCou nt

Read-Write Property

SourceLocation

All

Read-Write Property

Transitive

All

Read-Write Property

Applies To
ISWiFeature

AddComponentSubFolder Method

Project: The AddComponentSubFolder method applies to the following project types: InstallScript InstallScript Object

The AddComponentSubFolder method adds a component subfolder to the current component or component subfolder. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pComponent As ISWiComponent Dim pComponentSubFolder As ISWiComponentSubFolder Set pFeature = pProj.ISWiFeatures.Item("MyFeature") Set pComponent = pFeature.ISWiComponents.Item("MyComp") Set pComponentSubFolder = pComponent.AddComponentSubFolder("MyCompSubFolder") pProj.SaveProject pProj.CloseProject

Syntax
AddComponentSubFolder (Name As String) As ISWiComponentSubFolder

2216

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-41: AddComponentSubFolder Method Parameter Name Description Pass the name for the subfolder that you want to add.

Applies To
ISWiComponent ISWiComponentSubFolder

AddDynamicFileLinking Method

Project: The AddComponentSubFolder method applies to the following project types: Basic MSI InstallScript MSI Merge Module

Call AddDynamicFileLinking to add a dynamic file link to a specified component. All of the files that are in the folder that you specify are automatically incorporated into your installation. All new dynamic file links that you add use the best practice method of component creation by default. For more information, see Determining the Appropriate Component Creation Method for Dynamically Linked Files.

Syntax
AddDynamicFileLinking (sSourceFolder As String) As ISWiDynamicFileLinking

Parameters
Table 47-42: AddDynamicFileLinking Method Parameters Parameter sSourceFolder Description Pass the fully qualified path to the folder that contains the files that you want to be dynamically linked.

Sample
The following Visual Basic example adds a dynamic link to MyDynamicFiles to the component MyComponent:
m_ISWiFeature.ISWiComponents("MyComponent").AddDynamicFileLinking "C:\Build 141\MyDynamicFiles"

All of the files in the MyDynamicFiles folder are added to the project. The folder is scanned before every build, and any new or changed files are automatically incorporated into your project.
InstallShield 2010 User Guide ISP-1600-UG00 2217

Chapter 47: Automation Interface Automation Objects

Applies To
ISWiComponent

AddEnvironmentVar Method

Project: The AddEnvironmentVar method applies to the following project types: Basic MSI InstallScript MSI Merge Module

Call AddEnvironmentVar to add an environment variable to a component.

Syntax
AddEnvironmentVar (sName As String) As ISWiEnvironmentVar

Parameters
Table 47-43: AddEnvironmentVar Method Parameters Parameter sName Description Specifies the name of the environment variable.

Sample
The following Visual Basic example adds the environment variable MyEnvironment to the component MyComponent:
m_ISWiFeature.ISWiComponents("MyComponent").AddEnvironmentVar "MyEnvironment"

Applies To
ISWiComponent

AddFile Method
Call AddFile to add a file to a specified component or, in InstallScript projects, a component subfolder. The following Visual Basic example adds the file MyFile.exe to the component MyComponent:
m_ISWiFeature.ISWiComponents("MyComponent").AddFile "C:\Build 141\MyFile.exe"

The files added with this method have static file links, similar to adding files in the IDE.

Syntax
AddFile (FileName As String) As ISWiFile

2218

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-44: AddFile Method Parameters Parameter FileName Description Pass the fully qualified file name for the individual file that you want to add to this component or component subfolder.

Applies To
ISWiComponent ISWiComponentSubFolder

DeviceDriverFlagsEx Property

Project: The DeviceDriverFlagsEx property applies to the following project types: Basic MSI InstallScript MSI Merge Module

The DeviceDriverFlagsEx property enables you to specify the flag settings for device drivers and runtime options directly from the automation layer. You can pass the following property values to this property. Pass more than one value by using OR.
Table 47-45: DeviceDriverFlagsEx Property Values Value 0 1 Definition Not set (default). To replace any existing driver for the device with this driver, pass this property value to the DeviceDriverFlagsEx property. If you do not pass this property and a driver already exists for the device, your driver is not installed. To prevent the Connect Device to Computer dialog from being displayed during the installation of a device driver if a device matching the driver is not connected to a computer, pass this property value. If you pass this property value to the DeviceDriverFlagsEx property, the installation creates an Add or Remove Programs entry for the device driver only; the installation does not create an additional entry for the installation itself. DIFxApp does not support this feature on Windows Vista. By default, DIFxApp does not install unsigned driver packages or driver packages that have missing files. To override this default behavior, pass this value to the DeviceDriverFlagsEx property.

InstallShield 2010 User Guide

ISP-1600-UG00

2219

Chapter 47: Automation Interface Automation Objects

Table 47-45: DeviceDriverFlagsEx Property Values (cont.) Value 16 Definition By default, when DIFxApp uninstalls a driver package, DIFxApp does not remove the binary files that were copied to the system when it installed the driver. To override this default behavior, pass this value to the DeviceDriverFlagsEx property. If you do pass this value, DIFxApp removes a binary file from the system only if the binary file is identical to the corresponding binary file in the driver store.

Caution: Pass this value only if you can verify that the drivers binary files are not required by any other driver package or application. Other value Invalid. This is a fatal installation error. DIFxApp does not install the component and uninstalls any components in the same installation package that were installed before this component.

Applies to
ISWiComponent

DeviceDriverSetRedist Property

Project: The DeviceDriverSetRedist property applies to the following project types: Basic MSI InstallScript MSI Merge Module

The DeviceDriverSetRedist property sets the custom action runtime .dll used for all device driver installations in the project. This property takes the following values:

eddr32BitSpecifies that the device drivers in this project target 32 bit machines and that the

installation uses runtime dialogs for English only.


eddf32BitLocalizedSpecifies that the device drivers in this project target 32 bit machines and that the installation includes all localized installation runtime dialogs. eddf64BitSpecifies that the device drivers in this project target Itanium 64 bit machines and that

the installation uses runtime dialogs for English only.


eddf64BitLocalizedSpecifies that the device drivers in this project target Itanium 64 bit machines and that the installation includes all localized installation runtime dialogs. eddf64BitAMDSpecifies that the device drivers in this project target AMD 64 bit machines and that the installation uses runtime dialogs for English only. eddf64BitAMDLocalizedSpecifies that the device drivers in this project target AMD 64 bit machines

and that the installation includes all localized installation runtime dialogs.
2220 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

The English runtime .dll file is smaller than the localized .dll file, so if space is an issue and you do not need the extra language runtime dialogs, use one of the English-only values (not one of the localized values). If you use one of the localized values, the installation uses a runtime .dll that includes dialogs and text for the following languages:

Arabic (Saudi Arabia) Spanish - Modern Sort (Spain) Norwegian (Bokml) (Norway) Chinese (Peoples ROC) Finnish (Finland) Dutch (Netherlands) Chinese (Taiwan) French (France) Polish (Poland) Czech (Czech Republic) Hebrew (Israel) Portuguese (Brazil) Danish (Denmark) Hungarian (Hungary) Portuguese (Portugal) German (Germany) Italian (Italy) Russian (Russia) Greek (Greece) Japanese (Japan) Swedish (Sweden) English (United States) Korean (Korea) Turkish (Turkey)

Applies to
ISWiComponent

InstallShield 2010 User Guide

ISP-1600-UG00

2221

Chapter 47: Automation Interface Automation Objects

ImportINIFile Method
Call the ImportINIFile method to import INI files from the automation layer.

Syntax
ImportINIFile(INIFile As String, [DirectoryID As String])

Parameters
Table 47-46: ImportINIFile Method Parameters Parameter INIFile Description This represents the full path to the INI file that needs to be imported. The directory must be a valid MSI Directory identifier such as INSTALLDIR. The directory is optional if you do not specify it. InstallShield will use the component directory.

DirectoryID

Applies To
ISWiComponent

ImportRegFile Method
Call the ImportRegFile method to import the contents of a registry (REG) file into the registry data for a specified component. This method mimics manually importing a REG file in the IDE.

Syntax
ImportRegFile (RegFile As String, Optional OverWrite As Boolean)

2222

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-47: ImportRegFile Method Parameters Parameter RegFile Description Specify the fully qualified path to the REG file that you want to import. Choose one of the following options for instructing ImportRegFile how you want to handle conflicts when merging registry data: TrueIf a value exists in the component's registry data, overwrite it with the value from the REG file. FalseIf a value in the REG file is already present in the component's registry data, do not import that value. The default value for this optional parameter is True.

OverWrite

Applies To
ISWiComponent

RemoveComponentSubFolder Method

Project: The RemoveComponentSubFolder method applies to the following project types: InstallScript InstallScript Object

The RemoveComponentSubFolder method removes the specified component subfolder from the current component or component subfolder. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pComponent As ISWiComponent Dim pComponentSubFolder As ISWiComponentSubFolder Set pFeature = pProj.ISWiFeatures.Item("MyFeature") Set pComponent = pFeature.ISWiComponents.Item("MyComp") Set pComponentSubFolder = pComponent.ISWiComponentSubFolders.Item("MyCompSubFolder") pComponent.RemoveComponentSubFolder pComponentSubFolder pProj.SaveProject pProj.CloseProject

Syntax
RemoveComponentSubFolder (pComponentSubFolder As ISWiComponentSubFolder) As Long

InstallShield 2010 User Guide

ISP-1600-UG00

2223

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-48: RemoveComponentSubFolder Method Parameters Parameter pComponentSubFolder Description Pass the subfolder object that you want to remove.

Applies To
ISWiComponent ISWiComponentSubFolder

RemoveDynamicFileLinking Method

Project: The RemoveDynamicFileLinking method applies to the following project types: Basic MSI InstallScript MSI Merge Module

Call RemoveDynamicFileLinking to remove a dynamic file link from the current component.

Syntax
RemoveDynamicFileLinking (pSourceFolder As ISWiDynamicFileLinking) As Long

Parameters
Table 47-49: RemoveDynamicFileLinking Method Parameters Parameter pSourceFolder Description Pass the ISWiDynamicFileLinking object to specify a dynamic file link that you want to remove from the project.

Applies To
ISWiComponent

RemoveEnvironmentVar Method

Project: The RemoveEnvironmentVar method applies to the following project types:


2224

Basic MSI InstallScript MSI Merge Module


ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Call RemoveEnvironmentVar to remove an environment from a specified component.

Syntax
RemoveEnvironmentVar (sName As ISWiRemoveEnvironmentVar) As Long

Parameters
Table 47-50: RemoveEnvironmentVar Method Parameters Parameter sName Description Pass the ISWiEnvironmentVar object to specify an environment variable that you want to remove.

Applies To
ISWiComponent

RemoveFile Method
Call RemoveFile to remove a file from a specified component.

Syntax
RemoveFile (pFile As ISWiFile) As Long

Parameters
Table 47-51: RemoveFile Method Parameters Parameter pFile Description Pass the ISWiFile object you want to remove.

Applies To
ISWiComponent

ISWiComponentSubFolder Object
Project: The ISWiComponentSubFolder object applies to the following project types: InstallScript InstallScript Object

ISWiComponentSubFolder represents a component subfolder belonging to the current component or component subfolder. The component subfolder can be an existing one from the InstallShield user interfaces Components view or one added by calling AddComponentSubFolder.

InstallShield 2010 User Guide

ISP-1600-UG00

2225

Chapter 47: Automation Interface Automation Objects

Use the projects ISWiComponentSubFolders collection to access a specific component subfolder. You must specify either an index number or the component subfolder name for the Item property of ISWiComponentSubFolders. The following Visual Basic code illustrates the use of this object:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pComponent As ISWiComponent Dim pComponentSubFolder As ISWiComponentSubFolder Set pFeature = pProj.ISWiFeatures.Item("MyFeature") Set pComponent = pFeature.ISWiComponents.Item("MyComp") Set pComponentSubFolder = pComponent.ISWiComponentSubFolders.Item("MyCompSubFolder") pComponentSubFolder.AddFile("C:\My Files\MyFile.ext") pProj.SaveProject pProj.CloseProject

Members
Table 47-52: ISWiComponentSubFolder Object Members Name AddComponentSubFolder Type Method Description Adds a subfolder to the component subfolder. Adds a file to the component subfolder. Deletes a file from the component subfolder. Contains all of the subsubfolders associated with this component subfolders. Contains all of the files associated with this component subfolder. Stores the name of the component subfolder. Removes a subfolder from the component subfolder.

AddFile DeleteFile

Method Method

ISWiComponentSubFolder s

Collection

ISWiFiles

Collection

Name

Read-Only Property

RemoveComponentSubFol der

Method

Applies To
ISWiComponent

2226

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

DeleteFile Method

Project: The DeleteFile method applies to the following project types: InstallScript InstallScript Object

Call DeleteFile to delete a file from a specified component subfolder. The following Visual Basic example deletes a file from the component subfolder MyCompSubFolder:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pComponent As ISWiComponent Dim pComponentSubFolder As ISWiComponentSubFolder Dim pFile As ISWiFile Set pFeature = pProj.ISWiFeatures.Item("MyFeature") Set pComponent = pFeature.ISWiComponents.Item("MyComp") Set pComponentSubFolder = pComponent.ISWiComponentSubFolders.Item("MyCompSubFolder") Set pFile = pComponentSubFolder.ISWiFiles.Item("MyFile.ext") pComponentSubFolder.DeleteFile pFile pProj.SaveProject pProj.CloseProject

The files added with this method have static file links, similar to adding files in the IDE.

Syntax
DeleteFile (pFile As ISWiFile) As Long

Parameters
Table 47-53: DeleteFile Method Parameters Parameter pFile Description Pass the file object that you want to delete.

Applies To
ISWiComponentSubFolder

ISWiCondition Object
ISWiCondition is a subset of the ISWiFeature object. This object allows you to get and set conditional logic for any of your project's features.

InstallShield 2010 User Guide

ISP-1600-UG00

2227

Chapter 47: Automation Interface Automation Objects

Members
Table 47-54: ISWiCondition Object Members Name Condition Type Read-Write Property Description Gets or sets any conditions that are associated with this feature. Gets or sets the install level assigned to the feature when the condition evaluates to TRUE.

Level

Read-Write Property

Applies To
ISWiFeature

ISWiDimDependency Object
Project: This information applies to Basic MSI projects.

ISWiDimDependency represents a dependency referenced in a DIM. You can retrieve a configuration by specifying an item in the ISWiDimDependencies collection.

2228

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-55: Name Name Type Read-Write Property Description Specifies the DIM dependency name of the current item in the collection. Specifies the source path to a DIM. Represents the UUID of the DIM dependency. Represents the major version of the DIM dependency. Represents the minor version of the DIM dependency. Represents the build version of the DIM dependency. Represents the revision version of the DIM dependency.

ISBuildSourcePath RequiredUUID

Read-Write Property Read-Write Property

RequiredMajorVersion

Read-Write Property

RequiredMinorVersion

Read-Write Property

RequiredBuildVersion

Read-Write Property

RequiredRevisionVersion

Read-Write Property

Applies To
ISWiProject

ISWiDimReference Object
Project: This information applies to Basic MSI projects.

ISWiDimReference represents a reference to a DIM in your installation project. You can retrieve a DIM reference by specifying an item in the ISWiDimReferences collection.

InstallShield 2010 User Guide

ISP-1600-UG00

2229

Chapter 47: Automation Interface Automation Objects

Members
Table 47-56: ISWiDimReference Object Members Name AddDimDependency Type Method Description Creates an ISWiDimDependency object in a DIM reference. Deletes a specified DIM dependency from a DIM reference. Provides the source path to the actual DIM. Contains all of the DIM dependencies associated with a DIM reference. Provides the DIM reference name of the current item in the collection.

DeleteDimDependency

Method

ISBuildSourcePath ISWiDimDependencies

Read-Write Property Read-only Property

Name

Read-Write Property

Applies To
ISWiProject

AddDimDependency Method

Project: This information applies to Basic MSI projects.

The AddDimDependency method creates an ISWiDimDependency object in a DIM reference.

Syntax
AddDimDependency(sKey As String) As ISWiDimDependency

Parameters
Table 47-57: AddDimDependency Method Parameters Parameter sKey Description This represents the string version of the DIM dependency that you want to attach to the current DIM reference.

Applies To
ISWiDimReference Object

2230

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

DeleteDimDependency Method

Project: This information applies to Basic MSI projects

The DeleteDimDependency method deletes the specified DIM dependency from a DIM reference.

Syntax
DeleteDimDependency(DimDependency As ISWiDimDependency)

Parameters
Table 47-58: DeleteDimDependency Parameters Parameter DimDependency Description Specifies the DimDependency to be removed from a DIM reference.

Applies To
ISWiDimReference Object

ISWiDynamicFileLinking Object
Project: The ISWiDynamicFileLinking object applies to the following project types: Basic MSI InstallScript MSI Merge Module

ISWiDynamicFileLinking represents a dynamic file link that belongs to a component. The dynamic file link can be an existing one from the InstallShield user interface or one added by calling AddDynamicFileLinking.

InstallShield 2010 User Guide

ISP-1600-UG00

2231

Chapter 47: Automation Interface Automation Objects

Members
Table 47-59: ISWiDynamicFileLinking Object Members Name CreateBestPra cticeCompone nts Project Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description To use the best practice method of component creation for your dynamically linked files, set this property to True. To use the one-component-per-directory method of component creation, set this property to False. For detailed information about the two methods, see Determining the Appropriate Component Creation Method for Dynamically Linked Files. DynamicSubfol ders ExcludeFiles All Read-Write Property Read-Write Property Read-Write Property Read-Write Property Set this property to True to include all subfolders that are available in SourceFolder. Specify the file types that you want to exclude. Enter the file extension preceded by an asterisk (*). Separate multiple entries with a comma. Specify the file types that you want to include. Enter the file extension preceded by an asterisk (*). Separate multiple entries with a comma. Set this property to True to self-register every file in the dynamically linked folder. If the Attrib64BitComponent property of the component is set to True, the installation performs 64-bit self-registration on the target system. For more information, see Targeting 64-Bit Operating Systems. Read-Write Property Specifies the fully qualified path to the folder whose contents should be dynamically linked.

All

IncludeFiles

All

SelfRegister

Basic MSI, InstallScript MSI, Merge Module

SourceFolder

All

Applies To
ISWiComponent

ISWiEnvironmentVar Object
Project: The ISWiEnvironmentVar object applies to the following project types: Basic MSI InstallScript MSI Merge Module

ISWiEnvironmentVar represents an environment variable that belongs to a component. The file can be an existing one from the InstallShield user interface or one added by calling AddEnvironmentVar.

2232

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-60: ISWiEnvironmentVar Object Members Name EnvType Type Read-Write Property Description This enumerated integer property specifies whether the environment variable name refers to a system or user environment variable for target systems that are running Microsoft Windows NT or Windows 2000 and later:

evtSystemCreates, modifies, or removes the specified system environment variable. evtUserCreates, modifies, or removes the environment variable from the users environment. The specified environment variable is available only to the end user who is logged on at the time of installation.

Key

Read-Only Property Read-Write Property Read-Write Property

Stores the key of the Environment table.

Name

Retrieves or sets the name of the environment variable.

OnInstall

This enumerated integer property retrieves or sets the action that you want to occur when the associated feature is installed to the target system:

evoiSetIn conjunction with the Placement property, sets the value of an existing environment variable. This option creates the environment variable if it does not already exist on the target system, and then it sets it during installation. If the environment variable exists on the target system, it is set during the installation. evoiCreateCreates the specified environment variable on the target system if it does not already exist, and it sets the variables value. evoiRemoveRemoves the specified environment variable from the target system.


OnUninstall Read-Write Property

This enumerated integer property specifies whether this environment variable should be removed from the target system when the associated feature is uninstalled:

evouRemoveRemoves the environment variable or its appended value from the target system if the associated feature is uninstalled. If the value of the OnInstall property is Create, the Remove value for OnUninstall removes the entire environment variable. If the value of the OnInstall property is Set, the Remove value for OnUninstall removes only the value that was appended to the variables value. evouLeaveLeaves the environment variable or its appended value on the target system if the associated feature is uninstalled.

InstallShield 2010 User Guide

ISP-1600-UG00

2233

Chapter 47: Automation Interface Automation Objects

Table 47-60: ISWiEnvironmentVar Object Members (cont.) Name Placement Type Read-Write Property Description This enumerated integer property retrieves or sets the placement of the value in the Value field relative to the specified environment variables existing value:

evpAppendAppends the value indicated in the Value property to the end of the specified environment variables existing value. evpPrefixAdds the value indicated in the Value property to the beginning of the specified environment variables existing value. evpReplaceReplaces the value of the specified environment variable with the value indicated in the Value property.

Value

Read-Write Property

Retrieves or sets the path or value for this environment variable.

Applies To
ISWiComponent

ISWiFeature Object
ISWiFeature represents a feature in the InstallShield user interface. You can retrieve a feature by specifying an item in the ISWiFeatures collection. Many feature properties and attributes are available in the automation interface through this object's methods, properties, and collections. Refer to the following table to see which methods, properties, and collections are available for your project type.

2234

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-61: ISWiFeature Object Members Name AddCondition Project Basic MSI, InstallScript MSI All Type Method Description Adds a condition to the current ISWiFeature.

AddFeature

Method

Creates an ISWiFeature object as a subfeature of the current ISWiFeature. Associates a merge module with the current feature.

AddMergeModule

Basic MSI, InstallScript MSI InstallScript Basic MSI, InstallScript MSI

Method

AddObject Advertise

Method Read-Write Property

Adds an InstallScript object to the current ISWiFeature. Gets or sets the Advertisement property for the current feature. Use the following constants to set this property:

eaAllow (1)Use this option to enable advertisement on this feature. Although advertisement is allowed, it is not the default option when the setup is run. eaFavor (2)Use this option to have the feature advertised by default. Your end users can always change the advertisement option for a feature in Custom Setup dialog. eaDisallow (3)Use this option if you do not want to allow advertising for this feature. Your end users will not be able to choose to have a feature advertised in the Custom Setup dialog. eaDisableIfNotSupported (4)Advertisement only works on systems with Internet Explorer 4.01 or higher. If the target system does not meet this criteria, advertising is turned off. If the target system can support advertisement, advertising is allowed.

AttachComponent AttachDimReferen ce CDRomFolder

All Basic MSI

Method Method

Associates a component with the current feature. Associates a DIM reference with the current feature.

InstallScript

Read-Write Property

Gets or sets the feature's CD-ROM Folder property, which specifies the folder in the disk image in which the feature is placed if the feature's check box is checked in the Release wizard's Custom Media Layout panel. Gets or sets the comments associated with this feature.

Comments

All

Read-Write Property Method

DeleteCondition

Basic MSI, InstallScript MSI

Deletes a condition associated with the current feature.

InstallShield 2010 User Guide

ISP-1600-UG00

2235

Chapter 47: Automation Interface Automation Objects

Table 47-61: ISWiFeature Object Members (cont.) Name Description Project All Type Read-Write Property Read-Write Property Description Gets or sets the description for this feature.

DescriptionID

All

Gets or sets the string identifier for this feature's description.

Note: To set this property, the string entry must exist and you must know the string identifier. Destination Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Read-Write Property Gets or sets the default destination of this feature.

Display

Read-Write Property

Gets or sets the Display property for this feature. Use the following constants to set this property:

edtVisibleAndCollapsed (0)Means that the feature is displayed in the Custom Setup dialog with its subfeatures collapsed by default. edtVisibleAndExpanded (1)Means that the feature is displayed in the Custom Setup dialog with its subfeatures expanded by default. edtNotVisible (2)Means that the feature is not displayed to the end user in the Custom Setup dialog.

DisplayName

All

Read-Write Property Read-Write Property

Gets or sets the display name of this feature.

DisplayNameID

All

Gets or sets the string identifier for this feature's display name.

Note: To set this property, the string entry must exist and you must know the string identifier. Encryption InstallScript Read-Write Property Gets or sets the feature's Encryption property, which specifies whether the the files for the feature will be encrypted by the release builder. This property is a Boolean. This property contains an ISWiFeatures collection of all this feature's immediate subfeatures, if any. Gets or sets the feature's FTP Location property, which specifies an FTP location for the feature. Gets or sets the feature's HTTP Location property, which specifies an HTTP location for the feature.

Features

All

Read-Only Property Read-Write Property Read-Write Property

FTPLocation

All

HTTPLocation

InstallScript, InstallScript MSI

2236

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-61: ISWiFeature Object Members (cont.) Name IncludeInBuild Project InstallScript Type Read-Write Property Description Gets or sets the feature's Include In Build property, which specifies whether the feature should be included in your distribution media. This property is a Boolean. Gets or sets the feature's GUID property, which identifies the feature in the setup's log file; if you change a feature's GUID in an update setup, the setup engine treats it as a new feature rather than an update to an existing feature. Gets or sets the install level of this feature.

GUID

InstallScript

Read-Write Property

InstallLevel

Basic MSI, InstallScript MSI All

Read-Write Property

ISWiComponents

Collection

Contains all of the components associated with the current feature. Contains all of the conditions associated with the current feature.

ISWiConditions

Basic MSI, InstallScript MSI InstallScript

Collection

ISWiObjects

Collection

Contains all of the InstallScript objects associated with the current feature. Gets or sets the feature's Miscellaneous property, which associates a text string with the feature.

Miscellaneous

InstallScript, InstallScript MSI All

Read-Write Property

Name

Read-Only Property Read-Write Property

Feature name of the current element in the collection.

Need

InstallScript

Gets or sets the feature's File Need property, which specifies whether whether a warning, a severe warning, or no warning should be given to end users who deselect the feature. Use the following constants to set this property:


OnInstalled InstallScript, InstallScript MSI InstallScript, InstallScript MSI Read-Write Property

efnCritical (0)Use this option for features that your setup does not allow end users to deselect. efnHighlyRecommended (1)Use this option to advise end users that the feature should be installed. efnStandard (2)Use this option to let end users deselect the feature with no message issued.

Gets or sets the feature's OnInstalled property, which specifies the function to be executed just after the feature is installed.

OnInstalling

Read-Write Property

Gets or sets the feature's OnInstalling property, which specifies the function to be executed just before the feature is installed.

InstallShield 2010 User Guide

ISP-1600-UG00

2237

Chapter 47: Automation Interface Automation Objects

Table 47-61: ISWiFeature Object Members (cont.) Name OnUninstalled Project InstallScript, InstallScript MSI InstallScript, InstallScript MSI InstallScript Type Read-Write Property Description Gets or sets the feature's OnUninstalled property, which specifies the function to be executed just after the feature is uninstalled. Gets or sets the feature's OnUninstalling property, which specifies the function to be executed just before the feature is uninstalled. Gets or sets the feature's Password property, which specifies a password for the feature. Gets or sets the release flags attached to this feature. Separate multiple flags with a comma. You can specify which release flags you want to use to filter the project's features in the ReleaseFlags property of ISWiRelease. Read-Write Property Retrieves or sets the feature's Remote Installation property. Use the following constants to set this property:

OnUninstalling

Read-Write Property

Password

Read-Write Property Read-Write Property

ReleaseFlags

Basic MSI, InstallScript MSI

RemoteInstallation

Basic MSI, InstallScript MSI

efrLocal (0)Means that all of the feature's files are installed onto the target system. efrSource (1)Causes the files belonging to this feature to run directly from the source medium, such as a CDROM or network server. efrFollowParent (2)Gives a subfeature the Remote Installation property of its parent feature.

RemoveComponen All t RemoveFeature RemoveMergeMod ule All Basic MSI, InstallScript MSI InstallScript Basic MSI, InstallScript MSI InstallScript, InstallScript MSI

Method

Removes a component from this feature.

Method Method

Deletes the specified feature from the project. Removes a merge module from the current feature.

RemoveObject Required

Method Read-Write Property

Removes an InstallScript object from the current ISWiFeature. Gets or sets the feature's Required property. This property is a Boolean.

RequiredFeatures

Read-Write Property

Gets or sets a comma-delimited string that lists the names of the features that are specified in the current feature's Required Features property.

2238

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-61: ISWiFeature Object Members (cont.) Name SetupTypeStatus Project InstallScript, InstallScript MSI Type Read-Write Property Description Gets or sets the selection status of the feature in the setup type that is specified in the property's argument. Use the following constants to set this property:

estSelected (10)The feature is selected. estDeselected (11)The feature is not selected.

In the following Visual Basic code snippet, the Help_Files feature is not selected for the Compact setup type.
Set pFeature = pProject.ISWiFeatures.Item("Help_Files") Set pSetupType = pProject.ISWiSetupTypes.Item("Compact") pFeature.SetupTypeStatus(pSetupType) = 11

StatusText

InstallScript

Read-Write Property

Gets or sets the feature's Status Text property, which specifies the text that end users see in the uppermost line of the progress indicator during the transfer of this feature. Gets or sets the feature's Visible property, which specifies whether the feature will be visible in feature dialog boxes during the installation. This property is a Boolean.

Visible

InstallScript

Read-Write Property

Applies To
ISWiProject

AddCondition Method

Project: This method does not apply to the following project types: InstallScript InstallScript Object

Call the AddCondition method to add a condition to the current feature.

Syntax
AddCondition (sKey As String) As ISWiCondition

InstallShield 2010 User Guide

ISP-1600-UG00

2239

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-62: AddCondition Method Parameters Parameter sKey Description Pass the string version of the condition you want to attach to the current feature.

Applies To
ISWiFeature

AddMergeModule Method

Project: This method dose not apply to the following project types: InstallScript InstallScript Object

Call the AddMergeModule method to associate a merge module with the current feature. This method is similar to adding a merge module to a feature in the Redistributables view.

Syntax
AddMergeModule (FileName As String)

Parameters
Table 47-63: AddMergeModule Method Parameters Parameter FileName Description Pass the fully qualified file name for the merge module (.msm) file that you want to associate with this feature.

Applies To
ISWiFeature

AddObject Method

Project: This method does not apply to Basic MSI projects.

The AddObject method adds an InstallScript object with the specified moniker to the current feature. The following Visual Basic lines demonstrate this method:

2240

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pObject As ISWiObject Set pFeature = pProj.ISWiFeatures.Item(2) Set pObject = pFeature.AddObject ("@ismk2:755142B0-1EB4-11D3-8B09-00105A9846E9") pProj.SaveProject pProj.CloseProject

Syntax
AddObject (Moniker As String) As ISWiObject

Parameters
Table 47-64: AddObject Method Parameters Parameter Moniker Description Pass the moniker for the InstallScript object that you want to add. To get an InstallScript object's moniker, create a new Professional project in the IDE and add the InstallScript object to a feature, then go to the Direct Editor view's ISFeatureExtended table and see the Moniker column.

Applies To
ISWiFeature

AttachComponent Method
Call the AttachComponent method to associate a component with the current feature. The component must exist (created manually in the IDE or by calling AddComponent) before you can associate it with a feature.

Syntax
AttachComponent (Component As ISWiComponent)

InstallShield 2010 User Guide

ISP-1600-UG00

2241

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-65: AttachComponent Method Parameters Parameter Component Description Provide the ISWiComponent object that represents the component you want to associate with this feature.

Applies To
ISWiFeature

AttachDimReference Method

Project: This information applies to Basic MSI projects.

This method associates a DIM reference with the currently selected feature.

Syntax
AttachDimReference (DimReference As ISWiDimReference)

Parameters
Table 47-66: AttachDimReference Method Parameters Parameter DimReference Description Represents the DIM reference that you want to associate with a particular feature.

Applies To
ISWiFeature

DeleteCondition Method

Project: This method does not apply to the following project types: InstallScript InstallScript Object

Call the DeleteCondition method to delete a condition from the current feature.

2242

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Syntax
DeleteCondition (pCondition As ISWiCondition)

Parameters
Table 47-67: DeleteCondition Method Parameters Parameter pCondition Description The ISWiCondition object representing the condition you want to delete.

Applies To
ISWiFeature

RemoveComponent Method
Call RemoveComponent to remove a component from a specified feature. Similar to removing a component in the Setup Design views, RemoveComponent disassociates a component from its feature, but it does not permanently delete it from the project.

Syntax
RemoveComponent (pComponent As ISWiComponent) As Boolean

Parameters
Table 47-68: RemoveComponent Method Parameters Parameter pComponent Description Enter the ISWiComponent object that you want to remove.

Applies To
ISWiFeature

RemoveDimReference Method

Project: This information applies to Basic MSI projects.

This method removes the DIM reference associated with a feature in an installation project.

Syntax
RemoveDimReference(DimReference As ISWiDimReference

InstallShield 2010 User Guide

ISP-1600-UG00

2243

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-69: RemoveDimReference Method Parameters Parameter DimReference Description Represents the DIM reference that you want to disassociate with a feature.

Applies To
ISWiFeature

RemoveMergeModule Method
Call the RemoveMergeModule method to remove a merge module from only the current feature. (To delete a merge module from the project, call the DeleteMergeModule method.)

Syntax
RemoveMergeModule (FileName As String)

Parameters
Table 47-70: RemoveMergeModule Method Parameters Parameter FileName Description Pass the fully qualified file name for the merge module (.msm) file that you want to remove from this feature.

Applies To
ISWiFeature

RemoveObject Method

Project: This method does not apply to the following project types: Basic MSI InstallScript MSI

The RemoveObject method removes the specified InstallScript object from the current feature. The following Visual Basic lines demonstrate this method:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pObject As ISWiObject
2244 ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Set pFeature = pProj.ISWiFeatures.Item("Help_Files") Set pObject = pFeature.ISWiObjects.Item(1) pFeature.RemoveObject pObject pProj.SaveProject pProj.CloseProject

Syntax
RemoveObject (Object As ISWiObject) As Long

Parameters
Table 47-71: RemoveObject Method Parameters Parameter Object Description The InstallScript object to be deleted.

Applies To
ISWiFeature

ISWiFile Object
ISWiFile represents a file belonging to a component or, in InstallScript projects, a component subfolder in your project. The file can be an existing one from the InstallShield user interface or one added by calling AddFile. Many feature properties and attributes are available in the automation interface through this objects methods, properties, and collections. Note that some methods, properties, and collections are available for specific project types. Use the components ISWiFiles collection to access a specific file. You must specify either an index number or the file key for the Item property of ISWiFiles. The file key is visible in the File column of the File table in the Director Editor view of InstallShield. In Basic MSI and InstallScript MSI projects, it is also listed under the Key column in a components file list. Unfortunately, you might not know the file key, or it might have been reassigned if the files are dynamically linked to the component. Instead of using the file key, you could write code similar to the following example to check for a certain file name:
Dim m_pFile As ISWiFile For Each m_pFile In m_pComponent.ISWiFiles If UCase(m_pFile.DisplayName) = "MYFILE.EXE" Then Exit For End If Next

If the file name MyFile.exe is found among the components files, the For loop ends, and m_pFile holds a copy of the ISWiFile object for MyFile.exe.

InstallShield 2010 User Guide

ISP-1600-UG00

2245

Chapter 47: Automation Interface Automation Objects

Members
Table 47-72: ISWiFile Object Members Name Attributes Project Basic MSI, InstallScript MSI All Type Property (Deprecated) Read-Write Property Read-Write Property Description This property is no longer supported. Use the Hidden, ReadOnly, System, and Vital properties instead. Reserved for future use.

CompanionFile

DisplayName

All

The standard name of the file. Be sure that case of this entry matches the case of the file name if you plan on distributing your package via the Internet, since some Web servers are case sensitive. The name cannot contain any characters that are not valid for Windows folders and file names. If the file has both a long and a short file name (see ShortName, below), only the long name is used in the display name. You cannot modify this property if the files are dynamically linked.

DynamicFile

Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI

Read-Only Property Read-Write Property

This property is True if the file's source is linked to the component dynamically, or False if it is linked statically. Retrieves or sets the Font Title file attribute as a string. You cannot modify this property if the files are dynamically linked. Stores the fully qualified path (including the file name) of the file's source location. Any path variables are resolved to the actual path. You cannot modify this property if the files are dynamically linked.

FontTitle

FullPath

All

Read-Write Property

Hidden

All

Read-Write Property

True if a file has the Hidden attribute set. This property is ignored if OverrideSystemAttributes is set to False. You cannot modify this property if the files are dynamically linked.

Languages

Basic MSI, InstallScript MSI

Read-Write Property

This property should contain a string of all of the file's language IDs, in decimal and separated by commas. The following line identifies the file as English and German: m_pFile.Languages = "1031,1033" This property is ignored if OverrideSystemLanguage is set to True. You cannot modify this property if the files are dynamically linked.

2246

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-72: ISWiFile Object Members (cont.) Name Modified Project Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Type Read-Write Property Read-Write Property Description Retrieves the file's Modified file attribute. Reserved for future use. Retrieves or sets a file key. See the description of ISWiFile above for more information about the file key. You cannot modify this property if the files are dynamically linked. OverrideSyste mAttributes Basic MSI, InstallScript MSI Read-Write Property To override the development system's settings for all of the file attributes, such as Hidden, ReadOnly, Vital, and System, set this property to True. If you set this property to False, the Hidden, ReadOnly, Vital, and System properties are ignored. You cannot modify this property if the files are dynamically linked. OverrideSyste mLanguage Basic MSI, InstallScript MSI Read-Write Property To override the language of the file on the development system, set this property to True. If you set this property to False, the Languages property is ignored. You cannot modify this property if the files are dynamically linked. OverrideSyste mSize Basic MSI, InstallScript MSI Read-Write Property To override the size of the file on the development system, set this property to True. If you set this property to False, the Size property is ignored. You cannot modify this property if the files are dynamically linked. OverrideSyste mVersion Basic MSI, InstallScript MSI Read-Write Property To override the version of the file version on the development system, set this property to True. If you set this property to False, the Version property is ignored. You cannot modify this property if the files are dynamically linked. ReadOnly All Read-Write Property Retrieves or sets the Read-only file attribute. Set this property to True to mark a file as read-only. Leave it undefined or set it to False to mark a file as read-write. This property is ignored if OverrideSystemAttributes is set to False. You cannot modify this property if the files are dynamically linked.

Name

InstallShield 2010 User Guide

ISP-1600-UG00

2247

Chapter 47: Automation Interface Automation Objects

Table 47-72: ISWiFile Object Members (cont.) Name SelfRegister Project Basic MSI, InstallScript MSI Type Read-Write Property Description Gets or sets the Self-Register file attribute. Set this property to True to mark a file as self-registering. You cannot modify this property if the files are dynamically linked. ShortName All Read-Write Property Gets or sets the file's short name. Your files must have corresponding short names in case the Windows Installer property SHORTFILENAMES is set because the distribution medium cannot handle long file names. Only the short file names are used when you deselect Use long file names in the Advanced Settings panel of the Release wizard. By default, the build process will generate short names for your files, and therefore reading the current value of a file's ShortName property will return an empty string. However, if you explicitly set a file's ShortName property, the build process will use the short name you specify, and reading the ShortName value will return the short name you specified. You cannot modify this property if the files are dynamically linked. Size Basic MSI, InstallScript MSI Read-Write Property Contains the size of the file, in bytes, as a Long. If you are setting this property, OverrideSystemSize must first be set to True. Otherwise, InstallShield uses the actual size of the file. You cannot modify this property if the files are dynamically linked. System All Read-Write Property Retrieves or sets the System file attribute. Set this property to True if the file is a system file. This property is ignored if OverrideSystemAttributes is set to False. You cannot modify this property if the files are dynamically linked. UseSystemSett ings Basic MSI, InstallScript MSI Property (Obsolete) This property is no longer supported. Use the OverrideSystemAttributes, OverrideSystemSize, OverrideSystemVersion, and OverrideSystemLanguage properties instead.

2248

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-72: ISWiFile Object Members (cont.) Name Version Project Basic MSI, InstallScript MSI Type Read-Write Property Description Set this property to the version of the file that you are including in the setup. To specify a companion file, this property can also be set to the Name property of another ISWiFile object, provided. To learn more about companion files, see Companion Files. This property is ignored if OverrideSystemVersion is set to False. You cannot modify this property if the files are dynamically linked. Vital Basic MSI, InstallScript MSI Read-Write Property Retrieves or sets the Vital file attribute. Set this property to True to mark this file as vital. You cannot modify this property if the files are dynamically linked.

ISWiFolder Object
ISWiFolder represents a program folder in a components Shortcuts explorer in the InstallShield user interface. You can retrieve a folder by specifying an item in the ISWiFolders collection. Many folder attributes are available in the automation interface through this objects methods and properties. Refer to the following table to learn which methods, properties, and collections are available for your project type.

InstallShield 2010 User Guide

ISP-1600-UG00

2249

Chapter 47: Automation Interface Automation Objects

Members
Table 47-73: ISWiFolder Object Members Name AddShortcut Type Method Description Adds a shortcut object to the current folder object. Creates another program folder under the current one. Deletes the specified shortcut from the current folder object. Deletes the specified subfolder from the current one. Contains any descriptive text you have entered for the folder. Retrieves or sets the name displayed for a folder. Contains every shortcut under the current program folder. Retrieves the key name of the folder. This is the name that is displayed in the Shortcuts view in the InstallShield user interface. It is not the same as the DisplayName property. This Boolean property retrieves or sets the Shared property of the folder, which specifies whether the folder is always removed from the system (False) or is removed only if it has no subfolders or files that were not created by the setup (True). Contains an ISWiFolders collection of each program folder directly under the current folder as laid out in the Shortcuts explorer. See ISWiFolders Collection for an example of using this property to retrieve a subfolder.

AddSubFolder

Method

DeleteShortcut

Method

DeleteSubFolder

Method

Description

Read-Write Property

DisplayName

Read-Write Property

ISWiShortcuts

Collection

Name

Read-Write Property

SharedFolder

Read-Write Property

SubFolders

Collection

Note: This property does not apply to the following project types: Basic MSI InstallScript MSI

Applies To
2250

ISWiComponent
ISP-1600-UG00 InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

AddShortcut Method
Call AddShortcut to create a shortcut under the current program folder.

Syntax
AddShortcut (Name As String) As ISWiShortcut

Parameters
Table 47-74: AddShortcut Method Parameters Parameter Name Description Enter the name you want to give the shortcut in the Shortcuts explorer.

Applies To
ISWiFolder

AddSubFolder Method
Call the AddSubFolder method to create a program folder directly under the current ISWiFolder object.

Syntax
AddSubFolder (Name As String) As ISWiFolder

Parameters
Table 47-75: AddSubFolder Method Parameters Parameter Name Description Enter the name you want to give the program folder in the Shortcuts explorer.

Applies To
ISWiFolder

DeleteShortcut Method
Call DeleteShortcut to create a shortcut from the current folder.

Syntax
DeleteShortcut (Name As String) As ISWiShortcut

InstallShield 2010 User Guide

ISP-1600-UG00

2251

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-76: DeleteShortcut Method Parameters Parameter Name Description Specify the name of the shortcut that you want to delete.

Applies To
ISWiFolder

DeleteSubFolder Method
Call the DeleteSubFolder method to delete the specified subfolder from the current ISWiFolder object.

Syntax
DeleteSubFolder (Name As String) As ISWiFolder

Parameters
Table 47-77: DeleteSubFolder Method Parameters Parameter Name Description Specify the name of the subfolder that you want to delete.

Applies To
ISWiFolder

ISWiLanguage Object
ISWiLanguage represents a language whose string entries are included in the current project.

Edition: Support for multilanguage installations is available with InstallShield Premier Edition.

2252

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-78: ISWiLanguage Object Members Name AddStringEntry DeleteStringEntry Id Type Method Method Read-Only Property Read-Write Property Read-Only Property Read-Only Property Description Add a new string entry and return ISWiStringEntry. Delete a string entry from the current language. Stores the language identifier of the current language.

IsIncluded

Set this property to True to include the language in the project.

ISWiStringEntries

Return the ISWiStringEntries collection for the current language.

Name

Stores the name of the current language.

Applies To
ISWiProject

AddStringEntry Method
Call AddStringEntry to add a new string entry to a language and return ISWiStringEntry.

Syntax
AddStringEntry (sLangId) As ISWiStringEntry

Parameter
Table 47-79: AddStringEntry Method Parameter Parameter sLangId Description Pass the language identifier that should contain the string entry.

Applies To
ISWiLanguage

DeleteStringEntry Method
Call DeleteStringEntry to delete a string entry to a language.

InstallShield 2010 User Guide

ISP-1600-UG00

2253

Chapter 47: Automation Interface Automation Objects

Syntax
DeleteStringEntry (pLangId As ISWiStringEntry)

Parameter
Table 47-80: DeleteStringEntry Method Parameter Parameter sLangId Description Pass an ISWiStringEntry object to specify a string entry that you want to remove from the project.

Applies To
ISWiLanguage

ISWiObject Object
Project: The ISWiObject object applies to the following project types: InstallScript InstallScript Object

ISWiObject represents an InstallScript object belonging to your project. The InstallScript object can be an existing one from the InstallShield user interface's Objects view or one added by calling AddObject. Use the project's ISWiObjects collection to access a specific InstallScript object. You must specify either an index number or the moniker for the Item property of ISWiObjects. The moniker is visible in the IDE only as the Moniker in the Direct Editor view's ISFeatureExtended table. The following Visual Basic code illustrates the use of this object:
Dim pProj As ISWiProject Set pProj = CreateObject("IswiAuto16.ISWiProject") pProj.OpenProject "C:\MySetups\Project1.ism" Dim pFeature As ISWiFeature Dim pObject As ISWiObject Set pFeature = pProj.ISWiFeatures.Item(2) Set pObject = pFeature.ISWiObjects.Item("@ismk2:755142B0-1EB4-11D3-8B09-00105A9846E9") pFeature.RemoveObject pObject pProj.SaveProject pProj.CloseProject

Members
None.

Applies To
ISWiFeature

2254

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

ISWiPathVariable Object
ISWiPathVariable represents a path variable that is included in the current project. The path variable can be an existing one that was created from the Path Variables view in InstallShield, or one that was added by calling the AddPathVariable method.

Important: Predefined path variables cannot be modified or deleted. If you attempt to do so, exception error 3142 occurs. For more information, see Predefined Path Variables.

InstallShield 2010 User Guide

ISP-1600-UG00

2255

Chapter 47: Automation Interface Automation Objects

Members
Table 47-81: ISWiPathVariable Object Members Name Name Type Read-Write Property Read-Write Property Description Retrieves or sets the name of the path variable.

Value

Retrieves or sets the value of the path variable. For Standard Path Variables For standard variables, enter the directory to which you would like your variable to point.

Note: You can also refer to other path variables in the defined value by enclosing the referenced path variable name in angled brackets. For example, if you have a path variable called MyRoot with a value of C:\, you can refer to it in a path variable definition for another variable, such as Games. The actual path for the Games variable might be C:\Programs\GameFiles, but you can define Games as <MyRoot>\Programs\GameFiles. However, if you attempt to self-reference a path variable, the literal string is used instead. For example, defining Games as <MyRoot>\Programs\<Games> actually results in Games defined as C:\Programs\<Games>. Value (cont.) For Registry Path Variables Enter the complete registry key, with the final subkey being the name of the value whose data contains the folder. For example, define MyRegVar as follows:
HKEY_LOCAL_MACHINE\SOFTWARE\TestKey\TestValue

Assume that TestKey has the following subkey and values:


[HKEY_LOCAL_MACHINE\SOFTWARE\TestKey] @="C:\\MyPath1" "TestValue"="C:\\MyPath2" [HKEY_LOCAL_MACHINE\Software\TestKey\TestValue] @="C:\\MyPath3"

Even though HKEY_LOCAL_MACHINE\SOFTWARE\TestKey has a subkey called TestValue, MyRegVar points to the value TestValue, and the current value will be C:\MyPath2. (Note, however, that if a value named TestValue does not exist, InstallShield reads the default value (C:\MyPath3) of the subkey HKEY_LOCAL_MACHINE\SOFTWARE\TestKey\TestValue.) For Environment Path Variables For environment path variables, enter the name of the variable as it appears on the Environment dialog box. TestValue Read-Write Property Retrieves or sets the test value of the path variable.

2256

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-81: ISWiPathVariable Object Members (cont.) Name PathVarType Type Read-Write Property Description This enumerated integer property specifies the type of the path variable. Select one of the following options:

epvtPreDefinedPredefined path variables are variables that are set to certain standard Windows directories. These variables cannot be renamed or modified, but they can be used in your installation project to point to predefined directories. epvtCustomCustom path variables are sometimes referred to as standard path variables or user-defined variables. These variable types are native to InstallShield. That is, they do not rely upon outside resources, as do registry or environment variables. epvtEnvironmentEnvironment path variables are based on the values of your system's environment variables. You can set an environment path variable to an existing environment variable. epvtRegistryRegistry path variables enable you to define your own variables based on the default value of a specified registry key. The registry key must already be present when you set a path variable to the value of the key.

Applies To
ISWiProject

ISWiProductConfig Object
ISWiProductConfig represents a product configuration in the Releases view of the InstallShield user interface. You can retrieve a configuration by specifying an item in the ISWiProductConfigs collection.

Project: In an InstallScript project and an InstallScript Object project, there is only one element in ISWiProductConfigs, which is named "Media". Only some of the members of ISWiProductConfig apply to InstallScript and InstallScript Object projects.

InstallShield 2010 User Guide

ISP-1600-UG00

2257

Chapter 47: Automation Interface Automation Objects

Members
Table 47-82: ISWiProductConfig Object Members Name AddRelease ConfigFlags Project All Basic MSI, InstallScript MSI, Merge Module All Type Method Read-Write Property Description Adds a release to the current product configuration. Gets or sets a string that contains the release flags that you want to use to filter your features. Separate multiple flags with a comma.

DeleteRelease

Method

Deletes the specified release from the current product configuration. Set this property to True to generate a new package code for every release you build under this product configuration. If this property is not specified or set to False, then the existing package code under the product configuration is used. However, the Summary Information Stream's package code is used if you have not specified one here.

GeneratePackag eCode

Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

ISWiReleases

All

Collection

Contains all of the releases belonging to this product configuration. Gets or sets the value of the MSI Package File Name setting of the current product configuration.

MSIPackageFileN Basic MSI, ame InstallScript MSI, Merge Module Name PackageCode All Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

Read-Only Property Read-Write Property

Returns the name of the current product configuration. Gets or sets a string GUID for the package code that is built into this product configuration's releases. Neither the package code you enter in this property nor the Summary Information Stream's package code is used if you set the GeneratePackageCode property, above, to True. Gets or sets a string GUID for the product code that is built into this product configuration's releases.

ProductCode

Basic MSI, InstallScript MSI, Merge Module

Read-Write Property

Note: The GUID must be surrounded by braces{12345678-1234-1234-1234-1234567890AB}, for example. ProductName Basic MSI, InstallScript MSI, Merge Module Read-Write Property Gets or sets the product name that is built into this product configuration's releases.

2258

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-82: ISWiProductConfig Object Members (cont.) Name ProductVersion Project Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description Gets or sets a string that contains the product's version number, which overrides the Product Version property for every release you build under this product configuration. Gets or sets the value of the Setup File Name setting for the current product configuration.

SetupFileName

Read-Write Property

UpgradeCode

Read-Write Property

Gets or sets the resulting setup package's Upgrade Code property.

Applies To
ISWiProject

AddRelease Method
Call the AddRelease method to add a release to the current product configuration. Using this method is similar to creating a release in the Release Wizard or the Releases view of the IDE.

Syntax
AddRelease (ReleaseKey As String) As ISWiRelease

Parameters
Table 47-83: AddRelease Method Parameters Parameter ReleaseKey Description Pass the name of the release you would like to create in the current product configuration.

Applies To
ISWiProductConfig

DeleteRelease Method
Call the DeleteRelease method to delete a release from the current product configuration. Using this method is similar to deleting a release in the Releases view of the IDE.

Syntax
DeleteRelease (Release As ISWiRelease)
InstallShield 2010 User Guide ISP-1600-UG00 2259

Chapter 47: Automation Interface Automation Objects

Parameters
Table 47-84: DeleteRelease Method Parameters Parameter ReleaseKey Description Pass the name of the release you want to delete from the current product configuration.

Applies To
ISWiProductConfig

MSIPackageFileName Property
The MSIPackageFileName property is a read-write property which is used for .msi, .cab, and .pdf files generated at build time. If this property field is blank, then the product name is used. The string parameter associated with this property is the new MSI file name.

Applies to
ISWiProductConfig

SetupFileName Property
The SetupFileName property is a read-write property which is used for .exe files generated at build time. If this property field is blank, then the file will be called setup.exe. The string parameter associated with this property is the new setup file name.

Applies to
ISWiProductConfig

ISWiProperty Object
Project: The ISWiProperty object applies to the following project types: Basic MSI InstallScript MSI Merge Module

ISWiProperty represents a Windows Installer property in the Property Manager of the InstallShield user interface. You can retrieve a property by specifying an item in the ISWiProperties collection. The following example sets the property ApplicationUsers to OnlyCurrentUser, which means that the option Only for me is selected by default in the CustomerInformation dialog:

2260

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Dim pProject As ISWiProject Set pProject = New ISWiProject pProject.OpenProject "C:\MySetups\ISWiProperties.ism" Dim pProperty As ISWiProperty Set pProperty = pProject.ISWiProperties.Item("ApplicationUsers") pProperty.Value = "OnlyCurrentUser" pProperty.Comments = "Make ""Only for me"" the default radio button " & _ "in the CustomerInformation dialog." pProject.SaveProject

Members
Table 47-85: ISWiProperty Object Name Comments Type Read-Write Property Description Gets or sets the comments associated with the Windows Installer property. Contains the name of the property. Gets or sets the property's value.

Name Value

Read-Only Property Read-Write Property

Applies To
ISWiProject

ISWiRelease Object
ISWiRelease represents a release in the InstallShield user interface. You can retrieve a release by specifying an item in the ISWiReleases collection. The release can be one created in the Release Wizard, the Release view, or at the command line. Many feature properties and attributes are available in the automation interface through this objects methods, properties, and collections. The lines of Visual Basic below demonstrate opening up a project and showing a message box of several of a releases properties:
Dim pProject As ISWiProject Set pProject = New ISWiProject pProject.OpenProject "C:\MySetups\Commercial.ism", True Dim pProdConfig As ISWiProductConfig Set pProdConfig = pProject.ISWiProductConfigs.Item("Version 1") ' In an InstallScript project, there is only one element ' in ISWiProductConfigs, which is named "Media". Dim pRelease As ISWiRelease Set pRelease = pProdConfig.ISWiReleases.Item("NewRelease1")

InstallShield 2010 User Guide

ISP-1600-UG00

2261

Chapter 47: Automation Interface Automation Objects

Dim sProps As String sProps = pRelease.Name & " has these properties:" & vbNewLine sProps = sProps & "Build Location: " & pRelease.BuildLocation & vbNewLine sProps = sProps & "Compressed: " & pRelease.Compressed & vbNewLine sProps = sProps & "Default Language: " & pRelease.DefaultLang & vbNewLine sProps = sProps & "Setup.exe: " & pRelease.SetupEXE

MsgBox sProps pProject.CloseProject

Build Status Events


The ISWiRelease object raises the following status events:

Public Event ProgressIncrement(ByVal lIncrement As Long, pbCancel As Boolean) Public Event ProgressMax(ByVal lMax As Long, pbCancel As Boolean) Public Event StatusMessage(ByVal sMessage As String, pbCancel As Boolean)

These events are raised during the build process and provide status updates. You can set pbCancel to stop the build.

2262

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Members
Table 47-86: ISWiRelease Object Members Name BatchFileName Project InstallScript, InstallScript Object Basic MSI, InstallScript MSI Type Read-Write Property Description Gets or sets the release's Execute Batch File property, which specifies the filename of a batch file or executable file to execute after the release build is complete. This property indicates which browsers a One-Click installation will support. Specify one of the following values:

BrowsersToSuppor t

Read-Write Property

eocitbIE (0)Internet Explorer eocitbNetscape (1)Netscape Communicator eocitbBoth (2)Both Internet Explorer and Netscape Communicator

This property applies only to One-Click Web releases. Build All Method Builds the current release. This is a full and complete build. After the Build method is run on the ISWiRelease object, BuildErrorCount contains the number of errors that occurred while the build process was running. Gets or sets a string that determines the release location. Builds only the .msi tables of the current release.

BuildErrorCount

All

Read-Only Property

BuildLocation

All

Read-Write Property Method

BuildTablesOnly

Basic MSI, InstallScript MSI All

BuildTablesRefresh Files

Method

Rebuilds your .msi file and updates the Files table, including any new or changed files in your setup.

InstallShield 2010 User Guide

ISP-1600-UG00

2263

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name BuildUTF8Databas e Project Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description If you want the Windows Installer database, along with any instance or language transforms, to be built using the UTF-8 encoding, set this Boolean property to True. The UTF-8 encoding supports characters from all languages simultaneously, enabling you to mix and match, for example, Japanese and German, or Russian and Polish, both in text shown to end users and in file names and registry keys. These mixed languages work correctly regardless of the current language of the target system. However, some scenarios result in user interface issues. For example, if an end user specifies the /qb command-line option or uninstalls the product from Add or Remove Programs, Windows Installer uses very small fonts to display the user interface text in a UTF-8 database. If you set this property to True, InstallShield creates an ANSI database when you build your release. This option does not let you mix characters from languages in different code pages. BuildWarningCount All Read-Only Property After the Build method is run on the ISWiRelease object, BuildWarningCount contains the number of warnings that occurred while the build process was running. Specifies where cached installation files should be stored on the end user's system. Use a hard-coded value such as C:\CachedFiles. This property is used only if the CacheWebDownload property for the current build is set to True. CacheWebDownloa Basic MSI, d InstallScript MSI Read-Write Property Specifies whether the installation files for the current build should be cached on the target system. Set this to True to cache the installation files on the target system for use with application maintenance and repair. Use the CachePath property to indicate where the cached files should be stored on the end user's system. This property is used only if the WebType property for the current build is set to ewtOneExe (2) (one executable). CertificatePasswor d Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Write-Only Property Indicates the password for the .pvk file or the .pfx file for digital signatures. Setting this property is the equivalent of setting the Digital certificate file setting on the Signing tab for a release in the Releases view.

CachePath

Basic MSI, InstallScript MSI

Read-Write Property

2264

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name CertificateURL Project Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript MSI Type Read-Write Property Description Indicates the URL used in your digital certificate to link to a location end users can visit to learn more about your product, organization, or company. Use a fully qualified URLfor example, http:// www.mydomain.com.

Compressed

Read-Write Property

Set this property to True if you want all of the package's files compressed into the .msi file or Setup.exe, if selected. A value of False means that your application files are placed uncompressed in subfolders of the release location. Unlike the flexibility available in the Release Wizard's Custom Compression Settings panel, this property either compresses all or none of the files in the release.

CompressScript

InstallScript, InstallScript Object

Read-Write Property

This Boolean property gets or sets the release's Compress Script property, which specifies whether the compiled script file (.inx file) is placed in a cabinet file (True) or is placed uncompressed in the Disk1 disk image folder (False). Gets or sets the release's Copy To Folder property, which specifies a folder location to which to copy the release's disk image folders after the release build is complete. Existing folders with the same names as copied folders are overwritten but no folders are deleted. Specifies the location of your .pvk (private key) file provided by a certification authority. Use the path to the file. If you are using an .spc file, you must also specify the location of your .pvk.

CopyToFolder

InstallScript, InstallScript Object

Read-Write Property

CorrespondingPriv ateKey

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI All

Read-Write Property

CreateAutorunINF

Read-Write Property Read-Write Property Read-Write Property Read-Write Property

Set this property to True to create an Autorun.inf file at the root of your release location. Set this property to True to generate a Package Definition (.pdf) file for your setup, False otherwise. Gets or sets the name of the validation module (.cub file) that InstallShield uses to validate the built release. Gets or sets a string with the decimal value of the language ID of the default language for this release.

CreatePDF

CubFile

DefaultLang

InstallShield 2010 User Guide

ISP-1600-UG00

2265

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name DelayMSIEngineRe boot Project Basic MSI, InstallScript MSI Type Read-Write Property Description Specifies whether you want to postpone any reboot associated with installing or updating the Windows Installer engine on the target system until after your installation has completed. Set this to True to postpone the reboot, if one is necessary. Set this to False to allow the system to reboot, if necessary, immediately after the Windows Installer engine has been installed or updated and before performing your installation. This option requires Windows Installer version 2.0. DisplayDotNetOpti onDialog Basic MSI, InstallScript MSI Read-Write Property Set this property to True if you want the installation to display the .NET option message box at run time. This message box allows the end user to specify whether to install the .NET Framework. Set this property to False if the installation should not allow end users to determine whether they want to install the .NET Framework.

Note: This property does not determine whether your installation includes the .NET Framework, only whether the end user has a choice to install it. DistributeAfterBuil d Basic MSI, InstallScript MSI, Merge Module Read-Write Property Set this to True if you want the build engine to automatically distribute the current release after each build to the location that you specify for the DistributeLoc or DistributeToURLLoc properties.

Note: When both the DistributeLoc and DistributeToURLLoc properties are specified, the release is copied to only the FTP location.

2266

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name DistributeLoc Project Basic MSI, InstallScript MSI, Merge Module Type Read-Write Property Description If you want to be able to automatically distribute your release to a folder, specify the location for this property. The DistributeAfterBuild property must be set to True. Note that existing folders with the same names as copied folders are overwritten, but no folders are deleted. If the media format of the selected release is a network image, which creates only one disk image folder, the contents of the disk image folder, rather than the folder itself, are copied. If you chose to create a self-extracting executable file, the executable file, rather than the disk image folders, is copied.

Note: When both the DistributeLoc and DistributeToURLLoc properties are specified, the release is copied to only the FTP location. DistributeToURLLo c Basic MSI, InstallScript MSI, Merge Module Read-Write Property If you want to be able to automatically distribute your release to an FTP server, specify the FTP URL for the location for this property. The DistributeAfterBuild property must be set to True.

Note: If you need to distribute your release to a path outside the FTP default folder, use a double slash (//). For example, to distribute your release to a root-level folder called myproduct, where the URL of the FTP server is ftp://ftp.mydomain.com, enter ftp:// ftp.mydomain.com//myproduct for the FTP location. When both the DistributeLoc and DistributeToURLLoc properties are specified, the release is copied to only the FTP location. DistributeToURLPa ssword Basic MSI, InstallScript MSI, Merge Module Basic MSI, InstallScript MSI, Merge Module Write-Only Property If a password is required to upload to the FTP location that you are specifying, specify the password for this property. If a user name is required to upload to the FTP location that you are specifying, specify the user name for this property. Set the language of the user interface of the .NET framework installation. If you set DotNetVersion to '1', then you must set this property.

DistributeToURLUs erName

Read-Write Property

DotNetBaseLangua Basic MSI, ge InstallScript MSI

Read-Write Property

InstallShield 2010 User Guide

ISP-1600-UG00

2267

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name DotNetBuildConfig uration Project Basic MSI, InstallScript MSI Type Read-Write Property Description Set this to the active release name in your corresponding .NET Project file. Typical values would be Release and Debug. Specifies 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. Set this property to True to delay any prompts to reboot until after the installation is finished.

DotNetDelayReboo t

Basic MSI, InstallScript MSI

Read-Write Property

Note: The .NET Framework may not function until after the target system is restarted. Therefore, it is strongly recommended that you set this property to False if the .NET Framework is used during the installation. DotNetFramework Location Basic MSI, InstallScript MSI Read-Write Property Set this to one of the following values to indicate how you want to package the .NET Framework redistributable into your installation:

eelSourceMedia (0)Leaves the .NET Framework run time on the root of the source media. eelSetupExe (1)Extracts the .NET Framework from Setup.exe at run time. eelWeb (2)Downloads the .NET Framework run time from a default URL or a URL specified with the DotNetFrameworkURL property, described below. eelDotNetNone (3)Does not include the .NET Framework in the setup.


DotNetFramework URL Basic MSI, InstallScript MSI Read-Write Property

If DotNetFrameworkLocation is set to eelWeb (2), this property allows you to override the default location of dotnetfx.exe on the Internet. Set the command line that you want to pass to the setup inside of the .NET 1.1 redistributable (dotnetfx.exe). Specify the language identifiers representing the additional .NET 1.1 language packs that you want to install. Set the command line that you want to pass to the setup inside the .NET 1.1 language pack redistributables (langpack.exe). Set this property to True if you want to the user interface (UI) from the .NET Framework installation displayed at run time.

DotNetFxCmdLine

Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI

Read-Write Property Read-Write Property

DotNetLanguageP acks

DotNetLanguageP ackCmdLine

Basic MSI, InstallScript MSI

Read-Write Property

DotNetUI

Basic MSI, InstallScript MSI

Read-Write Property

2268

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name DotNetVersion Project Basic MSI, InstallScript MSI InstallScript, InstallScript Object Type Read-Write Property Read-Write Property Description Set this property to 1 if you want to ship .NET 1.1.

EnableDifference

This Boolean property gets or sets the release's Differential Media property, which specifies whether the current release (the release that is selected in the Releases view) is a differential releasethat is, a release that contains only those files that were absent from one or more of a specified set of existing releasesor a full release, which contains all your product's files, so that your product can be installed on a system on which no version of your product is currently installed. Set this property to True to display the Language Dialog from Setup.exe. Set this property to True to filter language-specific components according to your settings in the SupportedLangsData property, below. Gets or sets the release's FTP Site Folder property, which specifies the folder on the FTP server to which you want to copy the disk image folders. This property is applicable only if the FTPHostAddress property is not empty. Gets or sets the release's FTP Host Address property, which specifies the Uniform Resource Locator (URL) of an FTP server to which the build process should upload the disk image folders. Leave this property empty if you do not want this release uploaded to an FTP server. Gets or sets the release's FTP Site Password property, which specifies the password for the user name that you enter in the FTPUserName property. This property is applicable only if the FTPHostAddress property is not empty. Gets or sets the release's FTP Site User Name property, which specifies the user name with which you want to gain access to the FTP server. This property is applicable only if the FTPHostAddress property is not empty.

EnableLangDlg

All

Read-Write Property Read-Write Property

FilterLangs

Basic MSI, InstallScript MSI

FTPFolder

InstallScript, InstallScript Object

Read-Write Property

FTPHostAddress

InstallScript, InstallScript Object

Read-Write Property

FTPPassword

InstallScript, InstallScript Object

Read-Write Property

FTPUserName

InstallScript, InstallScript Object

Read-Write Property

InstallShield 2010 User Guide

ISP-1600-UG00

2269

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name GenerateFileHashV alues Project Basic MSI, InstallScript MSI Type Read-Write Property Description Indicates whether you want to populate the MsiFileHash table for every unversioned file in your build. Set this to True to populate the MsiFileHash table for every unversioned file in your build. Set this to False if you do not want to populate the MsiFileHash table. If this property is set to False, InstallShield builds any entries that are found in the project's MsiFileHash table (populated using the Direct Editor). If you have already populated the MsiFileHash table for a particular file, the build uses that information instead of generating the information at build time. GenerateOneClickI nstall Basic MSI, InstallScript MSI Read-Write Property Set this property to True to create a One-Click Install. If this property is set to True, you must specify file names in the OneClickHTMLBaseName and OneClickCabJarBaseName properties for this release. This property is ignored unless the release's Media Format property is set to Web via the Release Wizard's Media Type panel. IFTWCabSizeInKb Basic MSI, InstallScript MSI Read-Write Property Specifies the size, in kilobytes, of the cabinet (.cab) files built for the Web media type. Specify the value 0 (zero) to build a separate cabinet file for each component. This property is used only if the WebType property for the current release is set to ewtIFTW (1) (Install From The Web). InitDlgProductNam e InstallScript, InstallScript Object Read-Write Property Gets or sets the release's Init Dialog Product Name property, which specifies the product name to display in the setup initialization dialog box. If you leave this property empty, the product name that you specify in the General Information view. Specify a command-line parameter to pass to vjredist.exe. Consult Microsoft Support for valid command-line parameters. Set this property to True to display the J# Option dialog, which asks whether the end user wants to install the J# redistributable. If .NET 1.1 is also included in the setup, the dialog states that .NET 1.1 will also be installed. Set this property to True to install the J# redistributable even if the J# Option dialog cannot be displayed (for example, if the installation is run silently).

JSharpCmdLine

Basic MSI, InstallScript MSI

Read-Write Property

JSharpOptionDlg

Basic MSI, InstallScript MSI

Read-Write Property

JSharpOptionalIfSil Basic MSI, ent InstallScript MSI

Read-Write Property

2270

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name JSharpRedistLocat ion Project Basic MSI, InstallScript MSI Type Read-Write Property Description Set this to one of the following values to indicate how you want to package the J# redistributable into your setup.


KeepUnusedDirect ories Basic MSI, InstallScript MSI, Merge Module Read-Write Property

eelSourceMedia (0)Leaves the J# redistributable on the root of the source media. eelSetupExe (1)Extracts the J# redistributable from Setup.exe at run time. eelWeb (2)Downloads the J# redistributable from a default URL or a URL specified with the DotNetFrameworkURL property. eelDotNetNone (3)Does not include the J# redistributable in the setup.

Specify whether you want InstallShield to remove unused directories from the Directory table of the .msi file when you build this release. Available options are:

FalseIf a directory that is listed in the Directory column of the Directory table is not referenced in any known location in the .msi file, InstallShield removes it from the Directory table of the .msi file that it creates at build time. For Basic MSI and InstallScript MSI projects, this occurs after any merge modules are merged, but only directories that are present in the .msi file are removed; therefore, if a merge module contains new unused directories in its Directory table, the new unused directories are added to the installation. TrueInstallShield does not remove any directories from the Directory table of the .msi file that it creates at build time.

The default value is False.

Note: Under some conditions, predefined directories cannot be resolved, causing an installation to fail. Removing unused directories from the Directory table enables you to avoid unnecessary failures. Therefore, it is recommended that you do not keep unused directories.

InstallShield 2010 User Guide

ISP-1600-UG00

2271

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name Project Type Read-Write Property Description Specifies your application's copyright information. You must set the UseMyVersionInfo property to True to override the InstallShield default copyright information. This property is applicable only to releases that meet the following criteria:

LauncherCopyright Basic MSI, InstallScript MSI


LauncherPassword Basic MSI, InstallScript MSI Read-Write Property

Single-file Setup.exe Compressed files Network image media type

Specifies a password to protect your application. You must set the PasswordProtectLauncher property to True to activate password protection. This property is applicable only to releases that meet the following criteria:


MSI30EngineURL Basic MSI, InstallScript MSI Read-Write Property

Single-file Setup.exe Compressed files Network image media type

Gets or sets the uniform resource locator (URL) for the location of the engine. This is the location that the installation file uses at run time to download the engine. Specifies where the MSI engine installersInstMsiA.exe and InstMsiW.exeshould be located. Set this property to one of the following:

MsiEngineLocation

Basic MSI, InstallScript MSI

Read-Write Property

eelSourceMedia (0)Copy from the source media. Leaves the MSI engine installers you selected on the root of the source media. This option is not available for Web media types or Network Image media types with all of your files compressed into Setup.exe. eelSetupExe (1)Extract engine from Setup.exe. eelWeb (2)Download engine from the Web. If you use this setting, be sure to set the Win9xMSIEngineURL and WinNTMSIEngineURL properties to appropriate Web locations.

2272

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name MsiEngineVersion Project Basic MSI, InstallScript MSI Type Read-Write Property Description Indicates the Windows Installer engine version to be included in your application. Set this property to one of the following:

eev12 (0)Version 1.2 eev20 (1)Version 2.0 eev11 (2)Version 1.1 eev30 (3)Version 3.0 eev20And30 (4)Version 2.0 and Version 3.0 (Installs Windows Installer 3.0 to a target system that is running Windows 200 SP3 or later, and installs Windows Installer 2.0 to other target systems.) eev31 (5)Version 3.1

Tip: To include the Windows Installer engine, you must also set the SetupEXE property to True. In addition, the TargetOS property should not be set to osNone (0).

Note: The eev11 option enables you to target a system that is running Windows Installer version 1.1. InstallShield does not include or distribute version 1.1. If version 1.1 is not present on the target system, version 1.2 is installed. Name All Read-Only Property Read-Write Property Name of the current release.

NetscapeCertificat eId

Basic MSI, InstallScript MSI

Specifies your Netscape Certificate ID for this release. This property applies only to One-Click Web releases and is required when supporting Netscape Communicator. Specifies your Netscape Certificate Password for this release. This property applies only to One-Click Web releases and is required when supporting Netscape Communicator.

NetscapeCertificat ePassword

Basic MSI, InstallScript MSI

Read-Write Property

NetscapeCertificat ePath

Basic MSI, InstallScript MSI

Read-Write Property

Specifies your Netscape Certificate Database paththe directory containing cert7.db and key3.dbfor this release. This property applies only to One-Click Web releases and is required when supporting Netscape Communicator.

InstallShield 2010 User Guide

ISP-1600-UG00

2273

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name ObjDiffOptions Project InstallScript, InstallScript Object Type Read-Write Property Description Gets or sets the release's Object Difference property, which specifies the conditions for including InstallShield objects in your differential release. Use the following constants to set this property:

eodoAll (0)The differential release will include all objects that would be included in the equivalent full update release. eodoExcludeAll (1)The differential release will not include any objects. eodoIncludeIfChanged (2)The differential release will include those objects that would be included in the equivalent full update release and that are not found in, or are different from, the corresponding object in at least one of the comparison releases.

This property is applicable only if the EnableDifference property is set to True. OneClickCabJarBa seName Basic MSI, InstallScript MSI Read-Write Property Specifies the base file name for the cabinet (.cab file, for Internet Explorer support) or applet archive (.jar file, for Netscape Communicator support) file generated by the build process for a One-Click installation. The .cab and/or .jar extension will be appended to the name you specify here, based on the BrowsersToSupport setting for the current release. The generated file (or files) will be created in the Disk1 folder for the current release. This property is used only if the GenerateOneClickInstall property for the current build is set to True. OneClickHTMLBas eName Basic MSI, InstallScript MSI Read-Write Property Specifies the base file name of the HTML file generated by the build process. The .htm extension is appended to the base name you specify, and the generated file is created in the Disk1 folder of the current release location. This property is used only if the GenerateOneClickInstall property for the current build is set to True. OptimizeSize Basic MSI, InstallScript MSI Read-Write Property Specifies the level of compression to use in your release's cabinet files. Setting this property to True generally decreases the size of your compressed files, but the build process may take more time to complete. This property is used only if your release compresses some or all of its files.

2274

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name OSFilter Project InstallScript, InstallScript Object Type Read-Write Property Description Gets or sets the release's Platform(s) setting, which specifies the operating systems that you want this release to support. If the platform specified for a component does not match one of the platforms that is selected for this property, the component is not included in the release. Use the following constants to set this property:

eosOSIndepedent = 0 eosWin95 = &H10 (16) eosWin98 = &H40 (64) eosWinMe = &H80 (128) eosWinNT4 = &H10000 (65536) eosWin2000 = &H100000 (1048576) eosWinXP = &H400000 (4194304) eosWinServer2003 = &H800000 (8388608) eosWinVista = &H1000000 (16777216)These constants are for Windows Vista and Windows Server 2008. eosWin7 = &H2000000 (33554432)These constants are for Windows 7 and Windows Server 2008 R2. eosAll = &3D100D0 (64028880)

You can specify multiple platforms; for example, eosWin7 Or eosWinServer2008 Or eosWinVista Or eosWinServer2003. PasswordProtectLa Basic MSI, uncher InstallScript MSI Read-Write Property Set this property to True to password-protect your setup. Specify a password in the LauncherPassword property. This property is applicable only to releases that meet the following criteria:


PreProcessorDefin es InstallScript, InstallScript Object Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Read-Write Property

Single-file Setup.exe Compressed files Network image media type

Gets or sets the release's Compiler Preprocessor Defines property, which specifies any preprocessor variable definitions. Specifies the fully qualified path to a previous release (.msi file) to minimize the size of future patch packages. Gets or sets a string that contains the release flags that you want to use to filter your features. Separate multiple flags with a comma.

PreviousPackage

Read-Write Property Read-Write Property

ReleaseFlags

InstallShield 2010 User Guide

ISP-1600-UG00

2275

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name SetupCmdLine Project InstallScript, InstallScript Object Type Read-Write Property Description Gets or sets the release's Setup Command Line property, which specifies any command line parameters you want to pass to Setup.exe when the setup is launched. Set this property to True to create a Setup.exe setup launcher for the current release. The SetupEXE property and the TargetOS property correspond with the Setup Launcher setting on the Setup.exe tab in the Releases view. To learn about scenarios that require a setup launcher, see Creating a Setup Launcher. ShallowFolderStru cture Basic MSI, InstallScript MSI Read-Write Property Set this property to create the .msi file and related files directly in the Release Location without any of the subfolders. This Boolean property gets or sets the release's Show Password Dialog property, which specifies whether to execute the password-checking code in the OnCheckMediaPassword event handler function's default code. This property is applicable only if you specify a non-null password in the Media Password property. If you want to sign any of the files in your release, set this Boolean property to True and then use the SignFilesInclude and SignFilesExclude properties to indicate which files should be signed.

SetupEXE

Basic MSI, InstallScript MSI

Read-Write Property

ShowPasswordDlg

InstallScript, InstallScript Object

Read-Write Property

SignFiles

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Read-Write Property

Windows Logo Guideline: All executable files (including .exe, .dll, .ocx, .sys, .cpl, .drv, and .scr files) in an installation must be digitally signed for the Certified for Windows Vista program.

2276

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name SignFilesExclude Project Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Type Read-Write Property Description Specify any files and file patterns that you do not want to be digitally signed at build time. Note the following guidelines:

To indicate a wild-card character, use an asterisk (*). For example, if you do not want to sign any .drv files, specify the following: *.drv Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to avoid signing any files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe for the SignFilesInclude property and the SignFilesExclude property, InstallShield does not sign any .exe files.

SignFilesInclude

Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module

Read-Write Property

Specify the files and file patterns that you want to be digitally signed at build time. Note the following guidelines:

To indicate a wild-card character, use an asterisk (*). For example, if you want to sign all .exe files, specify the following: *.exe Using wild-card characters is especially helpful if you include dynamically linked files in your project and you want to sign all files that match a certain pattern.

Put each file and each file pattern on its own line, with each separated by a carriage return. Note that the files and file patterns that should not be signed override any files and file patterns that should be signed. For example, if you specify *.exe for the SignFilesInclude property and the SignFilesExclude property, InstallShield does not sign any .exe files.

InstallShield 2010 User Guide

ISP-1600-UG00

2277

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name SignFilesInPlace Project Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Type Read-Write Property Description Specify whether you want InstallShield to sign your original files or just the files that are built into the release:

FalseInstallShield signs a temporary copy of each file and then uses that signed temporary copy to build a release. Note that with this behavior, InstallShield will not modify or sign your original files. TrueIf you want InstallShield to sign your original files, set this property to True.

The default value of this property is set to False. The benefit of specifying True for a Basic MSI or InstallScript MSI project is that it helps create one patch that updates both compressed and uncompressed versions of a release that contains originally unsigned files. SignLauncher Basic MSI, InstallScript MSI This varies. (To learn more, see SignMedia.) Basic MSI, InstallScript, InstallScript MSI, InstallScript Object, Merge Module Read-Write Property Read-Write Property Set this property to True to digitally sign your Setup.exe file. Set this property to indicate whether to digitally sign your media, and if so, which files should be signed.

SignMedia

SignSignedFiles

Read-Write Property

If any of the files in your project are already digitally signed, specify whether you want InstallShield to replace those existing digital signatures with the digital signature that you specify through the SoftwarePublishingCredentials property:

TrueUse the digital signature information that you are providing through the SoftwarePublishingCredentials property instead of any existing digital signature information that is already included with the file. FalseLeave the existing digital signature information intact for any files that are already signed. This is the default value.

Note that this affects only files that meet the requirements that are specified in the SignFilesInclude and SignFilesExclude properties. SingleEXEFileNam e InstallScript, InstallScript Object Read-Write Property Gets or sets the release's Single Exe File Name property, which specifies the filename (including extension) of a self-extracting executable file that runs the setup. If the property's value is null, no selfextracting executable is created.

2278

ISP-1600-UG00

InstallShield 2010 User Guide

Chapter 47: Automation Interface Automation Objects

Table 47-86: ISWiRelease Object Members (cont.) Name Project Type Read-Write Property Description Gets or sets the release's Single Exe Icon File property, which specifies the fully qualified name of the file from which the executable's icon is taken at build time. If the property's value is null, a default icon is used. Gets or sets the release's Specify Skin property, which specifies the dialog box skin that is applied to this release. This property is applicable only if the UseProjectSkin property is set to True. Set this property to display a small initialization dialog when the end user runs this release. Specifies the location of your digital certificate file (.spc or .pfx) provided by a certifi

You might also like