3

WiX を使用して多言語インストーラーを作成しました。コマンドを使用してコマンドラインからインストーラーを実行していますが、"msiexec /i myinstaller.msi TRANSFORMS=":1041"正常に動作しています。これで、ブートストラップを使用して言語選択ダイアログを作成しました。選択した言語を WiX インストーラーに渡して、選択した言語で起動するにはどうすればよいですか? このアイデアは、次のリンクから得ました。

  1. 実行時に言語選択 UI を使用して WIX msi とバンドルをローカライズできますか?
  2. http://wix.tramontana.co.hu/tutorial/transforms/morphing-installers

私のバンドルには<MsiPackage SourceFile="myinstaller.msi" DisplayInternalUI="yes" >

Burn from WiX ツールセットを使用したカスタム UI の結果として、この画面が表示されます。

ここに画像の説明を入力

msiexec /i myinstaller.msi TRANSFORMS=":1041"日本語を選択したりmsiexec /i myinstaller.msi TRANSFORMS=":1031"、ドイツ語を選択してOKを押したりすると、どうにかしてコマンドを実行したいです。

この問題に対して私が何をすべきか教えてください。これを行う他の方法はありますか?はいの場合は、教えてください。いくつかのコードサンプルがより良い助けになります。

4

2 に答える 2

5

最後に私は解決策を得ました。言語選択用のブートストラップ UI は、こちらで説明されているように作成できます。その後、ボタン クリック イベントに次のコードを記述して、選択した言語で msi を起動しました。

Bootstrapper.Engine.StringVariables["CommandArgs"] = ":1031";
Bootstrapper.Engine.Plan(Wix.LaunchAction.Install);
break;
....
....
this.Close(); //outside of switch statement
break;

上記のコードは CommandArgs を MSI プロパティとして使用します。次に、次のコードを bundle.wxs ファイルに追加しました。

<MsiPackage Id="mypackage" SourceFile="myinstaller.msi" DisplayInternalUI="yes">
   <MsiProperty Name="TRANSFORMS" Value="[CommandArgs]"/>
</MsiPackage>

私が望んでいた方法で正確に機能しました。このコードは、次のコマンドを使用してコマンド ラインから msi を起動するのと同じです。

msiexec /i myinstaller.msi TRANSFORMS=":1031"

唯一の問題は、上記の UI から言語を選択した後、MSI を起動するのに時間がかかることです。

于 2013-05-28T09:33:53.943 に答える