1 developing multilingual installation programs using installshield for windows installer david l....

34
1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole David L. Cole IBM Corporation IBM Corporation Research Triangle Park, NC Research Triangle Park, NC [email protected] [email protected]

Upload: bryan-ray

Post on 27-Mar-2015

238 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

1

Developing multilingual installation programs using InstallShield for Windows

Installer

Developing multilingual installation programs using InstallShield for Windows

Installer

David L. ColeDavid L. Cole

IBM CorporationIBM Corporation

Research Triangle Park, NCResearch Triangle Park, NC

[email protected]@us.ibm.com

Page 2: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

2

Why we’re here...Why we’re here...

GlobalizedSoftware

Application

GlobalizedSoftware

Application

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

The install program!The install program!The install program!The install program!

New technologies exist…New technologies exist…New technologies exist…New technologies exist…

- The Windows Installer- The Windows Installer- The Windows Installer- The Windows Installer- Development tools- Development tools (InstallShield) (InstallShield)- Development tools- Development tools (InstallShield) (InstallShield)

EnEn

DeDeFrFr

JpJpKoKo

ItIt

Which enable sophisticated, Which enable sophisticated, multilingual install programsmultilingual install programsWhich enable sophisticated, Which enable sophisticated, multilingual install programsmultilingual install programs

That’s what we’re here to talk about!That’s what we’re here to talk about!That’s what we’re here to talk about!That’s what we’re here to talk about!

Page 3: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

3

TopicsTopics

A background on Microsoft’s Windows Installer serviceA background on Microsoft’s Windows Installer service A description of the InstallShield for Windows Installer A description of the InstallShield for Windows Installer

tooltool Examples of multilingual install programsExamples of multilingual install programs Details on how to design and develop multilingual install Details on how to design and develop multilingual install

programsprograms Explanation of how and where Unicode is used in the Explanation of how and where Unicode is used in the

processprocess Hints, tips, and gotcha’sHints, tips, and gotcha’s ReferencesReferences

Page 4: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

4

May haveMay haveseparateseparatelanguagelanguageversionsversions

May haveMay haveseparateseparatelanguagelanguageversionsversions

What is a multilingual installation program?What is a multilingual installation program?

Installation ProgramInstallation ProgramInstallation ProgramInstallation Program

SoftwareApplication

SoftwareApplication

Product to be installedProduct to be installedProduct to be installedProduct to be installed

EnglishEnglishGermanGerman

......

EnglishEnglishGermanGerman

...... May supportMay supportmultiplemultiple

languageslanguages

May supportMay supportmultiplemultiple

languageslanguages

May supportMay supportmultiplemultiple

languageslanguagesconcurrentlyconcurrently

May supportMay supportmultiplemultiple

languageslanguagesconcurrentlyconcurrently

EnEnEnEn

DeDeDeDe

............

EnEn

DeDe

............

Separate Language Separate Language Versions (CD & App)Versions (CD & App)Separate Language Separate Language

Versions (CD & App)Versions (CD & App)

Type IType IType IType I

EnEn

DeDe

......

Common CD, Common CD, separate Application separate Application language Versions language Versions

Common CD, Common CD, separate Application separate Application language Versions language Versions

Type IIType IIType IIType II

EnEnEnEn

DeDeDeDe

............

Common CD & App,Common CD & App,multiple language resourcesmultiple language resources

Common CD & App,Common CD & App,multiple language resourcesmultiple language resources

Type IIIType IIIType IIIType III

Page 5: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

5

What is the Windows Installer?What is the Windows Installer?

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

Is a key component of Windows 2000, also available for other Is a key component of Windows 2000, also available for other Windows versions (Windows 95, 98, and NT 4.0)Windows versions (Windows 95, 98, and NT 4.0)

Also known as “MSI”Also known as “MSI” Not an authoring environment! Not an authoring environment!

3rd party vendors (e.g., InstallShield, Wise) provide development 3rd party vendors (e.g., InstallShield, Wise) provide development toolstools

Page 6: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

6

Why Windows Installer?Why Windows Installer?

Better management of shared resourcesBetter management of shared resources Consistent enforcement of installation rulesConsistent enforcement of installation rules Easy customization by administratorsEasy customization by administrators Facilitated selection of desired application featuresFacilitated selection of desired application features Automatic repair of configuration problemsAutomatic repair of configuration problems

