15

1 年以上前に Visual Studio 2010 で WIX プロジェクトを作成しました。MSI ファイルとブートストラップ setup.exe を作成します。実際には、英語とフランス語の 2 つの言語のファイルのペアが作成されます。現在、このプロジェクトを TFS CI ビルドに統合しています。CI ビルドでブートストラップ setup.exe ファイルを生成するのに問題があります。

最近、すべてのビルド サーバーの Wix を Wix 3.6 RC にアップグレードしました。そこで、古いスタイルのブートストラッパーを使用する代わりに、Burn を試してみようと思いました。新しい Bootstrapper プロジェクトをソリューションに追加しました。ブートストラップ プロジェクトには、古い MSI プロジェクトによって生成された MSI をロードするだけの単純な bundle.wxs が含まれています。ただし、ビルドしようとすると、次のエラーが発生します。

エラー LGHT0103: システムはファイル 'C:\Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\bin\Release\fr-fr\LaunchPad.msi;C:\Tf\Advantage\Dev\Solution\ を見つけることができませんConfiguration\LaunchPad.Wix\bin\Release\en-us\LaunchPad.msi'.

バンドル内の私のパッケージ参照は次のようになります。

<MsiPackage Id="MyApplication" SourceFile="$(var.LaunchPad.Wix.TargetPath)" />

LaunchPad.Wix は、Wix MSI プロジェクトの名前です。LaunchPad.Wix プロジェクトを 1 つの言語のみをビルドするように変更すると、問題なく動作します。ブートストラップ プロジェクト タイプは、複数言語用のセットアップ ファイルの構築をサポートしていないように見えます。これは本当ですか?回避策の提案はありますか?

編集

さらに調査すると、ブートストラッパー プロジェクトがローカライズをサポートしているのかどうか疑問に思います。Wix MSI プロジェクトで fr-fr のみを作成するように設定してみました。私のブートストラップ プロジェクトが英語で作成した setup.exe。ブートストラップ プロジェクトのプロジェクト プロパティを編集すると、[Cultures to build] フィールドがロックされて空白になります。英語以外のブートストラップを作成するにはどうすればよいですか? これはまだ可能ですか?

4

2 に答える 2

22

ここでいくつかのことが起こっています:

  1. 複数のカルチャを使用する場合、単一のファイル名が必要な MSBuild 以外の何かで TargetPath を使用することはできません。ご覧のとおり、TargetPath は、ビルドされたローカライズされたファイルのリストです。ただし、.msi パッケージの出力言語を修飾する場合は、TargetPath を使用できます。<MsiPackage SourceFile="$(var.TestMsi.en-US.TargetPath)" Id="MsiEnUs" />

  2. en-US と fr-FR のいずれかまたは両方をインストールできる 1 つのブートストラップを作成する場合は、各 .msi パッケージを独自の MsiPackage 要素に個別にリストする必要があります。

  3. en-US と fr-FR の 2 つのブートストラップを作成する場合は、ブートストラップ .wixproj を言語ごとに 2 回呼び出す必要があります。Bootstrappers は、Cultures の "トリック" をサポートしていません。MSBuild の 1 回の呼び出しで 2 つの出力を生成するのは問題があります (TargetPath の問題を確認してください)。

WixStandardBootstrapperApplication を使用している場合、ユーザー UI 言語に基づいて UI のローカライズを自動的に試み、システム UI 言語にフォールバックし、最後に英語にフォールバックします。LCID にちなんで名付けられたディレクトリでローカライズされた文字列を検索するため、ペイロードは次のようになります。

<Payload Name="1033\thm.wxl" SourceFile="..." />
<Payload Name="1036\thm.wxl" SourceFile="..." />

残念ながら、WixStandardBootstrapperApplication 文字列は現在、en-US でのみ利用できます。そのため、fr-FR ブートストラップでは UI が英語で表示されます。WiX ソース ファイル HyperlinkTheme.wxl または RtfTheme.wxl (使用するテーマによって異なります) をローカライズする必要があります。これらのファイルはどちらも src\ext\BalExtension\wixstdba\Resources にあります。

于 2012-07-09T20:04:49.597 に答える
4

良い。ボブ・アーンソンが言ったように機能します。

ただし、ペイロードの名前と SourceFile に注意する必要があります。

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
      <Payload Name="2052\thm.wxl" SourceFile="2052\thm.wxl" />
</BootstrapperApplicationRef>

名前を別の名前に変更した場合。ブートストラップはローカライズされません。

于 2013-04-11T15:27:11.990 に答える