@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

WiX Toolsetの組み込みダイアログの文言をかえる

言語化の仕組みがあるのこれをつかいます。 wxl形式のXMLファイルを用意し、ビルド時にコマンドラインオプションで指定すれば変更できます。

文言の変更

例えばWiX チュートリアル 日本語訳 Lesson 2 ユーザー・インタフェイス / 1. 最初のステップにある、Sample-2-1-WixUI.zipWixUI_InstallDirという組み込みのダイアログセットを使っています。 この文言を変えるには

<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="ja-jp"
  xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="WelcomeDlgTitle">{\WixUI_Font_Bigger}[ProductName] セットアップ ウィザードへようこそ、おいでませり</String>
</WixLocalization>

上記のようなmy-lang.wxlファイルを用意します。 リンク時に-locオプションを指定します。

light.exe -ext WixUIExtension -cultures:ja-JP .\SampleWixUI.wixobj -loc .\my-lang.wxl

f:id:ledsun:20220123172334p:plain
文言を変更されたインストーラーの画面

-cultures:ja-JPオプションをつけておけば、組み込みの言語設定を使いつつ、一部だけ上書きできます。

Idの探し方

変えたい文言のIdを見つけるにはどうすればいいでしょうか? wix3/WixUI_ja-jp.wxl at c02e48ec301a60eba88a3b519d47e88eeaa4c978 · wixtoolset/wix3 · GitHub に現在使われている文言が含まれています。 文言からIdが検索できます。

ただし複数のダイアログで同じ文言を使っていることがあります。例えばようこそで検索すると次のように3つの定義が見つかります。

<String Id="MaintenanceWelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] セットアップ ウィザードへようこそ</String>
<String Id="PrepareDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] セットアップ ウィザードへようこそ</String>
<String Id="WelcomeDlgTitle" Overridable="yes">{\WixUI_Font_Bigger}[ProductName] セットアップ ウィザードへようこそ</String>

Idの前半部分でどのダイアログで使われている文言か判別できます。 WelcomeDlgは今回変更したダイアログです。 MaintenanceWelcomeDlgは修正インストールしたときに最初に表示されるダイアログです*1PrepareDlgは、なんでしょうね?わかりません。

参考

*1:「アプリと機能」から「変更」を選んで起動したときの画面だと思いますがSample-2-1-WixUIをインストールしても「変更」は選べません。