Developer 7.0
Transcription
Developer 7.0
Developer 7.0 InstallShield Developer Version 7.0 Getting Started Guide © 1998–2001 InstallShield Software Corporation. All Rights Reserved. This document is being furnished by InstallShield Software Corporation for information purposes only to licensed users of the InstallShield Developer software product and is furnished on an “AS IS” basis, that is, without any warranties, whatsoever, express or implied. InstallShield is a registered trademark and service mark of InstallShield Corporation. DemoShield is a trademark of InstallShield Software Corporation. Other brand and product names are trademarks or registered trademarks of the respective holders. Microsoft Windows, Windows NT, the Windows logo, the Windows NT logo and FrontPage are registered trademarks of the Microsoft Corporation. Adobe Acrobat is a registered trademark of Adobe Systems Incorporated. Information in this document is subject to change without notice and does not represent any commitment on the part of InstallShield Software Corporation. The software described in this document is furnished under a license agreement. The software may be used only in accordance with the terms of that license agreement. It is against the law to copy or use the software except as specifically allowed in the license. No part of this document may be reproduced or retransmitted in any form or by any means, whether electronically or mechanically, including, but not limited to the way of: photocopying, recording, or information recording and retrieval systems, without the express written permission of InstallShield Software Corporation. InstallShield Developer 7.0 Getting Started Guide Initial Publishing July 2001 Printed in the USA Part No. ISDGSG01–0701 Visit our Web site at http://www.installshield.com. Record Your Product Serial Number Here: You will need this serial number every time you contact InstallShield Software Corporation. The serial number can be found in the About dialog, accessible from the Help menu. September 2001 Dear InstallShield Developer Customer: Thank you for choosing InstallShield Developer 7.0. The Getting Started Guide, Online Reference, and Knowledge Base compose the comprehensive InstallShield Developer documentation set. Please note that some information and examples might not apply to previous versions of InstallShield products. For additional InstallShield Developer information, please visit our Web site at http://www.installshield.com. The latest InstallShield news, hot installation topics, technical white papers, and downloadable files are now available to you 24 hours a day, seven days a week. We are committed to providing you with the most innovative software distribution technology. As such, we welcome your comments and suggestions about InstallShield Developer and its documentation, or any other input you might have. Your feedback is invaluable. Please contact us through the Support link of the InstallShield Web site at http://www.installshield.com. Thank you for using InstallShield Developer. Sincerely, Viresh Bhatia CEO, InstallShield Software Corporation Bob Doyle Product Director Lori Erickson and Eric Thomas Technical Writers Robert Dickau Technical Trainer Table of Contents Welcome to InstallShield Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii InstallShield Developer Features & Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix The #1 Choice for both Productivity and Advanced Capabilities . . . . . . . . . . . . . . . . . . xix InstallShield Innovation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Smart Technology Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Key Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx Product Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx Efficient Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx Dynamic Web Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx Advanced Project Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi Flexible Runtime Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii Internationalization Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii Comprehensive Online Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii About InstallShield Software Corporation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii Fast Facts About InstallShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii InstallShield Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv Installation Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv InstallShield Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv InstallShield Professional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv InstallShield Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv InstallShield MultiPlatform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv Administrator Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv InstallShield AdminStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi Multimedia Authoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi DemoShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi Try an InstallShield Solution Today! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Technical Support Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Online Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Help Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Context-Sensitive Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Web-Based Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii The Official InstallShield for Windows Installer Developer’s Guide . . . . . . . . . . . . . . xxviii InstallShield Knowledge Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii InstallShield Newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii InstallShield Software Corporation v InstallShield Customer Care—Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii Contacting InstallShield Customer Care . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii Support Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix InstallShield Professional Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx InstallShield Consulting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx InstallShield Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx InstallShield Training Centers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Chapter 1 Installing InstallShield Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recommended System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uninstallation Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Your Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 2 Setup Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 What is Windows Installer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benefits of Windows Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Self-Repair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Feature Advertisement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Componentized Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Single File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User-Accessible Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows 2000 Logo Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clean Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What is a Setup? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typical Setup Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perform File Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Display User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Create Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register File Associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register COM, COM+, and DCOM Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Product for Uninstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi 1-3 1-3 1-4 1-4 1-4 2-3 2-3 2-3 2-3 2-3 2-4 2-4 2-4 2-4 2-4 2-4 2-5 2-5 2-5 2-5 2-6 2-6 2-6 2-7 InstallShield Software Corporation Chapter 3 Upgrading Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Standard vs. Basic MSI Setup Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Upgrading InstallShield Professional Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Opening Your Setup Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 Project Element Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 Lexicon Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 Project Settings Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 String Tables Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 Build and System Variable Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 How Upgrading Affects Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11 File Groups Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12 Registry Data Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 Shortcut Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 Media Information Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 Setup Type Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 Build Settings Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 Upgrade Warnings and Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17 Upgrading InstallShield—Windows Installer Edition Projects . . . . . . . . . . . . . . . . . . . . 3-17 Converting a Basic MSI Project to a Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . 3-18 Chapter 4 Using InstallShield Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Setup Project File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tour of the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying and Displaying Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dialog Layout Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI Debugger Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallShield Software Corporation 4-3 4-3 4-3 4-3 4-3 4-5 4-6 4-7 4-7 4-7 vii Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8 Organize Your Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8 General Information View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9 Project Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Summary Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Windows 2000: Information Stored in the Add/Remove Programs Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Product Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-11 String Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-12 Subfeatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 Feature Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15 Default Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15 Additional Setup Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Specify Application Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17 Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19 Objects vs. Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19 Associating Merge Modules with Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20 Configure the Target System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21 Shortcuts/Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22 Creating a Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22 Shortcut Destinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22 Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-23 Adding Registry Data to a Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-24 ODBC Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-25 INI File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-26 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-27 Design the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-28 End-User Dialogs (Basic MSI Setup Project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-28 Dialogs (Standard Setup Project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 Editing a Dialog’s Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 Reverting Back to the Default Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 Editing a Dialog’s Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 viii InstallShield Software Corporation Customize Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files and Functions Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Script Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sequences/Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Billboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prepare for Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Build Your Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Distribute Your Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advanced Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Hard-Coded Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Different Types of Path Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Property Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setup Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Files, Registry Data, and Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sequences/Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Component-Feature Relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Direct Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallShield Software Corporation 4-30 4-31 4-31 4-31 4-32 4-32 4-33 4-33 4-34 4-34 4-35 4-35 4-36 4-37 4-37 4-37 4-37 4-38 4-39 4-40 4-40 4-40 4-41 4-41 4-41 4-41 4-42 4-42 4-43 ix Chapter 5 Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using InstallScript in Custom Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating and Using a Custom Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Globalizing a Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Steps to Globalize a Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Patching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Automation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disk Spanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Release Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validating Your Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Scan Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Validation Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Source Code Control Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COM Registration Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extracting COM Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Self-Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 6 Globalizing Your Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Steps to Globalize a Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How InstallShield Developer Determines Which Language the Setup Runs In . . . . . . . . . . Display the Language Dialog to the User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Project’s Default Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Default Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What the Default Language Affects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Customizing Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x 5-3 5-3 5-3 5-3 5-3 5-4 5-4 5-4 5-5 5-5 5-6 5-6 5-6 5-6 5-7 5-7 5-8 5-8 5-8 5-9 5-9 5-9 6-3 6-3 6-3 6-4 6-4 6-4 6-5 6-5 InstallShield Software Corporation Installing Files of the Same Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Globalization Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Globalization Code Page Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installing Code Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows NT 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 6-5 6-6 6-6 6-7 6-7 6-7 7 Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 General Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 What is the Difference between Standard and Basic MSI Setup Projects? . . . . . . . . . . . 7-5 Similarities Between Standard and Basic MSI Project Types . . . . . . . . . . . . . . . . . . . 7-5 Standard Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 Basic MSI Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 Where Can I Find Information About Windows Installer Run-Time Errors? . . . . . . . . . . 7-7 How Can I Be Sure the Target Machine Has the Windows Installer Service? . . . . . . . . 7-7 Where Can I Access Updated Merge Modules? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 Files and Folders Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 When Do I Self-Register Files vs. Only Extracting COM Information? . . . . . . . . . . . . . 7-7 How Does Windows Installer Determine Which Files Should Be Overwritten? . . . . . . . 7-8 How Do I Associate File Types with My Program? . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8 How Do I Specify the Destination Folder for My Application? . . . . . . . . . . . . . . . . . . . 7-9 Using INSTALLDIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 Specifying File Destination Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 Hard-Coding a Destination Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 What is the Difference Between INSTALLDIR and MSI_TARGETDIR? . . . . . . . . . . . . . 7-10 How Do I Register a COM Server? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 How Do I Install and Configure a Windows NT Service? . . . . . . . . . . . . . . . . . . . . . 7-10 How Do I Create an Empty Folder? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 How Do I Set a Key File for a Dynamic File Link? . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 What Happens If I Put More Than One Executable in the Same Component? . . . . . . . 7-11 Features and Components Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 How Do I Control the Items Appearing in a Feature’s Context Menu? . . . . . . . . . . . . 7-11 How Do I Conditionally Select A Feature? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 InstallShield Software Corporation xi Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Conditionally Hide a Feature? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shortcuts Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Create Shortcuts? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Create An Internet Shortcut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Create a Shortcut to a Folder? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registry Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Read Data from the Registry? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Write a Property’s Value to the Registry? . . . . . . . . . . . . . . . . . . . . . . . . . Properties Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How do I Get or Set a Windows Installer Property in InstallScript? . . . . . . . . . . . . . . Conditions Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Conditionally Install My Setup Based on the Operating System of the Target Machine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Can I Create My Setup So it Installs Files Based on the Target Operating System? How Do I Detect Administrator Privileges? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect a First-time Installation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect If the User Has Selected a Specific Feature? . . . . . . . . . . . . . . . . . . Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect If the User is Running a Particular Operating System? . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii 7-11 7-11 7-12 7-12 7-12 7-13 7-13 7-13 7-13 7-13 7-14 7-14 7-14 7-14 7-14 7-15 7-15 7-15 7-16 7-16 7-16 7-17 7-17 7-17 7-17 7-17 7-17 7-18 7-18 7-18 7-18 7-18 7-18 InstallShield Software Corporation User Interface Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Display a License Agreement? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Validate a Serial Number? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Populate a List Box at Run Time? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Display a File-Browse Dialog Box? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Display a Network-Browse Dialog Box? . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Why Can’t I Remove the InstallShield Label (Branding) from the Setup Dialog Boxes? . Custom Actions Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Search for a File on the User’s System? . . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Launch My Application Following Installation? . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Place a File in the .msi Database and Extract It During Run Time? . . . . . . . Building Release Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . My Setup Does Not Fit on a Single Floppy Disk. Why? . . . . . . . . . . . . . . . . . . . . . . Disk Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disk Spanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Get Changes I Make in the IDE to Take Effect When I Run My Setup? . . . . . How Do I Build My Project from the Command Line? . . . . . . . . . . . . . . . . . . . . . . . . How Do I Change Project Properties from the Command Line? . . . . . . . . . . . . . . . . . How Do Users Run My Installation in Silent Mode? . . . . . . . . . . . . . . . . . . . . . . . . . Standard Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Create and Read a Response File for a Silent Installation? . . . . . . . . . . . . . Standard Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallShield Software Corporation 7-18 7-18 7-19 7-19 7-19 7-19 7-20 7-20 7-20 7-20 7-20 7-20 7-21 7-21 7-21 7-21 7-21 7-22 7-22 7-22 7-22 7-22 7-23 7-23 7-23 7-23 7-23 7-24 7-24 7-24 7-24 7-24 xiii Uninstallation Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Remove Files that Were Created by My Product? . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Remove Registry Data Created by My Product? . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-24 7-24 7-25 7-25 7-25 7-25 7-25 Appendix A DemoShield Browsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 What is a DemoShield Browser? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DemoShield Browser Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DemoShield Browser Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Browsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using an Existing Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expanding DemoShield Browser Wizard Functionality . . . . . . . . . . . . . . . . . . . . . . . . . About DemoShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What DemoShield Can Do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DemoShield Consulting Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DemoShield Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Browser Using DemoShield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3 A-3 A-3 A-4 A-4 A-4 A-4 A-5 A-6 A-6 A-6 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G-1 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I-1 xiv InstallShield Software Corporation Welcome to InstallShield Developer Chapter Contents Welcome to InstallShield Developer! You have purchased the most powerful, flexible, and extensible means of setup development available. This chapter describes some of the many features and benefits of InstallShield Developer, and provides information on how to get help when you need it. InstallShield Developer Features & Benefits. . . . .xix The #1 Choice for both Productivity and Advanced Capabilities . . . . . . . . . . . . . . . . .xix InstallShield Innovation . . . . . . . . . . . . . . . . .xix Smart Technology Choice . . . . . . . . . . . . . . .xix Key Benefits. . . . . . . . . . . . . . . . . . . . . . . . . xx Product Features . . . . . . . . . . . . . . . . . . . . . xx Efficient Development . . . . . . . . . . . . . . . . xx Dynamic Web Distribution . . . . . . . . . . . . xx Advanced Project Control . . . . . . . . . . . . .xxi Flexible Runtime Experience . . . . . . . . . . xxii Internationalization Support . . . . . . . . . . xxii Comprehensive Online Tutorial . . . . . . . . . . xxiii About InstallShield Software Corporation . . . . xxiii Fast Facts About InstallShield . . . . . . . . . . . xxiii InstallShield Products . . . . . . . . . . . . . . . . . . . xxiv Installation Development . . . . . . . . . . . . . . . xxiv InstallShield Developer . . . . . . . . . . . . . . xxiv InstallShield Professional . . . . . . . . . . . . . xxiv InstallShield Express . . . . . . . . . . . . . . . . xxv InstallShield MultiPlatform . . . . . . . . . . . . xxv Administrator Solutions . . . . . . . . . . . . . . . xxv InstallShield AdminStudio . . . . . . . . . . . . xxvi Multimedia Authoring . . . . . . . . . . . . . . . . xxvi DemoShield . . . . . . . . . . . . . . . . . . . . . . xxvi Try an InstallShield Solution Today! . . . . . . xxvii Technical Support Resources. . . . . . . . . . . . . Online Help. . . . . . . . . . . . . . . . . . . . . . . Help Library. . . . . . . . . . . . . . . . . . . . . Context-Sensitive Help . . . . . . . . . . . . . InstallShield Software Corporation xxvii xxvii xxvii xxvii xvii Web-Based Help . . . . . . . . . . . . . . . . . . . xxvii The Official InstallShield for Windows Installer Developer’s Guide . . . . xxviii InstallShield Knowledge Base . . . . . . . . . . xxviii InstallShield Newsgroups . . . . . . . . . . . . . xxviii InstallShield Customer Care— Technical Support . . . . . . . . . . . . . . . . . . xxviii Contacting InstallShield Customer Care . xxviii Support Programs . . . . . . . . . . . . . . . . .xxix InstallShield Professional Services . . . . . . . . . . xxx InstallShield Consulting Services . . . . . . . . . xxx InstallShield Training . . . . . . . . . . . . . . . . . xxx InstallShield Training Centers. . . . . . . . . .xxxi xviii • Welcome to InstallShield Developer InstallShield Software Corporation InstallShield Developer Features & Benefits InstallShield Developer™ version 7.0 is the most advanced installation authoring solution ever created, delivering the greatest flexibility, highest productivity, broadest capabilities, and the maximum control. Developer gives you the best of both worlds—the power of InstallScript combined with the end-user TCO reducing features of Windows Installer, such as application auto-repair and install on demand. Fully control projects with InstallShield Developer features such as source code control integration, release management, patch creation, and support for workflow automation. Developer also enables customization of the entire end-user experience. Use One-Click Install™ technology, the graphical dialog editor, InstallScript™ customization, digital signatures, and billboard support to provide a world-class installation experience for your customers. The #1 Choice for both Productivity and Advanced Capabilities InstallShield Developer makes quick work of common installation tasks and dramatically increases efficiency, no matter how simple or complex the project may be. It contains over 20 task-based wizards and more than 20 simplified task views. Developer enables you to choose one of 33 runtime languages, optionally export existing project elements to another project, and create project templates. Plus Developer automatically adds the latest source files at build time with linked folders, packages all required file dependencies, and adds vital third-party technologies— with over 40 included merge modules to further increase your productivity. InstallShield Developer offers you maximum power and flexibility by using both InstallScript and Windows Installer tables to control the installation. Modifications to the user interface sequence can be easily controlled via InstallScript, and installations benefit from Windows Installer features such as auto-repair and advertising. This format is an evolution from all previous InstallShield Professional project formats. InstallShield Innovation InstallShield Developer includes the latest innovations and technology support, including source code control integration, One-Click Install technology, and InstallScript. Developer supports new and emerging technologies such as Windows XP, .NET applications, and 64-bit applications. Smart Technology Choice InstallShield is the eighth-most used software in the world, an industry standard that is backed by mature technology, award-winning support, hands-on training, professional consulting, and comprehensive offerings that only comes from InstallShield. InstallShield Software Corporation InstallShield Developer Features & Benefits • xix Key Benefits • Utilize all the power of InstallScript plus all the standards-compliance of Windows Installer in one development solution. • Leverage the latest Microsoft technologies, such as .NET, Windows XP, and 64-bit applications. • Provide bandwidth saving Web-based installation packages. • Achieve high productivity with a visual development environment. • Provide a world-class initial experience for your applications. Product Features Efficient Development • Visual IDE—Merge the power of scripting with the short learning curve of a visual development environment. Drag and drop files and registry entries from the source to the destination folder trees. Simplified views of each task allow you to focus on the job at hand. • Twenty Productivity Wizards—Task based wizards simplify your development tasks from starting VB projects to building custom releases. • Technology Modules—Over 40 third-party technologies are included for you to add into your projects. Review and change the contents of each module, or create your own Merge Modules for easy sharing of setup functionality among projects. • File Dependency Scanning—Run automated dependency checks or walk through your application to ensure that all of your file dependencies have been included in your project. Automated VB project checking is also included. A list of called files is generated for your review, prior to importing them into the project. • Upgrade Existing Scripts—Now convert existing InstallShield Professional scripts (5.5 and up) to support the Windows Installer installation model, the standard for Windows 2000 and XP logo-compliance. • Dynamic Source Files—Eliminate the need to track every changed project file. Automatically include the contents of watched directories at build time, based on predefined paths and wildcard characters. • Quick Build—Save time during testing by rebuilding only a portion of your project. • Project Templates—Maintain consistency across projects. Reduce work. Generate project outlines that can be used over and over again. Dynamic Web Distribution • One-Click Install Technology—Make Web distribution a snap! Offer users a seamless, familiar, download and installation experience with one click on your site. Eliminate unnecessary steps for users, such as responding to the “save as” dialog and finding the location of the application on their system before xx • Welcome to InstallShield Developer InstallShield Software Corporation • • • • installing it. Pass information to the setup from your stored data to personalize the setup. Intelligent Downloads—Save bandwidth by not pushing the Windows Installer engine, or pieces of the application, unless they are required. Use the default location for retrieval of the engine, or set and maintain your own. Digital Signatures and Passwords—Distribute with confidence by digitally signing and password-protecting your installations. Advanced Compression—Optionally use the new LZX compression capability to create the smallest installation possible. Ideal for a final build before Web distribution. Web Deployment Wizard—With a few simple selections in the Web Deployment Wizard, automatically create a Web page that contains your complete installation package. Advanced Project Control • Complete InstallScript™ Control—Take full control over your installation with simple InstallScript functions. Leverage over 300 specialized capabilities, without the additional hassles of library development. Customize any part of the installation including user dialog sequence, file transfer, error handling, reboot, and even uninstallation. • Source Code Control Integration—Manage installation projects the same way you manage other code. InstallShield’s SCC integration supports Microsoft Visual SourceSafe, Rational ClearCase, Merant PVCS, and others, through the Microsoft SCC Interface. • Patch Creation—Use the Patch Creation Wizard to deliver small updates that only contain changed files. Create a single update that can be applied to many previous versions. • Workflow Automation—The user-friendly InstallShield automation layer makes it simple to edit virtually any element of an installation project programatically. Plus, highly specialized automation requirements can now be met using the Windows Installer API. • Project Debugging—Step through the user interface sequence to confirm conditional behavior or identify trouble spots. Validate packages for internal consistency and Microsoft guidelines. Plus, visually debug InstallScripts for precise installations. • Direct Table Editing—Directly change or view any Windows Installer table, not just a subset of tables. • Build Reports—View a summary of a build’s contents for troubleshooting or guidance. • Release Management—Create multiple versions of an application—such as, Evaluation, Full, and International—from a single project. Flag specific features for inclusion in different releases. InstallShield Software Corporation InstallShield Developer Features & Benefits • xxi Flexible Runtime Experience • Fully Customizable Installer Interface—Now, for the first time, you can create the ideal custom installation interface for your application, while maintaining full compliance with Windows 2000 standards. Reorder and link dialogs with simple commands. Include billboards, video and other multimedia elements with ease. • Visual Dialog Editor—Easily modify existing dialogs or create new dialogs from scratch. Dialogs can be exported and imported for sharing across projects. • Windows XP—Support Windows XP as both a target platform in addition to Windows 2000, NT 4, 95, 98, and Me. • .NET Support—Extract and view .NET Key file information in the IDE. Utilize the new .NET support included in Windows Installer 2.0. • 64-bit Application Support—Build setups for both 64-bit native and hybrid applications that mix 32-bit and 64-bit code. Interactions with 64-bit system folders, the 64-bit registry, and building 64-bit custom actions are all fully supported. • Windows Installer 2.0—Full support for Windows Installer 2.0. Give endusers the total cost of ownership benefits of install on demand, auto-repair, and installation rollback. • Multimedia Runtime Support—Use billboards and video to market product features and complimentary products and services. Internationalization Support With InstallShield Developer 7.0, you can create your setup in one of 33 supported languages. This means that all of the end-user dialogs shown during the installation process appear in the language that you chose when you created the setup. Additionally, The InstallShield East and West Language Packs localize your installations according to Microsoft’s exacting translation guidelines. Both message and resource translations are provided, eliminating hundreds of hours of translation effort. Plus, the powerful Language Pack wizards let you easily filter local resources and help files for each build. Just select the language you need. InstallShield’s Language Packs, and comprehensive Language Pack documentation, give you the edge in rapidly building and distributing global installations of your software. Language Packs start by separating the standard components of your application to create a language-independent core. Then you visually specify which files in your application are localized. At build-time, you then select the language and leverage the Language Pack to manage the files and resources you need to build each localized application. Language Packs allow you to: • Cost-effectively provide high-quality translated installations • Visually separate your application resources into core components and localized components • Automatically manage all localized resources xxii • Welcome to InstallShield Developer InstallShield Software Corporation • Easily build translated product versions • Create a single product CD that supports multiple languages Comprehensive Online Tutorial InstallShield Developer includes a comprehensive online tutorial, covering major aspects of setup design. This tutorial is available via the InstallShield Developer online help. About InstallShield Software Corporation Founded in 1987 by Viresh Bhatia, CEO, and Rick Harold, CTO, InstallShield is most widely recognized for standardizing the way traditional software is installed on over 250 million PCs around the globe. Today, the company continues evolving that standard, providing Independent Software Vendors, Corporate Developers, Systems Administrators, and Digital Content Producers with cutting-edge technologies, products, training and consulting services. InstallShield products enable the distribution, management, and consumption of software and digital content via the Internet and throughout the corporate enterprise. Our customers span every industry, from multi-national corporations to small businesses. Despite our industry-leading position and global presence, we maintain an entrepreneurial culture to address the full spectrum of software installation and deployment needs. Fast Facts About InstallShield • Four-time member of the prestigious “Inc. 500,” Inc. Magazine’s listing of America’s fastest growing private companies • Recognized as one of greater Chicagoans’s fastest growing technology companies by Deloitte & Touche “Fast 50" Program • Ranked by Media Metrix, Inc., as the sixth-most-frequently owned and eighthmost-frequently used software • Ranked #257 in Software Magazine’s Software 500 List • Ranked #40 in the 2000 Softletter 100, a ranking of the top 100 PC software makers InstallShield Software Corporation About InstallShield Software Corporation • xxiii InstallShield Products InstallShield Software Corporation provides products and services that meet and exceed industry demands for software distribution in three major categories: Installation Development • • • • InstallShield Developer InstallShield Professional InstallShield Express InstallShield MultiPlatform Administrator Solutions • InstallShield AdminStudio Multimedia Authoring • DemoShield Installation Development The first. The best. The industry standard. InstallShield Software Corporation is the undisputed leader for installation development. InstallShield Developer The Most Flexible and Powerful Installation Authoring Solution Ever The best just got even better! Meet InstallShield’s new Flagship solution: InstallShield Developer. InstallShield Developer is the most flexible and powerful installation-authoring solution available, offering the greatest level of project control. It combines the power of InstallScript™ with Windows Installer features such as auto-repair and install-on-demand. Create and manage projects just the way you want using features such as source code control integration, automated authoring and build functions, and patch creation. Developer also enables extensive customization of the end-user experience. Use the graphical dialog editor, digital signature and password options, and billboard support to tailor the installation experience to your customers’ needs. Over 20 task-based wizards combine ease of use with Developer’s robust functionality. And Developer keeps you current while preparing for the future with support for Windows XP, .NET, and 64-bit applications. Complete robust installations quickly and meet unique customization requirements as they emerge. No challenge is too great for InstallShield Developer. InstallShield Professional Flexible Script-Based Installations Scripting control and intuitive visual tools make InstallShield Professional the powerful and flexible software installation solution backed by years of development and industry leadership. With InstallShield Professional, you can create installation packages of any complexity without utilizing the Windows Installer Service (MSI). Sim- xxiv • Welcome to InstallShield Developer InstallShield Software Corporation plify complex processes. Shrink development cycles. And deliver a more flexible end-user experience. Create and distribute reusable pieces of installation projects. All with InstallShield Professional. InstallShield Express Industry-Standard Installations Out of the Box in Minutes InstallShield Express lets you quickly point and click your way to creating installations-that means no scripting and no learning curve. With built-in support for many third-party technologies, an easy-to-use development environment, and Web deployment functionality, InstallShield Express provides new levels of speed and productivity that let you go from project to setup in less than a day! And InstallShield Express is the most economical setup-development solution available, fitting any budget. With InstallShield Express, you just follow a visual checklist guide to deploy genuine InstallShield setups in a day. And Express projects can be easily upgraded to InstallShield Developer. InstallShield MultiPlatform Robust Installations for Solaris, Linux, AIX, OS/2, OS/400 and Windows InstallShield now brings its experience and industry-leading expertise in Windows installation to multiple platforms! Now the robust installation-development functionality-and the familiar InstallShield user experience-is available to developers and users of Solaris® UNIX, Linux®, AIX®, OS/2®, and OS/400® platforms in addition to Windows. Full native support for each operating system’s model of packaging and deploying software on several platforms no longer means that developers have to create and maintain a different process for each OS supported-with resulting higher costs, longer release cycles, and potentially reduced quality. InstallShield MultiPlatform allows developers targeting multiple platforms to leverage one InstallShield product and author a single installation that will deploy on multiple platforms. The InstallShield solution offers a single, unified technology that addresses the distinct requirements of each operating system while providing an elegant and consistent user experience. With development contributions from IBM and Sun, InstallShield MultiPlatform shortens cycles, lowers costs, and provides users quality installations every time. Administrator Solutions Software distribution and InstallShield go hand in hand. And now when Systems Administrators take on pre-deployment challenges and manage setup packages, they can trust the same experts their developers used to create those industry-standard packages: InstallShield. InstallShield Software Corporation InstallShield Products • xxv InstallShield AdminStudio The Solution for Systems Administrators. Repackage. Resolve Conflicts. Customize. InstallShield AdminStudio is the easiest and most reliable solution for repackaging and customizing applications, as well as finding and resolving potential conflicts between applications. It is designed specifically to meet the application pre-deployment needs of System Administrators, using wizards and a checklist interface to guide the process. Using InstallShield AdminStudio, you can: • Repackage Traditional Setups—Create new setups from traditional, nonWindows Installer setups. System snapshots taken before and after the application is installed and configured are used to create a new application image. • Author Setups/Enhance Repackaged Setups—Create or change a Windows Installer setup directly. This option is recommended for authoring your own setups, or for making additional adjustments after the Repackaging process and prior to customization for various user group needs. • Customize Setups—Create one or more custom installations from the same Windows Installer package, without altering the underlying setup (per Microsoft guidelines). • Identify and Resolve Conflicts—Check for potential conflicts between Windows Installer setup packages and resolve issues that could affect proper application behavior. Multimedia Authoring InstallShield Software Corporation pioneered dynamic, software-specific demonstration technology. Multimedia Authoring, Technical Publications, Development, Sales, or Marketing departments can now target their audience and show off-not just tell-what their software can do. DemoShield The Quickest and Easiest Authoring Tool for Product Demos, Sales Presentations, Autorun CD Browsers, and CBT. Capture your audience’s attention with stylish demos that inform, entertain and sell! DemoShield lets any PC user rapidly develop professional multimedia demos, sales presentations, CD browsers, tutorials, and more. Use DemoShield to guide your customers through the key benefits and powerful features of your product. DemoShield’s easy-to-use, point-and-click authoring environment helps you add creativity to your content and clarify your user’s next steps. Plus, DemoShield’s visual impact greatly enhances all of your strategic messages, from marketing information and setup, to documentation and training. What’s more, only DemoShield allows you to create professional demos without having to learn complex and unwieldy media tools. xxvi • Welcome to InstallShield Developer InstallShield Software Corporation Try an InstallShield Solution Today! Evaluation copies of all InstallShield software are available from our Web site (http://www.installshield.com) today. Technical Support Resources InstallShield’s Product Support Services team hosts a wealth of options for you to find your solution. Web-based resources such as our Knowledge Base provide quick access to years of service at no cost, while service plans give you more robust support with our expert engineers. Take a look at your options below and see which solution is right for you. Online Help When you have questions about InstallShield, first consult the online InstallShield Help Library. Help is available both from the installation development environment’s (IDE) Help menu and directly from certain individual IDE elements. The help resources listed below are available from within InstallShield Developer. Help Library The Help Library is your complete user’s guide for InstallShield Developer. This library contains reference materials that cover every aspect of your setup development. Context-Sensitive Help Online help is available for every dialog box, wizard panel, and view in the InstallShield IDE. Press the F1 key or click the Help button to view the IDE Reference help for the current dialog box. Web-Based Help Consult the InstallShield Web site (http://www.installshield.com) and click on Support for immediate access to an extensive selection of useful information. The site is a comprehensive resource of free support materials including the following: • • • • • • • Technical information and product news Sample projects Frequently asked questions White papers Documentation updates Maintenance releases and updates for registered software Information about consulting, support, and professional services This information is available to you 24 hours a day, 7 days a week. InstallShield Software Corporation Technical Support Resources • xxvii The Official InstallShield for Windows Installer Developer’s Guide This authoritative guide shows how to create and deploy software applications using the new Microsoft Windows Installer Service (WIS) and the latest release of the industry-leading installation tool, InstallShield Professional–Windows Installer Edition. • This is the only official guide to the InstallShield family of Windows installation tools. • Thorough coverage of the Windows Installer Service which includes a new and complex set of policies and software APIs that application developers must master to meet Microsoft Windows logo requirements. This essential reference guide for any MSI developer is now available from retail booksellers. InstallShield Knowledge Base The InstallShield Knowledge Base is located in the Support section of our Web site (http://www.installshield.com). It contains answers to many commonly asked questions and includes new information about InstallShield that may not appear in the documentation. You can use the Knowledge Base search engine to search articles by phrases, numbers, platforms, and version. InstallShield Newsgroups The newsgroups are another excellent resource when you have questions about InstallShield Developer. In these newsgroups, developers like you share tips and ideas and help each other get the most out of InstallShield Developer. Visit the InstallShield and InstallShield Developer newsgroups in the Support section of our Web site, available at by clicking on the Support link at http://www.installshield.com. InstallShield Customer Care—Technical Support Take advantage of InstallShield’s comprehensive resources that help you find the answers you need. Connect to http://www.installshield.com and select the Support link for information about our support options if you have not already contracted for support. Contacting InstallShield Customer Care Whenever you contact technical support, our Support Engineers will need the following information: • Your full name and the full name of the registered user, if different. • Your street address, telephone number, and email address. xxviii • Welcome to InstallShield Developer InstallShield Software Corporation • Your InstallShield Developer serial number. Support is available to registered users of InstallShield Developer, so it is imperative for you to register your software. • The full InstallShield Developer version number. To find this number, select About InstallShield Developer from the Help menu. • The system information for the computer on which the problem occurred, including the make and model of the machine and video driver, the operating system, the amount of memory and system resources, any relevant devices or peripherals, and any system DLLs you are using. • A detailed description of the problem. Describe any error messages exactly as they appear. Please list all of the steps and conditions that led to the problem. Our Support Engineers are available via the World Wide Web (http://www.installshield.com) or by phone if you have purchased a qualifying InstallShield Support Plan. For more information about these plans, please consult our Web site. Registered users of InstallShield Developer are also eligible for limited Web-based support at no additional charge. Details can be found in the Support section of the InstallShield Web site. Support Programs In addition to the award-winning resources of our support Web site, InstallShield offers a number of support plans that are fine-tuned to specifically meet your needs. • Public Resources—Any time, day or night, access our knowledge base, newsgroups, and the sample gallery for outstanding support resources. • Bronze Support Plan—Unlimited support for requests submitted through our Web site. • Silver Support Plan—Unlimited support for requests submitted by phone and through our Web site. • Gold Support Plan—A dedicated phone number and Web-form give you a priority response and preferential queuing to dedicated engineers. Additionally, this plan allows you to participate in our Beta Program. • Platinum Corporate Support Plan—Get personalized service that is finetuned to meet the needs of your organization. In addition to the services provided under the Gold service plan, Platinum support assigns a Customer Care manager to oversee all of your technical issues. The Customer Care manager is responsible for all issues submitted by your organization and holds optional conference calls every month regarding status and resolution open issues (if any). This plan also provides the option of having Web-based demonstrations and product assistance through the WebEx online meeting technology. For more information about InstallShield’s support plans, visit our Web site at http://www.installshield.com and click Support. InstallShield Software Corporation Technical Support Resources • xxix InstallShield Professional Services InstallShield Professional Services is made up of InstallShield Consulting Services and InstallShield Training. InstallShield Consulting Services No One Knows More About Installations than We Do Bottom line: we’ve solved more than half-a-million man-hours (250 years) worth of difficult installation challenges. As the industry’s recognized experts, we have the unique capabilities necessary to ensure a successful first experience for your customers, keep difficult projects from impacting your ship dates, and lower your technical support costs. We know the technology challenges and we own the solutions. Our teams, with the support of InstallShield’s larger technical base of product developers, will help you determine and implement the best solution to any and every installation and deployment challenge. Here’s just a few available solutions: • Windows 2000 Application Migration Practice: We can deliver a jump-start package to involve you right away or we can customize a migration and training package for your unique needs. • Web and Network Deployment: We can help you optimize your network for setup and installation, create personalized Internet deployment, or manage Web updates. • Multimedia: Go from bland, lifeless software deployment to a dynamic, engaging experience that improves your image, eases user navigation, and presents engaging cross-selling messages. Since 1990, we’ve been helping the industry with important projects, offering the expertise only an industry leader can provide. Many InstallShield consultants are former InstallShield developers, and all have thorough training and expertise. So with InstallShield Consulting Services, you can be sure your projects are being handled by the best possible resource backed by the leaders in installation and deployment. Contact us via the InstallShield Web site (http://www.installshield.com) today and see what we can do for you! InstallShield Training Master Software Installation, Deployment, and Demonstration Get started quickly or learn robust functionality: it’s all available from InstallShield Training. With introductory and advanced courses, you can grasp the basics and understand the advanced features of your product, learning how to create solutions for complex software distribution and deployment requirements in less time. xxx • Welcome to InstallShield Developer InstallShield Software Corporation The time you spend in an InstallShield Training course is focused on helping you learn every technique and feature available in your InstallShield software solution so that you deploy faster, author with more custom skill and control, and meet the specific, strategic requirements of your organization. Here’s just a few skills available in several classes: • How to take advantage of the Microsoft Windows Installer service for the highest level of integration with the operating system. • How to create a completely script-driven installation solution. • How to use InstallShield’s One-Click Install™ technology to distribute applications over the Web • How to build installation program that runs on multiple platforms, including Windows, Linux, Solaris, AIX, and OS/2. • How to launch applications or installation programs live from a demo. We want to help your company deliver a more robust installation with more efficient development and quicker time-to-market for your important applications. And we want to help you advance your skill set, learn valuable techniques from an industry leader, and share your experiences with fellow attendees and technical InstallShield staff. Our goal is to provide educational excellence and “tell-a-friend” value. Every time. Find out more from the InstallShield Web site (http://www.installshield.com) and sign up for a class today! InstallShield Training Centers InstallShield has thirteen North American training centers, plus four international training centers to serve you. North American Training Locations Atlanta, GA Austin, TX Dallas, TX Denver, CO Farifax, VA Long Beach, CA New York, NY Orlando, FL Raleigh, NC San Jose, CA Schaumburg, IL Toronto, ON Woburn, MA International Training Locations Bristol, United Kingdom London, United Kingdom Naarden, Netherlands Paris, France InstallShield Software Corporation InstallShield Professional Services • xxxi xxxii • Welcome to InstallShield Developer InstallShield Software Corporation Installing InstallShield Developer 1 Chapter Contents Document Conventions. . . . . . . . . . . . . . . . . . 1-3 Recommended System Requirements . . . . . . . . 1-3 Installation Procedure. . . . . . . . . . . . . . . . . . . 1-4 Uninstallation Information. . . . . . . . . . . . . . . . 1-4 Register Your Software. . . . . . . . . . . . . . . . . . 1-4 This chapter contains system requirements for InstallShield Developer and information about the installation and uninstallation procedures. It instructs you how to register InstallShield Developer, and provides you with documentation conventions for this Getting Started Guide. InstallShield Software Corporation 1-1 1-2 InstallShield Software Corporation Document Conventions To enhance readability, certain text elements are specially identified as follows: Italic text denotes points of emphasis. Bold text denotes commands, menu items, selectable options, Internet and email addresses. Monospace text denotes command line input, file listings, scripts, and path specifications. It can appear in a shaded area, depending on its length. Procedures are numbered and accompanied by the step graphic in the margin. For example: To open a file, do the following: 1. Select Open from the File menu. 2. Navigate the file you want to open and select it. 3. Click OK. Certain pieces of information should stand out. The note image appears in the margin for this type of information, and the note text is set off by horizontal bars. Tips are also set off by horizontal bars, and are accompanied by the tip graphic in the margin. Tips are used when bits of information, such as time-saving suggestions, are presented. Warnings about potential pitfalls appear within lines and accompanied by the warning graphic in the margin. These warnings are set off by horizontal bars. Recommended System Requirements For successful installation of InstallShield Developer, your computer must meet the following recommended system requirements: • Windows NT 4.0 (Intel) with Service Pack 4 installed, Windows 2000, or Windows XP • Administrative Privileges on the system • Microsoft Internet Explorer 5.0 or higher • Pentium III-class PC (300 MHz or higher recommended) • 256 megabytes of RAM or greater • Disk Space required (including redistributable code): • CD installation: 350 MB before installation and 200MB after the install is complete InstallShield Software Corporation Document Conventions • 1-3 • Web Download: 700MB before installation and 400MB after the install is complete • Super VGA monitor (with the screen resolution set to at least 800 x 600, small fonts setting) Installation Procedure To run the InstallShield Developer CD Browser, put the InstallShield Developer CD into your CD-ROM drive. The CD Browser lets you install InstallShield Developer, view the InstallShield Developer Product Overview, and learn about DemoShield demo creation software. Uninstallation Information To uninstall InstallShield Developer: 1. 2. 3. 4. 5. Select Control Panel from Settings under the Windows Start menu. When the Control Panel opens, double-click the Add/Remove Programs icon. From the Add/Remove Programs dialog, select InstallShield Developer. Click Remove. Follow the directions in the wizard for uninstallation. Register Your Software To be eligible for our Support Programs, be sure to register your software. Registering also ensures that you receive the latest information about product releases and upgrades. Register your InstallShield software in one of the following ways: • Following installation, use the Registration form to immediately register your product with InstallShield. • Complete a registration form on InstallShield’s registration Web page at http://support.installshield.com/register. • Complete and send in the registration card included in the InstallShield Developer box. Following registration, record your serial number in the space provided on the second page of this guide. If you need to contact InstallShield Customer Care, they will need this serial number to verify your product is registered. 1-4 • Installing InstallShield Developer InstallShield Software Corporation 2 Setup Fundamentals Chapter Contents This chapter explains the nature of setups and how they work. It also describes how your installation benefits from using Microsoft’s Windows Installer service. InstallShield Software Corporation What is Windows Installer? . . . . . . . . . . . . . . Benefits of Windows Installer . . . . . . . . . . . Self-Repair. . . . . . . . . . . . . . . . . . . . . . . Feature Advertisement . . . . . . . . . . . . . . Componentized Installation . . . . . . . . . . . Rollback . . . . . . . . . . . . . . . . . . . . . . . . Single File . . . . . . . . . . . . . . . . . . . . . . . Merge Modules . . . . . . . . . . . . . . . . . . . User-Accessible Information . . . . . . . . . . Windows 2000 Logo Compliance . . . . . . Clean Uninstallation . . . . . . . . . . . . . . . . 2-3 2-3 2-3 2-3 2-3 2-4 2-4 2-4 2-4 2-4 2-4 What is a Setup? . . . . . . . . . . . . . . . . . . . . . . Typical Setup Elements . . . . . . . . . . . . . . . . Perform File Transfer . . . . . . . . . . . . . . . Display User Interface. . . . . . . . . . . . . . . Create Shortcuts. . . . . . . . . . . . . . . . . . . Register File Associations . . . . . . . . . . . . Register COM, COM+, and DCOM Files . Register Product for Uninstallation . . . . . . 2-5 2-5 2-5 2-5 2-6 2-6 2-6 2-7 2-1 2-2 InstallShield Software Corporation What is Windows Installer? The Windows Installer service incorporates application installation and management into the basic Windows infrastructure. The operating system is then able to track installed applications and manage components that are shared by various applications. Windows Installer adds a layer of intelligence to the installation process, providing users with a more comprehensive view of application management. Additionally, Windows Installer brings several new features and time-saving procedures that traditional setups lack. This service gathers installation information from .msi files. An .msi file is a relational database. Each table in the database contains instructions and setup information. Windows Installer creates a script of actions from this database. These actions are then executed in the order in which the installer encounters them. An .msi file is the compiled output of InstallShield Developer project (.ism) files. Windows Installer is a native service of Microsoft Windows 2000, Windows Me, and Windows XP. This service can also run on Windows 95, Windows 98, and Windows NT 4.0. If the Windows Installer service is not present on the end user’s system, your InstallShield Developer setup can install it automatically if you configure InstallShield Developer to do so. Benefits of Windows Installer In addition to providing a standardized method of handling installation and uninstallation, Windows Installer has many other benefits, such as advertisement and rollback. The following sections describe some of the features Windows Installer offers. Self-Repair By adding a few lines of code to your application, you can protect against missing and corrupted portable executable files. If—after installation—a DLL, EXE, or OCX file becomes corrupted or is accidentally deleted, the Windows Installer service automatically reinstalls the file. Feature Advertisement Windows Installer allows you to advertise features. Advertised features can appear on an end user’s system in the form of shortcuts and registered file types, but are not installed until needed. For example, you can advertise your help system so that no hard disk space is taken up until the user first accesses the help. When the user clicks a shortcut to the help for the first time or the application programmatically accesses the help, Windows Installer installs the necessary files and launches the help system. Componentized Installation Your product can be installed on a feature-by-feature basis. For example, if you have split your setup into two features (Program_Files and Help_Files), your end users can choose to install only Program_Files and not Help_Files. Your users can also uninstall features as necessary without removing your entire application. This aspect InstallShield Software Corporation What is Windows Installer? • 2-3 of Windows Installer is especially convenient for end users who have limited hard drive space. Rollback When a traditional setup fails, little is done to protect the end user’s system from harm. In traditional setups, necessary registry entries or files can be deleted without maintaining a backup of the original configuration. The rollback capabilities in Windows Installer ensure that the end user’s system is returned to its pre-installation state if the setup fails for any reason. During a setup, Windows Installer identifies the files that have changed and makes a backup copy of those files. If the setup fails, those files are returned to their previous state, leaving the system unchanged. Single File All of your setup files can be streamed into a single .msi file for easy distribution. Because you do not need to ship your files separately from the installer package, this makes deployment much less complicated. Your setup application can also be shipped in the traditional Setup.exe format, which checks the target system for the Windows Installer service, installs it if necessary, and then launches your compiled .msi file. Merge Modules Windows Installer supports the use of merge modules, which allow you to add distinct pieces of functionality to your setup without having to recreate that aspect of the setup every time you want to use it. For example, if your application requires a standard Visual Basic library to function properly, you can import the merge module that contains those Visual Basic components rather than adding all the necessary files to your setup each time. User-Accessible Information The Add/Remove Programs dialog box in Windows 2000 provides information about installed products. This information includes links to Web sites that offer support for the product and sites that host product updates. The software publisher and product version number are also displayed here. InstallShield Developer provides full support for these general information tables, making it easier for you to pass information on to your end users. Windows 2000 Logo Compliance Use of Windows Installer is required to achieve the Windows 2000 logo. Although this is only one factor in achieving compliance, it is an important consideration. InstallShield Developer takes you one step closer by using the Windows Installer service and following the Windows Installer best practices guidelines. Clean Uninstallation Because the Windows Installer service maintains a database of all the files that are installed and all the changes that are made by the service. Uninstalling programs is much more reliable. 2-4 • Setup Fundamentals InstallShield Software Corporation What is a Setup? If you have ever installed software onto your computer, you have seen a setup from the end user’s perspective. A setup program installs an application onto an end user’s computer. Typical Setup Elements The typical setup performs several different functions. A setup transfers files from the source medium to your local drive. It also makes the required registry entries, creates shortcuts, and registers COM servers. Additionally, a setup commonly gathers information about the target machine and the end user. The elements of a setup are described in detail below. Perform File Transfer File transfer involves copying files from the source medium, such as a CD or a floppy disk, to a local drive on the end user’s machine. Depending on the configuration the end user chooses, all or only some of the files may be transferred to the local drive. During file transfer, a setup can display billboards that provide product information such as new features or usability tips. The setup may also display a status bar to show the progress of the file transfer process. Display User Interface The user interface of a setup provides information and setup configuration options to the end user. Through the user interface, an end user can choose to install only part of a product, choose to leave some files on the source medium, view a license agreement, or provide information to the installer that may be necessary to ensure proper installation configuration. The user interface can be adapted to meet your installation needs. For example, you can prompt end users to select the preferred setup type before starting the installation. InstallShield Software Corporation What is a Setup? • 2-5 Figure 2-1. An example of a run-time dialog. Create Shortcuts Shortcuts are links to files and applications that the setup creates on the end user’s machine. Shortcuts are usually placed on the desktop or in the Start menu of the target machine to provide quick and easy access to a program or its files. Register File Associations If your product uses a distinct file type, you must register the file type for your application on the end user’s system to ensure your end user’s system opens the file with the proper application. For example, if your application creates and uses files with the .foo extension, you need to register this file type during your application’s setup. Register COM, COM+, and DCOM Files COM servers (such as ActiveX, COM, and COM+ files) require special registration so that applications can access the files’ interfaces. Traditionally, these EXEs, DLLs, and OCXs contain self-registration functions that are invoked to register the files during installation. However, relying on self-registration can cause problems; the end user cannot always be certain of what information is being registered or that the registry entries are removed completely when the file is uninstalled. The Windows Installer service solves this problem by writing the necessary registry entries during setup and then removing them when the COM component is uninstalled. This method ensures that all the COM servers are registered appropriately whether the file is immediately installed or advertised. 2-6 • Setup Fundamentals InstallShield Software Corporation Register Product for Uninstallation To uninstall a product, the operating system must know that the product is present. To accommodate this, a setup registers an application with the operating system so that it can be easily uninstalled. This registration is required for Windows 2000 logo compliance. Much of the information registered in this process is available to the end user through the Add/Remove Programs dialog box (on Windows 2000 systems). For example, technical support contact information, product update information, product version, and product publisher information are all registered in this process. InstallShield Software Corporation What is a Setup? • 2-7 2-8 • Setup Fundamentals InstallShield Software Corporation 3 Upgrading Projects Chapter Contents Standard vs. Basic MSI Setup Projects . . . . . . . 3-3 Standard Project . . . . . . . . . . . . . . . . . . . . 3-3 Basic MSI Project . . . . . . . . . . . . . . . . . . . . 3-3 This chapter gives an overview of how to upgrade projects created in InstallShield Professional and InstallShield—Windows Installer Edition to InstallShield Developer. It also describes the two setup project types and covers converting a Basic MSI project into a Standard project. Upgrading InstallShield Professional Projects . . 3-3 Opening Your Setup Project . . . . . . . . . . . . 3-4 Project Element Changes . . . . . . . . . . . . . . 3-4 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 Lexicon Conversion . . . . . . . . . . . . . . . . 3-5 Project Settings Changes. . . . . . . . . . . . . 3-8 String Tables Changes . . . . . . . . . . . . . . 3-9 Build and System Variable Changes . . . . 3-9 How Upgrading Affects Components . . . 3-11 File Groups Effects . . . . . . . . . . . . . . . . 3-12 Registry Data Effects . . . . . . . . . . . . . . . 3-14 Shortcut Effects. . . . . . . . . . . . . . . . . . . 3-14 Media Information Effects . . . . . . . . . . . 3-15 Setup Type Effects . . . . . . . . . . . . . . . . 3-16 Build Settings Effects . . . . . . . . . . . . . . . 3-16 Aliasing . . . . . . . . . . . . . . . . . . . . . . . 3-16 Upgrade Warnings and Errors . . . . . . . . . 3-17 Upgrading InstallShield—Windows Installer Edition Projects . . . . . . . . . . . . . . . . . . . . . . 3-17 Converting a Basic MSI Project to a Standard Project . . . . . . . . . . . . . . . . . . . . . 3-18 InstallShield Software Corporation 3-1 3-2 InstallShield Software Corporation Standard vs. Basic MSI Setup Projects With InstallShield Developer, you can create a number of different types of setup projects. In addition to the project types available in InstallShield—Windows Installer Edition, there is now a Standard project option, which allows you to create script-based setup projects. Standard Project This project type is recommended for most projects. It offers maximum power and flexibility by using both InstallScript and Windows Installer tables to control the installation. Modifications to the user interface flow can be easily controlled via InstallScript, and installations benefit from Windows Installer features such as autorepair and advertising. This format is an evolution of all previous InstallShield Professional project formats. Basic MSI Project This project type is recommended in cases where the Windows Installer service should drive the entire installation. All project control is defined in Windows Installer tables or custom actions. InstallScript control is not available before or after the Windows Installer service is invoked. Projects created using InstallShield—Windows Installer Edition versions 1.x and 2.x used this format. Upgrading InstallShield Professional Projects InstallShield Developer is based on Windows Installer technology. When you open a setup project created with InstallShield Professional, your project is automatically upgraded so you can immediately work with your project in the InstallShield Developer installation development environment (IDE). If you have a setup project that was created using an earlier version of InstallShield Professional (prior to version 5.5), you need to upgrade that project to 5.5 before upgrading to InstallShield Developer. If you have a pre-5.5 project, visit the Upgrading to Developer Web site (http://support.installshield.com/help/isd/upgrade/default.asp) for assistance with upgrading your project. Projects created using versions of InstallShield Professional were composed of several .ini files referenced by an .ipr file. In InstallShield Developer, your setup project is one file—an .ism file. InstallShield Software Corporation Standard vs. Basic MSI Setup Projects • 3-3 Opening Your Setup Project To open an InstallShield Professional project: 1. Click the Open File button on the toolbar. 2. From the Open dialog, select a project file (.ipr) from the window. 3. Click Open to open the project in the IDE. Your project opens in the IDE 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. After you upgrade your setup project, you can use views in the InstallShield Developer IDE and the Direct Editor to modify your project settings. Project Element Changes Because of the differences in the architecture of InstallShield Professional and that of InstallShield Developer, the elements of your upgraded setup project might translate to different properties in InstallShield Developer. Scripts When you upgrade a project created in InstallShield Professional, your scripts undergo several changes. Backup Copy Before InstallShield Developer converts your project, it automatically creates and saves a backup copy of your original setup script with the extension .bak. Lexicon Change • Function Names—In InstallShield Professional, many of the function names began with the word “Component.” After you upgrade your project, these function names begin with “Feature.” This is because the way in which components were used in InstallShield Professional corresponds to how features are used in InstallShield Developer. This lexicon change occurs only in .rul and .h files that are contained in your Script Files folder. Script files that you include in your setup project using the #include statement are not affected automatically by the lexicon change. InstallShield Developer does not automatically perform a lexicon change on #include files because these files might be shared with other projects that use InstallShield Professional. You should use the new function names in your upgraded setup project and in any new projects. The deprecated function names are not color-coded in your script. • System Variables—When you upgrade your setup project, all of your project’s system variables are mapped to standard directories. See “Build and System Variable Changes” on page 3-9 to learn more. • InstallScript View—The InstallScript View contains all of your script. This view functions similarly to the Scripts pane in InstallShield Professional. 3-4 • Upgrading Projects InstallShield Software Corporation • Order Dependencies—In InstallShield Developer, some functions must occur in a specific order contingent to other functions. For example, CreateShellObjects must be called before file transfer. In 5.5, file transfer was handled by ComponentMoveData and in 6.x, file transfer occurred after the OnMoving event. In addition, CreateRegistrySet and CreateShellObjects must be executed before FeatureMoveData is called. • OnInstallingFile Event—The OnInstallingFile event was used in InstallShield Professional 6.x. In InstallShield Developer, this event is replaced by the OnInstallingFilesActionBefore and OnInstallingFilesActionAfter events. • Unavailable Functions—There are some functions that were available in InstallShield Professional, but are unavailable in InstallShield Developer. When you upgrade your project, InstallShield Developer detects if unavailable functions occur in your script. A warning is displayed in the output panel if unavailable functions are detected. Lexicon Conversion Terminology Change In InstallShield Professional, the functional building blocks of your installation from the end user’s perspective were called components. With InstallShield Developer, these building blocks are called features. Because of this change in terminology, a number of InstallScript function names have also changed. When you upgrade a project that you created using InstallShield Professional, some items in your script might undergo a lexicon change or be aliased. Function Names 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. Consult the online help for specific information about each Feature Function. Component Function Feature Function ComponentAddItem FeatureAddItem ComponentCompareSizeRequired FeatureCompareSizeRequired ComponentDialog FeatureDialog ComponentError FeatureError ComponentErrorInfo FeatureErrorInfo ComponentFileEnum FeatureFileEnum ComponentFileInfo FeatureFileInfo ComponentFilterLanguage FeatureFilterLanguage InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-5 Component Function Feature Function ComponentFilterOS FeatureFilterOS ComponentGetData FeatureGetData ComponentGetItemSize FeatureGetItemSize ComponentGetTotalCost FeatureGetTotalCost ComponentInitialize FeatureInitialize ComponentIsItemSelected FeatureIsItemSelected ComponentListItems FeatureListItems ComponentMoveData FeatureMoveData ComponentReinstall FeatureReinstall ComponentRemoveAll FeatureRemoveAll ComponentSaveTarget FeatureSaveTarget ComponentSelectItem FeatureSelectItem ComponentSetData FeatureSetData ComponentSetTarget FeatureSetTarget ComponentSetupTypeEnum FeatureSetupTypeEnum ComponentSetupTypeGetData FeatureSetupTypeGetData ComponentSetupTypeSet FeatureSetupTypeSet ComponentTotalSize FeatureTotalSize ComponentTransferData FeatureTransferData SdComponentDialog SdFeatureDialog SdComponentDialogAdv SdFeatureDialogAdv SdComponentMult SdFeatureMult SdComponentTree SdFeatureTree System Variables The system variables that you used in projects created using InstallShield Professional are converted to standard directories in InstallShield Developer. The 3-6 • Upgrading Projects InstallShield Software Corporation table below shows how the variables are mapped to the directories. Consult the online help for specific information about standard directories. System Variables Standard Directories <COMMONFILES> [CommonFilesFolder] <PROGRAMFILES> [ProgramFilesFolder <FOLDER_DESKTOP> [DesktopFolder] <FOLDER_PROGRAMS> [ProgramMenuFolder] <FOLDER_STARTMENU> [StartMenuFolder] <FOLDER_STARTUP> [StartupMenu] <SRCDIR> [SourceDir] <TARGETDIR> [INSTALLDIR] <WINDIR> [WindowsFolder] <WINSYSDIR> [SystemFolder] <WINSYSDISK> [WindowsVolume ComponentFileInfo (FeatureFileInfo) Flags Flags that you used with the ComponentFileInfo (now FeatureFileInfo) function in InstallShield Professional are converted to reflect their use with features in InstallShield Developer. Deprecated Flag New Flag COMPONENT_FIELD_DISPLAYNAME FEATURE_FIELD_DISPLAYNAME COMPONENT_FIELD_DESCRIPTION FEATURE_FIELD_DESCRIPTION COMPONENT_FIELD_HTTPLOCATION FEATURE_FIELDHTTPLOCATION COMPONENT_FIELD_FTPLOCATION FEATURE_FIELDFTPLOCATION COMPONENT_FIELD_IMAGE FEATURE_FIELD_IMAGE COMPONENT_FIELD_MISC FEATURE_FIELD_MISC COMPONENT_FIELD_SELECTED FEATURE_FIELD_SELECTED COMPONENT_FIELD_SIZE FEATURE_FIELD_SIZE COMPONENT_INFO_LANGUAGE FEATURE_INFO_LANGUAGE COMPONENT_INFO_OS FEATURE_INFO_OS COMPONENT_INFO_ORIGSIZE FEATURE_INFO_ORIGSIZE InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-7 Deprecated Flag New Flag COMPONENT_INFO_COMPSIZE FEATURE_INFO_COMPSIZE COMPONENT_INFO_DATE FEATURE_INFO_DATE COMPONENT_INFO_DATE_EX FEATURE_INFO_DATE_EX COMPONENT_INFO_TIME FEATURE_INFO_TIME COMPONENT_INFO_ATTRIBUTE FEATURE_INFO_ATTRIBUTE COMPONENT_INFO_VERSIONMS FEATURE_INFO_VERSIONMS COMPONENT_INFO_VERSIONLS FEATURE_INFO_VERSIONLS COMPONENT_INFO_VERSIONSTR FEATURE_INFO_VERSIONSTR Project Settings Changes The project settings contain basic information about your project—for example, the languages that are supported by your setup are stored in the project properties. Imported Properties The following table explains how project settings are imported into your new InstallShield Developer project. 3-8 • Upgrading Projects InstallShield Professional InstallShield Developer Property Location in InstallShield Developer Product Name Product Name This property is stored in the Product Properties view. Author Setup Author Name This property is located under Project Properties. URL Publisher/Product URL, Support URL, and Product Update URL All three of these properties are located under Windows 2000. InstallationGUID Product Code This property is located under Product Properties. Version Product Version This property is located under Product Properties. Company Publisher This property is located under Windows 2000. Languages Setup Languages This property is located under Project Properties. InstallShield Software Corporation If your setup project has support for additional languages and you do not have language packs installed when you upgrade your setup project, the additional languages are migrated at upgrade time, but support is not present when you open the upgraded project in the IDE. To activate support for the additional languages, you need to install the corresponding language pack and select the supported languages from the Setup Languages property. Properties That Are Not Imported InstallShield Developer does not use the following properties, so they are not imported when you upgrade your project: • • • • Information Tab—Development Environment, Notes, Category, Description Owner Tab—Department, Email, Summary, Copyright Information Tab—No information from this tab is imported. Operating System Tab—No information from this tab is imported. Windows Installer supports all 32-bit platforms and beyond. String Tables Changes All string table entries that you created in InstallShield Professional are imported into your InstallShield Developer project. For example, if you have a string table entry for a component’s display name, it is added to your new InstallShield Developer string table, using the same identifier that you specified in your original project. In InstallShield Professional, string tables were stored externally in .txt files (one per language) and you could send those files out for translation. In InstallShield 7.0, your project’s string tables are stored internally in the project file. Because of this, you must export your string table to a .txt file before sending the file out to be localized. When the file is translated, you must import the .txt file into your project. You can do one of the following to import and export your string tables: • In the String Tables view, right-click on your string table and select “Export String Table...” from the context menu. • Use the Automation interface. Build and System Variable Changes Build variables and system variables allow you to specify a directory without having to hard-code the path. Build variables are used during design time to point to specific directories. For example—when building your setup—if you want to point to a file in the system folder, such as Notepad.exe, you could enter <WINDIR> for the path to the file. These types of variables are equivalent to InstallShield Developer’s path variables. System variables are used at run time to point to specific directories. In this case, the same variable, <WINDIR>, can be used to place a file on the target machine, rather than pulling a file from the build machine and placing it in the setup. In InstallShield Developer, these variables map to standard directories, which are surrounded by square brackets. InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-9 Mapping Build Variables to Path Variables The following table shows how InstallShield Professional build variables are mapped to InstallShield Developer path variables: InstallShield Professional InstallShield Developer <COMMONFILES> <CommonFilesFolder> <PROGRAMFILES> <ProgramFilesFolder> <WINDIR> <WindowsFolder> <WINSYSDIR> <SystemFolder> Standard Variables Standard Path Variables Registry Variables Registry Path Variables Environment Variables Environment Path Variables Mapping System Variables to Standard Directories When you upgrade your setup project, the system variables used in your script are mapped to standard directories. A lexicon change takes place within your script at upgrade. If—after upgrading your project—you use deprecated system variable names in your script, the script compiles, but the variables are not color coded. System variables are mapped to standard directories as follows: 3-10 • Upgrading Projects InstallShield Professional InstallShield Developer <COMMONFILES> [CommonFilesFolder] <FOLDER_DESKTOP> [DesktopFolder] <FOLDER_PROGRAMS> [ProgramMenuFolder] <FOLDER_STARTMENU> [StartMenuFolder] <FOLDER_STARTUP> [StartupFolder] <PROGRAMFILES> [ProgramFilesFolder] <SRCDIR> [SourceDir] <TARGETDIR> [INSTALLDIR] <WINDIR> [WindowsFolder] <WINDISK> [WindowsVolume] InstallShield Software Corporation InstallShield Professional InstallShield Developer <WINSYSDISK> [WindowsVolume] <WINSYSDIR> [SystemFolder] Script Variables Directory or Property How Upgrading Affects Components The word component is used differently in InstallShield Professional than it is in InstallShield Developer. In InstallShield Professional, the setup hierarchy is as follows: Setup types contain components, which contain file groups, which, in turn, contain files. In InstallShield Developer, setup types are the highest level of organization. Setup types contain features. Features contain components and components contain files. The following table illustrates how the structures correlate. InstallShield Professional InstallShield Developer Components Features File groups Components Files Files For every component that you have in your InstallShield Professional project, a feature is created in your InstallShield Developer project. The following component properties are converted to InstallShield Developer feature properties. InstallShield Professional InstallShield Developer Upgrade Notes Component Name Feature Name This name might not migrate exactly as entered in your project due to certain restrictions on feature names in Windows Installer. For example, you cannot have a space in a feature name. Therefore, a name like “Program Files” is altered to conform to InstallShield Developer’s standards. Additionally, feature names must be unique in InstallShield Developer, whereas in InstallShield Professional, you could have two components with the same name. Display Name Display Name If this name is included in your string table, that string table entry is imported to InstallShield Developer. InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-11 InstallShield Professional InstallShield Developer Upgrade Notes Description Description If this description is included in your string table, that string table entry is imported to InstallShield Developer. Comment Comment The comments entered in your previously created project are imported into your InstallShield Developer project. Target Destination If you used any variables, such as <WINDIR>, those variables are converted to their InstallShield Developer equivalents, as described in “Build and System Variable Changes” on page 3-9. In InstallShield Professional 6.0, the destination property is set at the file group level, not the component level. Regardless of whether your project set the destination at the component or file group level, this property is imported to your upgraded project’s component destination property. Visible Display If the Visible property was set to Yes, the Display property is set to Visible and Collapsed. If the Visible property was set to No, the Display property is set to Not Visible. Required Required Feature This property is imported directly. File Groups Effects File groups are the smallest unit of organization in InstallShield Professional, while components are the smallest unit of organization in InstallShield Developer. The differences between components in InstallShield Professional software and components in InstallShield Developer are outlined in the section “How Upgrading Affects Components” on page 3-11. Destination In InstallShield Developer, all files within a component must share a common destination. In InstallShield Professional, however, that was not the case. You could have files go to many different directories—all located within one file group. As a result, your previously created file groups do not always have a one-to-one relationship with the components created after you upgrade to InstallShield Developer. When a file group is imported, all files with the same destination are grouped into common components. Therefore, if you have three different destinations specified for files 3-12 • Upgrading Projects InstallShield Software Corporation within your file group, you will have three components after you upgrade to InstallShield Developer. Registry Data With InstallShield Professional, each file group could have registry data attached to it. Since those file groups are potentially split among several components in InstallShield Developer, that registry data is included only in the first component that is created from your file group. The remaining components do not contain that registry data. This filtering reduces redundant registry data when installing the product. File Group Properties The following describes how file group properties are imported into InstallShield Developer: InstallShield Professional InstallShield Developer Upgrade Notes Self-Registered Self-Register The Self-Register property is set at the file level. Right-click on a file and select Properties from the context menu. The Self-Register property is on the General tab. Comment Comments This property is located in the Components view. Languages Languages This property is located in the Components view. Shared Shared In InstallShield Professional, if a file group is marked as Shared, then all the files in that file group are marked as shared. In InstallShield Developer, if a component’s Shared property is Yes, only the key file is marked as shared. When you upgrade, if your file group is marked as shared, a warning appears in the output pane. To increment the shared reference count for multiple files, each file requires its own component and the file must be the key file in its component. Note that this property applies only to the key file in a component. InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-13 InstallShield Professional InstallShield Developer Upgrade Notes Uninstall Permanent In InstallShield Professional, if this property is set to no, the file group is never uninstalled. This property is imported to the Permanent property at the component level. If Uninstall is set to No, then Permanent is set to Yes. If Uninstall is set to Yes, Permanent is set to No. Destination Destination Applies to projects created using InstallShield Professional 6.x (in 5.x, Destination was set at the Component level). In either case, Destination in InstallShield Developer is set at the component level. Default values are provided for the rest of your component properties, just as if you were creating a new component in InstallShield Developer. Registry Data Effects When you upgrade a setup project created in InstallShield Professional to InstallShield Developer, your registry data is imported completely. In previous versions, registry data is usually associated with a specific file group. If this is the case, that registry data is migrated into the new component created from the file group. In InstallShield Developer, registry data must be associated with a component. If that file group is split across multiple components due to multiple destinations, the registry data is added only to the first component created as a result of the migration. If your registry data is not associated with any file group, that data is added to a component that resides under a feature called OtherUpdatedFeature. This might result in registry data not being installed on the target system if Windows Installer does not install the component containing the registry data. If this is a possibility, you should create a component for your registry data (containing only the registry data and no files) and make sure that the component is always installed by putting the component in a feature and setting the feature’s Required property to Yes. (Note: Export the registry information to a REG file and import it into a new component.) Shortcut Effects All shortcut information that relates to the Windows Explorer shell is imported into InstallShield Developer when you upgrade a setup project that you created in InstallShield Professional. However, shortcuts created for the Program Manager 3-14 • Upgrading Projects InstallShield Software Corporation shell (16-bit platforms) are not imported because Windows Installer supports only 32-bit platforms and above. The same thing that can happen to registry data can happen to shortcuts if a component is not installed and the shortcut is contained in that component. Create a shortcut into its own component and make sure that the shortcut is always installed. In InstallShield Developer, the shortcut should be in the same component as the file to which it is pointing. Media Information Effects In setup projects created in InstallShield Professional, you created medias to release to your end users. When you upgrade your project to InstallShield Developer, all of your medias are converted into releases. Each media that you built for your previously created project becomes a separate release when you upgrade. In InstallShield Professional, as you created medias, there was a Media folder with a separate folder created underneath it for each media you created (for example, MyMedia1, MyMedia2). In InstallShield Developer, the releases are stored internally in the project file. Each media from your project is imported as a release. When you upgrade your project, InstallShield Developer creates a product configuration with the same name as your media and then creates a release—beneath the product configuration—with the same name. File Compression In 5.5, you had option to set the Data As Files property (in the Media wizard) to indicate that you want the entire build to be uncompressed. If this option is set, InstallShield Developer imports this to the Compression property for the release. In 6.x, in addition to specifying Data As Files, you could opt to compress some components and not others. This data is imported directly into the InstallShield Developer project. Component Filtering In the InstallShield Professional 6.x Media wizard, you could elect to include only specified components in a media using the Components panel of the Media wizard. The concept of a media-level filter does not exist in InstallShield Developer. Instead, you can use release flags to indicate which pieces you want to include in your builds. When you upgrade your project, InstallShield Developer creates a release flag with the same name as the media and this release flag is set on the feature that is to be included in a specific release. The Release Flag property of the release is also set with the same media name. Media Types In InstallShield Professional, you could select from several different media types. InstallShield Developer imports the following media types: custom media type, CDROM, internet (One-Click Install), 1.44 MB floppy, single-image (.exe), and 2.88 MB floppy. InstallShield Software Corporation Upgrading InstallShield Professional Projects • 3-15 Languages In InstallShield Professional and in InstallShield Developer, you have the option to enable the language dialog when you build a release. This property is imported directly to the Languages Dialog property in the Releases view. In addition, the languages you have selected for the UI and the default language are imported directly to the corresponding properties in the Releases view. Setup Type Effects Setup types—including custom setup types—in projects created using InstallShield Professional are imported directly into InstallShield Developer. The only difference is that—instead of including components—your setup types include features. Both the Display Name and the Description properties in the Setup Types view are populated using information from your setup project. Any comments you might have entered are not imported because InstallShield Developer does not use this property. Build Settings Effects The Build Settings panel contains instructions indicating how the compiler should behave when your setup is being built. This panel contains three tabs: Run/Debug, Compile, and Variables. The information from the Build Settings panel is imported as follows: • Run/Debug—No information from the Run/Debug tab is imported into your InstallShield Developer project. • Compile—Information from the Compile tab can be found in the Compiler tab of the Settings dialog. To access this dialog, select Settings from the Project drop-down menu on the toolbar. • Variables—Information from the Variables tab can be found in the Path Variables view in 7.0. Aliasing 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 your upgraded project. To address this issue, InstallShield Developer uses aliasing to match the old name with a new identifier. InstallShield Developer does not perform a lexicon change for these names because they might be used as strings within your script. 3-16 • Upgrading Projects InstallShield Software Corporation ISAlias Table Aliasing information is contained in the ISAlias table in the Direct Editor. Column Name Information Alias Name string used in InstallShield Professional. Identifier String that is used by InstallShield Developer to reference the alias. Table Name of the table that uses the alias (for example, Feature). This table is available in the Direct Editor. Upgrade Warnings and Errors For comprehensive information about warnings and errors that may occur when you upgrade your InstallShield Professional project to InstallShield Developer, please consult the online help topics “Upgrade Warnings” and “Troubleshooting Upgrade Errors.” Upgrading InstallShield—Windows Installer Edition Projects If you have an InstallShield project (.ism file) that was created using InstallShield— Windows Installer Edition, that project is automatically upgraded to a Basic MSI project when you open it in InstallShield Developer. See “Converting a Basic MSI Project to a Standard Project” on page 3-18 to learn how to convert your upgraded project to a Standard project. 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. Any errors that result from the upgrade are displayed in the output panel at the bottom of the IDE. For information on these errors, see the online Help Library topic “Troubleshooting Upgrade Errors.” You can also upgrade your setup project when you build it from the command line. Use the -u parameter to upgrade your setup project from the command line without building it. InstallShield Software Corporation Upgrading InstallShield—Windows Installer Edition Projects • 3-17 Converting a Basic MSI Project to a Standard Project Converting your Basic MSI project to a Standard project allows you to take full advantage of the scripting capabilities available in InstallShield Developer. To convert your Basic MSI project to a Standard project, do the following: 1. Open your Basic MSI project in the IDE. 2. Select Convert to Standard Project from the Project drop-down menu. 3. Click Yes in the dialog that appears. This conversion is irreversible. After you convert your Basic MSI project to a Standard project and save it, you cannot convert your project back to a Basic MSI project. Because a Standard project uses resource-based dialog boxes—instead of using the MSI dialogrelated tables—no MSI-based dialog boxes from your original project will be available after the migration. 3-18 • Upgrading Projects InstallShield Software Corporation Using InstallShield Developer 4 Chapter Contents Setup Project File . . . . . . . . . . . . . . . . . . . . . . 4-3 InstallShield Developer provides a complete, easy-to-use installation development environment (IDE) for creating your setups. The IDE provides a checklist of steps that you need to consider as you author your setup. This chapter takes you through these steps and gives you the information you need to begin creating setups. InstallShield Software Corporation Tour of the IDE . . . . . . . . . . . . . . . . . . . . . . . Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying and Displaying Toolbars . . . . . Standard Toolbar . . . . . . . . . . . . . . . . . . Control Toolbar . . . . . . . . . . . . . . . . . . . Dialog Layout Toolbar . . . . . . . . . . . . . . MSI Debugger Toolbar . . . . . . . . . . . . . . Viewbar . . . . . . . . . . . . . . . . . . . . . . . . . . Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 4-3 4-3 4-3 4-5 4-6 4-7 4-7 4-7 4-8 Organize Your Setup . . . . . . . . . . . . . . . . . . . 4-8 General Information View . . . . . . . . . . . . . 4-9 Project Properties . . . . . . . . . . . . . . . . . 4-10 Summary Information . . . . . . . . . . . . . . 4-10 Windows 2000: Information Stored in the Add/Remove Programs Panel . . . . . . . . . . . . . . . . . . 4-10 Product Properties . . . . . . . . . . . . . . . . 4-11 String Tables . . . . . . . . . . . . . . . . . . . . 4-12 Subfeatures . . . . . . . . . . . . . . . . . . . . . 4-13 Feature Properties . . . . . . . . . . . . . . . . 4-14 Setup Types . . . . . . . . . . . . . . . . . . . . . . . 4-15 Default Setup Types . . . . . . . . . . . . . . . 4-15 Additional Setup Types . . . . . . . . . . . . . 4-16 4-1 Specify Application Data . . . . . . . . . . . . . . . Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . Merge Modules . . . . . . . . . . . . . . . . . . . . Objects vs. Merge Modules . . . . . . . . . . Associating Merge Modules with Features . . . . . . . . . . . . . . . . . . . . Dependencies . . . . . . . . . . . . . . . . . . . . . 4-16 4-17 4-19 4-19 Configure the Target System . . . . . . . . . . . . . Shortcuts/Folders . . . . . . . . . . . . . . . . . . . Creating a Shortcut . . . . . . . . . . . . . . . Shortcut Destinations . . . . . . . . . . . . . . Registry . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Registry Data to a Component . . ODBC Resources . . . . . . . . . . . . . . . . . . . INI File Changes . . . . . . . . . . . . . . . . . . . Environment Variables . . . . . . . . . . . . . . . 4-21 4-22 4-22 4-22 4-23 4-24 4-25 4-26 4-27 Design the User Interface . . . . . . . . . . . . . . . End-User Dialogs (Basic MSI Setup Project) Dialogs (Standard Setup Project) . . . . . . . . Editing a Dialog’s Layout . . . . . . . . . . . Reverting Back to the Default Dialog . . . Editing a Dialog’s Behavior . . . . . . . . . . 4-28 4-28 4-29 4-29 4-29 4-29 Customize Functionality . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . . . Files and Functions Nodes. . . . . . . . . . . Script Editor. . . . . . . . . . . . . . . . . . . . . Sequences/Actions . . . . . . . . . . . . . . . . . Sequences . . . . . . . . . . . . . . . . . . . . . . Actions . . . . . . . . . . . . . . . . . . . . . . . . Setup Files . . . . . . . . . . . . . . . . . . . . . . . . Billboards . . . . . . . . . . . . . . . . . . . . . . 4-30 4-31 4-31 4-31 4-32 4-32 4-33 4-33 4-34 Prepare for Distribution . . . . . . . . . . . . . . . . Build Your Release . . . . . . . . . . . . . . . . . . MSI Debugger . . . . . . . . . . . . . . . . . . . . . Distribute Your Release . . . . . . . . . . . . . . . 4-34 4-35 4-35 4-36 4-2 4-19 4-20 Advanced Views . . . . . . . . . . . . . . . . . . . . . Path Variables . . . . . . . . . . . . . . . . . . . . . Using Hard-Coded Paths . . . . . . . . . . . Using Path Variables . . . . . . . . . . . . . . Different Types of Path Variables . . . . . . The Property Manager . . . . . . . . . . . . . . . Setup Design . . . . . . . . . . . . . . . . . . . . . . Features . . . . . . . . . . . . . . . . . . . . . . . Components . . . . . . . . . . . . . . . . . . . . Merge Modules . . . . . . . . . . . . . . . . . . Files, Registry Data, and Shortcuts . . . . . Advanced Settings . . . . . . . . . . . . . . . . Sequences/Actions . . . . . . . . . . . . . . . . . Components . . . . . . . . . . . . . . . . . . . . . . Component-Feature Relationships . . . . . Direct Editor . . . . . . . . . . . . . . . . . . . . . . 4-37 4-37 4-37 4-37 4-38 4-39 4-40 4-40 4-40 4-41 4-41 4-41 4-41 4-42 4-42 4-43 InstallShield Software Corporation Setup Project File The setup project file is your central storage file for all of the information required to build your setup. The information that you enter into the various checklist steps is saved to this file, including your setup’s dialog boxes, application system requirements, and files. The setup project file provides a convenient interface between InstallShield Developer and compiled setups. Tour of the IDE This section discusses the IDE components and how you use them to create setups. The terms and concepts presented here appear throughout the remainder of this guide. Toolbars The installation development environment (IDE) offers several toolbars that provide quick access to frequently used menu items, and provide graphical tools for use in the Dialog Editor. The following toolbars are available in the IDE: • • • • Standard Control Dialog Layout MSI Debugger When you open InstallShield Developer, only the Standard toolbar is displayed. The Control and Dialog Layout toolbars appear when you work in the Dialogs view, and disappear when you leave that view. Modifying and Displaying Toolbars You can modify which toolbars are displayed and which buttons they contain from the Customize dialog (available via the Tools menu). You can also right-click on the toolbar area and select the toolbars you want to display. Standard Toolbar Below is a description of all the buttons in the Standard toolbar. All buttons are listed below. Clicking this button opens the Project wizard, which walks you through creating a setup. The New button allows you to create a blank Standard Project, Basic MSI Project, or Merge Module project. The Open button allows you to open project files or convert package files (.msi) to setup projects. The Save button saves your changes to the project file. InstallShield Software Corporation Setup Project File • 4-3 Click the Undo button in the Dialog editor or Script editor to reverse the last change you made. Click the Redo button in the Dialog editor or Script editor to restore the last action you reversed by clicking Undo. The Viewbar button allows you to hide or show the viewbar, which appears on the left side of the IDE. The Checklist button allows you to hide or show the checklist, which shows you all the steps involved in creating a setup. The Previous View button takes you to the view directly above the current view as shown in the checklist. The Next View button takes you to the view directly below the current view as shown in the checklist. The Back button takes you to the view you last visited in the history of your view selections. You can click this button multiple times, as long as there are multiple views in your view history. The Forward button takes you to the next view in the history of your view selections. You can continue clicking this button until you reach the view you were at when you first clicked the Back button. The Insert InstallScript Function button launches the Function wizard, which eases the process of writing built-in InstallShield functions. The Release Wizard button launches the Release wizard, which turns a project into either a shippable Windows Installer setup package or a completed merge module. The options you select in the wizard determine the layout and contents of your release. The Compile button allows you to compile your InstallScript files without building your entire setup. The Build button builds your release with default settings, or, if you have already built your release, rebuilds your release with the last saved settings. The Stop Build button cancels the current build process. The Test button allows you to run through the user interface portion of your setup without making any changes to your system. All custom actions are executed. This button is available only for Basic MSI projects. The Run button allows you to run your completed setup without leaving the IDE. Press the Debug InstallScript button to run the setup and debug any InstallScript custom actions it executes. This is different from debugging MSI packages. Pressing the Windows Explorer button launches Windows Explorer, which is useful for adding files in the Files view via drag-and-drop. Launches the installed version of DemoShield, or offers you the opportunity to install an evaluation copy. Push this button to navigate to the Help view where you can find answers to many of your questions regarding this product. 4-4 • Using InstallShield Developer InstallShield Software Corporation Control Toolbar The Control toolbar offers you a palette of every standard control available in a Windows Installer dialog. In previous versions of InstallShield software, it was not docked and available only as a toolbar. This toolbar is displayed when you edit a dialog’s layout in the Dialog editor. The Control toolbar contains all of the buttons listed below. To draw a control on a dialog, click the control’s 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’ve reached the intended dimensions of the control. The Select Tool allows you to give focus to a control on a dialog. You can then move, resize, delete, or align the control. Click the Check Box button to draw this control onto the dialog. Click the Push Button button to draw this control onto the dialog. Click the Edit Field button to draw this control onto the dialog. Click the Combo Box button to draw this control onto the dialog. Click the Text Area button to draw this control onto the dialog. Click the List Box button to draw this control onto the dialog. Click the Radio Button button to draw this control onto the dialog. A radio button must be added to a radio button group, below. Click the Bitmap button to draw this control onto the dialog. Click the Group Box button to draw this control onto the dialog. Click the Billboard button to draw this control onto the dialog. Click the Line button to draw this control onto the dialog. Click the Radio Button Group button to draw this control onto the dialog. Click the Selection Tree button to draw this control onto the dialog. Click the Progress Bar button to draw this control onto the dialog. Click the List View button to draw this control onto the dialog. Click the Scrollable Text button to draw this control onto the dialog. Click the Icon button to draw this control onto the dialog. Click the Directory List button to draw this control onto the dialog. InstallShield Software Corporation Tour of the IDE • 4-5 Click the Directory Combo button to draw this control onto the dialog. Click the Volume Cost List button to draw this control onto the dialog. Click the Volume Select Combo button to draw this control onto the dialog. Click the Masked Edit button to draw this control onto the dialog. Click the Path Edit button to draw this control onto the dialog. Click the Custom button to add a custom ActiveX control to the dialog. Dialog Layout Toolbar The Dialog Layout toolbar provides several tools for aligning and resizing controls in a dialog. This toolbar is displayed when you edit a dialog’s layout in the Dialog editor. 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 Dialog Layout toolbar contains all of the following buttons: 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. 4-6 • Using InstallShield Developer InstallShield Software Corporation Select a control and click the Send to Back button to place it behind any overlapping controls. See note below. Click the Toggle Grid button to place design-time grid lines on the dialog, or to remove the grid if it is present. The Bring to Front and Send to Back actions are not saved when you close and reopen your setup project. These actions are for use during design only. For example, you might have a dialog that displays different controls based on a condition. You can use the Bring to Front and Send to Back actions to work on these different controls while you are designing your dialog. MSI Debugger Toolbar Below is a description of all the buttons in the MSI Debugger toolbar. All buttons are listed below. Click this button to set a breakpoint on an action or dialog. Click this button to start debugging or, while debugging, to continue stepping through the setup. Click this button to step over the current action or dialog. Click this button to clear all breakpoints you have set in the MSI Debugger. Click this button to stop debugging. Viewbar The viewbar allows you to navigate through various views in InstallShield Developer. When you first open InstallShield Developer, the viewbar displays only three items: InstallShield Today, Help, and Best Practices. Above these items, a header bar reads “InstallShield.” This indicates that you are in the InstallShield viewbar. When you open an existing project or create a new project, two new viewbars appear in the viewbar area: Checklist Steps and Views. To toggle between the three viewbars, click the desired header bar and the viewbar displays the views for the selected header bar. Checklist The checklist is your guide to creating a setup. The checklist lists every view necessary for creating and testing your setup. In addition to serving as a navigational aid, the checklist also adds a check mark to the left of the view name once you have visited it. You can tell at a glance the views you have already visited, and the ones you still need to visit. InstallShield Software Corporation Tour of the IDE • 4-7 Views When creating your setup, you do the majority of work in views. The views are organized into six steps, where each step is a logical group of information that is required to build a functional setup. To display a view, you can either click on the name of the view in the Views viewbar or in the Checklist. Below are the steps to consider when you create a project, and the corresponding views where you can complete these steps. Organize Your Setup The first step in building anything is to lay a solid foundation. The base of your setup is formed by specifying application information through the General Information view, creating features in the Features view, and specifying setup types in the Setup Types view. Figure 4-1. Organize Your Setup view. 4-8 • Using InstallShield Developer InstallShield Software Corporation General Information View The General Information view is where you set global project properties such as the application name and support information. Most of the properties in this view are optional. Your setup will work properly if you accept the defaults or do not provide any values for the optional properties. Some of the information 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 setup properties. However, the following properties are required: Title, Subject, Product Name, Publisher, Product Code, Upgrade Code, and Destination Folder. Whenever you start a new project, you must set its General Information properties. InstallShield Developer creates new projects with default settings, but you should set your own properties at the start of your work so that the project includes data specific to your needs. The General Information view contains the following sub-views: • • • • • • Project Properties Summary Information Stream Windows 2000 Product Properties Merge Module Properties (only for Merge Module projects) String Tables InstallShield Software Corporation Organize Your Setup • 4-9 Project Properties InstallShield Developer 7.0 stores your project settings in a single setup project file (.ism file). This file stores all of the information about your project. In the Project Properties view, you can edit basic information about your setup project—including the setup author’s name, setup languages, and any comments you want to include. Because the project file is in a binary format, edit your project settings only in the IDE or with the automation interface. Summary Information Overview Windows Installer databases (.msi and .msm files) are implemented as COM structured storage, and every COM structured storage file contains a Summary Information stream. The Summary Information Stream view of the IDE allows you to populate the Summary panel for your setup package. This panel contains information about your company and the product being installed. To view the Summary information for an .msi or .msm file: 1. Right-click the .msi or .msm file and select Properties from the context menu. 2. Click the Summary tab to view the summary information. Properties To set the properties in the Summary panel, click General Information on the checklist. Next, click Summary Information Stream to display its property sheet to the right. The property sheet contains the following properties: • • • • • • • • Title Subject Author Keywords Package Code Template Summary Comments Schema Windows 2000: Information Stored in the Add/Remove Programs Panel The Windows 2000 Add/Remove Programs panel differs from previous Windows operating systems in many ways. Depending on how the Windows Installer setup is configured, the user has the option of removing, repairing, or changing the installation with the click of a button. 4-10 • Using InstallShield Developer InstallShield Software Corporation Windows 2000 users can see information in the Add/Remove Programs panel not available on previous platforms. With this information, it is easier for your end users to find technical support links and telephone numbers, product update information, and information about your company. In order to achieve logo compliance, you will need to provide this information to your users. To set your project’s Windows 2000 properties, navigate to the General Information view and select the Windows 2000 icon. Each property is listed below: • • • • • • • • • • • • Display Icon Disable Change Button Disable Remove Button Disable Repair Button Publisher Publisher/Product URL Support Contact Support URL Support Phone Number Read Me Product Update URL Windows 2000 Comments Product Properties A product is the top level of organization in a setup project. The setup is further divided into features and components, which are subsets of your product. Although a setup can contain multiple features and components, it can have only one product. A default product is created for you when you start a new setup project. To view this product’s properties, click the Product Properties icon on the tree. These properties contain information such as the product name, the product code (GUID), and the application version. You must set the product properties before you proceed. In addition, you must populate all properties with valid values in order to comply with Windows logo guidelines. Products contain the following properties: • • • • • • • Product Name Product Version Application Type Product Code Upgrade Code Install Condition INSTALLDIR (Default Product Destination Folder) InstallShield Software Corporation Organize Your Setup • 4-11 String Tables A string table stores string identifiers, values, and comments for a single language. Using identifiers from the string tables—which can be exported to text files and translated into additional languages—instead of hard-coded strings helps you globalize your setup. The string tables are found in the General Information view: 1. Click the General Information shortcut on the checklist to navigate to the String Tables view. 2. Expand the String Tables folder in the Project explorer to view all of the string tables. When you open any new project, you will see a string table for each supported language. InstallShield provides all of the default string table entries necessary for the standard end-user dialogs and other user interface elements. Each one begins with IDS_. You will also see the string table for the default language while you are working throughout the IDE, such as in the shortcut Description property. You can edit this string table the same as you would the default language’s string table in the Project view. For more information, see the topic “Edit String Table Entries” in the online Help Library. Except for InstallScript custom actions, the string tables and identifiers themselves are not available at run time. When you run a release, InstallShield resolves all of the string values for the language in which the setup is running and writes only the values necessary for the current language into the setup package. 4-12 • Using InstallShield Developer InstallShield Software Corporation Features A feature is a building block of an application from the end user’s perspective. It represents a specific capability of your product—such as its help files or a part of a product suite that can be installed or uninstalled based on the end user’s selections. Your entire application should be divided into features that perform a specific purpose. Figure 4-2. Features view. Subfeatures Subfeatures are further divisions of a feature. Since features should be self-contained elements of an application or application suite that a user can selectively install, it might make sense for you to organize portions of your application as subfeatures of a “parent” feature. If all features are visible, your end user can then select which portions of a feature to install in the custom Setup Type dialog that corresponds to your project type. • Basic MSI Project—Custom Setup • Standard Project—SdFeatureDialog2, SdFeatureMult, or SdFeatureTree Although you can create many levels of subfeatures, you should keep the design as simple as possible for organizational purposes. InstallShield Software Corporation Organize Your Setup • 4-13 Feature Properties Feature Properties for Both Basic MSI and Standard Projects All features have the following properties, which you can edit to suit the needs of your setup. • • • • • • • • • • • Display Name Description Remote Installation Destination Install Level Display Advertised Required Release Flags Condition Comments Additional Feature Properties for Standard Setup Projects The following properties apply only to Standard setup projects. • • • • • • • • 4-14 • Using InstallShield Developer FTP Location HTTP Location Miscellaneous Required Features OnInstalling OnInstalled OnUninstalling OnUninstalled InstallShield Software Corporation Setup Types Setup types allow you to provide different versions of your setup to your end users. For example, the three default setup types are Typical, Compact, and Custom. Typical might install all or most of the files included in your setup. Compact installs only those files necessary for your application to run. Such things as multimedia demos are not installed in order to preserve hard disk space. The custom setup type allows the end user to select which features are installed. Figure 4-3. Setup Types view. Setup types are based on features. You select the features you would like to associate with each setup type. Then, when an end user selects a certain setup type, only those features you associated with that setup type are installed. Default Setup Types • Compact—The Compact setup type usually only includes those features absolutely necessary in order for your application to run. This setup type is designed for those people who have limited disk space, such as notebook computers. • Typical—The Typical setup type normally includes most, if not all, of a program’s features. For example, if your setup includes multimedia tutorials, they would be included as part of the Typical setup. • Custom—The Custom setup type allows end users to select which features they would like to install. Required features should be marked as such, to ensure that they are always installed. However, features such as the online help may not need to be installed. In these cases, the end user can select which of the features are unnecessary to install. InstallShield Software Corporation Organize Your Setup • 4-15 Additional Setup Types You can create additional setup types in this view. See the topic “Working With Setup Types” in the online Help Library to learn how to add setup types to your project. The Setup Types view is available only for Standard setup projects. If your setup is a Basic MSI installation, the Setup Types view does not appear in the IDE. To create setup types for Basic MSI setup projects, make use of the feature’s Install Level property. Specify Application Data Application data includes all the files you are adding to your setup. Files can be added using the Files view, using merge modules, or by scanning your executables for dependencies. Figure 4-4. Specify Application Data view. 4-16 • Using InstallShield Developer InstallShield Software Corporation Files The main purpose of most setup programs is to transfer files from the source medium to the target destination. With InstallShield, adding files to your setup is a simple drag-and-drop process. Figure 4-5. Files view. New components may be created for you to properly handle the files you add. Therefore, select the feature with which you want to associate any newly created components. To set the feature, change the value of the list box at the top of the screen until it matches the feature you would like to use. If no features exist, you have the option of creating one when you first add files in this view. Additionally, you can change the component/feature relationship by right-clicking on a component and selecting Properties. Then, click the Features tab to make the necessary changes. You can add files to your setup project in one of three different ways. Each of these methods is described below: Drag and Drop The most straightforward way to add files to your setup project is by using the Files explorer in the Files 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 frame to the destination folder in the bottom frame. 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 setup. Every time you build your setup, the contents of the folder are added to your feature. InstallShield Software Corporation Specify Application Data • 4-17 Additionally, you can use wildcards to filter which files are added to your setup. See the topic “Adding Files Dynamically” in the online Help Library for more information. Dependency Scanning The final way to add files to your setup is accomplished through the Dependencies 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. Additional Information Setup Best Practices When you add files to your setup in this view, components are created according to Setup Best Practices. For example, all portable executable files (.exe, .dll, .ocx files) are given their own component. All other files are added to the default component for each destination directory. However, if you drag files directly to one of the components listed under a destination folder, the Setup Best Practices rules are ignored. Key Files A key file is a file that the Windows Installer uses to detect the component’s presence. If the key file is in its proper location, the installer assumes that the entire component is installed correctly. 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, rightclick on a component in the Destination pane of the Files view and select Go to Advanced Components View. Refresh the View To refresh any of the panes in the Files view, give focus to the pane you want to refresh and press F5. 4-18 • Using InstallShield Developer InstallShield Software Corporation 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 Visual Basic® run-time DLLs. Instead of having to include the file in a component and figure out its installation requirements, you can simply attach the Visual Basic Virtual Machine merge module to one of your project’s features. Figure 4-6. Merge Modules view. Objects vs. Merge Modules Objects are essentially merge modules that require special customization in order to work properly. For example, the Access object included with InstallShield requires customization through the Access 97 Object wizard. As soon as you add an object to your setup, its customization wizard appears. You can either customize your object at the time you add it, or cancel the wizard and customize your object later by right-clicking on the object and selecting Configure. Associating Merge Modules with Features To associate a merge module with a feature: 1. Navigate to the Merge Modules view and select the module you want to add to your setup. 2. Select the feature or features to which you would like to add this module. A merge module must be associated with a feature in order to be installed. You can associate a single merge module with as many features or subfeatures as may require it. If no features exist in your setup when you attempt to add a merge module, the Create a New Feature dialog displays, allowing you to create a feature. If you do not create a feature, no modules can be added to your setup. InstallShield Software Corporation Specify Application Data • 4-19 You should not alter another company’s merge module. Dependencies A file often relies on functions in other files to perform a task. However, you may not be aware of all these other files, known as dependencies, when you include your application’s files in your setup project. Figure 4-7. Dependencies view. To help you identify dependencies, InstallShield offers three dependency scanners that automatically add these files to your setup. • The Static Scanner looks at many of the files you have in your setup and checks for any dependencies they may require. • The Dynamic Scanner 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 Import Visual Basic Project scanner scans your Visual Basic project for all dependencies and adds them to your setup project. Any files that are added to your setup through one of these scanners are added in accordance with Setup Best Practices. 4-20 • Using InstallShield Developer InstallShield Software Corporation Configure the Target System Every setup changes the target system in some way. The simplest setups merely copy files. More in-depth setups make registry changes, edit .ini files, or create shortcuts. InstallShield Developer provides the following subviews for making advanced configurations: Figure 4-8. Configure the Target System view. InstallShield Software Corporation Configure the Target System • 4-21 Shortcuts/Folders The Shortcuts/Folders view provides a simple, visual way to create your shortcuts. Unlike when you create shortcuts in the Setup Design view, you do not need to create a feature or component before you create a shortcut in the Shortcuts/Folders view. If a component does not already exist, InstallShield Developer automatically creates one for you and your new shortcut belongs to this component. You can change the component to which this shortcut belongs by changing the shortcut’s Component property. Figure 4-9. Shortcuts/Folders view. Creating a Shortcut To create a shortcut: 1. Right-click on one of the destination directories. 2. Select New Shortcut from the right-click menu. Your shortcut appears with a default internal name. This name is not displayed to end users, but you might want to change it to something that is relevant to your project. To rename a shortcut: 1. Select the shortcut and press F2. 2. Type the new name. Shortcut Destinations In the Shortcuts view, there is a set of predefined destination folders under which you can create shortcuts and subfolders. By default, InstallShield offers four standard shortcut destinations. The shortcut destinations are described below. 4-22 • Using InstallShield Developer InstallShield Software Corporation Programs Menu and Startup The first two destinations—Programs Menu and Startup—are located in the Start menu. The Programs Menu folder is the industry standard and Microsoft’s suggested method. The Startup folder should contain shortcuts to only those items that need to be launched whenever Windows starts. Send To The third option, the Send To folder, is accessed when a user right-clicks on a file. In the right-click menu is a folder called Send To. If you create a shortcut for your program in this folder, an end-user can click on any file and send it to your program. For example, you might want your end user to be able to open an HTML page in Notepad. If you created a shortcut to Notepad in the Send To menu in the Shortcuts explorer, the end user could right-click on an HTML file and select Notepad from your Send To menu. The source file for that page opens in Notepad. Desktop The final shortcut location is the end user’s desktop. When you create a shortcut in the desktop folder, your program’s icon is displayed on the end user’s desktop. The desktop is the most visible place to put a shortcut, but too many shortcut icons can clutter the end user’s desktop. Registry InstallShield makes the task of modifying the end user’s registry more familiar with the InstallShield Registry editor. Use the editor to create keys and values in much the same way that you use the Windows Registry Editor. Figure 4-10. Registry view. InstallShield Software Corporation Configure the Target System • 4-23 All registry data must be associated with a component. This way, if the component’s feature is selected for installation, the component’s registry data are set up on the target system. Adding Registry Data to a Component In the Component list box on the top of the Registry view, select the component to which you want to add registry data. If you do not yet have a component created, or you would like to add registry data to a new component: 1. Click the ellipsis button next to the list box to display the Browse for a Component dialog. 2. Click the New Component button to create a component. 3. Rename your component. 4. Click Open to have this component selected in the Registry view. To refresh this view, press F12. The installer automatically creates certain registry entries based on values you provide for your project and product properties. These informational keys are required by Windows logo guidelines. Also, all of a component’s advanced settings are used to register files on the target system. 4-24 • Using InstallShield Developer InstallShield Software Corporation ODBC Resources One of the more complex areas of system configuration involves setting up ODBC drivers, data source names (DSNs), and translators. The ODBC resource must be properly registered on the system with all of the required attributes and, in the case of drivers and translators, install the necessary files, including any setup DLL. This process is greatly simplified in the ODBC Resources view, in which you can select the drivers, data sources, and translators installed on your development system. Figure 4-11. ODBC Resources view. 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 Objects/Merge Modules view. InstallShield Software Corporation Configure the Target System • 4-25 INI File Changes Editing .ini files found on the target system can be hazardous, especially if those .ini files are used by the operating system for standard functionality, such as Boot.ini. With InstallShield Developer, .ini file changes can be performed in the IDE. Figure 4-12. INI File Changes view. Editing an .ini file involves three steps: 1. Create an INI file reference. 2. Add a section to an INI file. 3. Add a keyword to an INI file. Before you can create an .ini file reference, you must have at least one component created. If you no components exist when your .ini file reference is created, the Create a New Component dialog is displayed, allowing you to create a component. 4-26 • Using InstallShield Developer InstallShield Software Corporation Environment Variables Environment variables are name and value pairs that can be set on the target system with your installation program and can be accessed by your application and by other running programs. Figure 4-13. Environment Variables view. In the Environment Variables view, you can create, set (or modify), and remove environment variables on the target system via your installation program. To specify environment variable properties, navigate to the Environment Variables view by clicking the link on the checklist or selecting Environment variables from the Configure the Target System submenu of the Go menu. 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. InstallShield Software Corporation Configure the Target System • 4-27 Design the User Interface The appearance of your setup is one of the main aspects that differentiates you from your competition. You can easily customize the way your setup looks and behaves. Using the Dialogs view, which is different between Standard and Basic-MSI projects, you can design your own dialogs for use during your setup. Figure 4-14. Design the User Interface view. End-User Dialogs (Basic MSI Setup Project) The resources for all of your end-user dialogs are defined in the Dialogs view. Click the Dialogs shortcut on the checklist to navigate to this view. All of the dialogs in your Basic MSI project are found in the User Interface explorer under the All Dialogs folder. When you start a new Basic MSI setup project, InstallShield Developer 7.0 provides a series of default dialogs for the two User Interface sequences that a Windows Installer package typically displays dialogs in: the Installation sequence—with separate dialogs depending on whether the package is being installed for the first time, reinstalled, or uninstalled—and the Administration sequence. (End-user dialogs are not usually displayed in the Advertisement sequence.) Although you can create dialogs in your merge module project, you cannot hook them into a sequence until you associate your module with a setup project. Then, all the dialogs included in your module will be available. You can select any of these dialogs in the tree to see further options for editing its layout or behavior in the Dialogs view. 4-28 • Using InstallShield Developer InstallShield Software Corporation The process of creating a new dialog and displaying it in your setup can be broken down into the following four tasks: 1. Add the dialog to the project. 2. Edit the dialog’s layout. 3. 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). 4. Display the dialog with a NewDialog or SpawnDialog event in another dialog’s control or by inserting the dialog into your project’s sequences. The Dialogs view is designed to allow you to maintain a single resource for all of the languages supported in your project. If necessary, you may need to make languagespecific changes to the dialog. Dialogs (Standard Setup Project) The Dialogs view contains a list of the standard end user dialogs (including built-in and Sd dialog functions from InstallShield Professional). The dialogs are identified by their function names. Click on a dialog to view a sample dialog in the pane on the right. The dialogs 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 this dialog is pulled from isuser.dll at runtime. If your setup project supports additional languages, those languages appear as nodes beneath the edited dialog. You can edit the layout for each language separately. Editing a Dialog’s Layout To edit a dialog, do one of the following: 1. Select a dialog and click Edit dialog layout in the Dialog Preview pane on the right. 2. Right-click on a dialog and select Edit from the context menu. Reverting Back to the Default Dialog If you have edited a dialog and later decide to use the default dialog instead, you can revert back to the original dialog by right-clicking on the edited dialog and selecting Revert from the context menu. Editing a Dialog’s Behavior To edit a dialog’s behavior, you need to modify the parameters for the dialog function in your script. InstallShield Software Corporation Design the User Interface • 4-29 Customize Functionality By manipulating sequences and actions, using InstallScript, and specifying setup files, you can create a customized setup that meets all of your application’s needs. Figure 4-15. Customize Functionality view. 4-30 • Using InstallShield Developer InstallShield Software Corporation InstallScript InstallScript is a setup authoring language that is similar to the C programming language. The InstallScript view allows you to modify your setup script using the InstallScript language. This view is similar to the Scripts pane in InstallShield Professional. Figure 4-16. InstallScript view. Files and Functions Nodes There are two nodes in the InstallScript view: • Files—The Files node lists all of your script (.rul) files. Click on a script file to display the script in the Script Editor pane on the right. • Functions—The Functions node lists all of the InstallScript functions contained in all of your script files. Click on a function to display that function in the Script Editor pane. Script Editor Clicking on an item under either of the nodes in the InstallScript view displays the Script Editor in the pane on the right of the IDE. InstallShield Software Corporation Customize Functionality • 4-31 Sequences/Actions Figure 4-17. Sequences/Actions view. This view is available in the Advanced Views section for Standard setup projects. Sequences Sequences direct all of the actions performed during the installation process—from file transfer to user interface display. These actions are given a number on the sequence, which then executes from the smallest number to the highest. Rather than having to manually provide a numeric value for every action, you can use the Sequences view to insert actions into a sequence, or edit the sequence timeline. In Standard setup projects, the installation’s user interface is generated through your script. There are three main sequences into which you can insert your custom actions or dialogs. • Installation • Advertisement • Administration 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. 4-32 • Using InstallShield Developer InstallShield Software Corporation Actions As complex as Windows Installer is, it might not provide all the functionality that you require. Microsoft® allows you to add flexibility to your setup that is not directly supported by Windows Installer. This additional functionality is achieved through the use of custom actions. InstallShield supports calling a DLL function; launching an EXE; running VBScript, JScript, or InstallScript code; and running another setup package as custom actions. InstallShield divides the task of creating and implementing custom actions into the following steps: 1. Create a custom action. 2. Decide when your custom action should execute. 3. Execute a custom action by inserting it into a sequence or placing it as the result of a dialog’s control event (for Basic MSI Projects only). Setup Files The Setup Files view lets you add, sort, and delete setup files—files that are required by your setup project only during the installation process. Setup files are copied to a temporary directory on the target system when installation begins and are deleted when the installation is complete. The support directory (SUPPORTDIR) is a dynamic file location and might be different on every target system and even on the same system for different installation instances. Figure 4-18. Setup Files view. InstallShield Software Corporation Customize Functionality • 4-33 To access a particular setup file during installation, you can query for the value of the support directory (SUPPORTDIR) and then append the file name to the SUPPORTDIR value to get the complete path of the file. Billboards You can use billboards to pass information to your customers during the installation process. Billboards can be used to communicate, advertise, educate, and entertain the end user. Billboards offer information—new features of the product being installed or other products from your company—to your end users. Each billboard is a bitmap (.bmp) file that you can customize for complete control over the look and feel of the file transfer. This view is available as a part of the Setup Files view only for Standard projects. Prepare for Distribution The final step in creating your setup 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 setup from the IDE. Figure 4-19. Prepare for Distribution view. 4-34 • Using InstallShield Developer InstallShield Software Corporation Build Your Release When you build a release, InstallShield Developer takes all of the information from your setup project and compiles it into a Windows Installer setup package (.msi file) capable of installing your product onto any supported Windows platform. When you build a release, InstallShield Developer takes all of the information from your merge module project and compiles it into a Windows Installer merge module (.msm file) that you can include in a setup package. After you have designed your project in the InstallShield installation development environment (IDE), you are ready to build a release for testing and, ultimately, distribution to your customers. The release is built according to the options you set for it in the Release wizard or in the property sheet in the Release view. MSI Debugger When you debug a release in the MSI Debugger, you can view and set Windows Installer properties as you step through the package’s User Interface sequence. Follow the steps below to begin going through a setup in the MSI Debugger: • 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. • Navigate to the MSI Debugger view. The debugger lists every standard action and custom action in the User Interface sequence and then every dialog in your project. • Set a breakpoint on an action or dialog. • Start the debugger. 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. Do not confuse the MSI Debugger with the InstallScript Visual 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. InstallShield Software Corporation Prepare for Distribution • 4-35 Distribute Your Release When your setup is built and tested, the only remaining task is to distribute it to a specified location. You can either distribute your setup to a local or network location, or to an FTP site in the Distribute view. Figure 4-20. Distribute Your Release view. To distribute your setup either locally or to a network location, enter the location to which you would like your setup disk image copied, or click the Browse button to navigate to this location. Additionally, you can enter a username and password for the FTP server. Then, click the Distribute to Location button. To distribute your setup to an FTP location, enter the location of the FTP location field and click the Distribute to FTP Site button. To distribute your setup: 1. Navigate to the Distribute Your Setup view by clicking the Distribute Your Setup shortcut on the checklist. 2. Click the media type that contains the build you would like to distribute. If your setup only consists of one disk, than the contents of the Disk1 folder are copied to the release location, but not the folder itself. If your setup spans across multiple disks, the folders and their contents are copied to the release location. 4-36 • Using InstallShield Developer InstallShield Software Corporation Advanced Views The advanced views allow you alternative ways of creating certain aspects of your setup, as well as setup simplifying features such as path variables and the property manager. Path Variables The traditional way to link to source files in a setup 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 setup. Figure 4-21. Path Variables view. Using Hard-Coded Paths If you use hard-coded paths, you have to enter the entire path every time you want to associate a source file from that directory. If you move that file to another directory, you have to change the hard-coded path as it appears in the setup project. If your setup consisted of a small number of source files, this might not be a problem. Some setups contain thousands of files that would all need to be remapped if you changed the folder structure or migrated the project to a different machine. Using Path Variables Overview With path variables you can define commonly used paths in a central location so that you do not need to change every source file’s path each time you move the project or change the directory structure. In the previous example, if you keep all of your application’s source files in various subfolders under C:\Work\Files. You could InstallShield Software Corporation Advanced Views • 4-37 create one variable that points to the Files folder. Call this variable <MyFiles>. So if you wanted to include a file that is in C:\Work\Files\Images, you would simply enter <MyFiles>\Images. If you decided to move your files to D:\Work\Files, you can go to one place, your variable <MyFiles>, and change the folder that it points to. Using the Path Variables Explorer All path variables can be viewed and modified in the Path Variables explorer, which can be accessed by clicking the Path Variables shortcut on the checklist. You can use path variables in almost any location in the IDE where you link to source files, such as in the Dialog Editor, dynamic file links, and the release location. Instead of entering the path variables yourself, you can have InstallShield recommend them whenever you browse to a path. Path variables are used during the development of your setup 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 setup project. When the project is built, those links are evaluated and the files they point to will be built into the setup. Different Types of Path Variables There are four different types of path variables that you can use. Each type functions somewhat differently from the others. Regardless of the type of path variable you use, the variable name is provided in the same manner throughout the IDE. Variable Type Description Predefined path variables are path variables which point to some of the most commonly used folders. Unlike other types of path variables, these values cannot be edited in the IDE. See the online Help Library topic “Predefined Path Variables” for more information. The values of registry-based path variables are derived from the registry keys you created. After creating the registry key, you need to set a path variable to this key. See the online Help Library topic “Using Registry Path Variables” for more information. Environment 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. See the “Using Environment Path Variables” in the online Help Library for more information. Standard, or user-defined, path variables are defined through the IDE. 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. See “Standard Path Variables” in the online Help Library for more information. 4-38 • Using InstallShield Developer InstallShield Software Corporation You also have the option of converting existing static links to path variables with the Convert Source Paths wizard. This wizard will scan your setup project for static links and change those links to path variables, thus enhancing the portability of your project. The Property Manager The Property Manager allows you to edit the Property table within the InstallShield IDE. Windows Installer properties allow you to further customize your setup by setting properties such as the telephone number for technical support that appears in the Add/Remove programs dialog on an end user’s machine. Figure 4-22. The Property Manager view. Properties that appear in all capital letters are called public properties, and can be changed by the end user on the command line at run time. All others must be set before the release is built or—at run time—through a custom action or dialog’s behavior. InstallShield Software Corporation Advanced Views • 4-39 Setup Design The most important step in designing any setup is to lay out the various elements, the building blocks of the setup. You need to think both from the end user’s perspective, as well as your own. Figure 4-23. Setup Design view. You can design the entire setup 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. To go to this view, click the Setup Design shortcut on the checklist. Features Features are the building blocks of your application from the end user’s perspective. They can be installed or uninstalled based on the end user’s 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. To go to the Features view and design only your features, click the Features shortcut on the checklist. Components Components allow you to group your application data together. Unlike features, components constitute the developer’s view of a project—containing 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. To go to the Components view and design only your components, click the Components shortcut on the checklist. 4-40 • Using InstallShield Developer InstallShield Software Corporation Merge Modules Merge Modules allow you to install distinct, pre-existing pieces of functionality. For example, if your application requires Visual Basic® run-time DLLs, you can include the Visual Basic Virtual Machine merge module, rather than attaching a file in your setup and trying to determine its installation requirements. Merge modules can be added to your setup in the Objects/Merge Modules view, which can be accessed from the checklist. Files, Registry Data, and Shortcuts Files, registry data, and shortcuts are elements that are added to a component to complete the hierarchy, as shown in Figure 4-23. Advanced Settings Advanced settings allow you to handle installation of components with special requirements. By specifying the advanced settings, you can publish your component, register COM servers, file extension servers, and MIME types, and so on. You can also use the component’s advanced settings to create an application paths entry in the registry. Sequences/Actions For Standard projects, the Sequences/Actions view appears under the Advanced Views. See See “Sequences/Actions” on page 4-32 for complete information about this view. InstallShield Software Corporation Advanced Views • 4-41 Components 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 developer’s view of a project. Figure 4-24. Components view. You can create and modify components to a limited extent in the Project wizard’s Application Components panel and to a greater degree in the IDE’s Setup Design view or the Components view. To go to the Components view and focus only on your project’s components, click the Components shortcut on the checklist.The Components view allows you to create, edit, and delete components in your project. To navigate to this view, click the Components shortcut on the checklist. Component-Feature Relationships Components are associated with features in the Setup Design view or in the Project wizard’s Setup Design panel. For more information, see the online Help Library topic “Associate Components with Features.” 4-42 • Using InstallShield Developer InstallShield Software Corporation Direct Editor The Direct Editor provides the ability to edit virtually all MSI tables. The Direct Editor can run in two different modes—one allowing you to edit tables in the project file (project edit mode), and the other allowing you to edit tables in a compiled MSI file (MSI-only mode). Project edit mode is accessible when working on an InstallShield project (.ism) file. MSI-only mode is accessible when you open a MSI file using the Open MSI/MSM wizard. Figure 4-25. Direct Editor. When you click on a table from the tree view, the contents of that table appear in the pane to the right of the tree. Columns can be sorted by clicking on the column headers. If you press F1 while a standard MSI table is selected, the MSI Help opens to provide you information about that specific table. Custom tables open to the MSI help main page. InstallShield tables open to the Direct Editor topic in the InstallShield online help. The functionality of the Direct Editor remains the same in both modes; you can also add a custom table by right-clicking the Tables node and selecting the appropriate command, add and remove records from tables, search and replace, cut/copy/paste records or fields, and edit individual fields in the tables. Contiguous records can be selected simultaneously for cutting or copying to the clipboard. Pasted records appear at the bottom of the table. You should consider the following when using the Direct Editor in project edit mode: • The File table displays only static data while in project edit mode. Other information may be placed into the File table at build time. • Unlike the corresponding tables in the MSI, the Binary and Icon tables in the .ism do not store binary data. Rather, they store links to build-source-paths. InstallShield Software Corporation Advanced Views • 4-43 • 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. Column attributes can be edited in all three types of tables in MSI direct edit mode. • You cannot use localizable properties in the Directory table. When the Direct Editor is used in project edit mode, the Direct Editor appears under Advanced Views in the Checklist and changes you make are reflected in corresponding InstallShield views (if available). However, in MSI direct edit mode, the InstallShield Today, Help, and Direct Editor views are the only ones available. InstallShield Developer includes a comprehensive online tutorial, covering major aspects of setup design. This tutorial is available from the InstallShield Developer online help. 4-44 • Using InstallShield Developer InstallShield Software Corporation 5 Advanced Features Chapter Contents InstallScript . . . . . . . . . . . . . . . . . . . . . . . . . . Using InstallScript in Custom Actions . . . . . . Basic MSI Projects . . . . . . . . . . . . . . . . . Standard Projects . . . . . . . . . . . . . . . . . . Creating and Using a Custom Action. . . . . . InstallShield Developer provides you with several advanced features that help you create more complex setups easily. These features greatly expand the choices you have in creating a setup by allowing you some extra abilities for installation. The advanced features covered in this chapter include the ODBC view, the Merge Modules view, and the Custom Actions view. Additionally, preparing your setup for deployment over the Internet is discussed. 5-3 5-3 5-3 5-3 5-3 Globalizing a Setup. . . . . . . . . . . . . . . . . . . . 5-4 Language Support . . . . . . . . . . . . . . . . . . . 5-4 Steps to Globalize a Setup . . . . . . . . . . . . . 5-4 Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5 Patching . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5 Automation Interface . . . . . . . . . . . . . . . . . . . 5-6 Disk Spanning . . . . . . . . . . . . . . . . . . . . . . . . 5-6 Using the Release Wizard . . . . . . . . . . . . . 5-6 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 5-6 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . Validating Your Setup . . . . . . . . . . . . . . . . Viewing the Scan Results . . . . . . . . . . . . . . Validation Messages . . . . . . . . . . . . . . . . . 5-7 5-7 5-8 5-8 Source Code Control Integration . . . . . . . . . . . 5-8 COM Registration Overview . . . . . . . . . . . . . . 5-9 Extracting COM Information . . . . . . . . . . . . 5-9 Using Self-Registration . . . . . . . . . . . . . . . . 5-9 InstallShield Software Corporation 5-1 5-2 InstallShield Software Corporation InstallScript InstallShield Developer supports much of the same InstallScript used in InstallShield Professional. InstallScript provides users of previous versions of InstallShield software the opportunity to use a familiar scripting language. Instead of having to author new DLLs or EXEs for custom actions, you can leverage the power and ease of InstallScript to extend the functionality of your installation package. In a Standard setup project, you can use the InstallScript view to author your setup. Using InstallScript in Custom Actions Basic MSI Projects In a Basic MSI project, you can use custom actions to run InstallScript in your setup project. Standard Projects In a Standard project, you might use an InstallScript custom action to provide functionality in an execute sequence where the default event handlers are not scheduled appropriately for your setup's needs. Creating and Using a Custom Action Follow the steps below to author an InstallScript custom action and execute it in your setup: 1. 2. 3. 4. 5. Add a blank Setup.rul to your InstallScript files. Write an entry-point function. Compile the script. Create a custom action that launches your InstallScript file. Invoke the InstallScript custom action by either including it in a sequence or executing it as a control event (Basic MSI projects only). 6. Debug if necessary. As with other custom actions, changes made to the system via 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 your custom action makes. InstallShield Software Corporation InstallScript • 5-3 Globalizing a Setup For more detailed information about globalization using InstallShield Developer, see Chapter 6 “Globalizing Your Setup.” InstallShield supports many powerful features that allow you to easily customize your setup for global distribution. Using these features, you can create a single setup that is localized in any number of languages and can handle conditional installation of language-specific files. Language Support In order to localize a setup in a particular language, you must purchase support for that language from InstallShield Software Corporation. To see which languages are supported in your edition of InstallShield Developer, navigate to the General Information view and look at the project properties. Under the Setup Languages property, click “Show only available languages.” Check the InstallShield Web site frequently for the availability of international editions. If, for example, you have purchased an English edition of InstallShield with no additional language support, you can create only an English setup. If you also include setup resources or language-specific files for a second or third language, InstallShield Developer creates only an English setup and does not include the nonEnglish files. Steps to Globalize a Setup Globalizing a setup primarily involves separating code from language-specific resources and files. You may also need to distribute separate files for your setup, such as graphics, license files, or custom actions, depending on the language in which the setup is running. Another consideration is whether you need to install different application files depending on the target system’s locale. InstallShield enables globalization by dividing setup authoring into the following distinct tasks: 1. 2. 3. 4. 5. Specify the languages your setup will include. Create a string table for each supported language. Modify end-user dialogs as necessary for each language. Mark any language-dependent components. Select which languages to include in the release. It is strongly recommended you develop multi-language installation projects on Windows NT 4, Windows 2000, or later. Operating system limitations on Windows 9x prevent creation of an installation program that uses multiple extended character sets or code pages. 5-4 • Advanced Features InstallShield Software Corporation Transforms A transform (.mst file) is a simplified Windows Installer database that contains the differences between two MSI databases. Transforms allow an administrator to apply modified settings to a database when deploying an installation package. For example, a user may need to customize a program 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 setup 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. 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 setup, and only the spreadsheet and presentation programs are installed. InstallShield Developer makes the job of creating multiple configurations of your product as easy as stepping through a wizard. The Transform wizard prompts you for all the information required to make a transform that configures your setup to the end users’ needs. Patching Patching is a streamlined process for updating earlier versions of a setup package, thereby upgrading the application. Instead of requiring your users to uninstall outdated versions and install the newer version, you can distribute just the bits and portions of the database necessary to update your application’s files and setup to a specific version. A patch is delivered in the form of a patch package (.msp) file, which a user can apply to an installed product. A patch package is capable of updating as many earlier versions of a setup package as are required; it contains separate transforms and instructions for updating each previous version you specify. The following steps outline the process of creating a patch package: 1. Prepare the earlier versions and the most recent version of the setup package. 2. Run the Patch Creation wizard to define your patch and create the package. 3. Test the patch by applying it to installed versions on various systems. InstallShield Software Corporation Transforms • 5-5 Automation Interface The InstallShield Help Library explains how to use the IDE to author all of the elements of your setup and then build a release. For advanced developers, InstallShield Developer 7.0 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 layer, you can open a project and modify its features and component data in many of the same ways that you would in the IDE. The highest-level object in the automation interface is ISWiProject. 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 setup project. The automation interface affects a project only at design time, and not run time. Disk Spanning As programs become larger, the need for disk spanning increases. A few years ago, this meant shipping your product on multiple floppy disks. The standard is now to use CD-ROMs. Although the storage space on a CD is significantly more than what is available on a floppy disk, many products require even more space. Multimedia tutorials, vast help libraries, and graphic-rich programs can result in a product that is larger than 650 MB—the size of a standard CD. If your setup requires more than one floppy disk, CD, DVD, or custom-sized media disk, you need to span it across multiple disks. Using the Release Wizard The only way to define how your setup spans across multiple disks is to use the Release wizard. The wizard’s panels walk you through the process of creating your release for any size media you choose, and lets you specify how your files will span across multiple disks. You can also specify the compression to apply to these files. The wizard offers you the choice of having InstallShield automatically span your setup across disks, if necessary, or you can customize how you want your setup files to be split. If you plan on customizing the way your setup spans across multiple disks, refer to Disk Spanning Rules to reduce problems with your setup. Limitations Due to limitations of the Windows Installer service, you cannot run multi-disk setups on a non-removable drive. For example, if your setup spans two CDs, you need to physically burn the CDs in order to test your setup. If you try to run it from a fixed drive, the setup will fail. 5-6 • Advanced Features InstallShield Software Corporation Validation Validating a project involves applying a set of internal consistency evaluator (ICE) rules to your setup project. These ICEs are designed by Microsoft to ensure that your resulting setup package contains a valid database that performs its actions correctly. Validating your project is important for fulfilling Windows 2000 logo requirements because your Windows Installer setup package must pass Msival2.exe, which uses the same ICEs. Therefore, if you are interested in achieving Windows 2000 logo, it is recommended that you use the Windows 2000 Logo Validation suite to validate your setup package. Validating Your Setup To validate your setup project: 1. First complete a successful build. This build cannot be compressed into Setup.exe, or the validation tool will not run. 2. Select Validate from the Build menu to display the Validate submenu. 3. Select the validation you want to run. The three different types of validation are explained below. Validation Type Description Full MSI Validation Suite This validation scans your project to ensure that all aspects of it are valid. Your built .msi package is compared against the ICE rules. The results of this validation are displayed in the Validate window at the bottom of the IDE. All warnings, errors, and failures are displayed, listing the violated ICE rule as well as the aspect of your setup that broke this rule. Windows 2000 Logo Validation Suite The validation rules for Windows 2000 Logo are stricter than the other types of validation. The Full MSI Validation Suite checks if your project is valid, meaning that it should work. The Windows 2000 Logo validation not only checks if your project is valid, but it also checks if it complies with Windows 2000 Logo standards. Merge Module Validation Suite 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 ensure that it will function properly. InstallShield Software Corporation Validation • 5-7 Viewing the Scan Results The results of the validation scan are displayed in the Validations tab of the Output window and are saved to a text (.txt) file in a Validations folder under the release folder. You can view this file either by navigating to your build directory, or by navigating to the Releases view and selecting the Validations folder under your release. Validation Messages Validation messages are broken down into three categories: • Error Messages—Describe problems with your setup database, such as having duplicate component GUIDS. • Warnings—Describe problems in your database that may occur in certain circumstances. • Failures—Occur when your database has severe enough problems that the validation tool might not be able to run. Source Code Control Integration InstallShield Developer features several options for managing versions of your project file in source code control software. InstallShield Developer is capable of interacting with any source control system that complies with the Microsoft Source Control Interface and uses the default program on the development system. If none is installed, the source control options are not available. To save disk space in your source control database, InstallShield Developer converts your setup project or merge module (.ism) file to a text (.isv) file when you first add your project to your source control program through the IDE. Before checking a file in to source control, InstallShield Developer updates the .isv file. A typical scenario for using InstallShield Developer’s source code control integration is outlined below: 1. 2. 3. 4. 5. 6. Create the InstallShield project. Add the 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. You can streamline the above process by having InstallShield Developer automatically add new projects to source control or check out edited projects, for example. For more information, see the Source Control tab of the Options dialog (available from the Tools menu). 5-8 • Advanced Features InstallShield Software Corporation COM Registration Overview COM servers, commonly known as self-registering files, can be registered in one of two ways: • Extracting COM information • Using self-registration Extracting COM Information When possible, it is recommended that you extract the COM information from your COM servers, which places the COM-related information in the Class, ProgId, TypeLib, and Registry tables of your MSI database. (You can view these tables using the Direct Editor.) You can extract COM information from your COM servers in either of the following ways: • Use the Component wizard. • Set a component’s Extract at Build property to Yes. You can also manually add COM information to a component in the Advanced Settings view for a component. Using Self-Registration You can also use the built-in self-registration functions of your COM server. To use self-registration, you can mark an individual file (.dll, .ocx, .exe, .tlb, or .olb) as selfregistering, or mark a dynamic link as self-registering. When you mark one or more files as self-registering, the IDE adds data to the ISSelfReg table of your MSI database, and adds some custom actions related to self-registration to your installation Execute sequence. For details, see the online Help Library topic “Self-Registration.” InstallShield Software Corporation COM Registration Overview • 5-9 5-10 • Advanced Features InstallShield Software Corporation 6 Globalizing Your Setup Chapter Contents Language Support . . . . . . . . . . . . . . . . . . . . . 6-3 Steps to Globalize a Setup . . . . . . . . . . . . . . . 6-3 How InstallShield Developer Determines Which Language the Setup Runs In . . . . . . . . . 6-3 Display the Language Dialog to the User . . . 6-4 InstallShield Developer supports many powerful features that allow you to easily customize your setup for global distribution. Using these features, you can create a single setup that is localized in any number of languages and can handle conditional installation of language-specific files. The Project’s Default Language . . . . . . . . . . . . 6-4 Setting the Default Language . . . . . . . . . . . 6-4 What the Default Language Affects . . . . . . . 6-5 Customizing Language Support . . . . . . . . . . . 6-5 Installing Files of the Same Name . . . . . . . . . . 6-5 Globalization Tips . . . . . . . . . . . . . . . . . . . . . 6-6 Globalization Code Page Requirements. . . . . . Installing Code Pages . . . . . . . . . . . . . . . . . Windows NT 4.0 . . . . . . . . . . . . . . . . . . Windows 2000 . . . . . . . . . . . . . . . . . . . InstallShield Software Corporation 6-6 6-7 6-7 6-7 6-1 6-2 InstallShield Software Corporation Language Support In order to localize a setup in a given language, you must purchase support for that language from InstallShield Software Corporation. To see which languages are supported in your edition of InstallShield, navigate to the General Information view and look at the project properties. Under the Setup Languages property, click “Show only available languages.” Check the InstallShield Web site frequently for the availability of international editions. If, for example, you have purchased an English edition of InstallShield with no additional language support, you can create only an English setup. If you also include setup resources or language-specific files for a second or third language, InstallShield creates only an English setup and does not include the non-English files. Steps to Globalize a Setup Globalizing a setup primarily involves separating code from language-specific resources and files. You may also need to distribute separate files for your setup, such as graphics, license files, or custom actions, depending on the language in which the setup is running. Another consideration is whether or not you need to install different application files depending on the target system’s locale. InstallShield enables globalization by dividing setup authoring into the following distinct tasks: 1. 2. 3. 4. 5. Specify the languages your setup will include. Create a string table for each supported language. Modify end-user dialogs as necessary for each language. Mark any language-dependent components. Select which languages to include in the release. It is strongly recommended you develop multi-language installation projects on Windows NT 4 or Windows 2000. Operating system limitations on Windows 9x prevent creation of an installation program that uses multiple extended character sets or code pages. How InstallShield Developer Determines Which Language the Setup Runs In Even though you can localize a setup in as many languages as your project supports, InstallShield will run a setup in only one language. When Setup.exe first launches, InstallShield determines which language to launch the setup in depending on the languages you include in the setup or the end user’s selection, as described below. If your setup has support for only one language, then it will always run in that language. InstallShield Software Corporation Language Support • 6-3 When Setup.exe initializes, it determines the target system’s language. If you selected more than one language in the Advanced Settings panel of the Release wizard, and one of those languages matches the target system’s language, then InstallShield launches the setup in the target system’s language. If the target system’s language is not present in your setup, then InstallShield launches the setup in the default language. Display the Language Dialog to the User You also have the option of enabling the Language dialog so that your end user can choose which language the setup should run in. The Language dialog is always displayed in the default language, which you can also set in the Setup Languages panel. The dialog presents a list of available languages, which are the same languages you checked in the Setup Languages panel. Once a selection is made, InstallShield applies a transform containing all of the user interface resources for that language and then launches the setup in the selected language. Since the Language dialog is displayed by Setup.exe, you will need to make sure that you create a Setup.exe in the Advanced Settings panel. The first time you select a language in the Language Dialog, the setup will run in the proper language. However, if you then select a different language from the Language Dialog and run the setup for a second time, it will run in the language that you chose the first time through. Therefore, once a setup has been run in a certain language, it can no longer be run in any other language on the same machine due to caching performed by the Windows Installer service. The Project’s Default Language One of the project’s supported languages must serve as its default language. Wherever you see a list of languages while authoring your setup (such as in the list of string tables, the project’s Setup Languages property, or the component Languages property), the default language is signified with a red flag. Setting the Default Language Initially, the default language is the language that the IDE is running in, usually English. Follow the steps below to change the default language: 1. In the General Information view, open up the String Tables item to view the string tables for all of your project’s languages. 2. Right-click on the language that you want to serve as the default, and select “Make default” in the resulting context menu. You can also set the default language by clicking the “Make default” button in the Release wizard’s Setup Language panel. 6-4 • Globalizing Your Setup InstallShield Software Corporation What the Default Language Affects The default language determines all of the following: • The strings throughout the IDE’s property sheets—such as the feature Display Name property or the shortcut Description property—are all from the default language’s string table. You can edit the values for the default language directly in the property sheets. • The text in the Dialog editor that you see while editing a language-independent dialog comes from the default language’s string table. • The default language is the language that the setup runs in if you do not let the end user select a language in the Language dialog. If you do display the Language dialog by selecting the Language dialog option in the Release wizard, the Language dialog is displayed in the default language. Customizing Language Support If you need your setup to run in languages that are not supported by InstallShield’s international editions, or you would like 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 allows you to select the languages that you would like to support and the projects that you would like to add these languages to. It then adds the languages you choose to the list of available languages for your setup. To launch the New Language wizard, select Add New Language from the Tools menu. You must first close any open project, or the menu item is grayed out. The New Language wizard is available only after you add an InstallShield Developer 7.0 language pack. Visit http://www.installshield.com/isd/info/language_packs.asp for information. Installing Files of the Same Name The Source Location property names a subfolder where this component’s files will be stored in the source disk images, if the component’s files are not compressed. The component’s files will be copied to this subfolder in your release image. This property does not require a value, and in most cases, may be left blank. However, should you enter a value, it must be a valid Windows folder name. One instance where the Source Location property could be used is when you are creating a setup containing more than one language. In this scenario, you may have multiple files with the same name. You can create a component for each language and set the Source Location property for each one. With the Source Location property set, 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 component, set the Source Location property to GermanVersion. For the second, set InstallShield Software Corporation Customizing Language Support • 6-5 the Source Location property to EnglishVersion. Create two files called Test.txt, giving them slightly different contents. Assign each file to a component. When you build your setup 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. The Source Location property should not be confused with the destination location. While it is conceivable that you may want to copy both versions of the file to the user’s machine, it is more likely that you would want to filter the files by language. Globalization Tips Consider these general points when designing your setup: • The goal of global distribution is a localized product that is international in scope and readily adaptable to specific areas of the world. • The key to globalization is resource and code separation, plus country and language independence. • Globalizing your setup requires a design that is simple and modular. • Creating a worldwide specification package means incorporating global requirements into the setup specifications from the beginning. InstallShield’s globalization features make it an ever-present and seamless venture. • 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-40%. 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. • Try to avoid hard-coding element positioning and size on the screen, since these items may change when the element is translated. Globalization Code Page Requirements If you plan on distributing any setups that run in a double-byte language (for example, Japanese, Greek, or Korean), you need to include the code pages for those languages. The code pages allow your system to accurately represent the characters of those languages. If your build machine does not have the code pages installed, your setup will not display double-byte languages properly, and the build will report an error. 6-6 • Globalizing Your Setup InstallShield Software Corporation Installing Code Pages Follow the steps below to install code pages onto your build machine. Windows NT 4.0 1. Insert the Windows NT 4.0 CD into your CD-ROM drive. 2. Navigate to the LanguagePack directory. 3. Right-click on the code page for the language that you would like to install and select Install from the context menu. Windows 2000 1. Launch the Regional Options applet from the Control Panel. 2. Select the languages for which you would like to add support in the “Language settings for the system” option. 3. Click OK to have these code pages installed. 4. When prompted, insert the Windows 2000 CD to complete the installation. It is strongly recommended you develop multi-language installation projects on Windows NT 4, Windows 2000, or later. Operating system limitations on Windows 9x prevent creation of an installation program that uses multiple extended character sets or code pages. InstallShield Software Corporation Globalization Code Page Requirements • 6-7 6-8 • Globalizing Your Setup InstallShield Software Corporation Frequently Asked Questions 7 Chapter Contents This chapter deals with some of the questions that InstallShield Developer users most frequently ask, grouped into the following topics. Where the techniques or steps to perform a specific task are different in Standard projects and Basic MSI projects, answers for each type of project are displayed. • • • • • • • • • • • • General Files and Folders Features and Components Shortcuts Registry Properties Conditions User Interface Custom Actions Building Releases Deployment Uninstallation If you have a question about InstallShield Developer that is not answered here, you should check the InstallShield Knowledge Base, available on the Support page of InstallShield’s Web site. Your question may already be answered there. InstallShield Software Corporation General Questions. . . . . . . . . . . . . . . . . . . . . What is the Difference between Standard and Basic MSI Setup Projects?. . . . . . . . . . . Similarities Between Standard and Basic MSI Project Types . . . . . . . . . . . . . Standard Projects . . . . . . . . . . . . . . . . . . Basic MSI Projects . . . . . . . . . . . . . . . . . Where Can I Find Information About Windows Installer Run-Time Errors?. . . . . . . How Can I Be Sure the Target Machine Has the Windows Installer Service? . . . . . . . Where Can I Access Updated Merge Modules? . . . . . . . . . . . . . . . . . . . . 7-5 7-5 7-5 7-5 7-6 7-7 7-7 7-7 Files and Folders Questions . . . . . . . . . . . . . . 7-7 When Do I Self-Register Files vs. Only Extracting COM Information? . . . . . . . 7-7 How Does Windows Installer Determine Which Files Should Be Overwritten? . . . . . . 7-8 How Do I Associate File Types with My Program? . . . . . . . . . . . . . . . . . . . 7-8 How Do I Specify the Destination Folder for My Application? . . . . . . . . . . . . . . . . . . 7-9 Using INSTALLDIR . . . . . . . . . . . . . . . . . 7-9 Specifying File Destination Folders. . . . . . 7-9 Hard-Coding a Destination Directory . . . . 7-9 What is the Difference Between INSTALLDIR and MSI_TARGETDIR? . . . . . . 7-10 How Do I Register a COM Server? . . . . . . 7-10 How Do I Install and Configure a Windows NT Service? . . . . . . . . . . . . . . . 7-10 7-1 How Do I Create an Empty Folder? . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Set a Key File for a Dynamic File Link? . . . . . . . . . . . . . . . . . . . . . . . . . What Happens If I Put More Than One Executable in the Same Component? . . . . . 7-10 7-10 7-10 Features and Components Questions . . . . . . . How Do I Control the Items Appearing in a Feature’s Context Menu? . . . . . . . . . . How Do I Conditionally Select A Feature? . Standard Project . . . . . . . . . . . . . . . . . Basic MSI Project . . . . . . . . . . . . . . . . . How Do I Conditionally Hide a Feature? . . InstallScript . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . 7-11 Shortcuts Questions . . . . . . . . . . . . . . . . . . . How Do I Create Shortcuts? . . . . . . . . . . . How Do I Create An Internet Shortcut?. . . . How Do I Create a Shortcut to a Folder? . . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-13 7-13 7-13 7-13 7-13 7-14 Registry Questions . . . . . . . . . . . . . . . . . . . . How Do I Read Data from the Registry? . . . InstallScript . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Write a Property’s Value to the Registry? . . . . . . . . . . . . . . . . . . . . 7-14 7-14 7-14 7-14 7-10 7-11 7-11 7-11 7-11 7-11 7-12 7-12 7-12 7-15 Properties Questions . . . . . . . . . . . . . . . . . . 7-15 How do I Get or Set a Windows Installer Property in InstallScript? . . . . . . . . . . . . . . 7-15 Conditions Questions . . . . . . . . . . . . . . . . . . 7-16 How Do I Conditionally Install My Setup Based on the Operating System of the Target Machine? . . . . . . . . . . . . . . . . . . . 7-16 7-2 How Can I Create My Setup So it Installs Files Based on the Target Operating System?. . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect Administrator Privileges? . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI. . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect a First-time Installation? . . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI. . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Detect If the User Has Selected a Specific Feature?. . . . . . . . . . . . . . . . . . Standard Project . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Detect If the User is Running a Particular Operating System? . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI. . . . . . . . . . . . . . . . . . . . . . . . . . . User Interface Questions. . . . . . . . . . . . . . . . How Do I Display a License Agreement? . . Standard Project . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Validate a Serial Number?. . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . How Do I Populate a List Box at Run Time?. InstallScript . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Display a File-Browse Dialog Box?. . . . . . . . . . . . . . . . . . . . . . . How Do I Display a Network-Browse Dialog Box?. . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . Why Can’t I Remove the InstallShield Label (Branding) from the Setup Dialog Boxes? . . 7-16 7-17 7-17 7-17 7-17 7-17 7-17 7-18 7-18 7-18 7-18 7-18 7-18 7-18 7-18 7-19 7-19 7-19 7-19 7-20 7-20 7-20 7-20 7-20 7-20 7-21 InstallShield Software Corporation Custom Actions Questions . . . . . . . . . . . . . . How Do I Search for a File on the User’s System?. . . . . . . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Launch My Application Following Installation? . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . How Do I Place a File in the .msi Database and Extract It During Run Time? . . . . . . . . Building Release Questions . . . . . . . . . . . . . . My Setup Does Not Fit on a Single Floppy Disk. Why?. . . . . . . . . . . . . . . . . . Disk Space. . . . . . . . . . . . . . . . . . . . . . Disk Spanning . . . . . . . . . . . . . . . . . . . How Do I Get Changes I Make in the IDE to Take Effect When I Run My Setup?. . . . . How Do I Build My Project from the Command Line? . . . . . . . . . . . . . . . . . . . . How Do I Change Project Properties from the Command Line? . . . . . . . . . . . . . . . . . How Do Users Run My Installation in Silent Mode? . . . . . . . . . . . . . . . . . . . . Standard Projects . . . . . . . . . . . . . . . . . Basic MSI . . . . . . . . . . . . . . . . . . . . . . How Do I Create and Read a Response File for a Silent Installation? . . . . . . . . . . . . . . Standard Project . . . . . . . . . . . . . . . . . Uninstallation Questions . . . . . . . . . . . . . . . . How Do I Remove Files that Were Created by My Product? . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . How Do I Remove Registry Data Created by My Product? . . . . . . . . . . . . . . . . . . . . InstallScript . . . . . . . . . . . . . . . . . . . . . MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . InstallShield Software Corporation 7-21 7-21 7-21 7-21 7-22 7-22 7-22 7-22 7-22 7-23 7-23 7-23 7-23 7-23 7-24 7-24 7-24 7-24 7-24 7-24 7-24 7-25 7-25 7-25 7-25 7-25 7-3 7-4 InstallShield Software Corporation General Questions What is the Difference between Standard and Basic MSI Setup Projects? With InstallShield Developer, you have the ability to choose between two different types of setup projects—Standard and Basic MSI—depending on the needs of your software installation. InstallShield Developer provides the same intuitive Installation Development Environment (IDE) for both project types, so your application’s needs can dictate the project type and your authoring experience does not change. Additionally, the knowledge gained by learning how to create projects of one type is directly applicable to projects of the other type. Similarities Between Standard and Basic MSI Project Types Both project types create setups that meet the latest Windows Logo requirements. Both the Standard and Basic MSI projects create installations that have the same professional, industry-standard look and feel that your end users have come to expect from InstallShield. They also boast the same range of productivity tools from a Visual Basic wizard which lets you jump start the installation authoring process to the Patch wizard which allows you to package your product updates into small redistributables. They also both use the Windows Installer service to modify the operating system so features like Application Self Repair and Install On Demand, as well as the ability to roll the system back to the last known state in the event of a failed installation exist for both project types. Despite the similarities in the project types’ feature sets, there are some important differences between Standard and Basic MSI projects. Read the descriptions below to determine which project type is right for your software installation needs. Standard Projects Standard is the recommended project type for most users. This project type combines the power and flexibility of the InstallScript programming language with the robust shell integration features of the Windows Installer. The Script-Driven Model With Standard projects, the runtime user interface is rendered and its flow controlled by InstallScript, while the changes that are made to the target operating system are done through Microsoft’s Windows Installer service. The model that this project type follows is sometimes referred to as an External UI model, because it does not use the Windows Installer’s native UI rendering capabilities. This type of setup is also known as the script-driven model, because InstallScript acts as a driver to the Windows Installer setup. Using InstallScript as the installation driver has many benefits. The first is that InstallScript’s event model allows you to create a script driven setup without writing a single line of code. If you want to add custom functionality, you need only implement the events whose functionality you want to change. If you need more power, you have the option of using the Custom Action wizard to insert InstallScript cusInstallShield Software Corporation General Questions • 7-5 tom actions into any point in the Execute sequence. This allows you to run a piece of InstallScript code at any point during the installation—even while the Windows Installer Engine is running. The User Interface abilities for Basic MSI projects are somewhat limited with regard to the types of controls you can use or the kind of control you have over dialog events. Standard projects have no such limitation—offering a wide range of standard controls along with the ability to add custom dialog controls. Dialog messaging in the script allows you to have complete control over how your end user dialogs behave. Upgrading Projects Created Using InstallShield Professional Setup projects created using InstallShield Professional (version 5.5 and later) upgrade to the Standard project type. Additional Features for Standard Projects Standard projects provide a few additional features that are not available in Basic MSI projects: • Setup Types view—This view allows the setup developer to easily create different predefined installation configurations for your application, such as Typical or Compact. This view also allows you to select the defaults for the Custom Setup Type. • Billboard Support—Runtime billboard support is available only for Standard projects. Billboards allow you to show bitmaps to the user while files are being transferred to their machine. You can use these bitmaps to entertain or educate the user. Basic MSI Projects Basic MSI projects are recommended for those wanting for a pure MSI setup. They allow you to author your setup using only the native MSI feature set. The geometry of your setup dialogs as well as the flow of your setup user interface (UI) is authored directly in the MSI package, and the Windows Installer Service uses its native user interface rendering capabilities to display the UI to your end users. The advantages of this project type are fully realized if you need to author your installation in an open format. Basic MSI projects have the ability to run InstallScript code in the form of custom actions, though the type of InstallScript code that can be run is limited. These projects also still take advantage of other robust features provided by InstallShield Developer such as dialog authoring, the ability to call custom actions in standard windows DLLs, and the ability to specify setup files. Upgrading Projects Created Using InstallShield—Windows Installer Edition Projects created using InstallShield—Windows Installer Edition upgrade to the Basic MSI project type. 7-6 • Frequently Asked Questions InstallShield Software Corporation Basic MSI Projects can be easily converted to Standard projects by selecting the “Convert to Standard Project” option on the project menu. However, the conversion process does not convert any of the custom dialog modifications you have made. The conversion process is irreversible. Where Can I Find Information About Windows Installer Run-Time Errors? You can find information about Windows Installer error messages in the Windows Installer online help, available by selecting MSI Help Library from the Help menu in InstallShield Developer. After you open the Windows Installer help system, search for the topic Windows Installer Error Messages. How Can I Be Sure the Target Machine Has the Windows Installer Service? Although the Windows Installer service is built into Windows 2000 and Windows Me, and later Windows operating systems, other Windows platforms require that the service be installed before any Windows Installer setups can run on those systems. InstallShield Developer gives you the option of including the Windows Installer service with your application setup. If the Window Installer service is not installed on the target machine, or if an older version exists, your setup installs Windows Installer. When finished, your setup continues with your application’s installation, as you have configured it. The Build Your Release view gives you the option of including the Windows Installer service for Windows 95/98 and Windows NT 4. If you are unsure what platforms your end users run, you might want to include both versions of the Windows Installer service with your setup package. Where Can I Access Updated Merge Modules? You can download updated merge modules from the InstallShield Merge Module Gallery. Visit the gallery at http://support.installshield.com/download/modules.asp. Files and Folders Questions When Do I Self-Register Files vs. Only Extracting COM Information? If you need to extract COM information, you can accomplish this by setting the Extract at Build property for the component to Yes. When this is set, InstallShield Developer scans the component’s key file for COM registration data when you build a release. The extracted information is placed into the setup package (.msi file) so InstallShield Software Corporation Files and Folders Questions • 7-7 that Windows Installer registers the COM server when it is installed or advertised. This process only extracts COM information. If your file contains other information that is not COM-related, you may want to set the self register property for the file for completeness in addition to performing COM Extraction. To do so, complete the following: 1. 2. 3. 4. Right-click the file within Developer. Select Properties. Check the Self Register box. Click OK. How Does Windows Installer Determine Which Files Should Be Overwritten? When files are transferred during a setup, and an existing version of a file already exists on the target machine, the Windows Installer service compares the version, date, and language of the files to determine which version should remain. The following guidelines apply: • Versioned files—In all cases, the file with the highest version is maintained, even if the file with the higher version is one that is already on the target machine. A file of any version is maintained over unversioned files. • File language—All other things being equal, the file that is the same language as the setup 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. • Date—If the modified date of a file already present on the target machine is later than the creation date of that file, the file is not overwritten. This rule protects user preference files from being deleted during an upgrade or reinstallation. If you enable MSI File Logging from the Settings dialog (available from the Project menu), you can see a comprehensive listing of why files were or were not overwritten. How Do I Associate File Types with My Program? If your program creates or relies on custom file types, you need to associate those file types with your program on the target machine. File types can be configured in the File Extensions view. To create a file extension, do the following: 1. 2. 3. 4. 7-8 • Frequently Asked Questions Click File Extensions in the checklist. Right-click on the File Extensions item. Select New Extension from the context menu. Specify the extension to match the file type you want to configure. For example, if you wanted to associate your program with text files, you would specify InstallShield Software Corporation the .txt extension. If you wanted to associate your program with bitmap files, enter .bmp. 5. Configure your file association’s properties. These properties include the program with which you would like to associate this extension, the icon for all files with this extension, and the feature that registers this file type. How Do I Specify the Destination Folder for My Application? You can use the General Information property, INSTALLDIR, to specify a destination folder and the Files view to specify destination for your files. In addition, you can specify a hard-coded destination directory in the Files view. Using INSTALLDIR You specify the destination folder for your application through the INSTALLDIR property in the General Information view. This property defaults to [ProgramFilesFolder]Your Company Name\Default. Specifying File Destination Folders You specify the destination folder for all of your files individually when you first add them to your project. To specify the destination folder of a new file, perform the following: 1. Click Files in the checklist. 2. From the drop-down list at the top, select the feature with which you would like your file to be installed. 3. Browse to your file on your system using the top half of the view. 4. Drag your file to a target folder in the lower part of this view. Hard-Coding a Destination Directory If you want to indicate a hard-coded destination directory for your project files, you can do this in the Files view. To hard-code a destination directory, do the following: 1. Click on Destination Computer in the lower-left pane 2. Select Add from the context menu. A new folder appears. 3. In the New Folder name field, type the drive letter followed by a colon (for example, C:). 4. Press Enter. Figure 7-1. Create a hard-coded destination directory. InstallShield Software Corporation Files and Folders Questions • 7-9 What is the Difference Between INSTALLDIR and MSI_TARGETDIR? INSTALLDIR represents the main product installation directory for a regular installation, such as the user launching Setup.exe or your .msi database. MSI_TARGETDIR represents the installation directory for an administrative installation (when the user runs Setup.exe or MsiExec.exe with the /a command-line switch). How Do I Register a COM Server? The Component wizard will create components that register COM servers (self-registering files). For details, see the topics “Install a COM Server,” “Extracting COM Registration at Build Time,” and “Self-Registration” in the online Help Library. How Do I Install and Configure a Windows NT Service? The Component wizard can create components that install and configure Windows NT Services. For details, see Install NT Services Component Type and Control NT Service Component Type in the online Help Library. How Do I Create an Empty Folder? InstallScript The CreateDir function creates an empty directory. Basic MSI The CreateFolder table of an MSI database (exposed in Direct Editor) enables you to create empty directories. For an example, see article Q103218 in the InstallShield Knowledge Base. How Do I Set a Key File for a Dynamic File Link? A file contained in a dynamic link 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, suppose you 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”. 7-10 • Frequently Asked Questions InstallShield Software Corporation For Dynamic File Links containing subdirectories, you cannot set a key file for any of the subdirectories’ components. The first file in each subdirectory component is automatically set to the key file. What Happens If I Put More Than One Executable in the Same Component? According to the Best Practices rules, a component should contain at most one executable, DLL, or help file. One reason for this rule is the following: At run time, if the user chooses Repair for an installed product, Windows Installer checks for the existence of each installed component’s 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 will not be restored during Repair mode. Features and Components Questions How Do I Control the Items Appearing in a Feature’s Context Menu? For an installation that uses MSI dialog boxes, the items appearing in a feature’s context menu (in the CustomSetup dialog box) are controlled by the Advertise, Remote Installation, and Required properties of a feature and its components. • To hide the item “This feature will not be available”, set the feature’s Required property to Yes. (Note that setting Required to Yes does not prevent the user from deselecting the feature by setting the REMOVE property at the command line.) • To hide the item “This feature will be installed when required”, set the feature’s Advertise property to Disallow Advertise. • The items “This feature will be installed on local hard drive” and “This feature will be installed to run from network” are displayed based on the feature’s and its components’ Remote Installation settings. How Do I Conditionally Select A Feature? Standard Project The FeatureSelectItem function enables you to select or deselect a feature displayed in the SdFeatureTree dialog box. Basic MSI Project The Condition property of each feature allows you to specify a non-default Install Level value if the condition you specify succeeds. InstallShield Software Corporation Features and Components Questions • 7-11 For example, to deselect a feature if the user does not have administrator privileges: 1. Select the desired feature and click its Condition property. 2. Click the browse button. 3. In the Feature Condition Builder, add a new row with Install Level 200 and Condition “Not AdminUser”. 4. Click OK. At run time, if the user does not have administrator privileges (that is, if the condition succeeds), the Install Level property for the feature will be set to 200. Since the default INSTALLLEVEL property for a project is 100, the feature will appear deselected. How Do I Conditionally Hide a Feature? InstallScript The FeatureSetData function accepts a FEATURE_FIELD_VISIBLE constant that lets you control whether a specific feature will be displayed. For example, to hide a feature called “HiddenFeature”, include the following function call in your script: FeatureSetData(MEDIA, "HiddenFeature", COMPONENT_FIELD_VISIBLE, FALSE, ""); Hiding a feature does not automatically deselect it. To deselect the feature so that its data will not be installed, call FeatureSelectItem(MEDIA, "FeatureName", FALSE);. Basic MSI Any feature given an Install Level of zero will be hidden (and deselected). For example, to hide a feature if the user running your installation program does not have administrative privileges: 1. Select the feature in the Features view or Setup Design view. 2. Select the feature’s Condition property, and open the Feature Condition Builder dialog box. 3. Add a new record with Level 0 and condition “Not AdminUser”. After rebuilding your project and running the installation, the feature will not be displayed or installed if the user does not have administrative privileges. 7-12 • Frequently Asked Questions InstallShield Software Corporation Shortcuts Questions How Do I Create Shortcuts? Shortcuts allow your end users to have quick access to your product. To create a shortcut with InstallShield Developer, do the following: 1. Click Shortcuts/Folders in the checklist. 2. In the list of locations under the Shortcuts folder icon, right-click on the location in which you would like to place the shortcut. 3. Select New Shortcut from the context menu. If you need to create your shortcut in a subfolder of the selected location, select New Folder and repeat steps 2 and 3 until you create the final location for your shortcut. 4. Rename your shortcut. The name of the shortcut is highlighted initially, so you can type your shortcut’s name when you create the shortcut. 5. Configure the shortcut’s properties in the property grid. These properties include the icon file and index, the target executable for the shortcut (which must already be included in your setup), and the hot key combination. How Do I Create An Internet Shortcut? An Internet shortcut is a text file with the .url extension. For example, to create an Internet shortcut that opens the InstallShield Web site, create a text file called InstallShield.url with the following contents: [InternetShortcut] URL=http://www.installshield.com You can then place this file in a component, and install it as you would install any other type of file. When the user launches the shortcut, the specified Web site opens in the user’s default browser. How Do I Create a Shortcut to a Folder? InstallScript The AddFolderIcon function will create a shortcut to a folder if you pass the path to the folder in the third (szCommandLine) parameter. For example, the following call to AddFolderIcon will create a shortcut to the Common Files folder in the user’s Programs folder: AddFolderIcon( FOLDER_PROGRAMS, // where shortcut will appear "Shortcut to INSTALLDIR", // shortcut display name INSTALLDIR, // what shortcut launches "", 0, // icon file, index "", // shortcut key NULL); // special settings InstallShield Software Corporation Shortcuts Questions • 7-13 MSI The Target field of a shortcut can contain a directory identifier inside square brackets. For example, to create a shortcut to INSTALLDIR, create a shortcut with the following properties: • Display Name: Shortcut to INSTALLDIR • Advertised: No • Target: [INSTALLDIR] Registry Questions How Do I Read Data from the Registry? InstallScript With InstallScript, you can use the RegDBGetKeyValueEx function. For example, to read the “RegisteredOwner” value from the key HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion, you can use code similar to the following: function readRegisteredOwner( ) STRING svRegisteredOwner; NUMBER nvType, nvSize; begin RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); RegDBGetKeyValueEx( "Software\\Microsoft\\Windows NT\\CurrentVersion", "RegisteredOwner", nvType, svRegisteredOwner, nvSize); MessageBox( "Registered owner is: " + svRegisteredOwner, INFORMATION); end; You can set a Windows Installer property equal to the value you read using the MsiSetProperty function. Basic MSI The AppSearch and RegLocator tables can read a value from the registry. To read the “RegisteredOwner” value mentioned above, add the following record to the AppSearch table (using Direct Editor): 7-14 • Frequently Asked Questions Field Value Comments Property REGISTERED_OWNER Must be a public property Signature_ registry_sig InstallShield Software Corporation Next, add the following record to the RegLocator table: Field Value Comments Signature_ registry_sig Same signature as above Root 2 HKEY_LOCAL_MACHINE Key Software\Microsoft\ Windows NT\CurrentVersion Name RegisteredOwner Type 2 Registry data 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 MSI Help Library. How Do I Write a Property’s Value to the Registry? At run time, Windows Installer automatically expands expressions of the form [PropertyName] in registry data to the value of the property called PropertyName. For example, to write the value of INSTALLDIR to the registry, create a registry value whose data is [INSTALLDIR]. This format can also be used for registry key names and value names. Properties Questions How do I Get or Set a Windows Installer Property in InstallScript? The MsiGetProperty and MsiSetProperty functions get and set Windows Installer properties. For an example, see “Get or Set a Property” in the online Help Library. 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. InstallShield Software Corporation Properties Questions • 7-15 Conditions Questions How Do I Conditionally Install My Setup Based on the Operating System of the Target Machine? If you want your setup to run only on certain operating systems—Windows 2000, for example—you can set this as an installation requirement. If the target system does not meet the installation requirements you specify, your application cannot be installed. To set installation requirements: 1. Click General Information in the checklist. 2. Click Product Properties from the General Information tree. 3. Click the browse button (...) to the right of the Install Condition property to open the Product Condition Builder dialog. 4. Click in the Condition field to add a new condition. 5. Select the correct operating system version from the properties list (VersionNT or Version9X). 6. Click on the Message field and enter a message to be displayed when the condition fails. 7. Click Add. 8. Click OK. How Can I Create My Setup So it Installs Files Based on the Target Operating System? To conditionally install files based on the target operating system, do the following: 1. Select the Components view (located under Advanced Views) in the checklist. 2. Select the component containing the files you want to install conditionally based on the operating system of the target machine. 3. Click the browse button (...) to the right of the Condition property to open the Component Condition Builder dialog. 4. Select the correct operating system version from the Properties list (VersionNT or Version 9X). 5. Click Add. 6. Click OK If you are working with a Standard Project, you can also select the operating system from Operating Systems property in the Component properties. 7-16 • Frequently Asked Questions InstallShield Software Corporation How Do I Detect Administrator Privileges? InstallScript In InstallScript, the expression SYSINFO.WINNT.bAdmin_Logged_On returns TRUE if the user has administrator privileges. (The expression Is(USER_ADMINISTRATOR, "") returns the same information.) These expressions return TRUE on Windows 9x. MSI The AdminUser property is set if the user running your installation program has administrator privileges. Therefore, you can use “AdminUser” as an Install Condition, or a condition on a feature, component, or custom action. The AdminUser property is always set on Windows 9x. How Do I Detect a First-time Installation? InstallScript 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; MSI In the Windows Installer sequences, the following conditions detect certain types of installation: • First-time installation: Not Installed • Maintenance: Installed • Uninstallation: REMOVE="ALL" (after the InstallValidate action) InstallShield Software Corporation Conditions Questions • 7-17 How Do I Detect If the User Has Selected a Specific Feature? Standard Project In InstallScript, the function FeatureIsItemSelected returns TRUE if a feature is currently selected in one of the feature-selection dialog boxes (such as SdFeatureTree). Basic MSI Windows Installer defines conditions of the form &FeatureName=n, which detect a feature’s action state. For example, to determine if a feature called ProgramFiles is selected to be installed locally, and it was not already installed, use the condition “&ProgramFiles=3”. See also the MSI Help Library page “Conditional Statement Syntax”. How Do I Detect If the User is Running a Particular Operating System? InstallScript In InstallScript, the SYSINFO structure is automatically initialized to describe the target operating system. For specific values to check, see the online Help Library topic SYSINFO. MSI The VersionNT, Version9X, ServicePackLevel, and WindowsBuild properties describe the target operating system. Property names are case sensitive, so Version9X and Version9x are considered to be different properties. User Interface Questions How Do I Display a License Agreement? A license agreement dialog is included as part of the default user interface. To add your text to the license agreement, do the following: 7-18 • Frequently Asked Questions InstallShield Software Corporation Standard Project 1. Ensure the Setup.rul file in the InstallScript view contains a reference to sdLicense and SUPPORTDIR. By default, the code contained in the Setup.rul file is: Dlg_SdLicense: szLicenseFile = SUPPORTDIR ^ "license.txt"; szTitle = ""; szMsg = ""; szQuestion = ""; nResult = SdLicense( szTitle, szMsg, szQuestion, szLicenseFile ); if (nResult = BACK) goto Dlg_SdWelcome; 2. Create a file called License.txt containing your licence agreement. 3. Select Setup Files/Billboards from the checklist. 4. Select the language you want to associate this agreement with from the Setup Files tree. If it is to be associated with all languages, select Language Independent. 5. Right-click in the Files window and select Insert Files. 6. Locate and select the license.txt file. 7. Click Open. Basic MSI 1. Click Dialogs in the checklist. 2. Select License Agreement in the Dialogs list (upper-left pane). 3. In the License File property, type or use the browse button to navigate to the .rtf file you want to use. How Do I Validate a Serial Number? InstallScript The SdRegisterUserEx dialog box contains a field in which you can require the user to enter a serial number. Because sophisticated users can open .msi databases and remove custom actions and control events related to serial-number validation, it is recommended that you also perform serial-number validation inside your application code, prompting the user to re-enter the serial number if a valid number is not stored on the target system. In the Samples folder for InstallShield Developer, there is a folder called Example Custom Password Dialog containing a dialog that can serve as a starting point for more sophisticated serial number validation. InstallShield Software Corporation User Interface Questions • 7-19 How Do I Populate a List Box at Run Time? InstallScript The CtrlSetList function associates a string list variable with a ListBox control on a dialog box. For example: function FillListBox( ) LIST listDays; begin listDays = ListCreate(STRINGLIST); ListAddString(listDays, "Monday", AFTER); ListAddString(listDays, "Wednesday", AFTER); ListAddString(listDays, "Friday", AFTER); CtrlSetList("DialogName", nListBoxId, listDays); end; Basic MSI Populating a list box at run time requires you to create temporary records for the .msi database using SQL queries. For an example, see InstallShield Knowledge Base article Q103295. How Do I Display a File-Browse Dialog Box? See the InstallShield Knowledge Base article Q104325. How Do I Display a Network-Browse Dialog Box? InstallScript The SelectDirEx function enables you to display a dialog box from which the user can browse the Network Neighborhood. prototype NetBrowse( ); function NetBrowse( ) STRING svSelectedDir[MAX_PATH + 1]; NUMBER nReturn; begin svSelectedDir = PROGRAMFILES; nReturn = SelectDirEx("", "Select a directory:", "", "", BIF_EDITBOX | BIF_RETURNONLYFSDIRS, svSelectedDir); if (nReturn = OK) then MessageBox("Selected directory was: " + svSelectedDir, INFORMATION); elseif (nReturn = CANCEL) then MessageBox("User clicked Cancel", INFORMATION); else MessageBox("Error displaying dialog box", WARNING); endif; end; 7-20 • Frequently Asked Questions InstallShield Software Corporation Why Can’t I Remove the InstallShield Label (Branding) from the Setup Dialog Boxes? Installing your applications is InstallShield’s most important objective. Most software users recognize and trust the InstallShield name and have come to expect that any software packaged using an InstallShield product will install flawlessly. We offer many other locations for you to place your company logo and branding within your setup, but the InstallShield logo cannot be removed from the setup dialogs. Further information is included in your InstallShield license agreement. Custom Actions Questions How Do I Search for a File on the User’s System? InstallScript The FindFile and FindAllFiles functions enable you to search for existing files on the target system. For example, an implementation of the OnAppSearch event-handler function that searches for a file called FindMe.exe in the user’s Program Files folder might appear as follows: function OnAppSearch( ) STRING svFoundFile; begin FindAllFiles(PROGRAMFILES, "FindMe.exe", svFoundFile, RESET); MessageBox("Found FindMe.exe at: " + svFoundFile, INFORMATION); end; Basic MSI Windows Installer uses records in the Signature, AppSearch, and “Locator” tables for instructions for searching for files on the target system. The Signature table contains information about the file to be located, and the AppSearch table specifies a property to set to the full path of the located file, if found. For example, to search for a file called FindMe.exe, use Direct Editor to add the following record to the Signature table: Signature findme_sig FileName FindMe.exe (Other fields exist in Signature records in which you can specify optional version, size, date, and language information.) Add the following record to the AppSearch table: Property LOCATION_OF_FINDME InstallShield Software Corporation Must be a public property. Custom Actions Questions • 7-21 Signature_ findme_sig Same name used in Signature table. There are four “Locator” tables in which you can specify where Windows Installer should begin searching for the file: CompLocator, RegLocator, IniLocator, and DrLocator. To search for a file in a specific directory, use the DrLocator table. For example, to search for FindMe.exe in the user’s Program Files directory, add the following record to the DrLocator table. Signature findme_sig Parent Path [ProgramFilesFolder] Depth 2 After the AppSearch action runs, the public property LOCATION_OF_FINDME will contain the full path to FindMe.exe on the user’s system, if it exists, or will be undefined if the file is not located. How Do I Launch My Application Following Installation? InstallScript The LaunchApp and LaunchAppAndWait functions launch an executable. For example, the following code launches a copy of Program.exe in the user’s INSTALLDIR folder, returning execution to the script when the user closes the program’s window. LaunchAppAndWait(INSTALLDIR ^ "Program.exe", "", WAIT); How Do I Place a File in the .msi Database and Extract It During Run Time? The Setup Files view enables you to store temporary files that are to be used by your installation program, but are not to be installed. For more information see the online Help Library topic “Setup Files.” Building Release Questions My Setup Does Not Fit on a Single Floppy Disk. Why? There are two primary reasons why your setup might not fit on a floppy disk—disk space and disk spanning. 7-22 • Frequently Asked Questions InstallShield Software Corporation Disk Space Although Microsoft ships Windows 2000, Windows Me, and Windows XP with the Windows Installer service, all other operating systems to date do not ship with this service. Therefore, the Windows Installer service must be installed before your setup can run. There are two versions of this setup—one for Windows NT 4.0 and one for Windows 9x. Each of these setups requires more than 1.4 MB of disk space. Because of these file size requirements, it is difficult to distribute your setup program on a floppy disk if you need to distribute the Windows Installer service setups as well. Disk Spanning In addition the .msi file created by InstallShield that interacts with the Windows Installer service cannot be spanned across multiple disks and it must reside on the first disk of your setup. Therefore, if you want to include all of your files in one compressed .msi file, it might not fit on one floppy disk. However, if your files can remain uncompressed, they can be included on successive disks of the setup. How Do I Get Changes I Make in the IDE to Take Effect When I Run My Setup? For changes that you have made in the IDE to take effect in your setup package, you need to rebuild it. To build your setup at any time, click the Build button in the toolbar. This creates your setup as specified by the properties for the last media type that you have selected. If you have not configured any properties in the Build Your Release view, then InstallShield Developer builds your setup using the default settings. How Do I Build My Project from the Command Line? You can build a release from the command line using ISCmdBld.exe. For commandline switches and usage examples, see the online Help Library topic “Building a Setup from the Command Line.” How Do I Change Project Properties from the Command Line? The InstallShield automation interface enables you to query and modify many project properties from an unattended build process, using, for example, a VBScript script or Visual Basic application. InstallShield Software Corporation Building Release Questions • 7-23 The framework of any script that uses the automation interface to access a project appears as follows (you can copy this script into a text file called Framework.vbs and then double-click the file icon): Set oProject = CreateObject("ISWiAutomation.ISWiProject") oProject.OpenProject "C:\MySetups\MyProject.ism" ' perform queries and changes here oProject.SaveProject ' necessary only if modifying the project oProject.CloseProject How Do Users Run My Installation in Silent Mode? Standard Projects Running a Standard project installation in silent mode takes two steps. First, to prepare the installation for silent mode, one must create a response file by running Setup.exe with the /r argument. Next, one runs the installation in silent mode based on the contents of the response file by running Setup.exe with the /s argument. Basic MSI Basic MSI projects 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". How Do I Create and Read a Response File for a Silent Installation? Standard Project To create a response file, run Setup.exe with the -r switch, which runs your installation in “record mode”, generating a response file containing the options selected in your installation’s user interface. To run your installation program based on the response file, run Setup.exe with the s switch. Uninstallation Questions How Do I Remove Files that Were Created by My Product? By default, files created by your product after the installation is complete are assumed to be user data, and are not removed when the user uninstalls your application. 7-24 • Frequently Asked Questions InstallShield Software Corporation InstallScript In your script, you can call the DeleteFile and DeleteDir functions in uninstallation event-handler functions to remove any files or directories you want removed. MSI Records you create in the RemoveFile table (using Direct Editor) can specify additional files to remove. For example, if your application creates a file called Product.ini inside INSTALLDIR and you want the file removed when the component containing your main executable is removed, add a record with the following contents to the RemoveFile table: FileKey remove_file Component_ ProgramFiles FileName Product.ini DirProperty INSTALLDIR InstallMode 2 How Do I Remove Registry Data Created by My Product? By default, your product’s uninstaller will remove only data created by your installation program. InstallScript In your script, you can call the RegDBDeleteValue and RegDBDeleteKey functions in your uninstallation event-handler functions to remove specified registry values and keys. MSI The Registry explorer understands a special uninstallation flag that controls the registry data to be removed during uninstallation. In particular, using the “-” flag (“Uninstall entire key”) on a registry key causes the key and all its values and subkeys to be removed during uninstallation. The RemoveRegistry table (exposed in the Direct Editor) specifies data to be removed only when your product is installed. For details, see the MSI Help Library. InstallShield Software Corporation Uninstallation Questions • 7-25 7-26 • Frequently Asked Questions InstallShield Software Corporation DemoShield Browsers A Chapter Contents What is a DemoShield Browser? . . . . . . . . . . . A-3 DemoShield Browser Wizard . . . . . . . . . . . . . A-3 DemoShield Browser Templates. . . . . . . . . . A-3 Creating Browsers . . . . . . . . . . . . . . . . . . . A-4 Using an Existing Browser . . . . . . . . . . . . . A-4 This appendix explains how to create a DemoShield Browser using the DemoShield Browser wizard. Your browser can launch automatically when the CD is inserted into the CD-ROM drive to begin the installation process in a simple and efficient way, or can serve as a graphical “front-end” to your installation. This chapter also provides information about the full version of DemoShield, as well as the evaluation copy available on the InstallShield Developer CD. InstallShield Software Corporation Expanding DemoShield Browser Wizard Functionality . . . . . . . . . . . . . . . . . . . . . . . . . A-4 About DemoShield . . . . . . . . . . . . . . . . . . . A-4 What DemoShield Can Do . . . . . . . . . . . . . A-5 DemoShield Consulting Services . . . . . . . A-6 DemoShield Training . . . . . . . . . . . . . . . A-6 Creating a Browser Using DemoShield . . . . A-6 A-1 A-2 InstallShield Software Corporation What is a DemoShield Browser? A DemoShield browser is a demo that provides a graphical interface for your CDROM files and/or your product setup. There are several benefits to supplying a browser with your application. • Present a visually appealing interface for your setup. A self-launching CD browser helps you make the setup process more enjoyable by providing an interactive, graphical interface from which the setup can be launched. Impress your customers by using graphics, animation, video, and sound that reflect the overall image of your product. • Showcase the other applications you develop. You may have developed several applications that would be of interest to your current customers. By providing product information within the browser, you can market these applications directly to people who are familiar with your company. • Provide contact information for your company. A browser allows you to include a handy list of names, numbers, addresses, and Web site URLs that your customers can reference quickly. Placing your general company, sales, marketing, and technical support contact information on the CD-ROM ensures that your customers can reach you whether or not they have access to printed documentation or a connection to the Internet. You used a CD Browser when installing InstallShield Developer. To take another look at the InstallShield Developer CD Browser, insert the InstallShield Developer CD into your CD-ROM drive.You can find other examples of CD browsers—as well as other DemoShield projects—by visiting the DemoShield Showcase at http://www.installshield.com/ds/info/showcase.asp. DemoShield Browser Wizard The DemoShield Browser Wizard enables you to create a graphical front-end to your setup with minimal effort. Several predefined templates integrate information collected through the panels to customize the Browser to include company- and product-specific information. The output is stored with the corresponding release for your installation. The resulting Browsers are created in English. The full version of DemoShield is required to localize them to other languages. DemoShield Browser Templates The DemoShield Browser Wizard uses templates to create the Browser for your installation. A template is a special type of Demo file that stores default Objects, Scenes, and Demo properties. This ensures that the information you enter through the DemoShield Browser Wizard always results in the same initial Browser. If you have the full version of DemoShield, you can edit the resulting output, or even creInstallShield Software Corporation What is a DemoShield Browser? • A-3 ate or modify templates for your own use. Each Browser theme uses a different template. Creating Browsers To create a Browser using the DemoShield Browser Wizard, do the following: 1. From the Releases view, select the release for which you are creating a Browser. 2. Launch the DemoShield Browser Wizard for a release in one of the following ways: • Select DemoShield Browser Wizard from the Project menu. • Right-click the release and select DemoShield Browser Wizard. 3. Provide information about your product and organization in the wizard. When you reach the end of the wizard, click Finish. The Browser is stored in the same directory as the release. Using an Existing Browser If you already have used a full version of DemoShield to create a Browser, you can use it for your release. To use an existing Browser, do the following: 1. Select the release this Browser is for from the Releases view. 2. In the property sheet, enter the location of the Browser in the Demo File Name field. You can also click Browse (...) to navigate to the file. When you build the release, the Browser specified and the DemoShield Player (demo32.exe) will be included. Expanding DemoShield Browser Wizard Functionality Creating Browsers using the templates included with the DemoShield Browser Wizard is only a small demonstration of the functionality included in the retail version of DemoShield. Not only can you create Browsers, but also presales presentations, product demonstrations, tutorials, and computer-based training. A limited trial version of DemoShield is included on the InstallShield CD to allow you to experience what DemoShield has to offer. About DemoShield InstallShield Developer includes the DemoShield Browser Wizard to create a graphical front-end to your installation. However, this wizard contains only a tiny fraction of the features and functionality of the full version of DemoShield—the quickest and easiest authoring tool for product demos, sales presentations, Browsers, and computer based training. A-4 • DemoShield Browsers InstallShield Software Corporation Use DemoShield to create fully interactive demos that entice users. Make sure you connect with your customers. Don’t just deploy. Blow them away with a totally interactive experience. Let your customers get to know you. Even entice them with new purchasing opportunities. Create a Browser to guide your users through installation with interactive multimedia that informs, entertains, and sells. To make it happen, you need an easyto-use, highly versatile solution that lets you build truly creative experiences that strategically guide your audience through application installation. DemoShield helps you create professional multimedia material in a fraction of the time required by other products. Take a look at all the software professionals that benefit from DemoShield's easy-to-use, point-and-click authoring environment. For more information about the full version of DemoShield, visit the DemoShield Web site at http://www.installshield.com/ds. What DemoShield Can Do DemoShield is a multimedia authoring tool that is particularly well suited to helping you quickly create interactive CD browsers, sales presentations, product demonstrations, and computer-based training. No coding or scripting is required. DemoShield is completely point-and-click, providing several types of objects that you can place within a scene. Fill these objects with your media files, and set their properties as you like. Assign actions to interactive objects such as Hot Spot objects, Button objects, Edit Field objects, and List Box objects by following a few simple steps in DemoShield’s Action wizard. DemoShield’s New Demo wizard provides preformatted CD browser templates that help you with the basic layout. These templates contain placeholders for your graphics, text, and other objects. Fill and reformat these objects to customize your browser. Launch applications from within the browser. Build a “Launch Application” action that allows your customer to launch your setup from within the browser. This feature is also useful when you are providing several evaluation copies of your products-just place a button in your browser, change the caption to indicate the product being installed, and build the action in a few quick steps. You can point your customer’s Web browser to any URL you wish by using the “View Internet URL” action. Or you can give your customers control over where their Web browsers go by creating an Edit Field object that launches the URL they enter into it. A free evaluation copy of the latest version of DemoShield is accessible from the InstallShield Developer CD Browser; or you can download an evaluation copy from the InstallShield Web site, http://www.installshield.com. InstallShield Software Corporation Expanding DemoShield Browser Wizard Functionality • A-5 DemoShield Consulting Services Is your DemoShield demo up to par? If not, DemoShield Consulting Services can provide the creative drive and technical expertise to make your marketing visions both look and function as they should. Our experienced team of multimedia developers and graphic artists excel in creating enticing sales demos, installation demos, tutorials, and product overviews with the professional edge and high-level impact expected by today’s consumer. From as little as a new graphic interface, to as much as creating your demo from scratch, DemoShield Consulting provides the resources and talent to fit your needs and your budget. So don’t settle for static screenshots or buried navigation—let us take a look at your existing demo or planning documents to see how we can help you achieve the quality and design you require for a sophisticated demonstration solution. Visit our Web site (http://www.installshield.com) and click the Consulting link for more information about DemoShield Consulting Services. DemoShield Training DemoShield Training is designed with the multimedia developer in mind. Our courses help users of all levels become familiar with the features and functionality available in DemoShield. For more information, visit http://www.installshield.com and click on Training. Creating a Browser Using DemoShield This list, adapted from the DemoShield Knowledge Base, outlines the steps involved in creating a CD browser. 1. Determine the audience for the CD browser. The market for your CDROM affects how the information should be presented in the CD browser. If the CD-ROM is for the banking industry, marble textures and subdued colors are appropriate. If the CD-ROM is given to graphic artists, attention-grabbing multimedia elements and vibrant colors help keep the viewer interested. 2. Determine the content included in your browser. The content for your browser determines the interface appropriate for delivering it. Content includes marketing copy, graphics, sounds, video, animation, and so on. Consider what you require to fulfill the purpose of the browser. Bells and whistles, such as sound effects, can always be added later if you have extra time. 3. Design an interface that is appropriate for the content and topics. An interface should be suited to the content and topics that the CD browser will contain. A simple browser might have only one scene with a few buttons providing users with access to other features within the browser. If you wish to include several scenes, be sure to provide a consistent method of navigation so your customers can find their way to the information that interests them most. Remember: the interface should fit the content-not the other way around. 4. Create a prototype using placeholders. A prototype of a browser takes your ideas off paper and onto the screen. A prototype will save you a lot of grief by giving others a chance to review your ideas before you go through the effort of creating the entire browser. At this point in the project, the interface and layA-6 • DemoShield Browsers InstallShield Software Corporation out should match the final version. Any content not yet ready should be indicated with a placeholder. A placeholder is a temporary filler for content that is not yet ready, for example, using graphics from a clip art library or scanning in your storyboards and displaying the scanned images in place of the actual graphics and text. 5. Put it all together. Once all the required tasks are complete you can put the pieces together. Replace placeholders with actual content and finish the project. 6. Perform quality assurance testing. Those testing the browser should try it on a variety of configurations and systems that match as closely as possible your audience’s configurations. InstallShield Software Corporation Expanding DemoShield Browser Wizard Functionality • A-7 A-8 • DemoShield Browsers InstallShield Software Corporation Glossary G Action The Windows Installer service works through a series of specific executions called actions. There are two types of actions: built-in actions (such as file transfer or checking for disk space) and custom actions (such as launching an EXE or calling a function in a DLL). Advertisement Advertisement is a type of just-in-time installation in which features are not installed immediately during setup, but only when the installer requests them. Advertisement can save space on a user’s hard drive. App Paths The registry key that Windows uses to find your application and its DLLs if their locations are not already in the system’s path. App Paths can be set through the Advanced Settings folder. Context Menu A context menu, also known as a right-click menu or a popup menu, appears when a user right-clicks an item on the desktop, in Windows Explorer, or in an application. End User The term end user, in InstallShield Developer documentation, refers to the customer who installs your product onto his or her computer. Dynamic Link Library (DLL) A shared code-base file containing functions that can be called from other applications. Feature Parts of a setup from an end user’s perspective, such as a help file, a clip art package, or program files. These are logical groupings of files and functionality that the end user can install individually during a custom setup. InstallShield Software Corporation Glossary • G-1 Globally Unique Identifier (GUID) A globally unique identifier is a long string of numbers created by InstallShield for Windows Installer to uniquely identify your product from others. Enter string GUIDs throughout the IDE in the format {XXXXXXXX -XXXX-XXXXXXXX-XXXXXXXXXXXX}. .ism File The .ism file is the working file that InstallShield Developer uses to store your project information. When you build a release, InstallShield Developer uses the .ism file to create an .msi file for distribution. Merge Module A merge module is a package containing all of the logic and files needed to install distinct pieces of functionality such as run-time DLLs and virtual machines. Merge modules are built once and can be added to any setup project. For detailed information on merge modules, see the online help under Merge Modules and Merge Module Authoring. .msi File The .msi file, created by InstallShield for Windows Installer, is the setup package in its finished state. It includes setup resources files and can have compressed within it all of the application’s data files. The .msi file is the one that is distributed to the end users and the one that interacts with the Windows Installer service to install your application. Publishing 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 still be installed through the Add/Remove Programs applet of the Control Panel or when an installed component requests the published component from the installer. Product Refers to the actual application or collection of files that is to be installed. G-2 • Glossary InstallShield Software Corporation Project Refers to the entire collection of source files and the .ism file that make up your setup while it is under construction. Registry or REG file A text file of a predefined format that contains keys and values that can be merged into a registry. Reinstallation When a product has already been installed on a machine and its setup is run again, the setup reinstalls the product by overwriting its existing files, shortcuts, and registry entries. Rollback The Windows Installer service tracks all changes that are made during the installation process so that, if an error occurs and the installation is aborted, the changes are rolled back and the target machine is restored to its original state. Run Time The time during which the .msi file interacts with the Windows Installer service to install your application on the target machine. String Table A database that maintains the string IDs, values, and comments for a specific language. Uninstallation The process where the setup undoes the changes made during the installation. Uninstallation is the installation maintenance option that allows the end user to remove the product files and reverse any changes to the machine made during the original installation. InstallShield Software Corporation Glossary • G-3 G-4 • Glossary InstallShield Software Corporation I Index A administrator privileges detecting 7-17 Advanced views 4-37 advertise features 2-3 automation interface 5-6 B Basic MSI project converting to Standard project 3-18 basic MSI project 3-3 end-user dialogs 4-28 basic MSI projects differences between Standard projects and 7-5 Basic MSI vs. Standard setup projects 3-3 Billboards view 4-34 branding 7-21 browsers A-3 creating A-4 build command line 7-23 Build Your Release view 4-35 C CD browser A-3 checklist 4-7 code page requirements 6-6 code pages installing 6-7 COM information extracting 5-9 COM registration 5-9 COM servers registering 7-10 command-line changing properties from 7-23 command-line build 7-23 InstallShield Software Corporation components adding registry data to 4-24 Components view 4-42 conditional installations 7-16 Conditionally Install 7-16 Configure the Target System view 4-21 Control toolbar 4-5 conventions 3 converting Basic MSI project to Standard project 3-18 Customize Functionality view 4-30 D default language 6-4 setting 6-4 DemoShield A-5 DemoShield Browser A-3 templates A-3 DemoShield Browser Wizard A-3 expanding functionality A-4 Dependencies view 4-20 Design the User Interface view 4-28 destination folder 7-9 specifying 7-9 Developer Features & Benefits xix Developer Features .NET Support xxii 64-bit Application Support xxii Advanced Compression xxi Advanced Project Control xxi Build Reports xxi Complete InstallScript Control xxi Comprehensive Online Tutorial xxiii Digital Signatures and Passwords xxi Direct Table Editing xxi Dynamic Source Files xx Dynamic Web Distribution xx Efficient Development xx File Dependency Scanning xx Index • I-1 Flexible Runtime Experience xxii Fully Customizable Installer Interface xxii Intelligent Downloads xxi Internationalization Support xxii Language Packs xxii Multimedia Runtime Support xxii One-Click Install Technology xx Patch Creation xxi Project Debugging xxi Project Templates xx Quick Build xx Release Management xxi Source Code Control Integration xxi Technology Modules xx Twenty Productivity Wizards xx Upgrade Existing Scripts xx Visual Dialog Editor xxii Visual IDE xx Web Deployment Wizard xxi Windows Installer 2.0 xxii Windows XP Support xxii Workflow Automation xxi Dialog Layout toolbar 4-6 dialogs branding 7-21 editing behavior 4-29 editing layout 4-29 end-user in basic MSI project 4-28 reverting to default 4-29 standard setup project 4-29 Direct Editor 4-43 disk spanning 5-6 Distribute Your Release view 4-36 E empty folders creating 7-10 Environment Variables view 4-27 I-2• Index F features associating merge modules with 4-19 conditionally hiding 7-12 conditionally selecting 7-11 determining if a user has selected a specific 7-18 Features & Benefits xix Features view properties 4-14 Subfeatures 4-13 views Features 4-13 File Extensions view 7-8 file types 7-8 associating with my program 7-8 files removing during uninstallation 7-24 searching for on the user’s system 7-21 Files view 4-17 Floppy Disk 7-22 G General Information view 4-9 Product Properties 4-11 Project Properties 4-10 String Tables 4-12 Summary Information 4-10 Windows 2000 4-10 globalization code page requirements 6-6 customizing language support 6-5 default language 6-4 displaying the language dialog 6-4 installing files of the same name 6-5 language support 5-4, 6-3 language the setup runs in 6-3 steps 5-4, 6-3 tips 6-6 globalizing setups 5-4 InstallShield Software Corporation H help resources xxvii I INI File Changes view 4-26 installation procedure 1-4 installations conditional 7-16 detecting a first-time 7-17 launching applications after 7-22 INSTALLDIR 7-9 installing InstallShield Express 1-4 InstallScript 5-3 authoring custom actions 5-3 getting or setting Windows Installer properties 7-15 InstallScript view 4-31 InstallShield branding 7-21 K key files setting for a dynamic file link 7-10 Knowledge Base xxviii L Language Packs xxii language support 6-3 customizing 6-5 launching applications following installation 7-22 license agreement 7-18 displaying 7-18 M merge 7-7 Merge Modules 7-7 merge modules accessing updated 7-7 associating with features 4-19 Merge Modules view 4-19 InstallShield Software Corporation Merge Modules vs. Objects 4-19 MSI Debugger 4-35 MSI Debugger toolbar 4-7 N newsgroups xxviii O Objects vs. Merge Modules 4-19 ODBC Resources view 4-25 online help xxvii operating system determining if a user is running a specific 7-18 Organize Your Setup view 4-8 P patching 5-5 path variable types 4-38 Path Variables view 4-37 Prepare for Distribution view 4-34 project file 4-3 projects upgrading from previous versions 3-1 upgrading InstallShield Professional 3-3 upgrading InstallShield— Windows Installer Edition 3-17 Property Manager 4-39 R register 4 registration 1-4 registry reading data from 7-14 removing data during uninstallation 7-25 writing a property’s value to 7-15 registry data adding to a component 4-24 Registry view 4-23 Index • I-3 Release Wizard 5-6 response file 7-24 rollback 2-4 S Script Editor 4-31 self-registration 5-9 Sequences/Actions view 4-32 serial number validating 7-19 setup 2-5 defined 2-5 Setup Design view 4-40 Advanced Settings 4-41 Components 4-40 Features 4-40 Files 4-41 Merge Modules 4-41 Registry Data 4-41 Shortcuts 4-41 setup elements 2-5 Setup Files view 4-33 setup project file 4-3 setup projects Basic MSI 3-3 Standard 3-3 Standard vs. Basic MSI 3-3 Setup Types view 4-15 setups globalizing 5-4 shortcuts 7-13 creating 4-22, 7-13 creating to folder 7-13 creating to Internet 7-13 destinations 4-22 Shortcuts/Folders view 4-22 silent mode 7-24 response file 7-24 software registration 1-4 I-4• Index source code control integration 5-8 Specify Application Data view 4-16 specifying the destination folder 7-9 standard project 3-3 dialogs 4-29 Standard projects converting a Basic MSI project to 3-18 standard projects differences between Basic MSI projects and 7-5 Standard toolbar 4-3 Standard vs. Basic MSI setup projects 3-3 system requirements 1-3 T templates DemoShield Browser A-3 toolbars 4-3 Control 4-5 Dialog Layout 4-6 modifying and displaying 4-3 MSI Debugger 4-7 Standard 4-3 transforms 5-5 tutorial xxiii U uninstallation procedure 1-4 upgrading InstallShield Professional projects 3-3 InstallShield—Windows Installer Edition projects 3-17 projects created using InstallShield Professional 7-6 upgrading projects 3-1 V validation 5-7 viewbar 4-7 views 4-8 Advanced 4-37 Billboards 4-34 InstallShield Software Corporation Build Your Release 4-35 Components 4-42 Configure the Target System 4-21 Customize Functionality 4-30 Dependencies 4-20 Design the User Interface 4-28 Distribute Your Release 4-36 Environment Variables 4-27 Files 4-17 General Information 4-9 INI File Changes 4-26 InstallScript 4-31 Merge Modules 4-19 ODBC Resources 4-25 Organize Your Setup 4-8 Path Variables 4-37 Prepare for Distribution 4-34 Registry 4-23 Sequences/Actions 4-32 Setup Design 4-40 Setup Files 4-33 Setup Types 4-15 Shortcuts/Folders 4-22 Specify Application Data 4-16 W Windows Installer 2-3 benefits 2-3 componentized installation 2-3 feature advertisement 2-3 including 7-7 rollback 2-4 self-repair 2-3 Windows Installer properties getting or setting in InstallScript 7-15 Windows Installer run-time Errors 7-7 Windows Installer service ensuring the target machine has it installed 7-7 wizard DemoShield Browser A-3 InstallShield Software Corporation Index • I-5 I-6• Index InstallShield Software Corporation