No Slide Title

Download Report

Transcript No Slide Title

Developing multilingual installation programs using InstallShield for Windows Installer

David L. Cole IBM Corporation Research Triangle Park, NC [email protected]

1

Why we’re here...

No matter how good your application is, Your customers’ first experience is...

The install program!

New technologies exist… - The Windows Installer - Development tools (InstallShield) Which enable sophisticated, multilingual install programs That’s what we’re here to talk about!

Globalized Software Application Fr De It Ko En Jp 2

Topics

 A background on Microsoft’s Windows Installer service  A description of the InstallShield for Windows Installer tool  Examples of multilingual install programs  Details on how to design and develop multilingual install programs   Explanation of how and where Unicode is used in the process Hints, tips, and gotcha’s  References 3

What is a multilingual installation program?

English German ...

May support multiple languages Installation Program Software Application En De ...

Product to be installed Separate Language Versions (CD & App) En De Type I ...

Common CD, separate Application language Versions En De ...

Type II Common CD & App, multiple language resources En De ...

Type III 4

What is the Windows Installer?

 Microsoft’s Windows Installer is a new installation service that consists of:  an operating system resident installation service  a standard format for component management  a management API for applications and tools.

  Is a key component of Windows 2000, also available for other Windows versions (Windows 95, 98, and NT 4.0) Also known as “MSI”  Not an authoring environment!  3rd party vendors (e.g., InstallShield, Wise) provide development tools 5

Why Windows Installer?

 Better management of shared resources  Consistent enforcement of installation rules  Easy customization by administrators  Facilitated selection of desired application features  Automatic repair of configuration problems  In essence:  reduced support costs for software providers  a much improved experience for administrators and end-users 6

An operating system resident installation service...

      Part of the operating system!

Enforces consistent installation rules  Service is “engine” for install program data Manages shared components on behalf of an application Can run at elevated privilege level on Windows NT/2000  e.g., non-administrators may install services Built-in to Windows 2000, and available on Windows 95, Windows 98, and Windows NT 4.0

Use is required for new “Certified for Microsoft Windows” logo (except for server products, for the time being) 7

A standard format...

       “Data” for operating system install “Engine” Install program is actually a collection of data tables Establishes product / feature / component hierarchy Incorporates “standard” actions such as installing fonts Extendable with custom actions “.msi” file extension May be opened and extended with development tools such as InstallShield for Windows Installer 8

Components and features

Components      “Atomic” unit of installation Collection of files, registry keys, etc. that are all installed together Uniquely defined and automatically shared by OS Not visible to the user Typical method of distinguishing OS-specific and language-specific resources Features     Groupings of components How groups of components are selected to be installed or uninstalled Exposed to the user Maintains “feature state”     Install locally Run from source Install on demand Do not install 9

Products, Features, & Components

Product (Office) Feature 1 (Word) Feature 2 (Excel) Component 1 (WordCore) Resource (winword.exe) Entry Point (Shortcut) Resource (Registry Key) Entry Point (.doc) Feature 3 (Word Speller) Feature 4 (Excel Speller) Component 2 (MS Speller) Resource (Mssp.dll) Entry Point (CLSID) Resource (Registry Key) Component 3 (ExcelCore) Resource (excel.exe) Entry Point (Shortcut) Resource (Registry Key) Entry Point (.xls)

10

Products, Features, & Components

Product (MyProduct) Feature 1 (Executables) Feature 2 (Help) Component 1 (MyProductCore) Resource (myprod.exe) Entry Point (Shortcut) Resource (Registry Key) Entry Point (.myp) Component 2 (Help - English) Resource (myprod.hlp) Entry Point (CLSID) Resource (Registry Key) Component 3 (Help - German) Resource (myprod.hlp) Entry Point (Shortcut) Resource (Registry Key)

11

Feature selection example

12

Feature selection example...

13

Data table example

14

A management API for applications and tools...

     Tightly coupled with the Windows Shell Manages file paths on behalf of an application  enables roaming user support Ensures that requested applications/features are both installed and complete   enables install-on-demand (Advertising) enables self-repair Maintains an inventory of installed applications/features Plays role in enforcing system policies 15

InstallShield for Windows Installer (ISWI)

 A development tool for authoring Windows Installer-based install programs  Creates data tables which compose the .msi file  Includes wizards for stepping you through  creating a standard project  compiling the .msi file and building the output media  creating custom action controls  creating components  adhering to best practices  Also includes support for creating multilingual installs!

