1 developing multilingual installation programs using installshield for windows installer david l....
TRANSCRIPT
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
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!
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
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
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
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
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)
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
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
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
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
12
Feature selection exampleFeature selection example
13
Feature selection example...Feature selection example...
14
Data table exampleData table example
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
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!
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
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
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
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!!
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
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
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
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
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
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/
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.
28
Language features of ISWILanguage features of ISWI
29
Language features of ISWI...Language features of ISWI...
30
Language features of ISWI...Language features of ISWI...
31
Language features of ISWI...Language features of ISWI...
32
Language features of ISWI...Language features of ISWI...
33
Language features of ISWI...Language features of ISWI...
34
Language features of ISWI...Language features of ISWI...