In essence: In essence: reduced support costs for software providersreduced support costs for software providers a much improved experience for administrators and end-a much improved experience for administrators and end-

usersusers

Page 7: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

7

An operating system resident installation service...An operating system resident installation service...

Part of the operating system!Part of the operating system! Enforces consistent installation rulesEnforces consistent installation rules

Service is “engine” for install program data Service is “engine” for install program data Manages shared components on behalf of an application Manages shared components on behalf of an application Can run at elevated privilege level on Windows NT/2000Can run at elevated privilege level on Windows NT/2000

e.g., non-administrators may install servicese.g., non-administrators may install services Built-in to Windows 2000, and available on Windows 95, Windows Built-in to Windows 2000, and available on Windows 95, Windows

98, and Windows NT 4.098, and Windows NT 4.0 Use is required for new “Certified for Microsoft Windows” logo Use is required for new “Certified for Microsoft Windows” logo

(except for server products, for the time being)(except for server products, for the time being)

Page 8: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

8

A standard format...A standard format...

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

InstallShield for Windows InstallerInstallShield for Windows Installer

Page 9: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

9

Components and featuresComponents and features

““Atomic” unit of installationAtomic” unit of installation Collection of files, registry Collection of files, registry

keys, etc. that are all installed keys, etc. that are all installed togethertogether

Uniquely defined and Uniquely defined and automatically shared by OSautomatically shared by OS

Not visible to the userNot visible to the user Typical method of Typical method of

distinguishing OS-specific and distinguishing OS-specific and language-specific resourceslanguage-specific resources

Groupings of componentsGroupings of components How groups of components are How groups of components are

selected to be installed or selected to be installed or uninstalleduninstalled

Exposed to the userExposed to the user Maintains “feature state”Maintains “feature state”

Install locallyInstall locally Run from sourceRun from source Install on demandInstall on demand Do not installDo not install

ComponentsComponents FeaturesFeatures

Page 10: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

10

Component 1Component 1(WordCore)(WordCore)

Component 3Component 3(ExcelCore)(ExcelCore)

Component 2Component 2(MS Speller)(MS Speller)

ProductProduct(Office)(Office)

Feature 2Feature 2(Excel)(Excel)

Feature 1Feature 1(Word)(Word)

Entry PointEntry Point(.doc)(.doc)

Entry PointEntry Point(Shortcut)(Shortcut)

Entry PointEntry Point(.xls)(.xls)

Entry PointEntry Point(Shortcut)(Shortcut)

Entry PointEntry Point(CLSID)(CLSID)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(winword.exe)(winword.exe)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(excel.exe)(excel.exe)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(Mssp.dll)(Mssp.dll)

Feature 3Feature 3(Word Speller)(Word Speller)

Feature 4Feature 4(Excel Speller)(Excel Speller)

Products, Features, & ComponentsProducts, Features, & Components

Page 11: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

11

ProductProduct(MyProduct)(MyProduct)

Feature 2Feature 2(Help)(Help)

Feature 1Feature 1(Executables)(Executables)

Component 1Component 1(MyProductCore)(MyProductCore)

Entry PointEntry Point(.myp)(.myp)

Entry PointEntry Point(Shortcut)(Shortcut)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(myprod.exe)(myprod.exe)

Component 3Component 3(Help - German)(Help - German)

Entry PointEntry Point(Shortcut)(Shortcut)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(myprod.hlp)(myprod.hlp)

Component 2Component 2(Help - English)(Help - English)

Entry PointEntry Point(CLSID)(CLSID)

ResourceResource(Registry Key)(Registry Key)

ResourceResource(myprod.hlp)(myprod.hlp)

Products, Features, & ComponentsProducts, Features, & Components

Page 12: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

12

Feature selection exampleFeature selection example

Page 13: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

13

Feature selection example...Feature selection example...

Page 14: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

14

Data table exampleData table example

Page 15: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

15

A management API for applications and tools...A management API for applications and tools...

Tightly coupled with the Windows ShellTightly coupled with the Windows Shell Manages file paths on behalf of an applicationManages file paths on behalf of an application

enables roaming user supportenables roaming user support Ensures that requested applications/features are both installed Ensures that requested applications/features are both installed