16

ISWI input and output

Application files, registry settings, shortcuts, etc.

Feature and component design Installation logic and user interface design I S W I Setup.exe

Windows Installer service .msi file Language transforms Application files Note: numerous different build options exist 17

Setup.exe function flow

 Determine default language (via user locale)  Display language selection panel  Query Windows Installer version  Install Windows Installer service, if needed  Launch Windows Installer service (msiexec.exe)  Apply selected language transform  Install product  Pass command line parameters 18

A demo of ISWI

Product (Demo) Feature 1 (DefaultProgram) Feature 2 (DefaultHelpFiles) Component 1 (Global_Default_Executables) Resource (sol.exe) Entry Point (Shortcut) Component 2 (Global_Default_DLLs) Resource (cards.dll) Component 3 (Global_Default_Help) Resource (sol.hlp) Resource (sol.chp)

19

Localizing an install program

       Add entries to English (or default) string table for any translatable text used in messages or added to dialogs Ensure that custom messages and dialogs reference string table entries Export string table of default language and translate into supported languages Import translated string table for each language InstallShield-provided strings are already translated but may be edited Verify controls on custom dialogs are properly sized That’s it!! 20

Designing a multilingual install program - Type I

     Language chosen at product build time Set of supported languages selected via Project Wizard or Project Properties Language-dependent components identified via Languages field of each component (Setup Design view) At build time (using the Release Wizard),  filter application by selected language (Filtering Settings dialog)  Include only the selected language and make default (Setup Languages dialog) Result: single language version of application, with matching language of install program Separate Language Versions (CD & App) En De Type I ...

21

Designing a multilingual install program - Type II

     Language chosen at product install time Set of supported languages selected via Project Wizard or Project Properties Language-dependent components identified via Conditions field (ProductLanguage property) of each component (Setup Design view) At build time (using the Release Wizard),   do not filter application by language Include all languages, and check “Display the Setup Languages dialog” (Setup Languages dialog) Result: setup.exe’s language selection panel chooses language version of application and language of install program Common CD, separate Application language Versions En Type II De ...

22

Designing a multilingual install program - Type III

      Language chosen at product run time Application’s user interface should include controls to choose language (good to couple with install on demand) Set of supported languages (for install program) selected via Project Wizard or Project Properties Design feature/subfeature tree to list supported languages (allows user to easily add or remove languages) At build time (using the Release Wizard),  do not filter application by language  Include all languages, and check “Display the Setup Languages dialog” (Setup Languages dialog) Result: setup.exe’s language selection panel chooses language of install program; user selects language version(s) of application to be installed. Common CD & App, multiple language resources Type III En De ...

23

Use of Unicode

 Character strings within the .msi file  Exported string files (both Unicode and ASCII text)  License Agreement text (.rtf file)  MSI program interfaces 24

Hints, tips, and gotcha’s

     Must install Windows language resources New Language Wizard command syntax for logging MsiZap Additional tets scenarios     Multiple files of same name to same target directory Filtering components with a property set in the UI sequence Windows 95 bug re: dropdown list on language selection panel Adding language packs to an existing project 25

Resources

      

The Windows Installer Service

, a white paper from Microsoft, available at http://www.microsoft.com/windows/professional/technical/whitepapers/Installer.asp

"Roadmap to Windows Installer Documentation" in the Microsoft Platform SDK, and online at http://msdn.microsoft.com/library/sdkdoc/msi/leglivt_5bxq.htm

Application Specification for Microsoft Windows 2000 for distributed applications Version 1.0

, available at http://msdn.microsoft.com/winlogo/win2000.asp

InstallShield for Windows installer web page at http://www.installshield.com/iswi/ InstallShield Knowledge Base at http://support.installshield.com/ InstallShield for Windows Installer news groups at news server news.installshield.com

 installshield.iswi.general

  installshield.iswi.customaction

installshield.iswi.international

InstallSite web site at http://www.installsite.org/ 26

Supplemental Slides

The following slides show the language features of InstallShield for Windows Installer, and the accompanying text explains how these features are used to create the different types of multilingual installation programs.

27

Language features of ISWI

28

Language features of ISWI...

29

Language features of ISWI...

30

Language features of ISWI...

31

Language features of ISWI...

32

Language features of ISWI...

33

Language features of ISWI...

34