MSI with Multi-Language Without setup.exe Launcher
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.
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.
- Build your msi package for language English. Set the ProductLanguage property to "1033".
- Build a language transform for German UI. This transform must set the ProductLanguage property to "1031".
Embed the langauge 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
Use the Language Id (1031 for German in this sample) as name of the sub-storage.
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: "1031,1033"
Wrong: "0,1031,1033"
Testing
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.

The Endpoint Management Community Blog is the perfect place to share short, timely insights including product tips, news and other information relevant to the Endpoint Management community. Any authenticated Connect member can contribute to this blog.
Comments
MUI
I reckon, the MUI feature is a big ticket feature of Windows Installer 4.0. I didnt know that MUI works with installer 2 and 3.
Its a nice piece of information.
Cheers'
Vijay
Microsoft MVP [Setup-Deploy]
Weblog: www.msigeek.com
Interesting article
Interesting article Tilakgovind, really helpful.
Nice
Interesting and nice article.
Not working
I have tried this a number of times, and cant get it to work, any suggestions. Everytime I run the installer, it is in english, even if I change the language in regional settings.
Need to change the language wrt change in UI language
Is there any way we can do a similiar thing, but the language should change on change in UI language and not user locale.
Would you like to reply?
Login or Register to post your comment.