Install Shield User Guide
Install Shield User Guide
Install Shield User Guide
Version 2010
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.
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
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
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
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
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
ISP-1600-UG00
vii
Contents
Changing the Dialogs Displayed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Using the Dialog Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
viii
ISP-1600-UG00
Contents
Specifying Component Installation Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Translating the Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Building the Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Running the Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Testing the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
10
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
ISP-1600-UG00
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
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
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
ISP-1600-UG00
xiii
Contents
Editing Build and Run-Time Variables Referenced in a DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Identifying the Location of DIM Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
12
xiv
ISP-1600-UG00
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
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
xvi
ISP-1600-UG00
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
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
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
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
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
16
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
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
18
19
20
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
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
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
xxvi
ISP-1600-UG00
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
23
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
Contents
Using System Variables in Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110 Setting Your Objects Destination Through the Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
27
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
xxx
ISP-1600-UG00
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
31
32
33
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
35
36
xxxii
ISP-1600-UG00
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
38
39 40
ISP-1600-UG00
xxxiii
Contents
Controls Toolbar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1312 Layout Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1313 MSI Debugger Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315 Output Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
41
xxxiv
ISP-1600-UG00
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
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
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
ISP-1600-UG00
xxxvii
Contents
42
xxxviii
ISP-1600-UG00
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
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
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
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
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
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
xliv
ISP-1600-UG00
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
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
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
45
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
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
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
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
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
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
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
liv
ISP-1600-UG00
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
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
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
ISP-1600-UG00
lvii
Contents
48 49
50
lviii
ISP-1600-UG00
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
ISP-1600-UG00
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.
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.
Reference
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.
ISP-1600-UG00
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
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
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.
ISP-1600-UG00
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
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
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:
ISP-1600-UG00
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
ISP-1600-UG00
.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
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
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
ISP-1600-UG00
11
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:
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
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
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
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.
ISP-1600-UG00
15
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
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
ISP-1600-UG00
17
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
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:
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.
ISP-1600-UG00
19
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
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
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:
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
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:
ISP-1600-UG00
21
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:
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
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:
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.
ISP-1600-UG00
23
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.
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:
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
For media, the viewer has the following new field: Executable File.
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
Microsoft .NET Framework 3.5 SP1 (Web Download) Microsoft .NET Framework 3.5 SP1 (Full Package)
ISP-1600-UG00
25
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.
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.
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
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.
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.
ISP-1600-UG00
27
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
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.
ISP-1600-UG00
29
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
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.
ISP-1600-UG00
31
Adding .NET Framework Redistributables to Projects Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites Microsoft .NET Framework Object Wizard
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
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
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
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:
ISP-1600-UG00
35
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
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.
ISP-1600-UG00
37
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
ISP-1600-UG00
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.
ISP-1600-UG00
39
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
-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
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
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.
ISP-1600-UG00
41
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
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:
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
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
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 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
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.
ISP-1600-UG00
47
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:
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:
48
ISP-1600-UG00
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.
ISP-1600-UG00
49
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
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.
ISP-1600-UG00
51
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
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
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
ISWiProject Object
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:
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:
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.
ISP-1600-UG00
53
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:
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
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.
ISP-1600-UG00
55
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:
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
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:
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:
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:
ISP-1600-UG00
57
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
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
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:
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
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.
ISP-1600-UG00
61
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:
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
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.
ISP-1600-UG00
63
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:
The following InstallScript functions, which were previously available only for InstallScript projects, are now also available for InstallScript MSI projects:
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
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
64
ISP-1600-UG00
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.
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:
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:
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.
ISP-1600-UG00
65
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.
66
ISP-1600-UG00
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.
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
ISP-1600-UG00
67
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:
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.
68
ISP-1600-UG00
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:
ISP-1600-UG00
69
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
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
/runfromtemp (Basic
/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
UNINST UNINSTALL_STRING
INSTALLSCRIPTMSI BASICMSI
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.
72
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.
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
Hitachi SH3 i686 i586 i486 MIPS R4000 MIPS R3000 MIPS R2000 SHx SH4 SHx SH3 StrongARM-XScale
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
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.
ISP-1600-UG00
75
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.
76
ISP-1600-UG00
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.
Help Conventions
In this documentation, reader alert and style conventions are used to bring your attention to specific information or help you identify information.
ISP-1600-UG00
77
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
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
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
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 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
Properties
Screen Output
Screen output (from a log file or from the console) is displayed in a monospace typeface, and in blue.
ISP-1600-UG00
79
80
ISP-1600-UG00
ISP-1600-UG00
81
82
ISP-1600-UG00
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:
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
ISP-1600-UG00
83
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:
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
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.
ISP-1600-UG00
85
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
Help Topics
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.
ISP-1600-UG00
87
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.
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
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.
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.
ISP-1600-UG00
89
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
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:
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.
ISP-1600-UG00
91
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
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
C# .NET 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.
ISP-1600-UG00
93
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.
Billboard Support
94
ISP-1600-UG00
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.
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.
install the primary .msi file. (Setup.exe must be included in the installation, or it must already be present on the target system.)
4.
5.
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.
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
ensure that sufficient privileges are available, custom actions should have an in-script execution setting of deferred in system context.
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
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
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.
ISP-1600-UG00
97
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.
(ROT).
iii. IDriver.exe executes relevant script code. d.
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
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.
ISP-1600-UG00
99
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.
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
Task
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.
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
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.
Task
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.
102
ISP-1600-UG00
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
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
Opening Projects
Task
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.
ISP-1600-UG00
103
Task
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.
Task
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.
Note: Some functionality may be limited when editing an MSI package in Direct Edit Mode.
Task
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
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.
Task
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.
Task
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.
ISP-1600-UG00
105
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.
Task
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.
106
ISP-1600-UG00
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.
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.
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
Converting Projects
Task
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.
Task
Open the InstallScript MSI project. On the Project menu, point to Project Converters, and click Convert to InstallScript project.
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
Task
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.
Patch 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.
ISP-1600-UG00
109
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.
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
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.
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.
ISP-1600-UG00
111
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.
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.
Task
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
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.
Task
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.
ISP-1600-UG00
113
Project Assistant
Project: The Project Assistant does not appear in the following project types:
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.
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
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.
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.
Note: The Installation Designer and the Project Assistant run simultaneously. Any changes that you make in one are reflected instantly in the other.
ISP-1600-UG00
115
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
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.
116
ISP-1600-UG00
Project: The ability to specify operating system requirements in the Project Assistant is available in the following project types:
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.
Task
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
Note: Features can contain subfeatures, subsubfeatures, and so forth, to as many levels as your installation program requires.
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.
118
ISP-1600-UG00
Task
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.
Task
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.
Task
In the Project Assistant, open the Application Files page. Click the file you want to remove and press Delete.
Task
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
Task
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.
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.
ISP-1600-UG00
121
Task
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.
Task
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.
Task
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.
122
ISP-1600-UG00
Task
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.
Task
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.
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.
Task
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.
124
ISP-1600-UG00
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
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.
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.
ISP-1600-UG00
125
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
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).
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
Task
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.
ISP-1600-UG00
127
Task
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
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
ISP-1600-UG00
129
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.
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.
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.
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.
Task
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.
ISP-1600-UG00
131
Task
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.
Task
Select the file you want to remove. Right-click the file and click Delete.
132
ISP-1600-UG00
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.
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.
ISP-1600-UG00
133
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.
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.
134
ISP-1600-UG00
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.
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.
ISP-1600-UG00
135
136
ISP-1600-UG00
Figure 3-5: Sorting Rows by the Check Box Column and Then the Type Column
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.
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.
ISP-1600-UG00
137
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.
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.
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
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.
Task
Drag the title bar of the Output window to the new location. Resize the Output window as needed.
Task
Drag the title bar of the Output window to the left, right, top, or bottom edge of the InstallShield interface.
Task
Drag the tab to the new location. Resize the Output window as needed.
Task
Drag the tab to the left, right, top, or bottom edge of the InstallShield interface.
ISP-1600-UG00
139
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:
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
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.
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"
ISP-1600-UG00
141
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
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>
ISP-1600-UG00
143
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
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
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:
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
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
145
3. 4. 5.
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.
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
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.
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.
ISP-1600-UG00
147
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
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.
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
3. 4. 5.
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
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
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.
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.
ISP-1600-UG00
151
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.
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.
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.
ISP-1600-UG00
153
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
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:
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.
ISP-1600-UG00
155
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:
156
ISP-1600-UG00
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:
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
ISP-1600-UG00
157
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
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.
Securing Files, Folders, and Registry Keys in a Locked-Down Environment Selecting the Locked-Down Permissions Type for a Project
ISP-1600-UG00
159
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 );
160
ISP-1600-UG00
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.
ISP-1600-UG00
161
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.
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
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.
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
ISP-1600-UG00
163
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
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
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
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.
ISP-1600-UG00
167
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
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.
ISP-1600-UG00
169
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
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.
ISP-1600-UG00
171
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
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.
ISP-1600-UG00
173
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.
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
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.
ISP-1600-UG00
175
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.
To learn more about One-Click Install installations, see One-Click Install Installations in InstallScript Projects.
176
ISP-1600-UG00
DemoShield Support
DemoShield is no longer being sold. In addition, it is no longer supported. Therefore, InstallShield no longer includes any DemoShield integration.
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)
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.
ISP-1600-UG00
177
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.
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.
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
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.
Task
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.
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)
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
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.
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.
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.
ISP-1600-UG00
181
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:
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
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.
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:
ISP-1600-UG00
183
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
MyOnMoved
MyOnEnd
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.
184
ISP-1600-UG00
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
ISP-1600-UG00
185
(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)
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.
186
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
187
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
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.
ISP-1600-UG00
189
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.
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
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
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
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.
ISP-1600-UG00
191
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)
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;
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).
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.
ISP-1600-UG00
193
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.
194
ISP-1600-UG00
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.
Task
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.
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.
Task
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.
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.
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
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;
ISP-1600-UG00
197
/* 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
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.
ISP-1600-UG00
199
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
Default Keyboard Shortcut Ctrl + Shift + F2 Alt + Delete Alt + Shift + N Ctrl + H
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
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
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
GetGroupNameList GetItemNameList
QueryProgGroup
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.
ISP-1600-UG00
201
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
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
ISP-1600-UG00
203
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
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
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.
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
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
ISP-1600-UG00
207
208
ISP-1600-UG00
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
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.
ISP-1600-UG00
209
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.
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
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:
ISP-1600-UG00
211
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
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
Task
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.
ISP-1600-UG00
213
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).
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
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
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.
ISP-1600-UG00
215
Task
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.
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
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
Tip: It is recommended that you use Unicode encoding instead of ANSI encoding when you are exporting string entries to a file for translation.
ISP-1600-UG00
217
Task
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.
218
ISP-1600-UG00
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.
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.
ISP-1600-UG00
219
Chapter 4: Tutorials
220
ISP-1600-UG00
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.
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.
ISP-1600-UG00
221
Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects
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
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.
Task
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.
Note: Features can contain subfeatures, subsubfeatures, and so forth, to as many levels as your installation requires.
Task
For the Do you want to customize your Installation Architecture? question, select Yes. Select the existing DefaultFeature feature and rename it ProgramFiles.
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.
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.
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.
224
ISP-1600-UG00
Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects
Task
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.
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.
Task
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".
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.
Set display properties for your program features. Define your programs setup types. Create components and add file links.
Task
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
Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects
3.
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.
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.
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.
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.
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
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
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.
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.
ISP-1600-UG00
229
Chapter 5: InstallScript Project Tutorial Step 1: Creating, Building, and Testing Projects
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
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.
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.
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
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.
ISP-1600-UG00
231
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.
Task
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
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.
Task
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.
Task
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).
Task
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
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.
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
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.
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.
ISP-1600-UG00
235
////////////////////////////////////////////////////////////////////////////// // // 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.
Task
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.
236
ISP-1600-UG00
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.
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.
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.
OnFirstUIBefore, which contains the dialogs to be displayed before data transfer for a first-time
installation.
ISP-1600-UG00
237
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.
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.
4.
238
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
239
240
ISP-1600-UG00
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.
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
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.
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
Task
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
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).
Task
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.
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.
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.
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
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
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:
Task
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
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.
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
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.
246
ISP-1600-UG00
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
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.
Task
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.
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
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.
Task
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.
Note: The views displayed in the IDE differ, depending on the project type you create.
Set properties for your program features. Create components and add file links.
248
ISP-1600-UG00
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
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.
Task
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.
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
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.
Task
Create a new product configuration called Tutorial. Click Next to specify a release name.
250
ISP-1600-UG00
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
Task
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
Use the default settings (include English in the user interface), and click Next to continue.
Task
ISP-1600-UG00
251
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
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.
Task
Task
Leave the default settings selected. For this step, leave all the defaults selected.
252
ISP-1600-UG00
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
Task
Task
Task
ISP-1600-UG00
253
Chapter 6: Basic MSI Project Tutorial Step 1: Creating, Building, and Testing Your Project
Task
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.
Task
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.
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.
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.
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.
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
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.
Task
Open the Registry view. The Registry view is located in the System Configuration section of the View List.
256
ISP-1600-UG00
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.
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.
Task
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.
ISP-1600-UG00
257
Task
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).
Task
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
The next step is adding the HTML file to the component you just created.
Task
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.
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.
ISP-1600-UG00
259
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.
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
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.
Specifying the dialogs to be displayed during the installation. Modifying the layout and properties of a dialog using the Dialog Editor.
Task
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.
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.
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.
262
ISP-1600-UG00
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.
ISP-1600-UG00
263
Task
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.
Task
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.
264
ISP-1600-UG00
Task
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.
Task
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.
ISP-1600-UG00
265
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.
The String Entry dialog box opens. In the String Identifier box, enter the following:
MYSTRING
4.
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.
Task
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
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
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.
Task
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.
ISP-1600-UG00
267
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.
268
ISP-1600-UG00
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.
Task
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.
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.
ISP-1600-UG00
269
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.
Task
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
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.
Tutorial Overview
This tutorial covers the following information about referencing a DIM in 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
Task
Create a Basic MSI project, and then save the project as Test.ism.
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
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
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.
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.
ISP-1600-UG00
273
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM
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
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM
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.
ISP-1600-UG00
275
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM
The Data tab displays a summary of the types of data contained in the 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
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Reviewing the Contents of a Referenced DIM
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
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
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
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.
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
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
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
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Building and Running the Installation
Task
Build and run the installation. Congratulations! You have just completed the Referencing a DIM in a Basic MSI Project tutorial.
ISP-1600-UG00
279
Chapter 8: Referencing a DIM in a Basic MSI Project Tutorial Building and Running the Installation
280
ISP-1600-UG00
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.
ISP-1600-UG00
281
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.
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.
282
ISP-1600-UG00
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.
ISP-1600-UG00
283
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.
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.
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
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.
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.
ISP-1600-UG00
285
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
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.
ISP-1600-UG00
287
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
Figure 9-2: Example 2Diagram of an Installation that Has Administrator as the Required Execution Level
ISP-1600-UG00
289
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.
290
ISP-1600-UG00
Preventing the Current Installation from Overwriting a Future Major Version of the Same Product
Project: This information applies to the following project types:
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
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.
Task
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
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
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.
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.
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
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.
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.
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
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.
ISP-1600-UG00
295
296
ISP-1600-UG00
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.
Note: Your InstallShield project file (.ism) retains the .ism file extension when you save it in XML or Binary format.
ISP-1600-UG00
297
Task
In the View List under Installation Information, click General Information. For Project File Format setting, select XML or Binary.
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.
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.)
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.
ISP-1600-UG00
299
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;
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
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.
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.
ISP-1600-UG00
301
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
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
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.
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
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.
ISP-1600-UG00
303
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.
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
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.
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.
ISP-1600-UG00
305
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.
306
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00
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
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.
Task
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.
ISP-1600-UG00
307
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.
308
ISP-1600-UG00
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
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.
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
ISP-1600-UG00
309
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
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.
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
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.
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
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.
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
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.
ISP-1600-UG00
313
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
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.
Specifying the InstallScript User Interface Type for InstallScript MSI Installations
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
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.
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.
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
Chapter 10: Specifying Installation Information Entering Summary Information Stream Data
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.
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.
Chapter 10: Specifying Installation Information Configuring Add or Remove Programs Information
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.
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
Chapter 10: Specifying Installation Information Configuring Add or Remove Programs Information
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.
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
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
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.
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.
322
ISP-1600-UG00
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.
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.
ISP-1600-UG00
323
Chapter 11: Organizing Files for Your Installation Using Path Variables
<ISPROJECTDIR>
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.
324
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Using Path Variables
Task
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.
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.
Chapter 11: Organizing Files for Your Installation Using Path Variables
Environment Variables
Environment path variables enable you to define your own path variables based on certain values on the Environment dialog box.
Task
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.
326
ISP-1600-UG00
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
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.
ISP-1600-UG00
327
Chapter 11: Organizing Files for Your Installation Including Files and Folders
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.
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.
Task
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.
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 ( ).
Note: (Windows Installerbased projects only) You can launch the Component Wizard by right-clicking a folder icon and then clicking Launch Component Wizard.
ISP-1600-UG00
329
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Task
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.
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
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.
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
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.
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
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
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).
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.
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.
Project: This information does not apply to InstallScript or InstallScript Object projects.
Task
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
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.
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.
Project: This information does not apply to InstallScript or InstallScript Object projects.
Task
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
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Project: This information does not apply to InstallScript or InstallScript Object projects.
Task
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.
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.
Program Files Program Files (64-bit) Program Files\Common Files Program Files (64-bit)\Common Files (64-bit)
336
ISP-1600-UG00
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.
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
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
338
ISP-1600-UG00
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.
Task
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.
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.
ISP-1600-UG00
339
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Task
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.
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.
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
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.
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.
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.
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.
Determining the Appropriate Component Creation Method for Dynamically Linked Files
InstallShield provides two methods for creating components for dynamically linked files: the best practice method and the one-component-per-directory method.
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.
Tip: The File Extensions tab on the Options dialog box is where you specify which file types are PE files.
342
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Including Files and Folders
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.
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.
Chapter 11: Organizing Files for Your Installation Including Files and Folders
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:
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
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.
Tip: You can also use the Components view to add dynamic file links. For more information, see Adding Dynamic File Links to Components.
344
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Task
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.
InstallScript-Based Projects
The following procedure applies to InstallScript and InstallScript Object projects.
Task
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.
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
Chapter 11: Organizing Files for Your Installation Including Files and Folders
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.
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.
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
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.
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:
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.
ISP-1600-UG00
347
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Task
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.
Task
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
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.
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
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.
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.
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.
Task
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.
350
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Including Files and Folders
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.
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>.
ISP-1600-UG00
351
Chapter 11: Organizing Files for Your Installation Including Files and Folders
Task
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.
You can enable or disable automatic registration of font files for individual files.
Task
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
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
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.
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.
ISP-1600-UG00
353
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.
Component Creation
InstallShield offers several methods for creating components.
354 ISP-1600-UG00 InstallShield 2010 User Guide
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.
Task
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.
Task
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.
ISP-1600-UG00
355
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 ( ).
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.
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
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.
356
Basic MSI
ISP-1600-UG00 InstallShield 2010 User Guide
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00
357
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.
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
5.
Click OK.
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
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:
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.
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
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.
360
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 InstallShield 2010 User Guide
Transform
Task
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.
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.
ISP-1600-UG00
361
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:
Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform
Task
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
Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform
Task
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.
Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform
Task
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.
ISP-1600-UG00
363
Even though the component is no longer associated with this feature, it is still present in your project.
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.
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
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.
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
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.
Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database
ISP-1600-UG00
365
Task
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.
Creating Registry Keys Dragging and Dropping Registry Entries to Create Registry Keys Creating Registry Values Importing Registry Files Exporting Registry Files
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
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
4.
Project: This information does not apply to Basic MSI projects or InstallScript MSI projects.
Task
In the Components or Setup Design view, right-click the components Static File Links subnode and then click New Folder.
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00
367
Transform
Task
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.
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
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
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
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.
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.
ISP-1600-UG00
369
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.
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
Task
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.
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.
ISP-1600-UG00
371
[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 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
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
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.
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.
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
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
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.
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
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).
ISP-1600-UG00
375
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.
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.
376
ISP-1600-UG00
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.
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.
ISP-1600-UG00
377
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.
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.
378
ISP-1600-UG00
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.
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.
ISP-1600-UG00
379
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.
380
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
381
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.
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.
namespace MyInstall { /// /// Summary description for Class1. /// [System.ComponentModel.RunInstallerAttribute(true)]
382 ISP-1600-UG00 InstallShield 2010 User Guide
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]); } } }; }
Registry reflection keeps the 32-bit registry view and the 64-bit registry view in sync on the target machine.
ISP-1600-UG00
383
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.
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
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.
ISP-1600-UG00
385
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
Task
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.
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.
ISP-1600-UG00
387
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
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
Task
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.
Task
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
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.
390
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00 InstallShield 2010 User Guide
Important: It is recommended that you avoid using the TypeLib table. For more information, see TypeLib Table in the
Task
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.
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.
ISP-1600-UG00
391
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.
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
Task
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
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
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
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
Deleting Assemblies
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
Task
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.
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.
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
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.
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
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
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00 397
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
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
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.
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
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
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00
399
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
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.
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.
400
You have the option of specifying an informational string, called application data, for each qualifier.
Task
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:
ISP-1600-UG00
401
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,
After you have created all of your products features and subfeatures, you need to create components and then associate them with your features.
Basic MSI InstallScript InstallScript MSI InstallScript Object MSI Database Transform
402
ISP-1600-UG00
Task
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.
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
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).
ISP-1600-UG00
403
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.
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
Task
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.
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.
ISP-1600-UG00
405
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.
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.
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
The procedure for conditionally selecting features at run time depends on the project type that you are using.
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
ISP-1600-UG00
407
The procedure for conditionally hiding features at run time depends on the project type that you are using.
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.
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
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:
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.)
ISP-1600-UG00
409
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
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.
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
Task
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.
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.
ISP-1600-UG00
411
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.
Project: The following project types include support for release flags:
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
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.
Project: The following project types include support for release flags:
Task
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
Reordering Features
Project: This information applies to the following project types:
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
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.
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
In the View List under Organization, click Setup Design or Features. Select the HelpFiles feature.
ISP-1600-UG00 413
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.
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.
To create setup types for a Basic MSI project, use the features Install Level setting.
Task
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.
To create setup types for a Basic MSI project, use the features Install Level setting.
Task
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.
To create setup types for a Basic MSI project, use the features Install Level setting.
ISP-1600-UG00
415
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
To create setup types for a Basic MSI project, use the features Install Level setting.
Task
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.
416
ISP-1600-UG00
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.
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.
ISP-1600-UG00
417
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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
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.
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:
ISP-1600-UG00
419
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
Task
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.
420
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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
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.
ISP-1600-UG00
421
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
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).
Task
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).
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
Task
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.
ISP-1600-UG00
423
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
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).
Task
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
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
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.
426
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
427
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
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.
Task
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
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.
Task
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.
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.
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.
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.
Project: Basic MSI projects include support for feature prerequisites. The following project types include support for setup prerequisites but not feature prerequisites:
430
ISP-1600-UG00
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.
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.
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
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.
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
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.
ISP-1600-UG00
433
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Project: Basic MSI projects include support for feature prerequisites. The following project types include support for setup prerequisites but not feature prerequisites:
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
ISP-1600-UG00
435
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
Task
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.
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
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.
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.
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.
438
ISP-1600-UG00
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.
ISP-1600-UG00
439
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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 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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
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.
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
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.
442
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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.
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.
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
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.
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.
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.
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
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.
Including the Microsoft .NET Framework and Microsoft .NET Framework Language Pack Prerequisites
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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:
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.
Note: The BDE module is available only if a Borland tool was present on the system when you installed InstallShield.
Task
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
Chapter 11: Organizing Files for Your Installation Including Redistributables in Your Installation
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
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.
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.
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.
ISINSTALL_MDAC_BYVERSION ISINSTALL_MDAC_SKIP
452
ISP-1600-UG00
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
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
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.
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.
Task
Chapter 11: Organizing Files for Your Installation Identifying Application Dependencies
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:
456
ISP-1600-UG00
Chapter 11: Organizing Files for Your Installation Registering COM Servers
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>
Basic MSI
ISP-1600-UG00 457
Chapter 11: Organizing Files for Your Installation Registering COM Servers
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.
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.
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
Chapter 11: Organizing Files for Your Installation Registering COM Servers
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.
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.
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
Chapter 11: Organizing Files for Your Installation Registering COM Servers
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>
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
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.
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:
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.
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
Chapter 11: Organizing Files for Your Installation Registering COM Servers
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.
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.
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.
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.
Basic MSI
466
ISP-1600-UG00
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.
Task
In the View List under Organization, click DIM References. Right-click the DIM References explorer, and click New DIM Reference.
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.
You can associate a DIM reference with one or more features in a Basic MSI project.
Task
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.
Task
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
Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project
Task
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.
Task
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.
ISP-1600-UG00
469
Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project
Task
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.
Task
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.
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:
470
ISP-1600-UG00
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
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.
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
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.
ISP-1600-UG00
471
Chapter 11: Organizing Files for Your Installation Referencing DIM Files in a Project
472
ISP-1600-UG00
12
Configuring the Target System
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, 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.
Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database
ISP-1600-UG00 473
Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders
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
Note: This option is disabled when there is no file specified for a component.
Creates an advertised shortcut. The components files are not installed to the target system until the end user launches the 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
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.
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:
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.
Task
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:
Task
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.
Task
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
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
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
Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders
Task
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
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
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.
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
Chapter 12: Configuring the Target System Creating Shortcuts and Program Folders
Task
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.
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;
ISP-1600-UG00
481
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.
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
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.
482
ISP-1600-UG00
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.
Note: You can modify, rename, or delete registry keys and values while filtering the view by All Application Data.
ISP-1600-UG00
483
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.
Task
Press F12.
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
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.
key, or select All Application Data to view all of the registry keys for your product.
ISP-1600-UG00
485
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.
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
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.
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.
ISP-1600-UG00
487
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
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.
Task
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.
ISP-1600-UG00
489
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.
Task
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.
490
ISP-1600-UG00
Task
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.
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
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
ISP-1600-UG00
491
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.
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
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.
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
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.
Task
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.
Task
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.
ISP-1600-UG00
493
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.
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.
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;
if (listID != LIST_NULL) then StrGetTokens( listID, svValue, "" ); SdShowInfoList( szTitle, szMsg, listID ); endif;
To learn more about the built-in registry functions available with InstallScript, see the following:
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.
You can set a Windows Installer property equal to the value you read using the MsiSetProperty function.
496
ISP-1600-UG00
Chapter 12: Configuring the Target System Changing .ini File Data
Task
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.
Task
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.
Task
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.
ISP-1600-UG00
497
Chapter 12: Configuring the Target System Changing .ini File Data
Task
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.
Task
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.
498
ISP-1600-UG00
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;
ISP-1600-UG00
499
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.
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
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.
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.
ISP-1600-UG00
501
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.
Task
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
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.
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
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
ISP-1600-UG00
503
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.
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
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.
/********************************************************************\ * 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
* 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;
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:
506
ISP-1600-UG00
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.
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.
ISP-1600-UG00
507
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.
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
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
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.
ISP-1600-UG00
509
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.
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
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.
510
ISP-1600-UG00
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
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.
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
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.
ISP-1600-UG00
511
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
You can add a new element to the root element or any element in your XML file.
Task
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
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
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.
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.
ISP-1600-UG00
513
Task
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.
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.
514
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.
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:
The following sections show examples of how to create some basic XPath expressions.
ISP-1600-UG00
515
<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-2: Settings for the Biographies Node, which Contains the Child Nodes to Be Added
516
ISP-1600-UG00
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
ISP-1600-UG00
517
Figure 12-6: Advanced Settings for One of the Child Nodes to Be Added
The following screen shot shows the settings in the XML File Changes view.
<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.
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
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.
520
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.
ISP-1600-UG00
521
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.
Using Reserved Characters (<, >, &, ', and ") Inside Elements
Project: This information applies to the following project types:
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 (<). 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 < 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. > > Greater than This character is automatically replaced by its entity at run time.
522
ISP-1600-UG00
Table 12-10: Reserved Characters and Their Predefined Entities (cont.) Character & Entity & 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. ' 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.
"
"
Quotation mark
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.
You can declare namespace mappings for an XML file in the XML File Changes view.
ISP-1600-UG00
523
Task
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.
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
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
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
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.
Task
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.
ISP-1600-UG00
525
5.
Delete the prefix and a colon (:) before the attribute name.
Task
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.
Task
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
4.
Click the row that contains the namespace mapping that you want to remove, and then click the Delete button.
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
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
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.
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
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 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:
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.
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.
ISP-1600-UG00
529
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
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.
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
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.
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
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.
ISP-1600-UG00
531
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.
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.
532
ISP-1600-UG00
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:
In addition, you can use a property for the following replacement item settings in the Text File Changes view:
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
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 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.
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.
c.
d. 4.
Use the property in a dialog. This part of the procedure depends on which project type you are using.
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.
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.
534
ISP-1600-UG00
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:
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.
Removing a Replacement Item or a Replacement Set from the Text File Changes View
Project: This information applies to the following project types:
ISP-1600-UG00
535
Chapter 12: Configuring the Target System Per-User vs. Per-Machine Installations
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.
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
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.
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.
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:
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.
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
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.
ISP-1600-UG00
539
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
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.
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
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.
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
IntelliScript
IntelliScript technology assists you as you work in the script editor pane by automatically completing function names and providing function parameter information.
Task
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.
ISP-1600-UG00
541
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.
Task
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
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
Task
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
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
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
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
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.
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.
ISP-1600-UG00
545
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.
Task
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.
Task
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.
546
ISP-1600-UG00
Task
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.
Task
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.
Task
Right-click in the script editor pane and click Properties. The Window Properties dialog box opens. Click the Misc tab.
ISP-1600-UG00
547
3.
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.
Task
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.
Task
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
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.
Task
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.
Task
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.
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.
Task
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.
Task
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
7.
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.
Task
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.
ISP-1600-UG00
551
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.
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.
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
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
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.
Task
With the insertion point in the script editor pane, press CTRL+M. On the View menu, click Maximize.
ISP-1600-UG00
553
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"
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
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
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 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.
Task
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.
Task
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.
ISP-1600-UG00
555
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.
Task
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
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
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.
Task
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.
The InstallScript Debugger enables you to trace program execution and inspect variables as your installation executes.
ISP-1600-UG00
557
Task
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.
Task
Open the InstallScript view. In the InstallScript explorer, right-click the file and click Remove.
558
ISP-1600-UG00
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.
Task
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.
ISP-1600-UG00
559
Task
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.
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
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.
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;
ISP-1600-UG00
561
// 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.
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
ISP-1600-UG00
563
564
ISP-1600-UG00
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.
// 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);
// 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
Note: The ListFindString and ListFindItem functions look for only the first instance of the specified string or number at or after the current element.
the list. "String 1", AFTER); "String 2", AFTER); "String 3", AFTER);
567
// 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;
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
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
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.
All open files are saved automatically when you click Save on the File menu.
System Restore
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
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;
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
// 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;
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
Note that 0x00000003 is not a valid bit flag, since this value corresponds to two bits in the number being set to 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.
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
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.
ISP-1600-UG00
575
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.
Absolute Path
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
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.
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.
ISP-1600-UG00
577
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.
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
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
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.
ISP-1600-UG00
579
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.)
580
ISP-1600-UG00
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);
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.
ISP-1600-UG00
581
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.
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.
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
endif; end;
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.
ISP-1600-UG00
583
Task
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.
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
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.
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.
ISP-1600-UG00
585
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.
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
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
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
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.
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
2.
Get a reference to your COM object and assign it to the variable by using the set keyword. For example:
ISP-1600-UG00
587
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
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:
ISP-1600-UG00
589
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;
Task
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
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.)
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.
ISP-1600-UG00
591
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.
592
ISP-1600-UG00
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.
GetDiskInfo GetFileInfo GetAndAddFileCost CalculateAndAddFileCost GetAndAddAllFilesCost FeatureFileInfo FeatureGetCostEx FeatureAddCost FeatureSpendCost ConvertWinHighLowSizeToISHighLowSize ConvertSizeToUnits
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.
ISP-1600-UG00
593
Task
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
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.
594
ISP-1600-UG00
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
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)
ISP-1600-UG00
595
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.)
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
596
ISP-1600-UG00
Table 13-7: Supported Languages (cont.) English Windows 95, NT 4.0, and Later Equivalent 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
ISP-1600-UG00
597
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
598
Avoid using a 256-color gradient background, which requires about 80 palette entries.
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).
ISP-1600-UG00
599
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.
Task
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:
The view is called the Custom Actions view in the following project types: Merge Module MSM Database
600
ISP-1600-UG00
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
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.
Task
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.
ISP-1600-UG00
601
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
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.
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-
ISP-1600-UG00
603
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
Task
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.
ISP-1600-UG00
605
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.
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
Task
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.
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
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.
ISP-1600-UG00
607
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.
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
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
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
5.
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.
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.
Note that the clone operation clones only the custom action. It does not insert the custom action into any of the installation sequences.
Task
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.
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.
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.
610
ISP-1600-UG00
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.
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.
ISP-1600-UG00
611
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.
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.
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
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.
ISP-1600-UG00
613
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.
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.
614
ISP-1600-UG00
Task
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.
Task
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.
ISP-1600-UG00
615
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";
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.
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.
616
ISP-1600-UG00
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.
ISP-1600-UG00
617
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"
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.
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
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.
ISP-1600-UG00
619
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
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.
Task
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.
ISP-1600-UG00
621
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.
Task
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
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.
Note that other fields in the Signature table enable you to specify optional version, size, date, and language information.
ISP-1600-UG00
623
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.
624
ISP-1600-UG00
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);
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.
ISP-1600-UG00
625
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:
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.
626
ISP-1600-UG00
Task
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.
ISP-1600-UG00
627
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...
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.
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
628
ISP-1600-UG00
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.
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.
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.
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
Task
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.
b. 3.
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.
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
ISP-1600-UG00
631
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
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.
b. 3.
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
Task
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:
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:
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.
ISP-1600-UG00
633
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:
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
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
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
ISP-1600-UG00
635
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
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
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
ISP-1600-UG00
637
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
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
UnregisterTypeLibraries
Standard action
RemoveODBC
Standard action
UnregisterFonts
Standard action
ISP-1600-UG00
639
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
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
ISP-1600-UG00
641
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
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
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
InstallFinalize RemoveExistingProducts
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.
ISP-1600-UG00
643
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
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
ISP-1600-UG00
645
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
646
ISP-1600-UG00
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.
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
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 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
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.
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
648
ISP-1600-UG00
Task
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
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
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.
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.
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
Installed
Deferred Execution
Local
Not applicable
After CostFinalize
ISP-1600-UG00
651
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.
652
ISP-1600-UG00
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
Installed
Deferred Execution
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
ISP-1600-UG00
653
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.
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
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.
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.
ISP-1600-UG00
655
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.
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.
656
ISP-1600-UG00
Task
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.
Tip: You can also drag files from Windows Explorer and drop them into the Files pane.
You can add a text file containing a license agreement in the Support Files/Billboards view.
Task
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.
ISP-1600-UG00
657
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.
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
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.
658
ISP-1600-UG00
Task
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.
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
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.
ISP-1600-UG00
659
Task
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.
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
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.
Tip: To specify the disk, run the Release Wizard; in the General Options panel, click the Other Disk Files button.
660
ISP-1600-UG00
Task
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.
Task
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.
ISP-1600-UG00
661
662
ISP-1600-UG00
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.
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.
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
Importing Dialogs from an .isd File Exporting All Dialogs to an .rc File Importing Dialogs from Resource .dll Files Exporting Dialogs to Other Projects
Basic MSI
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
For InstallScript MSI projects, the specified user account, group, and password are stored in the following global variables and properties:
664
ISP-1600-UG00
Task
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.
ISP-1600-UG00
665
Task
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.
Task
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.
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
Task
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.
Task
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.
ISP-1600-UG00
667
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.
Behavior
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
Task
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
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.
Task
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.
Task
In the View List under User Interface, click Dialogs. In the Dialogs explorer, right-click the dialog and click Delete.
ISP-1600-UG00 669
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.
Task
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.
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.
670
ISP-1600-UG00
Undoing Changes
Task
Press CTRL+Z. On the Edit menu, click Undo. Click the Undo button on the toolbar.
Task
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.
ISP-1600-UG00
671
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
Use the script to direct the flow of the dialogsfor example, by using if and goto statements.
ISP-1600-UG00 InstallShield 2010 User Guide
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.
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.
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.
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
Task
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.
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
Task
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.
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.
You can use the Controls toolbar in InstallShield to add controls to the dialog.
Task
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.
ISP-1600-UG00
675
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
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
Task
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.
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
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
ISP-1600-UG00
677
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
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
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.
ISP-1600-UG00
679
In InstallScript and InstallScript MSI installation projects, you use InstallScript to process the controls that you add to your custom dialogs.
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;
680
ISP-1600-UG00
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.
ISP-1600-UG00
681
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.
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:
Adding a Field That Contains a Product Name, Product Version, or Installed Version in Sd Dialog Static Text Fields
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 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.
ISP-1600-UG00
683
6.
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>" );
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.
684
ISP-1600-UG00
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.
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
In the View List under User Interface, click Dialogs. Right-click the edited dialog and click Revert.
ISP-1600-UG00
685
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
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
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
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
Dialog Skins
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.
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.
ISP-1600-UG00
687
Task
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.
Task
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.
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
Insert the dialog into a User Interface sequence. Launch the dialog through another dialogs behavior.
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
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.
Task
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
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).
690
ISP-1600-UG00
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
ISP-1600-UG00
691
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.
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
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
ISP-1600-UG00
693
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
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
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
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.
Task
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.
ISP-1600-UG00
695
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.
Task
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.
Task
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
5.
Tip: For projects created in Microsoft Visual Studio, you can use the Toolbox to add controls.
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
ISP-1600-UG00
697
Task
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.
Task
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
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
Task
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.
ISP-1600-UG00
699
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.
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.
Task
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.
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
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.
ISP-1600-UG00
701
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
For more information, see Editing Dialog Layout in Basic MSI Projects.
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.
ISP-1600-UG00
703
Naming Features
Specify a different name to appear in the CustomSetup dialog by setting its Display Name.
Dialog Themes
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.
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.
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
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.
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.
ISP-1600-UG00
705
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
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.
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
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>
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.
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
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.
ISP-1600-UG00
707
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
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
584 374
274 266
708
ISP-1600-UG00
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
Figure 14-4: Sample Exterior Dialog with the Circle Theme (Wide)
ISP-1600-UG00
709
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.
710
ISP-1600-UG00
Following are sample exterior and interior dialogs with the Cooperation Theme (Wide).
Figure 14-8: Sample Exterior Dialog with the Cooperation Theme (Wide)
ISP-1600-UG00
711
Figure 14-9: Sample Interior Dialog with the Cooperation Theme (Wide)
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
Figure 14-11: Sample Interior Dialog with the Filmstrip Theme (Wide)
Global Theme
Following are sample exterior and interior dialogs with the Global Theme.
ISP-1600-UG00
713
Figure 14-14: Sample Exterior Dialog with the InstallShield Blue Theme
714
ISP-1600-UG00
Figure 14-15: Sample Interior Dialog with the InstallShield Blue Theme
Figure 14-16: Sample Exterior Dialog with the InstallShield Blue Theme (Wide)
ISP-1600-UG00
715
Figure 14-17: Sample Interior Dialog with the InstallShield Blue Theme (Wide)
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
Figure 14-19: Sample Interior Dialog with the InstallShield Silver Theme
Monitor Theme
Following are sample exterior and interior dialogs with the Monitor Theme.
ISP-1600-UG00
717
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.
Following are sample exterior and interior dialogs with the Pastel Wheat Theme.
718
ISP-1600-UG00
Figure 14-22: Sample Exterior Dialog with the Pastel Wheat Theme
Figure 14-23: Sample Interior Dialog with the Pastel Wheat Theme
Following are sample exterior and interior dialogs with the Theater Theme (Wide).
ISP-1600-UG00
719
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
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:
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.
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
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.
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
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
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.
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:
ISP-1600-UG00
723
*.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
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
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.
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:
Event: DoAction
ISP-1600-UG00
725
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.
Task
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.
Task
To add a Print button to an existing project that was created with InstallShield DevStudio 9.0 or earlier: 1.
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.
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
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.
ISP-1600-UG00
729
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.
Cancel
Control Identifier
Default
730
ISP-1600-UG00
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
ISP-1600-UG00
731
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
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
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
ISP-1600-UG00
733
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.
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
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
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
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
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
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).
ISP-1600-UG00
735
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
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
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
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.
This font style is used for the combo-box label if you specify nothing for the Text Style property.
737
ISP-1600-UG00
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
Default
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
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
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
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
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
ISP-1600-UG00
739
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
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
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
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.
ISP-1600-UG00
741
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
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
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.
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
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.
Basic MSI
Visible
Basic MSI, InstallScript, InstallScript MSI, InstallScript Object Basic MSI, InstallScript, InstallScript MSI, InstallScript Object
Width
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.
Cancel
ISP-1600-UG00
743
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
Right-to-Left
744
ISP-1600-UG00
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
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.
ISP-1600-UG00
745
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.
Cancel
Control Identifier
Default
Enabled
Height
Indirect Property
746
ISP-1600-UG00
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
Tooltip
Top Visible
Width
ISP-1600-UG00
747
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.
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
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
748
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
749
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
750
ISP-1600-UG00
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.
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
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
Default
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.
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.
ISP-1600-UG00
751
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
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
Default
Enabled
Basic MSI
File Name
Height
Height of the control in installer units, which are defined as 1/12 of the height of the system font.
ISP-1600-UG00
753
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.
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
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
754
ISP-1600-UG00
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
Default
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.
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.
ISP-1600-UG00
755
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
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
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.
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
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
Default
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
Distance from the left edge of the dialog to the start of the list box in installer units.
ISP-1600-UG00
757
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.
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
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
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
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
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.
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
ISP-1600-UG00
759
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
Default
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.
760
ISP-1600-UG00
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
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
ISP-1600-UG00
761
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
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.
Cancel
Default
Enabled
Height
762
ISP-1600-UG00
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.
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
Tooltip
Top Visible
Width
ISP-1600-UG00
763
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.
Cancel
Default
Enabled
Height
Indirect Property
764
ISP-1600-UG00
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
ISP-1600-UG00
765
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.
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
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
Default
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.
Click the ellipsis button (...) to display the Other Window Styles dialog box.
766
ISP-1600-UG00
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
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
ISP-1600-UG00
767
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
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
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
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.
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
ISP-1600-UG00
769
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
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
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.
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
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
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
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
ISP-1600-UG00
771
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
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
Text
772
ISP-1600-UG00
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
This font style is used for the radio buttons label if you specify nothing for the Text Style property.
ISP-1600-UG00
773
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
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.
Basic MSI
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
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.
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
ISP-1600-UG00
775
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
Right-to-Left
Sunken
Tab Index
Tab Stop
Tooltip
776
ISP-1600-UG00
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
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
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).
ISP-1600-UG00
777
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.
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
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
ISP-1600-UG00
779
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
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.
Click the ellipsis button (...) to display the Other Window Styles dialog box.
780
ISP-1600-UG00
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.
ISP-1600-UG00
781
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
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.
Cancel
782
ISP-1600-UG00
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
Right-to-Left
ISP-1600-UG00
783
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
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:
784
ISP-1600-UG00
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.
Cancel
Default
Enabled
Height Left
Left Scrollbar
Right-Aligned
ISP-1600-UG00
785
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
Tooltip
Top Visible
Width
786
ISP-1600-UG00
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
Task
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.
Task
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.
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
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.
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
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.
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.
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.
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
Task
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.
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.
ISP-1600-UG00
791
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
Task
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.
The String Editor view contains a spreadsheetlike table that lets you modify string entries in your project.
792
ISP-1600-UG00
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
Task
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.
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.
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.
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.
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.
Task
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
Chapter 14: Defining the End-User Interface Localizing the End-User Interface
InstallShield finds the first instance of the string that you specified.
Task
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.
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
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.
Basic MSI
ISP-1600-UG00 795
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:
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
796
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
797
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:
798
ISP-1600-UG00
In the sample screen shot, the billboard is the blue-green rectangle image. Its size is 544 pixels wide by 281 pixels high.
ISP-1600-UG00
799
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.
Task
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.
800
ISP-1600-UG00
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
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.
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.
ISP-1600-UG00
801
Task
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.
When you add an Adobe Flash application file billboard or an image billboard to your project, you need to configure its settings.
Task
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.
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
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.
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.
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.
ISP-1600-UG00
803
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
Task
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.
804
ISP-1600-UG00
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.
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
ISP-1600-UG00
805
Task
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.
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.
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
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
Task
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.
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.
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.
ISP-1600-UG00
807
Chapter 14: Defining the End-User Interface Displaying a Background Window in InstallScript and InstallScript MSI Installations
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 ) );
808
ISP-1600-UG00
Chapter 14: Defining the End-User Interface Populating List Boxes at Run Time
ISP-1600-UG00
809
Chapter 14: Defining the End-User Interface Displaying Network Browse Dialogs in InstallScript Installations
810
ISP-1600-UG00
15
Preparing Installations for Update Notifications
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.
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
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
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.
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
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
In the View List under Installation Information, click Update Notifications. For the Enable FLEXnet Connect setting, select No.
Task
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.
Task
In the View List under Behavior and Logic, click Property Manager. Right-click the ISENABLEDWUSFINISHDIALOG property and select Delete Property.
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.
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.
For information on adding FLEXnet Connect support to an InstallScript project, consult the Knowledge Base.
Task
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
Chapter 15: Preparing Installations for Update Notifications Adding a Check-for-Updates Check Box to the SetupComplete Dialog
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
In the View List under Behavior and Logic, click Property Manager. Set the ISENABLEDWUSFINISHDIALOG property to 1.
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
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.
ISP-1600-UG00
815
Chapter 15: Preparing Installations for Update Notifications Registering Your Application with FLEXnet Connect
816
ISP-1600-UG00
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.
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.
ISP-1600-UG00
817
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:
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
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:
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.
Task
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 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.
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.
820
ISP-1600-UG00
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.
Task
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.
Task
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.
ISP-1600-UG00
821
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.
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
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
Task
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.
ISP-1600-UG00
823
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
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.
Task
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.
824
ISP-1600-UG00
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.
ISP-1600-UG00
825
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.
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
826
ISP-1600-UG00
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
9.
10. In the Project Wide column, click No. 11. Click OK.
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
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.
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:
ISP-1600-UG00
829
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.
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
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.
830
ISP-1600-UG00
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.
ISP-1600-UG00
831
Task
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.
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 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.
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
ISP-1600-UG00
833
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
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;
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
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
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.
ISP-1600-UG00
835
Connecting to an instance of Oracle requires the following elements on the end-user machine that is running the installation:
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
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
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
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
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
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.
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.
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
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
ISP-1600-UG00
839
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:
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.
In the SQL Scripts explorer, right-click NewConnection1 and click New Script.
ISP-1600-UG00 InstallShield 2010 User Guide
840
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.
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.
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.
ISP-1600-UG00
841
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:
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
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.
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.
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
ISP-1600-UG00
843
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.
Ensure that the Oracle check box is selected and the Microsoft SQL Server and MySQL check boxes are cleared.
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.
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
The look and feel of the Component Services view is similar to that of the Component Services administrative tool in the Control Panel.
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.
Task
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.
ISP-1600-UG00
845
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
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"
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
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.
848
ISP-1600-UG00
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.
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.
ISP-1600-UG00
849
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.
850
ISP-1600-UG00
Task
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
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
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.
ISP-1600-UG00
851
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
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
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
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.
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.
ISP-1600-UG00
853
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>
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
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
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.
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.
ISP-1600-UG00
855
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)
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
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.
2.
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
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.
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.
2.
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.
Task
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
Task
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.
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.
ISP-1600-UG00
859
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.
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
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
In the View List under Server Configuration, click Internet Information Services. In the Application Pools explorer, right-click the application pool and click Delete.
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
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.
ISP-1600-UG00
861
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.
862
ISP-1600-UG00
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.
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
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
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
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
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
ISP-1600-UG00
865
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 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.
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
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
Task
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.
ISP-1600-UG00
867
Task
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:
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
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 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
ISP-1600-UG00
869
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
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.
In the Message Type list, select URL. In the URL box, type the URL that points to your custom error message.
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.
ISP-1600-UG00
871
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
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.
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.
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.
872
ISP-1600-UG00
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
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.
ISP-1600-UG00
873
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
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.
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
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.
ISP-1600-UG00
875
876
ISP-1600-UG00
17
Adding Mobile Device Support to Installations
InstallShield supports the latest mobile devices, enabling you to add any number of mobile device installations to a desktop installation.
ISP-1600-UG00
877
Chapter 17: Adding Mobile Device Support to Installations Adding an Installation for a Windows MobilePowered Device to Your Project
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
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.
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
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.
Task
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.
ISP-1600-UG00
879
Chapter 17: Adding Mobile Device Support to Installations Targeting a Specific User or Slot ID for a Palm OS Installation
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.
Basic MSI
880
ISP-1600-UG00
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.
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.
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:
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").
882
ISP-1600-UG00
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
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.
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
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.
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.
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
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.
884
ISP-1600-UG00
Chapter 17: Adding Mobile Device Support to Installations Removing an Installation for a Mobile Device from Your Project
Task
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.
When you rename an installation for a mobile device in the Mobile Devices view, the component for that installation is also renamed.
Task
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.
Your mobile device installation is built when you build the desktop installation that your mobile device installation is part of.
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
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.
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.
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:
<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
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.
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
ISP-1600-UG00
889
Chapter 18: Preparing Installations for Maintenance and Uninstallation InstallScript Functions that Are Logged for Uninstallation
Logged Functions
InstallShield records installation events created by the following functions for uninstallation in the uninstallation log file: Functions that Transfer Files
Functions that Work with Folders AskDestPath AskPath CreateDir SdAskDestPath SelectDir
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
Chapter 18: Preparing Installations for Maintenance and Uninstallation Maintenance/Uninstallation Feature
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 );
Chapter 18: Preparing Installations for Maintenance and Uninstallation Removing Registry Data Created by Your Product
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.
892
ISP-1600-UG00
19
Configuring Multiple Packages for Installation Using Transaction Processing
Project: The following project types support multiple-package installations that use transaction processing:
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.
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.
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
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
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.
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.
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.
896
ISP-1600-UG00
Chapter 19: Configuring Multiple Packages for Installation Using Transaction Processing Removing a Chained .msi Package from Your Project
Task
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.
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
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.
ISP-1600-UG00
899
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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
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.
900
ISP-1600-UG00
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.
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.
Creating and Building a Release in Basic MSI, InstallScript MSI, and Merge Module Projects
Task
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
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.
Task
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.
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.
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
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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.
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.
ISP-1600-UG00
903
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
-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
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.
-c -r -e
904
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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"
-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
Note: The entries CompileOnly, BuildTablesRefreshFiles, and BuildTablesOnly are mutually exclusive. Only one can be set to yes.
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.
906
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
For more information about the .ini file entries, see Building a Release from the Command Line.
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
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
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.
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.
Task
To build your Windows Installer tables and refresh the installations files, do one of the following:
908
ISP-1600-UG00
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.
Task
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.
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.
ISP-1600-UG00
909
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Canceling Builds
Task
Standalone Build
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.
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.
910
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
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.
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.
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
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
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.
2.
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.
ISP-1600-UG00
913
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
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
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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.
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.
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.
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.
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
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.
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
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
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.
Task
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
ISP-1600-UG00
919
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
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
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
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>
7.
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.
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
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
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
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
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.
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.
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
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
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.
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
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.
ISP-1600-UG00
925
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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.
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
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
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.
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
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
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.
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
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.
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
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.
ISP-1600-UG00
931
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
932
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Digitally Signing a Release After It Has Been Built From the Command Line
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.
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:
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.
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
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)
All Versions All Versions Full Version Full Version Trial Version
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.
Project: The following project types include support for product configuration flags and release flags:
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)
All Versions All Versions Full Version Full Version Trial Version
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
<None>
Full
Trial
<None>
Full
Trial
936
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Project: The following project types include support for product configuration flags and release flags:
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.
Task
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.
ISP-1600-UG00
937
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
Task
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.
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
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
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
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
3.
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.
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
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:
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.
940
ISP-1600-UG00
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
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.
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.
-2147166895
-2147012889
Note: For the first six errors listed, the end user can check the Java console for detailed error information.
Open Method
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
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);
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
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.
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.
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.
946
ISP-1600-UG00
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>";
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>";
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:
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.
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.
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
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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
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.
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.
Task
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.
950
ISP-1600-UG00
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.
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.
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
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.
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");
To run your One-Click Install installation in debug mode, enter the following code before invoking ether.Play:
ether.SetProperty( "is::CmdLine", "/d")
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
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
[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]
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.
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
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.
ISP-1600-UG00
955
Chapter 20: Building, Testing, and Deploying Installations Creating and Building Releases
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
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
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
Task
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.
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
In the Releases view, right-click a release and click Test Setup. Click the Test button on the toolbar.
ISP-1600-UG00
957
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
Task
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.
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.
Task
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
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
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"
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.
ISP-1600-UG00
959
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
Task
Create the installation. Create the response file. Run the silent installation. Check for errors.
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.
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.
960
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
961
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
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.
962
ISP-1600-UG00
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
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 );
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.
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
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
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
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
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:
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-<#>
SdAskOptions-<#>
The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)
SdAskOptionsList-<#> SdAskOptionsList-<#>
SdAskOptionsList-<#>
SdAskOptionsList-<#>
The selected items number in the list (numbering begins with 0) Standard values Standard values The path entered in the Destination Directory field
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-<#>
SdComponentDialog-<#>
The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)
SdComponentDialog2-<#> SdComponentDialog2-<#>
SdComponentDialog2-<#>
SdComponentDialog2-<#>
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-<#>
SdComponentDialogAdv-<#>
The selected items number in the list (numbering begins with 0) Standard values String (the only value currently allowed)
SdComponentMult-<#> SdComponentMult-<#>
SdComponentMult-<#>
968
ISP-1600-UG00
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
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
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
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
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
ISP-1600-UG00
971
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
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;
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
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.
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.
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.
974
ISP-1600-UG00
Chapter 20: Building, Testing, and Deploying Installations Testing and Running Installations
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:
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
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.
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
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.
Task
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.
ISP-1600-UG00
977
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.
Task
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
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.
ISP-1600-UG00
979
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
980
ISP-1600-UG00
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
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
ISICE19
Validates properties related to upgrades, that the Upgrade table is present, and that the installation prevents downgrades.
ISICE20
ISP-1600-UG00
981
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
Message (Error)
The application should be installed to either ProgramFiles or AppData folder by default. The current default location is [1].
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
982
ISP-1600-UG00
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
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.
ISP-1600-UG00
983
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
Message (Error)
The standard MSI table [1] does not match the MSI schema defined in schema.msi.
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
Messages
Message 1 (Error)
MSI property [1] begins with reserved characters. MSI property names cannot start with "MSI" (case-insensitive).
984
ISP-1600-UG00
Message 2 (Error)
Table [1] begins with reserved characters. Custom table names cannot start with "MSI" (caseinsensitive).
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
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.
ISP-1600-UG00
985
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
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
[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
Message (Error)
Custom Action [1] uses impersonation. Impersonation should not be used when running setups on Windows Vista.
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.
ISP-1600-UG00
987
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
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
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
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
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.
ISP-1600-UG00
989
[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
ISICE12
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
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.
ISP-1600-UG00
991
Corrective Action
To resolve this validation error, replace the 16-bit file with a 64-bit or 32-bit file.
ISICE17
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
992
ISP-1600-UG00
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
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
[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 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
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
ISP-1600-UG00
995
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.
Basic MSI
996
ISP-1600-UG00
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
ISBP03
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
ISBP09
ISBP10
ISBP11
ISP-1600-UG00
997
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
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
ISBP19
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
Message (Error)
Feature ALL conflicts with the installation meta-feature ALL.
998
ISP-1600-UG00
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
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
ISP-1600-UG00
999
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
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
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
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.
ISP-1600-UG00
1001
ISBP06
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.
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
Messages
Message 1 (Warning)
Feature [1] has no components.
1002 ISP-1600-UG00 InstallShield 2010 User Guide
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
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:
ISP-1600-UG00
1003
Note: As a best practice, any actions after CostFinalize should be sequenced after MigrateFeatureStates when feature migration is selected on a major upgrade item.
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
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
Basic MSI
1004
ISP-1600-UG00
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
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.
Description
ISBP11 verifies that your project does not include a precompiled native image of a .NET assembly.
ISP-1600-UG00
1005
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
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.
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
ISBP13
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
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. [2] is the version number that is configured for the file, but [3] is the actual version number.
ISP-1600-UG00
1007
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
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
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
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.
ISP-1600-UG00
1009
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
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
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
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
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.
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).
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
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.
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.
Task
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.
ISP-1600-UG00
1013
Chapter 20: Building, Testing, and Deploying Installations Debugging Windows InstallerBased Installations
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.
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
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.
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.
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.
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
Chapter 20: Building, Testing, and Deploying Installations Spanning Installations over Multiple Disks or CDs
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.
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.
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
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.
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.
ISP-1600-UG00
1019
Chapter 20: Building, Testing, and Deploying Installations Creating a Setup Launcher
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.
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.
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.
ISP-1600-UG00
1021
Task
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:
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.
1022
ISP-1600-UG00
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.
ISP-1600-UG00
1023
Disk Spanning
Note: If you build a multiple-disk installation, you need to set the volume label on the second and subsequent disks.
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.
1024
ISP-1600-UG00
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
ISP-1600-UG00
1025
1026
ISP-1600-UG00
21
Creating 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 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).
ISP-1600-UG00
1027
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.
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:
1028
ISP-1600-UG00
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
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.
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.
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
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.
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
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.
ISP-1600-UG00
1031
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 ( ).
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
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).
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.
Type of Trial Limit = Days Trial Limit Quantity = 20 Allow Trial Extension = Yes Extension Limit Quantity = 10 Expiration Date = (Does not expire)
ISP-1600-UG00
1033
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.
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.
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
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.
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.
ISP-1600-UG00
1035
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.
Task
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.
1036
ISP-1600-UG00
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.
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
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.
If you previously set an expiration date for your trialware and you later decide that it should not have one, you can remove it.
ISP-1600-UG00
1037
Chapter 21: Creating Trialware Setting the Hyperlinks for the Trialware Run-Time Dialogs
Task
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).
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
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.
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
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).
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
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.
ISP-1600-UG00
1039
Figure 21-3: Sample Try and Die dialog (Trial has not expired.)
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
Figure 21-4: Sample Try and Die dialog (Trial has expired.)
Figure 21-5: Sample Try and Die dialog (Trial extension is allowed.)
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.
ISP-1600-UG00
1041
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.)
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
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.
ISP-1600-UG00
1043
Chapter 21: Creating Trialware Resetting the License During Development and Testing
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.
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
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.
If you no longer want to include a particular trialware file in your project, you can remove it.
Task
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.
ISP-1600-UG00
1045
1046
ISP-1600-UG00
22
Creating Transforms
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.
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.
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
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
Chapter 22: Creating Transforms Creating a Transform Based on a Single .msi Package
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
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.
ISP-1600-UG00
1049
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.
Task
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.
1050
ISP-1600-UG00
Task
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.
Task
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.
Task
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.
ISP-1600-UG00
1051
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.
Task
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.
Task
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
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.
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.
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.
ISP-1600-UG00
1053
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.
Task
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.
Task
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
5.
Click OK.
Task
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.
ISP-1600-UG00
1055
1056
ISP-1600-UG00
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:
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.
ISP-1600-UG00
1057
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
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
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.
ISP-1600-UG00
1059
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.
Task
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.
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
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
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
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.
Task
In the InstallShield Prerequisite Editor, open the prerequisite that you want to modify. Click the Conditions tab.
ISP-1600-UG00 1061
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.
Task
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
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.
Task
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.
ISP-1600-UG00
1063
Task
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.
Task
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
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
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
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
In the InstallShield Prerequisite Editor, click the Files to Include tab. Select the file that you would like to remove. Click Remove.
Task
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.
ISP-1600-UG00
1065
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.
Task
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
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.
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.
ISP-1600-UG00
1067
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:
/log /q
/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
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.
ISP-1600-UG00
1069
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.
1070
ISP-1600-UG00
Task
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.
Task
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.
ISP-1600-UG00
1071
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
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.
ISP-1600-UG00
1073
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
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.
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.
1074
ISP-1600-UG00
Task
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.
Task
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.
Task
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
4.
Click Remove.
Task
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.
InstallShield prerequisites that are stored in the SetupPrerequisites directory are listed in the Redistributables view.
1076
ISP-1600-UG00
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
Task
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.
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.
Tip: Select Language Independent to allow your module to run on all languages.
1078
ISP-1600-UG00
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.
Task
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.
Task
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.
ISP-1600-UG00
1079
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.
Task
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.
Task
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
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.
ISP-1600-UG00
1081
1082
ISP-1600-UG00
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
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.
ISP-1600-UG00
1083
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.
1084
ISP-1600-UG00
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.
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.
1086
ISP-1600-UG00
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.
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
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.
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.
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.
1088
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1089
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
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.
1090
ISP-1600-UG00
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:
for a read-only property, put for a write-only property, and get,put for a read/ write property. For example:
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 );
ISP-1600-UG00
1091
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
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.
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.
ISP-1600-UG00
1093
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
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;
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);
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;
1096
ISP-1600-UG00
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:
For example:
method STRING MyMethod( NUMBER, BOOL );
ISP-1600-UG00
1097
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;
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
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.
ISP-1600-UG00
1099
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
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;
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).
ISP-1600-UG00
1101
nResult = ShowObjWizardPages(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.
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.
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
1102
ISP-1600-UG00
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.
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
ISP-1600-UG00
1103
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.
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.
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
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.
ISP-1600-UG00
1105
Task
On the Tools menu, point to InstallScript and click Cabinet File Viewer.
Task
On the Tools menu, point to InstallScript and click Log File Viewer.
Task
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
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
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.
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.
SetStatus WizardDirection
1108
ISP-1600-UG00
Task
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.
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;
ISP-1600-UG00
1109
Change it to this:
function void put_ScriptDefinedVar( szScriptVar, newVal ) /* Add string argument. */ begin TextSub.Value( szScriptVar ) = newVal; /* Associate newVal with szScriptVar. */ end;
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;
1110
ISP-1600-UG00
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.
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
Major Upgrades
Project: This information applies to the following project types:
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.
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.
1112
ISP-1600-UG00
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:
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:
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.
ISP-1600-UG00
1113
Patching
Project: This information applies to the following project types:
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:
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
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.
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.
ISP-1600-UG00
1115
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.
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.
1116
ISP-1600-UG00
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.
ISP-1600-UG00
1117
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.
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.
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.
1118
ISP-1600-UG00
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
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
ISP-1600-UG00
1119
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.
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
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.
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 QuickPatch? No No
Note
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.
Yes
Yes
ISP-1600-UG00
1121
Table 27-4: Patch vs. QuickPatch Project (cont.) Requirement for the Patch Add, modify, or delete registry data
Note All new registry data being added with a QuickPatch must be associated with a feature that already exists in the original product.
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
No No No
Yes
Not automatically
For QuickPatch projects, you must manually sign the individual files and then add them to your project.
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.
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.
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,
ISP-1600-UG00
1123
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.
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
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.
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.
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
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:
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.
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.
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
Task
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.
Basic MSI
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:
Task
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.
Task
Open the Upgrades view. Right-click the automatic upgrade item that you would like to delete and then click Delete.
1128
ISP-1600-UG00
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
Task
Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click Upgrade Windows Installer Setup and click Add Major Upgrade Item.
ISP-1600-UG00
1129
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
Task
Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click the major upgrade item and click Delete.
1130
ISP-1600-UG00
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.
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.
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.
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.
Task
Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click Upgrade Windows Installer Setup and click Add Minor Upgrade Item.
Tip: If you are creating an upgrade that can update more than one previous version, you can add additional minor upgrade items.
Basic MSI
1132
ISP-1600-UG00
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.
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.
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.
Task
Open the Upgrades view. In the Prepare Setup For Upgrade Scenarios explorer, right-click the minor upgrade item and click Delete.
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Following are some guidelines for creating patches and QuickPatch projects.
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
ISP-1600-UG00
1135
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
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.
1136
ISP-1600-UG00
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Patch Sequencing
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
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.
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
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.
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
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
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
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.
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.
Task
Open the Patch Design view. Right-click Patch Design and click Add New Patch Configuration.
ISP-1600-UG00
1141
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Task
Open the Patch Design view. In the Patch Design explorer, right-click the appropriate patch configuration item and click Add New Latest Setup.
Task
Open the Patch Design view. In the Patch Design explorer, right-click an existing previous setup item and click Add New Previous Setup.
Task
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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:
After you have set the patch configuration properties, drill down the hierarchy in the explorer, and configure the latest and previous setup items.
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
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
4.
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
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
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
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
Clear the Use Default Patch Sequencing check box. Click Add. The Patch Sequence dialog box opens. Define the sequence information as needed.
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
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.
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.
ISP-1600-UG00
1145
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Task
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.
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
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
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.
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
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.
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.
ISP-1600-UG00
1147
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Task
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.
Task
Open the Patch Design view. In the Patch Design explorer, right-click the patch configuration that you want to delete and then click Delete.
Task
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Task
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
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
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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
Because a patch does not modify the existing cached .msi database, including the v setting for REINSTALLMODE is unnecessary.
1150
ISP-1600-UG00
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
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
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.
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
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.
Task
Open the General Information view. In the General Information explorer, click History.
1152
ISP-1600-UG00
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.
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.
Task
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.
ISP-1600-UG00
1153
Chapter 27: Updating Applications Working with Upgrades, Patches, and 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
In the General Information view, click Build Settings, and then click the Identification tab. Configure each of the settings.
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
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.
Task
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
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
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.
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
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.
ISP-1600-UG00
1155
Chapter 27: Updating Applications Working with Upgrades, Patches, and 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
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:
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
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
In the General Information view, click Build Settings, and then click the Advanced tab. For the Update Launcher Type setting, select the appropriate option.
Task
In your QuickPatch project, open the Files view. Right-click the file that you want to delete and then click Delete.
Task
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.
ISP-1600-UG00
1157
Chapter 27: Updating Applications Working with Upgrades, Patches, and 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.
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
1158
ISP-1600-UG00
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
Basic MSI
ISP-1600-UG00
1159
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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
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
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
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.
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.
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
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.
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
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
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.
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.
ISP-1600-UG00
1165
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Val0007
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
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
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.
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.
ISP-1600-UG00
1167
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
Val0009
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
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
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
Basic MSI
ISP-1600-UG00 1169
Chapter 27: Updating Applications Working with Upgrades, Patches, and QuickPatch Projects
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.
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.
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
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.
1170
ISP-1600-UG00
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
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.
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
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.
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
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
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.
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.
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.
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
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.
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.
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.
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.
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
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.
See Migrating from InstallShield Professional 6.x for more information on using a version 6.x-created script with an update-enabled installation.
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.
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.
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
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.
ISP-1600-UG00
1179
1180
ISP-1600-UG00
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
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.
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
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.
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.
ISP-1600-UG00
1183
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.
1184
ISP-1600-UG00
For information about the default language in a project, see Setting the Default Project Language.
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.
ISP-1600-UG00
1185
Task
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.
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
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.
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.
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.
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.
Task
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
Chapter 29: Creating Multilingual Installations Exporting and Importing String Entries
Task
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.
Task
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.
ISP-1600-UG00
1189
Chapter 29: Creating Multilingual Installations Modifying Dialogs for Each Language
Task
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.
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
Chapter 29: Creating Multilingual Installations How InstallShield Determines Which Language the Installation Runs In
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.
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.
ISP-1600-UG00
1191
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
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
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
ISP-1600-UG00
1193
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
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.
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.
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
Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield
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
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.
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
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.
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
Chapter 30: Installing Multiple Instances of Products Configuring Multiple Instances in InstallShield
Task
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.
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
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.
ISP-1600-UG00
1199
Chapter 30: Installing Multiple Instances of Products Special Considerations for Multiple-Instance Support
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.
1200
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1201
Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product
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
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.
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
ISP-1600-UG00
1203
Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product
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.
1204
ISP-1600-UG00
Chapter 30: Installing Multiple Instances of Products Run-Time Behavior for Installing Multiple Instances of a Product
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
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.
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.
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
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
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
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
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
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
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.
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.
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.
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;
1212
ISP-1600-UG00
Chapter 31: Detecting Conditions on the Target System Detecting If the End User Has Selected a Specific Feature
ISP-1600-UG00
1213
Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on a Virtual Machine
Project: You can use these Windows Installer properties in conditions for items such as features, components, and custom actions in the following project types:
Note: Property names are case-sensitive, so Version9X and Version9x are considered different properties.
Project: You can use the SYSINFO structure in event-driven InstallScript code in the following project types:
You can also use this structure in InstallScript custom actions in the following project types: Basic MSI InstallScript MSI Merge Module
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
Chapter 31: Detecting Conditions on the Target System Detecting Whether the Installation Is Being Run on 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:
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
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 In-Script Execution setting, select Immediate Execution. Schedule the custom action as needed by selecting the appropriate option in one or more sequence settings.
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
Project: You can use an InstallScript structure and variable in event-driven InstallScript code in the following project types:
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
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.
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
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.
Task
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
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.
Task
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.
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.
1220
ISP-1600-UG00
Task
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.
Open the System Search view. Right-click the grid entry for the system search that you want to remove and then click Delete.
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.
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
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 Look In area, select A full path, and type the following path:
[ProgramFilesFolder]MyCompany\MyProduct
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.
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
Chapter 32: Searching for Installed Data Searching for XML Data
ISP-1600-UG00
1223
Chapter 32: Searching for Installed Data Searching for XML Data
1224
ISP-1600-UG00
33
Editing Installation and Project Tables
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
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.
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.
1226
Chapter 33: Editing Installation and Project Tables Adding Records to a Table
InstallShield lets you add tables to your project file (.ism) or Windows Installer database (.msi, .msm, or .mst).
Task
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.
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
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.
ISP-1600-UG00
1227
Chapter 33: Editing Installation and Project Tables Finding and Replacing in the Direct Editor
5.
Click OK.
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.
Task
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.
InstallShield finds the first instance of the string that you specified.
Task
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
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.
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
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.
ISP-1600-UG00
1229
Chapter 33: Editing Installation and Project Tables Editing Fields in a Table
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
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
Chapter 33: Editing Installation and Project Tables Exporting Tables from the Direct Editor
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
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.
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
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.
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
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.
1232
ISP-1600-UG00
Chapter 33: Editing Installation and Project Tables In-Place Windows Installer Database and Project File Differencing
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
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.
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.
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
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
On the Tools menu, point to Difference, and then click End Compare. InstallShield removes all of the in-place differencing from the Direct Editor.
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.
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
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.
ISP-1600-UG00
1235
Chapter 33: Editing Installation and Project Tables Orphaned Directory Entries
1236
ISP-1600-UG00
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.
ISP-1600-UG00
1237
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.
Task
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
Task
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.
Task
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.
ISP-1600-UG00
1239
Task
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.
Task
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.
To learn about valid SQL query strings for Windows Installer, see SQL Syntax in the Windows Installer Help Library.
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.
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.
ISP-1600-UG00
1241
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
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.
Task
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
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.
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.
ISP-1600-UG00
1243
1244
ISP-1600-UG00
35
Working with Windows Installer Properties
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:
Note: Some of these categories overlap. For example, the ProductCode property is a required private property.
ISP-1600-UG00
1245
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.
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
Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference
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.
ISP-1600-UG00
1247
Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference
SOURCEDIR TARGETDIR
ADDLOCAL
ADDSOURCE
1248
ISP-1600-UG00
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
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
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
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
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
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
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
CommonAppDataFolder
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
ProgramFiles64Folder
ProgramMenuFolder
SendToFolder StartMenuFolder
StartupFolder
SystemFolder System64Folder
TempFolder TemplateFolder
1256
ISP-1600-UG00
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.
ComputerName
LogonUser
OLEAdvtSupport
ServicePackLevel
SharedWindows
ShellAdvtSupport
SystemLanguageID
TerminalServer
TTCSupport
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
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
Intel
Intel64
PhysicalMemory
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.
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.
1260
ISP-1600-UG00
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
ISP-1600-UG00
1261
Chapter 35: Working with Windows Installer Properties Windows Installer Property Reference
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:
To determine the location from which an InstallScript installation was run, use SRCDIR or PACKAGE_LOCATION.
1262
ISP-1600-UG00
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
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
Task
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
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
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.
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
In the View List under Behavior and Logic, click Property Manager. Select one or more properties that you want to localize.
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.
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.
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
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
Chapter 35: Working with Windows Installer Properties Specifying that a Public Property Should Be a Restricted Public Property
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
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 (;).
ISP-1600-UG00
1267
Chapter 35: Working with Windows Installer Properties Getting or Setting Windows Installer Properties in InstallScript
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.
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
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.
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
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
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.
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.
ISP-1600-UG00
1269
1270
ISP-1600-UG00
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.
Note: Some functionality is limited when editing an .msi package in direct edit mode.
Task
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.
ISP-1600-UG00
1271
Chapter 36: Directly Editing .msi and .msm Databases Editing .msi and .msm Databases in Direct Edit Mode
5.
Click Open.
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.
Task
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.
1272
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1273
Chapter 36: Directly Editing .msi and .msm Databases Adding Merge Modules in Direct Edit Mode
1274
ISP-1600-UG00
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.
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.
InstallShield 2010 User Guide ISP-1600-UG00 1275
Chapter 37: Integrating InstallShield with External Applications Using Source Code Control
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.
Task
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.
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
Chapter 37: Integrating InstallShield with External Applications Using Source Code Control
Task
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.
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.
ISP-1600-UG00
1277
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
On the Project menu, select Source Control, and point to Unlink from Source Control.
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.
1278
ISP-1600-UG00
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
Task
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.
QuickPatch
MSI Database
MSM Database
Transform
InstallScript MSI
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.
Task
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.
1280
ISP-1600-UG00
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.
Task
2.
Adding Controls
Task
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.
ISP-1600-UG00
1281
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
Task
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.
Task
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
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
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
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.
Task
ISP-1600-UG00
1283
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
Task
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.
Task
Right-click the tree node for your InstallShield project in the Solution Explorer and select Uninstall.
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
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
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.
ISP-1600-UG00
1285
Chapter 37: Integrating InstallShield with External Applications Integrating with Microsoft Visual Studio
1286
ISP-1600-UG00
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.
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
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
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
Chapter 38: Automating Build Processes Linking Subfolders to Features Using VBScript
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
ISP-1600-UG00
1289
Chapter 38: Automating Build Processes Exporting and Importing String Entries Using the Automation Interface
Languages=1033 Condition=VersionNT
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"
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
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
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.
' Create a ref to Microsoft Visual SourceSafe Set VSS = CreateObject("SourceSafe") ' Point to the VSS database
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)
' 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
ISP-1600-UG00
1295
Chapter 38: Automating Build Processes Using the Automation Interface on a 64-Bit System
1296
ISP-1600-UG00
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.
Automation Interface
Introduces tools that you can use from the command line to perform tasks such as building a release and running an installation.
ISP-1600-UG00
1297
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
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:
ISP-1600-UG00
1299
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.
1300
ISP-1600-UG00
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
ISP-1600-UG00
1301
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
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.
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.
ISP-1600-UG00
1303
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
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
1304
ISP-1600-UG00
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.
SHIFT+F7
ALT+F7
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
ISP-1600-UG00
1305
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:
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
Validate
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
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.
ISP-1600-UG00
1307
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:
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
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.
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.
1308
ISP-1600-UG00
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.
ISP-1600-UG00
1309
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
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
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
Compile Build
Project: The Test button is available for the following project types:
Run
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.
ISP-1600-UG00
1311
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.
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
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
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.
ISP-1600-UG00
1313
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
Space Down
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
You can use the Bring to Front and Send to Back actions to work on these different controls while you are designing your dialog.
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.
ISP-1600-UG00
1315
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
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
ISP-1600-UG00
1317
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
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
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
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.
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
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
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
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.
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.
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
Chapter 41: Dialog Box Reference Application Extension Mapping Dialog Box
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.
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.
ISP-1600-UG00
1325
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
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.
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
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.
Task
To select a directory: 1. 2.
Task
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.
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.
1328
ISP-1600-UG00
Chapter 41: Dialog Box Reference Browse for Directory/Shortcut Target Dialog Box
Selecting a Directory
Task
To select a directory: 1. 2.
Task
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.
ISP-1600-UG00
1329
Chapter 41: Dialog Box Reference Browse for File Dialog Box
Hard-Coding a Shortcut
Task
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.
1330
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1331
Advanced
Task
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.
1332
ISP-1600-UG00
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
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.
ISP-1600-UG00
1333
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.
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
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.
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.
ISP-1600-UG00
1335
Chapter 41: Dialog Box Reference Content Source Path Dialog Box
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.
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
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
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 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
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.
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.
ISP-1600-UG00
1339
Chapter 41: Dialog Box Reference Custom Error Handling Dialog Box
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:
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.
Task
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.
1340
ISP-1600-UG00
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.
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.
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.
Note: Any new dependencies detected at build timefor files added after closing the Dependencies dialog boxare added to the build.
ISP-1600-UG00
1341
Adding Folders
Task
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.
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
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:
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
ISP-1600-UG00
1343
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.
Processor/Platform Tab
Project: This information applies to the following project types:
1344
ISP-1600-UG00
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.
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
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.
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
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.
Task
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.
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.
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
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
Chapter 41: Dialog Box Reference Edit Binary Value Dialog Box
Platform
Note: This option is available for Windows Mobile devices only. Processor The type of processor on which the registry value can be created.
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.
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.
Platform
Note: This option is available for Windows Mobile devices only. Processor The type of processor on which the registry value can be created.
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.
Dialog Options
Value Name The value name is read-only in this dialog box.
Task
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.
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.
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.
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.
1352
ISP-1600-UG00
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.
Tables
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.
1354
ISP-1600-UG00
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.
Maximum Version
ISP-1600-UG00
1355
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.
The File Properties dialog box lets you specify the properties for a file when it is installed onto the target system.
Task
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
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.
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.
This dialog box displays the properties that are set for a file when it is installed on the target system.
1358
ISP-1600-UG00
Task
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:
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.
Caution: You should only replace text that is unique and will not cause script syntax errors.
ISP-1600-UG00
1359
Task
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.
Task
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.
1360
ISP-1600-UG00
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
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
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
ISP-1600-UG00
1361
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
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.
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.
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.
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
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.
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).
1364
ISP-1600-UG00
Task
Task
Open the Dialogs view. In the Dialogs explorer, right-click All Dialogs and then click Import Dialog. The Import Dialog dialog box opens.
Task
Open the InstallScript view. In the InstallScript explorer, right-click Files and then click Import Script File. The Import InstallScript Files dialog box opens.
ISP-1600-UG00
1365
Chapter 41: Dialog Box Reference Import SQL Script Files Dialog Box
Task
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.
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
Task
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.
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
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
ISP-1600-UG00
1369
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.
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.
1370
ISP-1600-UG00
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.
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
Note: To suppress this warning, select the Do not show this dialog again option.
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.
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
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).
Note: Only public methods of public classes are available for selection. In addition, overloaded methods cannot be selected.
ISP-1600-UG00
1375
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
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:
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.
The Modify Dynamic Links dialog box shows all of the settings for your dynamic link.
Task
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.
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.
1378
ISP-1600-UG00
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
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
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.
ISP-1600-UG00
1379
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.
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.
1380
ISP-1600-UG00
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.
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.
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.
Select whether you want only the major versions compared or both the major and minor versions.
1382
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1383
Chapter 41: Dialog Box Reference Multi-Line String Value Dialog Box
1384
ISP-1600-UG00
URL to file
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.
ISP-1600-UG00
1385
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.
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.
1386
ISP-1600-UG00
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.
Task
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
ISP-1600-UG00
1387
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
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
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.
ISP-1600-UG00
1389
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.
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
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
Project Reload
All
ISP-1600-UG00
1391
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
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.
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.
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.
ISP-1600-UG00
1393
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
File Key
Select this check box to display a Key column in the Files subview of the Components view for Windows Installer projects.
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.
ISP-1600-UG00
1395
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.
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
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.
ISP-1600-UG00
1397
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".
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
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
ISP-1600-UG00
1399
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.
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
1400
ISP-1600-UG00
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.
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
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
ISP-1600-UG00
1401
Task
DS_CONTROL
DS_SYSMODAL
DS_CENTER
DS_LOCALEDIT
DS_FIXEDSYS
DS_CENTERMOUSE DS_SETFONT
1402
ISP-1600-UG00
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
ISP-1600-UG00
1403
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
1404
ISP-1600-UG00
Task
BS_LEFTTEXT
BS_CENTER
BS_BOTTOM
WS_VSCROLL BS_VCENTER
BS_PUSHLIKE
BS_FLAT
BS_NOTIFY
ISP-1600-UG00
1405
BS_USERBUTTON
BS_3STATE
BS_AUTO3STATE
1406
ISP-1600-UG00
Task
WS_VSCROLL CBS_SIMPLE
CBS_DROPDOWN
CBS_OEMCONVERT
CBS_HASSTRINGS
CBS_UPPERCASE
CBS_AUTOHSCROLL
CBS_DISABLENOSCROLL
CBS_NOINTEGRALHEIGHT
ISP-1600-UG00
1407
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.
These window style options are available for custom controls. See the MSDN Library for additional information.
Task
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
Task
LVS_SINGLESEL
LVS_NOLABELWRAP
LVS_AUTOARRANGE
LVS_SHOWSELALWAYS
LVS_OWNERDATA LVS_NOSCROLL
LVS_NOSORTHEADER
LVS_OWNERDRAWFIXED
LVS_NOCOLUMNHEADER
LVS_SHAREIMAGELISTS
ISP-1600-UG00
1409
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
Task
LBS_NODATA
LBS_NOREDRAW LBS_MULTIPLESEL
LBS_HASSTRINGS
LBS_USETABSTOPS
LBS_MULTICOLUMN
ISP-1600-UG00
1411
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
Task
SS_ETCHEDVERT
SS_ETCHEDFRAME
SS_ETCHEDHORZ
1412
ISP-1600-UG00
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
ISP-1600-UG00
1413
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
Task
PBS_VERTICAL
1414
ISP-1600-UG00
Task
TVS_EDITLABELS TVS_HASBUTTONS
TVS_DISABLEDRAGDROP
TVS_SHOWSELALWAYS TVS_FULLROWSELECT
TVS_HASLINES TVS_LINESATROOT
TVS_RTLREADING
TVS_NOTOOLTIPS TVS_CHECKBOXES
TVS_TRACKSELECT
ISP-1600-UG00
1415
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
Task
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
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.
ISP-1600-UG00
1417
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.
1418
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1419
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
1420
ISP-1600-UG00
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.
ISP-1600-UG00
1421
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
1422
ISP-1600-UG00
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.
ISP-1600-UG00
1423
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.
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
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.
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.
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
In the View List under Installation Information, click General Information. In the Platform Filtering setting, click the ellipsis button (...).
ISP-1600-UG00
1425
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)
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
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
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.
ISP-1600-UG00
1427
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
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
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
Then select the appropriate match option to indicate when to run the InstallShield prerequisite.
ISP-1600-UG00
1429
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
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.
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.
ISP-1600-UG00
1431
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.
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
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.
ISP-1600-UG00
1433
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.
1434
ISP-1600-UG00
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.
InstallScript
ISP-1600-UG00
1435
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
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:
ISP-1600-UG00
1437
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)
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
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.
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
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.
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
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.
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.
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.
ISP-1600-UG00
1441
1442
ISP-1600-UG00
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.
ISP-1600-UG00
1443
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.
1444
ISP-1600-UG00
Note: The InstallShield Help Library and other documentation uses the InstallShield script terminology.
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.
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.
ISP-1600-UG00
1445
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.
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.
1446
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1447
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
Task
Click Change. The Serial Number dialog box opens. In the Serial Number box, type a unique, valid serial number. Dashes are not required.
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
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.
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.
1450
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.
ISP-1600-UG00
1451
Task
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
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.
ISP-1600-UG00
1453
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
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.
ISP-1600-UG00
1455
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:
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.
MIF Filename
1456
ISP-1600-UG00
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.
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.
Log File
Project: For InstallScript MSI projects, you need to type the full path to the log file in this box.
ISP-1600-UG00
1457
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.
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
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.
Target
ISP-1600-UG00
1459
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
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.
Any Greater than Major Version Any Greater than Service Pack Level
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
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.
ISP-1600-UG00
1463
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
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
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 = "";
...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.
ISP-1600-UG00
1465
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.
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
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.
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
ISP-1600-UG00
1467
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
1468
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.
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.
ISP-1600-UG00
1469
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.
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.
1470
ISP-1600-UG00
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.
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]
ISP-1600-UG00
1471
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.
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
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.
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.
Password
1474
ISP-1600-UG00
Note: The BDE module is available only if a Borland tool was present on the system when you installed InstallShield.
Task
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.
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.
ISP-1600-UG00
1475
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.
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
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.
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.
ISP-1600-UG00
1477
Task
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
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.
1478
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1479
Task
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.
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
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.
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00
1481
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
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
1482
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
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
ISP-1600-UG00
1483
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.
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
Table 42-8: Component Type Panel Settings (cont.) Setting Component Types Description Select the type of component that you want to create.
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.
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
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.
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
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.
ISP-1600-UG00
1487
Classes Panel
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
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
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
Language
ISP-1600-UG00
1489
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.
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.
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
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
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.
ISP-1600-UG00
1491
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.
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
Launch the wizard again or modify the components Control Service advanced setting.
1492
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
1493
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database
1494
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1495
Summary Panel
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.
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
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).
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.
ISP-1600-UG00
1497
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.
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
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.
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)
Basic MSI
ISP-1600-UG00
1499
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
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
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
ISP-1600-UG00
1501
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.
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
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.
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
ISP-1600-UG00
1503
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
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
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.
Task
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>.
ISP-1600-UG00
1505
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.
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.
1506
ISP-1600-UG00
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
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.
ISP-1600-UG00
1507
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.
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.
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
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.
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.
ISP-1600-UG00
1509
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
In the View List under Additional Tools, click Direct Editor. Right-click the Table explorer and click Add Table.
Welcome Panel
Project: This information applies to the following project types:
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database QuickPatch Transform
1510
ISP-1600-UG00
Task
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.
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.
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.
1512
ISP-1600-UG00
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
Task
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.
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.
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 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 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
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
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.
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.
ISP-1600-UG00
1515
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
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.
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
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
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 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
ISP-1600-UG00
1517
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
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.
HTML Translation
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
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
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.
ActiveX Control; allows design and editing Crystal Reports at run time 32-bit only COM object model, dual interface, apartment model
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 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 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
Chapter 42: Wizard Reference Crystal Reports 8, 8.5, and 8.5 SP Objects Overview
Charts
HTML Translation
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.
ISP-1600-UG00
1521
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.
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
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.
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
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 MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
ISP-1600-UG00 1523
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.
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
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.
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.
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
ISP-1600-UG00
1525
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.
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.
This custom action runs JScript code instead of a compiled language such as C or Visual Basic.
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
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
Select this location to enter code directly into the wizard, without having to associate a file.
ISP-1600-UG00
1527
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.
Executable file
Managed code, Executable file, VBScript, 64-bit VBScript, JScript, 64-bit JScript Launch another .msi package
Select this location if the .msi file that you want to launch is stored on the same media as your main installation package.
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
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
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
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
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
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.
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.
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.
The Source setting is disabled for the error custom action, since it is not applicable to this type of custom action.
ISP-1600-UG00
1531
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.
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.
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
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.
ISP-1600-UG00
1533
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.
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
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:
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.
ISP-1600-UG00
1535
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.
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
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.
ISP-1600-UG00
1537
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
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.
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.
ISP-1600-UG00
1539
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.
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:
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
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.
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.
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.
ISP-1600-UG00
1541
Note: When the generated script is executed on a target machine, this database will be automatically created if not found on the target server.
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.
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.
1542
ISP-1600-UG00
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.
ISP-1600-UG00
1543
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
Note: Selecting this check box is useful only if one or more tables are selected on the Database Tables panel.
1544
ISP-1600-UG00
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.
ISP-1600-UG00
1545
The Advanced Scripting Options panel lets you specify security scripting options, as well as the file format.
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.
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
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.
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
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
ISP-1600-UG00
1547
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.
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.
1548
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1549
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.)
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
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 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
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.
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.
ISP-1600-UG00
1551
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
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.
Note: You need to manually insert a blank dialog into a sequence in order to display it during installation.
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.
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.
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 Panel
Project: The DirectX Object Wizard is available in the following project types:
1554
Basic MSI
ISP-1600-UG00
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 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.
Summary Panel
Project: The DirectX Object Wizard is available in the following project types:
ISP-1600-UG00
1555
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.
Task
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.
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
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.
ISP-1600-UG00
1557
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.
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
Task
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 Panel
Project: The Export Components Wizard does not appear in the following project types:
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.
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.
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.
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
Summary Panel
Project: The Export Components Wizard does not appear in the following project types:
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.
Task
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.
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.
ISP-1600-UG00
1561
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.
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.
Task
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
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 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.
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.
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
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.
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.
Welcome XML File XML Element XML Import Progress XML Import Results
1564
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1565
Chapter 42: Wizard Reference InstallShield Merge Module for MSDE 1.0 Object
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.
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
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.
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.
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.
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.
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.
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.
ISP-1600-UG00
1569
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
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.
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
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:
Note: An option appears only if all of the corresponding merge modules exist on the development system.
Directories Panel
This panel enables you to customize the MSDE 2000 installation locations.
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.
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.
ISP-1600-UG00
1573
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.
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.
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.
1574
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1575
1576
ISP-1600-UG00
Project: The New Language Wizard is available in the following project types:
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:
_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
ISP-1600-UG00
1577
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:
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: The New Language Wizard is available in the following project types:
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: The New Language Wizard is available in the following project types:
1578
ISP-1600-UG00
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:
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:
ISP-1600-UG00
1579
_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
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
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.
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.
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
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.
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
Task
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 Panel
This panel welcomes you to the Open Transform Wizard and briefly describes the wizards function. Click Next to begin using the wizard.
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.
Adding a Transform
Task
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.
Task
Select the transform in the list that you would like to remove. Click Delete or press Delete.
Task
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.
1584
ISP-1600-UG00
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.
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:
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
Task
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 Panel
Project: This information applies to the following project types:
The Welcome panel welcomes you to the Palm OS Wizard and briefly describes the wizards function. Click Next to begin using the wizard.
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
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.
Task
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.
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:
In the Features panel, select the feature or features to which your Palm OS installation belongs.
ISP-1600-UG00
1587
Summary Panel
Project: This information applies to the following project types:
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 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.
1588
ISP-1600-UG00
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.
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
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.
ISP-1600-UG00
1589
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
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.
1590
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
1591
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.
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
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.
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.
ISP-1600-UG00
1593
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.
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.
1594
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1595
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
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
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.
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.
ISP-1600-UG00
1597
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
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
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.
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.
ISP-1600-UG00
1599
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.
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.
1600
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1601
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
Netscape Communicator
Note: InstallShield supports Netscape Communicator versions 4.06 through 4.78 for Internet deployment.
Task
Select Internet Options from the Tools menu in Internet Explorer. Click the Security tab.
ISP-1600-UG00 InstallShield 2010 User Guide
1602
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.
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.
The Release Configuration panel enables you to specify the type of compression, if any, that you would like to use in your release.
ISP-1600-UG00
1603
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
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.
This panel prompts you to choose which features you would like to compress.
1604
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1605
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.
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.
This panel specifies where the Windows Installer engine installers (InstMsiA.exe and InstMsiW.exe) are located.
1606
ISP-1600-UG00
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.
ISP-1600-UG00
1607
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.
1608
ISP-1600-UG00
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
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.
ISP-1600-UG00
1609
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
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
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
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.
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.
ISP-1600-UG00
1611
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.
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.
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
Certificate Database Path Enter the path or browse to the directory containing cert7.db and key3.db.
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.
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
Basic MSI
ISP-1600-UG00 1613
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.
1614
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
1615
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.
Basic MSI
1616
ISP-1600-UG00
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.
ISP-1600-UG00
1617
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.
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
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
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.
ISP-1600-UG00
1619
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
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:
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.
ISP-1600-UG00
1621
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 ( ).
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
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.
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.
ISP-1600-UG00
1623
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.
The Internet Options panel enables you to specify various Internet-related options.
1624
ISP-1600-UG00
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:
ISP-1600-UG00
1625
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
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.
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.
ISP-1600-UG00
1627
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
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.
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
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.
Task
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
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.
ISP-1600-UG00
1631
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.
1632
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
1633
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.
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.
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
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.
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.
ISP-1600-UG00
1635
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.
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.
1636
ISP-1600-UG00
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.
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.
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.
ISP-1600-UG00
1637
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
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
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.
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.
ISP-1600-UG00
1639
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:
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
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.
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.
ISP-1600-UG00
1641
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.
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.
Project: This wizard does not apply to the following project types:
Task
On the Build menu, point to Validate, and then click Upgrade Validation Wizard. The following panels are associated with this wizard:
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
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.
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.
ISP-1600-UG00
1643
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
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.
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
Task
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.
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
ISP-1600-UG00
1645
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.
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.
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
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.
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
ISP-1600-UG00
1647
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.
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.
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.
1648
ISP-1600-UG00
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.
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
ISP-1600-UG00
1649
Welcome Panel
Project: This information applies to the following project types:
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.
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
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.
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.
Task
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.
ISP-1600-UG00
1651
Task
Select the file and click Remove. Right-click the file and select Remove.
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
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
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
3.
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
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.
The Project Outputs panel enables you to include outputs from your Microsoft Visual Studio solution in your installation project.
ISP-1600-UG00
1653
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).
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
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.
Task
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.
ISP-1600-UG00
1655
Removing Files
Task
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:
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.
Task
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
Removing Shortcuts
Task
In the Shortcuts box, select the shortcut and click Remove. Right-click the shortcut and click Remove.
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.
Task
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.
Task
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.
ISP-1600-UG00
1657
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.
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
Adding Associations
Task
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
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.
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.
ISP-1600-UG00
1659
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.
Task
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
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.
Task
Right-click the appropriate key, point to New, and click String Value, Binary Value, or DWORD Value.
1660
ISP-1600-UG00
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:
Task
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.
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.
ISP-1600-UG00
1661
Note: Only files with an .exe extension can be associated with the icon.
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
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.
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
ISP-1600-UG00
1663
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
Note: The Generate setup launcher (Autorun.exe) check box is available in the Smart Device Setup Wizard only.
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.
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
Features Panel
Project: This information applies to the following project types:
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:
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.
ISP-1600-UG00
1665
1666
ISP-1600-UG00
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.
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:
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:
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
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.
1668
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:
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
For descriptions of each of the settings in the General Information view, see 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:
ISP-1600-UG00
1669
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.
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
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.
ISP-1600-UG00
1671
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.
1672
ISP-1600-UG00
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.
ISP-1600-UG00
1673
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
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
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
ISP-1600-UG00
1675
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>
1676
ISP-1600-UG00
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.
ISP-1600-UG00
1677
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
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.
ISP-1600-UG00
1679
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
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:
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.
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.
ISP-1600-UG00
1681
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.
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
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.)
ISP-1600-UG00
1683
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
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.
ISP-1600-UG00
1685
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
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.
ISP-1600-UG00
1687
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
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.
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.
ISP-1600-UG00
1689
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
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.
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
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
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.
ISP-1600-UG00
1691
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
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.
ISP-1600-UG00
1693
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
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
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:
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
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
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.
ISP-1600-UG00
1697
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
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
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.
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.
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.
ISP-1600-UG00
1699
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
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
1700
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:
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:
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.
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
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).
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
ISP-1600-UG00
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
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:
ISP-1600-UG00
1703
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
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.
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
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.
ISP-1600-UG00
1705
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
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
ISP-1600-UG00
1707
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
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.
ISP-1600-UG00
1709
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
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
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
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:
ISP-1600-UG00
1711
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.
Component Settings
Basic MSI InstallScript InstallScript MSI InstallScript Object Merge Module MSI Database
1712
ISP-1600-UG00
The settings in the Components view (and the component settings in the Setup Design view) are organized into the following main categories:
ISP-1600-UG00
1713
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
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.
ISP-1600-UG00
1715
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.
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
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.
ISP-1600-UG00
1717
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
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.
ISP-1600-UG00
1719
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
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.
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.
ISP-1600-UG00
1721
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
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.
ISP-1600-UG00
1723
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
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
1724
ISP-1600-UG00
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.
ISP-1600-UG00
1725
.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
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
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.
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.
ISP-1600-UG00
1727
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.
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
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.
COM Registration
Services
Publishing
Device Driver
Other Data
Project: The Application Paths area for a component is available in the following project types:
ISP-1600-UG00
1729
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
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.
ISP-1600-UG00
1731
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.
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:
1732
ISP-1600-UG00
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.
ISP-1600-UG00
1733
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
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.
ISP-1600-UG00
1735
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
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
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.
ISP-1600-UG00
1737
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
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:
Tip: You must be familiar with the technical details of your service before you can configure its settings.
ISP-1600-UG00
1739
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
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
ISP-1600-UG00
1741
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
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.
ISP-1600-UG00
1743
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
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.
ISP-1600-UG00
1745
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
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.
ISP-1600-UG00
1747
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:
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
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.
Project: The Device Driver area for a component is available in the following project types:
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
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.
ISP-1600-UG00
1749
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.
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
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.
ISP-1600-UG00
1751
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.
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
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.
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
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.
Minimal
InstallScript MSI
Custom
ISP-1600-UG00
1753
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.
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
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:
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:
ISP-1600-UG00
1755
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
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:
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.
Project: The DIM References view is available in the following project types:
1756
ISP-1600-UG00
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:
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:
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.
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
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
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
The Prerequisites view enables you to add InstallShield prerequisites to InstallScript projects.
1758
ISP-1600-UG00
Objects
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:
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.
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:
ISP-1600-UG00
1759
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
Task
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.
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.
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
ISP-1600-UG00
1761
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.
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.
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 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.
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.
Show Details
ISP-1600-UG00
1763
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.
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
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
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.
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.
ISP-1600-UG00
1765
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.
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
Objects View
Project: The Objects view is available in the following project types:
1766
ISP-1600-UG00
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.
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
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.
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
1768
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
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.
Project: The INI File Changes view is available in the following project types:
ISP-1600-UG00
1769
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.
Project: The XML File Changes view is available in the following project types:
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.
Project: The Text File Changes view is available in the following project types:
1770
ISP-1600-UG00
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.
ISP-1600-UG00
1771
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:
1772
ISP-1600-UG00
Shortcut Settings
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
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.
ISP-1600-UG00
1773
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
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.
ISP-1600-UG00
1775
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
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.
ISP-1600-UG00
1777
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
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
ISP-1600-UG00
1779
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
InstallScript
Internet Shortcut
InstallScript
InstallScript
InstallScript
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
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.
ISP-1600-UG00
1781
Folder Settings
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
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
ISP-1600-UG00
1783
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.
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
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.
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
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
ISP-1600-UG00
1785
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
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.
ISP-1600-UG00
1787
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].
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.
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
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.
ISP-1600-UG00
1789
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.
1790
ISP-1600-UG00
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.
ISP-1600-UG00
1791
Project: The XML File Changes view is available in the following project types:
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.
Project: The XML File Changes view is available in the following project types:
The Advanced tab exposes the following settings for an XML file in the XML File Changes view.
1792
ISP-1600-UG00
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.
Project: The XML File Changes view is available in the following project types:
ISP-1600-UG00
1793
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.
Project: The XML File Changes view is available in the following project types:
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
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.
Project: The XML File Changes view is available in the following project types:
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>
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.
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
Task
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:
Project: The Text File Changes view is available in the following project types:
This view is not available in InstallScript projects; however, the InstallScript language includes string functions for finding and modifying string variables and literals.
ISP-1600-UG00
1797
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
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:
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.
ISP-1600-UG00
1799
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
InstallShield makes it easy to configure server side installations by providing the following sub-views under Server Configuration in the view list.
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
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
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.
Project: The Internet Information Services view is available in the following project types:
Basic MSI
ISP-1600-UG00
1801
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.
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
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.
ISP-1600-UG00
1803
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
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.
Directory Browsing
Log Visits
ISP-1600-UG00
1805
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.
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
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.
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.
ISP-1600-UG00
1807
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.
1808
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.
ISP-1600-UG00
1809
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
1810
ISP-1600-UG00
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:
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.
ISP-1600-UG00
1811
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:
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
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.
ISP-1600-UG00
1813
Project: The Internet Information Services view is available in the following project types:
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 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.
1814
ISP-1600-UG00
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:
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.
ISP-1600-UG00
1815
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.
1816
ISP-1600-UG00
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]
Project: The Internet Information Services view is available in the following project types:
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
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
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.
1818
ISP-1600-UG00
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.
ISP-1600-UG00
1819
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}
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
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.
ISP-1600-UG00
1821
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
You can configure the following properties for a SQL connection on the General tab in the SQL Scripts view.
1822
ISP-1600-UG00
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.
ISP-1600-UG00
1823
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.
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
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
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.
ISP-1600-UG00
1825
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
Note: The default properties for SQL login settings are as follows:
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.
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.
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.
ISP-1600-UG00
1827
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
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
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 Condition
You can specify conditional statements for SQL scripts that are run during installation or uninstallation.
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.
ISP-1600-UG00
1829
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
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.
Project: The Custom Actions and Sequences view is available in the following project types:
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
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:
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.
ISP-1600-UG00
1831
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:
The InstallScript view enables you to customize your setup script using the InstallScript language.
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
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
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
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.
Project: The script toolbar is not available in the following project types:
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.
ISP-1600-UG00
1833
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"
1834
ISP-1600-UG00
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
DOWN ARROW SHIFT+DOWN ARROW END SHIFT+END CTRL+SHIFT+N UP SHIFT+UP CTRL+U PAGE DOWN
ISP-1600-UG00
1835
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
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
Find Replace
Show Whitespace
Make Uppercase
Make Lowercase
Undo
ISP-1600-UG00
1837
Table 43-80: Commands Available from the Script Editor Context Menu (cont.) Command Properties Description Opens the Window Properties dialog box.
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
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.
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.
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.
ISP-1600-UG00
1839
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.
Basic MSI InstallScript MSI Merge Module MSI Database MSM Database Transform
1840
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1841
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:
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
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.
Project: Use the Custom Actions and Sequences view to configure custom action settings in the following project types:
Use the Custom Actions view to configure custom action settings in the following project types: Merge Module MSM Database
ISP-1600-UG00
1843
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
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.
ISP-1600-UG00
1845
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
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
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.
Project: Use the Custom Actions and Sequences view to configure action text settings in the following project types:
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.
ISP-1600-UG00
1847
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
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.
ISP-1600-UG00
1849
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.
1850
ISP-1600-UG00
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.
ISP-1600-UG00
1851
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.
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
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.
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.
A row of buttons and other controls A group box area (below the row of buttons) A spreadsheetlike table
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.
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.
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
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.
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
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:
ISP-1600-UG00
1855
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:
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.
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
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.
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
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
1858
ISP-1600-UG00
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
ISP-1600-UG00
1859
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:
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
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.
ISP-1600-UG00
1861
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.
1862
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1863
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.
Find String
Find Next
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.
Import Strings
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
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:
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:
ISP-1600-UG00
1865
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
The Upgrades view provides a visual, integrated method for adding and authoring settings within the Upgrade table of your .msi database.
Releases
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:
In the Patch Design view, you can create a Windows Installer patch package (.psp) to update your application on an end users system.
1866
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.
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.
ISP-1600-UG00
1867
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.
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.
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.
1868
ISP-1600-UG00
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>.
ISP-1600-UG00
1869
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
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
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:
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
ISP-1600-UG00
1871
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
1872
The Common tab exposes some global settings for both major and minor upgrades.
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.
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.
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.
ISP-1600-UG00
1873
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
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
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.
ISP-1600-UG00
1875
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 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
Release Flags
Common Tab
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.
ISP-1600-UG00
1877
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.
Advanced Tab
1878
ISP-1600-UG00
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
Maximum Version
Language
Detect Property
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.
ISP-1600-UG00
1879
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:
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.
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
Project: The General tab for a product configuration is available in the following project types:
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.
ISP-1600-UG00
1881
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.
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
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.
ISP-1600-UG00
1883
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.
1884
ISP-1600-UG00
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.
ISP-1600-UG00
1885
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.
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
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)
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.
ISP-1600-UG00
1887
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).
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
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
Platform(s)
ISP-1600-UG00
1889
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
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.
ISP-1600-UG00
1891
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
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.
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.
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.
ISP-1600-UG00
1893
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.
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
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.
ISP-1600-UG00
1895
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
Note: For more information on Windows Installer redistributables, see Adding Windows Installer Redistributables to Projects.
1896
ISP-1600-UG00
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.
ISP-1600-UG00
1897
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
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.
ISP-1600-UG00
1899
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.
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
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.
ISP-1600-UG00
1901
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.
InstallScript
InstallScript
InstallScript
1902
ISP-1600-UG00
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:
Launcher Password Basic MSI, InstallScript MSI
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
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
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.
ISP-1600-UG00
1903
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
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.
ISP-1600-UG00
1905
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.
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.
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.
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
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
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
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.
ISP-1600-UG00
1907
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.
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
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.
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.
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.
ISP-1600-UG00
1909
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.
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
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.
ISP-1600-UG00
1911
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.
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
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.
ISP-1600-UG00
1913
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
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.
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.
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).
ISP-1600-UG00
1915
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
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.
ISP-1600-UG00
1917
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.
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
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.
ISP-1600-UG00
1919
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
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.
ISP-1600-UG00
1921
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
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 Tab
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
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.
ISP-1600-UG00
1923
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
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.
1924
ISP-1600-UG00
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.
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.
ISP-1600-UG00
1925
Sequence Tab
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.
Advanced Tab
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
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
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
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.
ISP-1600-UG00
1927
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.
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.
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
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 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.
ISP-1600-UG00
1929
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
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.
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.
ISP-1600-UG00
1931
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.
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
The Latest Setup item for a patch configuration is where you specify settings for the latest version of your installation.
1932
ISP-1600-UG00
Note: To include all of your files as whole files, set the Include Whole Files property for the patch configuration to Yes.
Previous Setups
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
ISP-1600-UG00
1933
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
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 Language
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.
ISP-1600-UG00
1935
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
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.
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:
1936
ISP-1600-UG00
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:
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
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:
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
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.
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:
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
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:
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. 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
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.
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.
Removes the currently selected rows and places them on the Clipboard. Copies the currently selected rows 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
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.
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.
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.
ISP-1600-UG00
1941
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).
ISComCatalogAttribute
ISComCatalogCollection
1942
ISP-1600-UG00
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
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
ISDRMLicense
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
ISP-1600-UG00
1943
ISAlias Table
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.
ISCOMCatalogAttribute Table
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
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
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
ISP-1600-UG00
1945
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
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
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
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
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
ISP-1600-UG00
1947
ISDRMFile Table
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
Property
String
No
No
1948
ISP-1600-UG00
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
Description
String
No
No
ProjectVersion
String
No
No
Attributes
Number
No
Yes
LicenseNumber
String
No
No
RequestCode
String
No
No
ResponseCode
String
No
No
ISP-1600-UG00
1949
ISProductConfigurationInstance Table
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
1950
ISP-1600-UG00
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
Component Control
ISComments ISWindowStyle
ISP-1600-UG00
1951
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:
Dialog
ISResourceId
Directory Feature
ISDescription ISReleaseFlags
Feature File
ISComments ISBuildSourcePath
File
ISAttributes
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
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.
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-
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
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
Build Settings
When you click Build Settings in the General Information view, InstallShield displays the following tabs:
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
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.
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
ISP-1600-UG00
1955
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.
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.
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
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.
ISP-1600-UG00
1957
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.
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
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.
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.
ISP-1600-UG00
1959
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.
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
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
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.
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.
ISP-1600-UG00
1961
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.
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.
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
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.
ISP-1600-UG00
1963
1964
ISP-1600-UG00
44
InstallShield Prerequisite Editor Reference
Project: The following project types include support for InstallShield prerequisites:
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
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
ISP-1600-UG00
1965
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
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.
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.
ISP-1600-UG00
1967
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
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.
ISP-1600-UG00
1969
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
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.
ISP-1600-UG00
1971
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
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)
ISP-1600-UG00
1973
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.
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
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
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.
ISP-1600-UG00
1975
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
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
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
-7125
Check the 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.
ISP-1600-UG00
1977
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
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.
ISP-1600-UG00
1979
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
-7096
-7095
-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
-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
1980
ISP-1600-UG00
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
ISP-1600-UG00
1981
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
1982
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7050
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
-7048
-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
ISP-1600-UG00
1983
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7035
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
-7023
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
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -7015
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
-7012
-7011
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.
ISP-1600-UG00
1985
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
-6639
The merge module %1 requires one of the following merge modules also to be included in the setup: %2.
1986
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6638
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
-6633
-6632
-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
ISP-1600-UG00
1987
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
-6622
-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
-6612
-6611
1988
ISP-1600-UG00
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
-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.
ISP-1600-UG00
1989
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6598
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
1990
ISP-1600-UG00
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
-6575
-6574
-6573
-6572
-6571
-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.
ISP-1600-UG00
1991
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6568
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
-6566
-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
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.
-6556
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
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
ISP-1600-UG00
1993
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
-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
-6543
-6542
-6541
1994
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6540
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
-6538
-6537
-6536
-6535
-6534
-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
-6528
-6528
-6527
-6526
ISP-1600-UG00
1995
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
-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
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
-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
ISP-1600-UG00
1997
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
-6474
An error occurred while processing the registry value modifications made to the project.
1998
ISP-1600-UG00
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
For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>
-6461
For additional information regarding this error, see the log file created in the following directory: <Product
Config>\<Release>\CEApps\<CE Project Name>
ISP-1600-UG00
1999
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6460
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
-6449
-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
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.
ISP-1600-UG00
2001
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
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.
ISP-1600-UG00
2003
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
-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
-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
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
-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
-6264
-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.
ISP-1600-UG00
2005
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
-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
-6251
-6250
-6249
Component %1 is configured to install to the Global Assembly Cache but includes one or more subdirectories.
2006
ISP-1600-UG00
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
-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
ISP-1600-UG00
2007
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6240
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
-6238
-6237
-6236
-6235
-6234
-6233
-6232
-6231
-6230
-6229
-6228
-6227
-6226
2008
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6225
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
-6223
-6222
-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
-6218
-6217
-6216
-6215
-6214
-6213
-6212
ISP-1600-UG00
2009
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
-6201
-6200
2010
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6199
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
-6194
-6193
-6192
-6191
-6190
-6189
-6188
-6187
-6186
-6185
-6184
-6183
ISP-1600-UG00
2011
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6182
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
-6180
-6179
-6178
-6177
-6176
-6175
-6174
-6173
-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
-6169
-6168
2012
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6167
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
-6162
-6161
-6160
-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
-6154
-6153
-6152
ISP-1600-UG00
2013
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6151
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
-6149
-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
-6141
-6140
-6139
-6138
-6137
-6136
-6135
2014
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6134
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
-6130
-6129
-6128
-6127
-6126
-6125
-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
ISP-1600-UG00
2015
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
-6112
-6111
-6110
-6109
-6108
-6107
-6106
-6105
2016
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6104
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
-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
-6099
-6098
-6097
-6096
-6095
-6094
-6093
-6092
-6091
-6090
The scrollable text file:'%1' specified for the Control:'%2' does not exist.
ISP-1600-UG00
2017
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
-6086
-6085
-6084
-6083
-6082
-6081
-6080
-6079
-6078
-6077
-6076
-6075
-6074
2018
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6073
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
-6071
-6070
-6069
-6068
-6067
-6066
-6065
-6064
-6063
-6062
-6061
-6060
-6059
-6058
-6057
ISP-1600-UG00
2019
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6056
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
-6054
-6053
-6052
-6051
-6050
-6049
-6048
-6047
-6046
-6045
-6044
-6043
-6042
2020
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6041
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
Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the 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
-6038
-6037
-6036
-6035
-6034
-6033
-6032
-6031
-6030
-6029
ISP-1600-UG00
2021
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -6028
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
Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the Knowledge Base for information about this error, or request technical support. Check the 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
-6024
-6023
-6022
-6021
-6020
-6019
-6018
-6017
-6016
2022
ISP-1600-UG00
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
-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
ISP-1600-UG00
2023
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
-5093
-5092
-5091
-5090
-5089
-5088
-5087
-5086
-5085
2024
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5084
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
-5082
-5081
-5080
-5079
-5078
-5077
-5076
-5075
-5074
-5073
-5072
-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
ISP-1600-UG00
2025
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
-5063
-5062
-5061
-5060
-5059
-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
2026
ISP-1600-UG00
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5048
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
-5046
Could not preserve previous Build Reports. Could not preserve previous Build Logs. Cannot delete directory %1.
-5045
-5044
-5043
-5042
-5041
The string ID "%1" was used to specify a Component or Feature destination. Internal build error.
-5040
-5039
-5038
-5037
-5036
-5033
-5032
-5031
-5030
ISP-1600-UG00
2027
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5029
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
-5027
-5026
-5025
-5024
-5023
-5022
-5021
-5020
-5019
-5018
The logical disk does not contain any features. Internal build error.
-5017
-5016
-5015
-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
Table 45-2: Build Errors and Warnings (cont.) Error or Warning Number -5012
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
-5010
-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
-5005
-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
-5001
-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
ISP-1600-UG00
2029
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
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
-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
-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.
ISP-1600-UG00
2031
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
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.
-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
-1000
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.
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.
Error 118
Description
Could not find CAB file with file #number. The system cannot find the path specified.
2034
ISP-1600-UG00
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.
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.
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.
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
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.
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.
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
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).
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
ISP-1600-UG00
2041
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
-7008
-7009
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
2042
ISP-1600-UG00
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
1011
Ensure that the project file is not locked or open in another application.
ISP-1600-UG00
2043
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
1014
5001
5002
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
Chapter 45: Errors and Warnings 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. 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.
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.
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.
2046
ISP-1600-UG00
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
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
1153
1154
1155
1156
1157
1158
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
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>.
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
Ensure that the specified file does not already exist, and that the target system has sufficient hard drive space.
1628
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
1701
1919
Error configuring ODBC data source. Verify that the file exists and that you can access it.
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
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
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
-9004
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
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
-9007
-9008
-9009
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
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
-9012
-9013
-9014
-9015
-9016
-9017
-9018
-9019
2052
ISP-1600-UG00
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
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
-9022
-9023
-9024
-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
-9028
-9029
The file extension type %1 is invalid. The file extension %2 was not converted.
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
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
-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
-9036
The registry key type %1 is invalid. The registry key %2 was not converted.
-9037
-9038
The registry value type %1 is invalid. The registry value %2 was not converted.
2054
ISP-1600-UG00
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
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
-9041
-9042
-9043
-9044
-9045
The launch condition type %1 is invalid. The launch condition %2 was not converted.
-9046
-9047
-9048
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
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.
-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
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.
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
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
-284
-285
Could not find key FILETYPE under section <SectionName> in file <Path>\Default.fdf
-286
-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
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
-401
-402
-403
-404
-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
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
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
-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>.
Description File link does not exist for a dynamically linked file.
2062
ISP-1600-UG00
Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)
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
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.
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.
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.
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.
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.
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.
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.
ISP-1600-UG00
2065
Chapter 45: Errors and Warnings Upgrade Warnings (Upgrading from InstallShield Professional)
Task
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.
2066
ISP-1600-UG00
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.
Unsupported Events
The following events are not supported in InstallShield 2010:
ISP-1600-UG00
2067
Chapter 45: Errors and Warnings Upgrade Errors and Warnings (Upgrading from InstallShieldWindows Installer Edition)
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.
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
2068
ISP-1600-UG00
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
1904: Module [2] failed to register. HRESULT [3]. 1905: Module [2] failed to unregister. HRESULT [3].
ISP-1600-UG00
2069
ISERR_WIN_BASE + ERROR_INVALID_FUNCTION
ERROR_DEPENDENT_APPLICATION S_EXIST
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
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.
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 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.
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.
Note: The setting SHELL_OBJECT_FOLDER in OnFirstUIBefore is not necessary and the default script line "SHELL_OBJECT_FOLDER = @PRODUCT_NAME;" should be deleted.
2072
ISP-1600-UG00
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
ISP-1600-UG00
2073
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
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
ISP-1600-UG00
2075
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
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.
ISP-1600-UG00
2077
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
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.
ISP-1600-UG00
2079
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
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.
ISP-1600-UG00
2081
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
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.
ISP-1600-UG00
2083
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
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.
ISP-1600-UG00
2085
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
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.
ISP-1600-UG00
2087
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
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.
ISP-1600-UG00
2089
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
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.
ISP-1600-UG00
2091
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
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.
ISP-1600-UG00
2093
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
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
ISP-1600-UG00
2095
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
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
ISP-1600-UG00
2097
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
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.
ISP-1600-UG00
2099
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
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
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
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
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
Description
The character or characters specified by text were encountered at a location where a string declaration was expected.
ISP-1600-UG00
2103
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
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.
2104
ISP-1600-UG00
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
ISP-1600-UG00
2105
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
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
ISP-1600-UG00
2107
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
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
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
Description
This message is triggered by an #error directive.
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.
ISP-1600-UG00
2111
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
This is an unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.
This is an unexpected internal error when reading the Windows Installer package.
ISP-1600-VG00
2113
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.
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.
The user clicked the Cancel button to stop the build. Restart the build process.
2114
ISP-1600-VG00
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:
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:
ISP-1600-VG00
2115
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.
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.
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
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.
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:
This is an unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.
ISP-1600-VG00
2117
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:
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.
2118
ISP-1600-VG00
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.
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.
ISP-1600-VG00
2119
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:
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
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.
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:
ISP-1600-VG00
2121
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.
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.
2122
ISP-1600-VG00
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:
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:
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.
ISP-1600-VG00
2123
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.
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
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:
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.
ISP-1600-VG00
2125
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:
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
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:
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:
ISP-1600-VG00
2127
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:
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:
2128
ISP-1600-VG00
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:
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:
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.
ISP-1600-VG00
2129
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.
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:
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
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
ISP-1600-VG00
2131
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
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
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
ISP-1600-VG00
2133
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
Unexpected internal error. First check to see if the product was installed properly. Then, perform preliminary investigational steps and contact InstallShield Technical Support.
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
Unexpected internal error. Perform preliminary investigational steps and then contact InstallShield Technical Support.
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.
A catastrophic error has occurred while saving the Citrix profile. Perform preliminary investigational steps and then contact InstallShield Technical Support.
ISP-1600-VG00
2135
InstallShield is unable to create a new internal instance of a Citrix profile. Perform preliminary investigational steps and then contact InstallShield Technical Support.
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:
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
Initial target in the new profile could not be created. Perform preliminary investigational steps and then contact InstallShield Technical Support.
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.
ISP-1600-VG00
2137
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.
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.
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
Unable to write file type associations. Perform preliminary investigational steps and then contact InstallShield Technical Support.
The certificate that is being used in invalid. Obtain a valid certificate and rebuild the profile.
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.
ISP-1600-VG00
2139
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:
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:
2140
ISP-1600-VG00
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:
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:
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:
ISP-1600-VG00
2141
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:
A corrupt icon file may cause this warning. Modify the shortcut to use a different icon.
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
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:
Cause: Resolution:
ISP-1600-VG00
2143
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.
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
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:
Shortcuts that do not have a filename extension of .exe are excluded. No action is required.
ISP-1600-VG00
2145
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.
One of the ThinApp tools required to build a ThinApp application was not found. Reinstall ThinApp.
The source package has two shortcuts that both point to the same .exe target. No action is required.
2146
ISP-1600-VG00
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.
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.
An unexpected error occurred while running the vregtool.exe step of the ThinApp build process.
ISP-1600-VG00
2147
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.
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.
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
ISP-1600-VG00
2149
2150
ISP-1600-VG00
ISP-1600-VG00
2151
2152
ISP-1600-VG00
ISP-1600-VG00
2153
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:
2154
ISP-1600-VG00
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:
ISP-1600-VG00
2155
A specified App-V dependency application file was not found. Check the path of the specified App-V dependency application.
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
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.
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:
ISP-1600-VG00
2157
The target file of a shortcut in the project does not exist. Repackage this application and then rebuild the virtual package.
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
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:
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:
ISP-1600-VG00
2159
All TCPIP registry entries will be excluded from the Citrix profile.
Conversion will fail when the application being virtualized is VMware. This error message is displayed: VMware cannot be virtualized.
2160
ISP-1600-VG00
QuickTime 7.4.1 cannot be virtualized correctly. Obtain QuickTime 7.4.5 and repeat the conversion process.
ISP-1600-VG00
2161
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
Edition: Repackager is available in the Premier edition of InstallShield. It is also included with AdminStudio.
2162
ISP-1600-VG00
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.
ISP-1600-VG00
2163
2164
ISP-1600-VG00
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.
ISP-1600-UG00
2165
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")
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
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
AddComponent AddCustomAction
Method Method
Creates an ISWiComponent object in the current project. Creates an ISWiCustomAction object in the current project.
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
AddSetupFile
Method
Creates a support file with the specified name in the current project.
ISP-1600-UG00
2167
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.
Method
Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI Basic MSI, InstallScript MSI
Method
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.
Method
BuildPCPFile
Basic MSI, InstallScript MSI All Basic MSI, InstallScript, InstallScript MSI
Method
CloseProject CompanyName
Method
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
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
CreatePatch
CreateProject
DeleteAdvancedFil Basic MSI, e InstallScript, InstallScript MSI, InstallScript Object DeleteComponent DeleteCustomActi on All Basic MSI, InstallScript MSI Basic MSI
Method
Method Method
Deletes the specified component from the project. Deletes an ISWiCustomAction object in the current project.
DeleteDimReferen ce
Method
Method
Method
ISP-1600-UG00
2169
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
DeleteSetupFile
Method
DeleteSetupType
Method
Method
All
Method
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.
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
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
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
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
ISWiSetupFiles
Collection
ISP-1600-UG00
2171
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
Collection
Collection
Returns a collection of ISWiStaticUpgradeEntry items. This collection presents a list of static major upgrade items, as defined in the IDE.
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
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
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
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
ISP-1600-UG00
2173
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.
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
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.
ISP-1600-UG00
2175
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
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
ISP-1600-UG00
2177
AddDimReference Method
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
' 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)
ISP-1600-UG00
2179
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
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
ISP-1600-UG00
2181
Syntax
AddSetupFile (FileName As String) As ISWiSetupFile
Parameters
Table 47-10: Parameter FileName
Applies To
ISWiProject
AddSetupType Method
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
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
ISP-1600-UG00
2183
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
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
ISP-1600-UG00
2185
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
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)
ISP-1600-UG00
2187
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
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)
ISP-1600-UG00
2189
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
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
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.
ISP-1600-UG00
2191
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
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
ISP-1600-UG00
2193
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
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
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)
ISP-1600-UG00
2195
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
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.
ISP-1600-UG00
2197
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
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.
Applies To
ISWiProject
OpenProject Method
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
ISP-1600-UG00
2199
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.
Applies To
2200 ISP-1600-UG00 InstallShield 2010 User Guide
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 ()
ISP-1600-UG00
2201
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
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.
ISP-1600-UG00
2203
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
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
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.
ISP-1600-UG00
2205
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
AddEnvironmentVa Basic MSI, r InstallScript MSI, Merge Module AddFile Attrib64BitCompo nent All Basic MSI, InstallScript MSI, Merge Module
Method
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
Compressed
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
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
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
DeviceDriverUseLo Basic MSI, calizedRedist InstallScript MSI, Merge Module Difference InstallScript, InstallScript Object
Read-Write Property
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
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.
ISP-1600-UG00
2207
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:
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
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
Read-Write Property
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
Collection
ISP-1600-UG00
2209
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.
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"
2210
ISP-1600-UG00
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:
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
NeverOverwrite
Instructs the installer whether to replace an existing component. Specify True to leave the existing component or False to replace it.
ISP-1600-UG00
2211
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
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.
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.
ISP-1600-UG00
2213
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:
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
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
Read-Write Property
2214
ISP-1600-UG00
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
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
Method
RemoveEnvironme ntVar
Method
RemoveFile
Method
ISP-1600-UG00
2215
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
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
Applies To
ISWiComponent
AddEnvironmentVar Method
Project: The AddEnvironmentVar method applies to the following project types: Basic MSI InstallScript MSI Merge Module
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
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.
ISP-1600-UG00
2219
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
and that the installation includes all localized installation runtime dialogs.
2220 ISP-1600-UG00 InstallShield 2010 User Guide
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
ISP-1600-UG00
2221
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
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
ISP-1600-UG00
2223
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
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.
ISP-1600-UG00
2225
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
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.
ISP-1600-UG00
2227
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
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
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.
ISP-1600-UG00
2229
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
Name
Read-Write Property
Applies To
ISWiProject
AddDimDependency Method
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
DeleteDimDependency Method
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.
ISP-1600-UG00
2231
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
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
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
Name
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.
ISP-1600-UG00
2233
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
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
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
Method
AddObject Advertise
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.
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
DeleteCondition
ISP-1600-UG00
2235
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
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
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
FTPLocation
All
HTTPLocation
2236
ISP-1600-UG00
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
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
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
Read-Write Property
Name
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.
ISP-1600-UG00
2237
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
ReleaseFlags
RemoteInstallation
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
Method Method
Deletes the specified feature from the project. Removes a merge module from the current feature.
RemoveObject Required
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
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:
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
Syntax
AddCondition (sKey As String) As ISWiCondition
ISP-1600-UG00
2239
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
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
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)
ISP-1600-UG00
2241
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
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
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
This method removes the DIM reference associated with a feature in an installation project.
Syntax
RemoveDimReference(DimReference As ISWiDimReference
ISP-1600-UG00
2243
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
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.
ISP-1600-UG00
2245
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
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
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
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
ISP-1600-UG00
2247
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
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.
ISP-1600-UG00
2249
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
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
ISP-1600-UG00
2251
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
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
ISWiStringEntries
Name
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.
ISP-1600-UG00
2253
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
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.
ISP-1600-UG00
2255
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
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
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.
ISP-1600-UG00
2257
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
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
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
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
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
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
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
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
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")
ISP-1600-UG00
2261
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
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
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
BuildTablesOnly
BuildTablesRefresh Files
Method
Rebuilds your .msi file and updates the Files table, including any new or changed files in your setup.
ISP-1600-UG00
2263
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
Read-Write Property
2264
ISP-1600-UG00
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
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
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
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
ISP-1600-UG00
2265
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
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
Read-Write Property
ISP-1600-UG00
2267
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
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
DotNetLanguageP acks
DotNetLanguageP ackCmdLine
Read-Write Property
DotNetUI
Read-Write Property
2268
ISP-1600-UG00
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
FilterLangs
FTPFolder
Read-Write Property
FTPHostAddress
Read-Write Property
FTPPassword
Read-Write Property
FTPUserName
Read-Write Property
ISP-1600-UG00
2269
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
Read-Write Property
JSharpOptionDlg
Read-Write Property
Read-Write Property
2270
ISP-1600-UG00
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.
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.
ISP-1600-UG00
2271
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:
LauncherPassword Basic MSI, InstallScript MSI Read-Write Property
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
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
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
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
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
Read-Write Property
NetscapeCertificat ePath
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.
ISP-1600-UG00
2273
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
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
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
ReleaseFlags
ISP-1600-UG00
2275
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
Read-Write Property
ShowPasswordDlg
Read-Write Property
SignFiles
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
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
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.
ISP-1600-UG00
2277
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
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