and completeand complete enables install-on-demand (Advertising)enables install-on-demand (Advertising) enables self-repairenables self-repair

Maintains an inventory of installed applications/featuresMaintains an inventory of installed applications/features Plays role in enforcing system policiesPlays role in enforcing system policies

Page 16: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

16

InstallShield for Windows Installer (ISWI)InstallShield for Windows Installer (ISWI)

A development tool for authoring Windows Installer-based A development tool for authoring Windows Installer-based install programsinstall programs

Creates data tables which compose the .msi fileCreates data tables which compose the .msi file Includes wizards for stepping you throughIncludes wizards for stepping you through

creating a standard projectcreating a standard project compiling the .msi file and building the output mediacompiling the .msi file and building the output media creating custom action controlscreating custom action controls creating components creating components adhering to best practicesadhering to best practices

Also includes support for creating multilingual installs!Also includes support for creating multilingual installs!

Page 17: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

17

ISWI input and outputISWI input and output

Installation logic and user interface

design

Installation logic and user interface

design

Application files, registry settings,

shortcuts, etc.

Application files, registry settings,

shortcuts, etc.

Feature and component design

Feature and component design

ISWI

ISWI

Setup.exeSetup.exe

Windows Installer serviceWindows Installer service

.msi file.msi file

Language transformsLanguage transforms

Application filesApplication files

Note: numerous different build options existNote: numerous different build options existNote: numerous different build options existNote: numerous different build options exist

Page 18: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

18

Setup.exe function flowSetup.exe function flow

Determine default language (via user locale)Determine default language (via user locale) Display language selection panelDisplay language selection panel Query Windows Installer versionQuery Windows Installer version Install Windows Installer service, if neededInstall Windows Installer service, if needed Launch Windows Installer service (msiexec.exe)Launch Windows Installer service (msiexec.exe)

Apply selected language transformApply selected language transform Install productInstall product Pass command line parametersPass command line parameters

Page 19: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

19

Component 1Component 1(Global_Default_Executables)(Global_Default_Executables)

Component 3Component 3(Global_Default_Help)(Global_Default_Help)

Component 2Component 2(Global_Default_DLLs)(Global_Default_DLLs)

ProductProduct(Demo)(Demo)

Feature 2Feature 2(DefaultHelpFiles)(DefaultHelpFiles)

Feature 1Feature 1(DefaultProgram)(DefaultProgram)

Entry PointEntry Point(Shortcut)(Shortcut)

ResourceResource(sol.exe)(sol.exe)

ResourceResource(sol.chp)(sol.chp)

ResourceResource(sol.hlp)(sol.hlp)

ResourceResource(cards.dll)(cards.dll)

A demo of ISWIA demo of ISWI

Page 20: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

20

Localizing an install programLocalizing an install program

Add entries to English (or default) string table for any translatable text Add entries to English (or default) string table for any translatable text used in messages or added to dialogsused in messages or added to dialogs

Ensure that custom messages and dialogs reference string table entriesEnsure that custom messages and dialogs reference string table entries Export string table of default language and translate into supported Export string table of default language and translate into supported

languages languages Import translated string table for each languageImport translated string table for each language InstallShield-provided strings are already translated but may be editedInstallShield-provided strings are already translated but may be edited Verify controls on custom dialogs are properly sized Verify controls on custom dialogs are properly sized That’s it!! That’s it!!

Page 21: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

21

Designing a multilingual install program - Type IDesigning a multilingual install program - Type I

Language chosen at product build timeLanguage chosen at product build time Set of supported languages selected via Project Wizard Set of supported languages selected via Project Wizard

or Project Propertiesor Project Properties Language-dependent components identified via Language-dependent components identified via

Languages field of each component (Setup Design view)Languages field of each component (Setup Design view) At build time (using the Release Wizard), At build time (using the Release Wizard),

filter application by selected languagefilter application by selected language(Filtering Settings dialog)(Filtering Settings dialog)

Include only the selected language and make defaultInclude only the selected language and make default(Setup Languages dialog)(Setup Languages dialog)

Result: single language version of application, with Result: single language version of application, with matching language of install programmatching language of install program

EnEn

DeDe

............

Separate Language Separate Language Versions (CD & App)Versions (CD & App)Separate Language Separate Language

Versions (CD & App)Versions (CD & App)

Type IType IType IType I

Page 22: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

22

