none
msiの多言語化 RRS feed

  • 質問

  • お世話になります。

    インストーラの多言語化についてご教授ください。

    Visual Studio 2017で作成したmsiを多言語化することは可能でしょうか?

    言語ごとにビルドして別ファイルとして作成することはできますが、1つのmsiファイルで多言語化したいのです。

    よろしくお願いいたします。

    2019年3月1日 9:16

回答

  • msiはWindows Installerのことですが、厳密には多言語化に対応していません。Localizeといって特定の1つの言語に対応させることのみとなっています。

    ただし、Windows Installerの持つ機能を組み合わせることで疑似的に多言語化することが可能です。とは言えWindows Installerに対するかなりかなり深い知識が必要となります。

    概要だけ説明すると、Windows InstallerにはTransformsと言ってインストーラーを書き換える機能があります。更にインストーラーに対してTransformsは複数登録することができます。これらを利用して

    1. 言語毎に表示メッセージを書き換えるTransformsを作成します。
    2. 特定の名称でインストーラーにTransformsを登録します。

    これらが行われていると、インストーラーを実行した際の言語設定に応じたTrasnformsが適用され、実質的に対応した言語のメッセージが表示されるようになります。
    2点、注意点として、本来いわゆるUICultureに応じて言語を切り替えるべきですが、この仕組みではCultureに応じた言語切り替えとなってしまいます。そして、この切り替え動作はundocumentedですので、注意が必要です。複数の言語や複数のTransformsを登録できる点までは記述がありますが、連動して切り替わることは明言されていません。

    # 参考までにffftpではこの機能を使用して1つのインストーラーで日本語・英語を切り替えています。インストーラーを更新しているのはこの辺り

    • 回答としてマーク たう 2019年3月5日 8:23
    2019年3月1日 23:19

すべての返信

  • msiはWindows Installerのことですが、厳密には多言語化に対応していません。Localizeといって特定の1つの言語に対応させることのみとなっています。

    ただし、Windows Installerの持つ機能を組み合わせることで疑似的に多言語化することが可能です。とは言えWindows Installerに対するかなりかなり深い知識が必要となります。

    概要だけ説明すると、Windows InstallerにはTransformsと言ってインストーラーを書き換える機能があります。更にインストーラーに対してTransformsは複数登録することができます。これらを利用して

    1. 言語毎に表示メッセージを書き換えるTransformsを作成します。
    2. 特定の名称でインストーラーにTransformsを登録します。

    これらが行われていると、インストーラーを実行した際の言語設定に応じたTrasnformsが適用され、実質的に対応した言語のメッセージが表示されるようになります。
    2点、注意点として、本来いわゆるUICultureに応じて言語を切り替えるべきですが、この仕組みではCultureに応じた言語切り替えとなってしまいます。そして、この切り替え動作はundocumentedですので、注意が必要です。複数の言語や複数のTransformsを登録できる点までは記述がありますが、連動して切り替わることは明言されていません。

    # 参考までにffftpではこの機能を使用して1つのインストーラーで日本語・英語を切り替えています。インストーラーを更新しているのはこの辺り

    • 回答としてマーク たう 2019年3月5日 8:23
    2019年3月1日 23:19
  • 佐祐理さん

    ご回答ありがとうございます。

    できなくはないけど、非公式で対応は難しいのですね。

    必須の要求ではないので言語ごとにインストーラを作成しようと思います。

    2019年3月5日 8:23