Windows Authoring multi-language MSI packages

Posted on

By default, Windows Installer packages are single-language only – no direct support for multi-language packages is currently provided. Creating a multi-lanuage installation package is thus a little more compex – the following provides a summary of the steps required:

  1. Create an english package
  2. Compile: candle -dLANG=1033 foo.wxs
  3. Link: light -out foo.msi -loc strings-en.wxl foo.wixobj
  4. Create the german (or whatever language) package
  5. Compile: candle -dLANG=1031 foo.wxs
  6. Link: light -out foo-de.msi -loc strings-de.wxl foo.wixobj
  7. Create a transform describing the differences between german and englich package: msitran -g foo.msi foo-de.msi de.mst
  8. Embed the transform in the english package:msidb -d foo.msi -r de.mst

The boostrapper has to decide which language the installer package should use. To use english, call msiexec without any special parameters. To use german, pass the parameter TRANSFORMS=:de.mst to msiexec, which directs it to apply the embedded transform named de.mst before running the package.

To avoid creating a bootstrapper, you might want to try this. See also: WiX tutorial, Lesson 8.

Any opinions expressed on this blog are Johannes' own. Refer to the respective vendor’s product documentation for authoritative information.
« Back to home