Advanced Installer
more / weitere

InstallShield und AdminStudio Schulungen

weitere Infos

More Windows Installer articles

Multi-Language MSI Packages without Setup.exe Launcher

Abstract: With embedded language transforms you can build a multi-language Windows Installer package that automatically runs in a language that matches the operating system language, without need for a setup.exe launcher. This is an undocumented feature in Windows Installer (works with MSI 2 and MSI 3). While this functionality is not documented because it has not been tested extensively by Microsoft, the MSI redistributable package (instmsi.exe) internally makes use of it. This article describes how to make use of this feature in your own setup, which is quite easy.

GERMAN: Deutsche Version dieses Artikels
RUSSIAN: Перевод на русский язык доступен по ссылке:

Embedded Language Transfoms

The use of embedded language transforms is an undocumented feature of Windows Installer. A language transform is a transform that is located in a substorage of a Windows Installer package that is named after the LangId. The Summary Information Stream (Property: PID_TEMPLATE) includes a list of languages that are supported by the package. Windows Installer automatically selects the language that matches the language preference that is set for the operating system.

How to do it

Steps 1 and 2 are as usual and many setup authoring tools will do this for you automatically.

  1. Build your msi package for language English. Set the ProductLanguage property to "1033".
  2. Build a language transform for German UI. This transform must set the ProductLanguage property to "1031".
  3. Embed the language transform in the .msi file. This can be done using the wisubstg.vbs script that's included in the Windows Installer SDK. Use the following command line:
    wisubstg.vbs <path to .msi> <Path to transform> <name of sub-storage>
    Use the Language Id (1031 for German in this sample) as name of the sub-storage.
  4. Update the Summary Information Stream to list all supported languages of this package. If your MSI authoring tool added a language code of 0 to the summary information stream remove it.
    Correct: "1033,1031"
    Wrong: "0,1033,1031"
    You can use the WiLangId.vbs script from the Windows Installer SDK for this purpose, using the following command line:
    WiLangId.vbs <path to .msi> Package 1033,1031


To test your package, go to the "Regional and Language Options" applet in Control Panel. On the "Regional Options" tab switch the language to German (see screenshot below). Click Apply. Double click your .msi file. Your setup will now launch with German UI. Restore the language selection to English. Now your setup will run in English.

About the Author

Written by Andreas Kerl.

Andreas Kerl is an Application Development Consultant at Microsoft Germany. He has written the MS Press book "Inside Windows Installer" (which is only available in German) and is currently working on his new book about Windows Installer 3.1.


Edited and translated by Stefan Krueger, using a suggestion from Sascha Patzwaldt.

Stefan Krueger is working as freelance setup consultant and is running the web site, a place where setup developers share resources and information among peers. Stefan has been recognized by Microsoft as an MVP (Most Valuable Professional) for Windows Installer.

More Windows Installer articles



English News Discussions Windows Installer Related Tools More Help InstallScript About InstallSite Shop Site Search
deutsch Neuigkeiten Diskussionsgruppen Windows Installer MSI FAQ Artikel     Shop Suche

Copyright © by InstallSite Stefan Krueger. All rights reserved. Legal information.
Impressum/Imprint Datenschutzerklärung/Privacy Policy
By using this site you agree to the license agreement. Webmaster contact