Designing a multilingual install program - Type IIDesigning a multilingual install program - Type II

Language chosen at product install timeLanguage chosen at product install time Set of supported languages selected via Project Wizard or Set of supported languages selected via Project Wizard or

Project PropertiesProject Properties Language-dependent components identified via Language-dependent components identified via

Conditions field (ProductLanguage property) of each Conditions field (ProductLanguage property) of each component (Setup Design view)component (Setup Design view)

At build time (using the Release Wizard), At build time (using the Release Wizard), do not filter application by languagedo not filter application by language Include all languages, and check “Display the Setup Include all languages, and check “Display the Setup

Languages dialog” (Setup Languages dialog)Languages dialog” (Setup Languages dialog) Result: setup.exe’s language selection panel chooses Result: setup.exe’s language selection panel chooses

language version of application and language of install language version of application and language of install programprogram

EnEn

DeDe

......

Common CD, Common CD, separate Application separate Application language Versions language Versions

Common CD, Common CD, separate Application separate Application language Versions language Versions

Type IIType IIType IIType II

Page 23: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

23

Designing a multilingual install program - Type IIIDesigning a multilingual install program - Type III

Language chosen at product run timeLanguage chosen at product run time Application’s user interface should include controls to Application’s user interface should include controls to

choose language (good to couple with install on demand)choose language (good to couple with install on demand) Set of supported languages (for install program) selected via Set of supported languages (for install program) selected via

Project Wizard or Project PropertiesProject Wizard or Project Properties Design feature/subfeature tree to list supported languagesDesign feature/subfeature tree to list supported languages

(allows user to easily add or remove languages)(allows user to easily add or remove languages) At build time (using the Release Wizard), At build time (using the Release Wizard),

do not filter application by languagedo not filter application by language Include all languages, and check “Display the Setup Include all languages, and check “Display the Setup

Languages dialog” (Setup Languages dialog)Languages dialog” (Setup Languages dialog) Result: setup.exe’s language selection panel chooses Result: setup.exe’s language selection panel chooses

language of install program; user selects language language of install program; user selects language version(s) of application to be installed. version(s) of application to be installed.

EnEnEnEn

DeDeDeDe

............

Common CD & App,Common CD & App,multiple language resourcesmultiple language resources

Common CD & App,Common CD & App,multiple language resourcesmultiple language resources

Type IIIType IIIType IIIType III

Page 24: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

24

Use of UnicodeUse of Unicode

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

Page 25: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

25

Hints, tips, and gotcha’sHints, tips, and gotcha’s

Must install Windows language Must install Windows language resourcesresources

New Language WizardNew Language Wizard command syntax for loggingcommand syntax for logging MsiZapMsiZap Additional tets scenariosAdditional tets scenarios

Multiple files of same name to Multiple files of same name to same target directorysame target directory

Filtering components with a Filtering components with a property set in the UI sequenceproperty set in the UI sequence

Windows 95 bug re: dropdown Windows 95 bug re: dropdown list on language selection panellist on language selection panel

Adding language packs to an Adding language packs to an existing projectexisting project

Page 26: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

26

ResourcesResources

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

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

Application Specification for Microsoft Windows 2000 for distributed applications Application Specification for Microsoft Windows 2000 for distributed applications Version 1.0Version 1.0, available at , available at http://msdn.microsoft.com/winlogo/win2000.asphttp://msdn.microsoft.com/winlogo/win2000.asp

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

installshield.iswi.generalinstallshield.iswi.general installshield.iswi.customactioninstallshield.iswi.customaction installshield.iswi.internationalinstallshield.iswi.international

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

Page 27: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

27

Supplemental SlidesSupplemental 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.

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.

Page 28: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

28

Language features of ISWILanguage features of ISWI

Page 29: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

29

Language features of ISWI...Language features of ISWI...

Page 30: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

30

Language features of ISWI...Language features of ISWI...

Page 31: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

31

Language features of ISWI...Language features of ISWI...

Page 32: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

32

Language features of ISWI...Language features of ISWI...

Page 33: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

33

Language features of ISWI...Language features of ISWI...

Page 34: 1 Developing multilingual installation programs using InstallShield for Windows Installer David L. Cole IBM Corporation Research Triangle Park, NC deecole@us.ibm.com

34

Language features of ISWI...Language features of ISWI...