1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

多言語化されたWindows Installerを 作成する

Last updated at Posted at 2019-07-25

はじめに

多言語対応のWindows Installer(MSI)を作成した手順が複雑だったので、成功した方法をメモ。
今回は日本語版のWindowsでは日本語が表示され、それ以外では英語が表示されるようなインストーラーを作成した。

Windows Installerの作成概要

WiXToolsetというWindows Installer を作成するツール群が用意されており、割と簡単にWindows Installer(msi拡張子のやつ)を作成することができる。
簡単に作成手順を説明すると..

  1. wxsファイル(xml形式のインストーラーのソースのようなもの)を用意する。

    • test.wxs
  2. heatコマンドでインストールするファイルのフラグメント作成する。(test_files.wxsが生成される)

    >> heat.exe c:\InstallerFilesPath`
    
  3. candleコマンドで中間ファイル(wixobj)を生成する。

    >> candle.exe test.wxs -out test.wixobj
    >> candle.exe test_files.wxs -out test_files.wixobj
    
  4. lightコマンドでインストーラー(msiファイル)を生成する。

    >> light.exe test.wixobj test_files.wixobj -out installer.msi
    

多言語化したWindows Installerの作成概要

  1. wxsファイルを用意する。言語に関する箇所を修正する。(以下は単言語版から修正した箇所の抜粋)

    test.wxs
    <Wix>
        <Product Language="1033">
            <Package Launguages="1033,1041" />
            <Directory>
                <Merge Language="1033" />
        ...
    </Wix>
    

このあたりの1033や1041はWindowsのregion IDみたいなものでここにテーブルがある。
2. heatコマンドでインストールするファイルのフラグメント作成する。 (test_files.wxsが生成される)

```shell 
>> heat.exe c:\InstallerFilesPath
```
  1. candleコマンドで中間ファイル(wixobj)を生成する。

    >> candle.exe test.wxs -out test.wixobj
    >> candle.exe test_files.wxs -out test_files.wixobj
    
  2. lightコマンドで英語版インストーラー(msiファイル)を生成する。

    >> light.exe test.wixobj test_files.wixobj -cultures:en-US -out installer_en.msi -pdbout installer_en.wixpdb
    
  3. lightコマンドで日本語版インストーラー(msiファイル)を作成する。

    >>  light.exe test.wixobj test_files.wixobj -cultures:ja-JP -out installer_jp.msi -pdbout installer_jp.wixpdb
    
  4. torchコマンドで英語版と日本語版の差分を抽出

    >> torch.exe -t language installer_en.msi installer_jp.msi -out 1041.mst
    
  5. wisubstg.vbs で差分ファイルを統合する。(wisubstg.vbsはwindows sdkのインストールフォルダにある。)

    >> cscript wisubstg.vbs installer_en.msi 1041.mst 1041
    

これで日本語以外のWindowsでは英語で、日本語Windowsでは日本語が表示されるインストーラーが作成できた。
4または5のlightコマンドでlight.exe : error LGHT0309 : Failed to open merge module for validation.が発生する場合は、WindowsのOS言語設定をen-USに変更すると動いた。

#参考サイト

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?