3

MSBuild を使用して MSI ファイルを生成する WiX インストーラー プロジェクトがあります。WXS ファイルには、WiX ファイアウォール拡張機能が含まれています。

xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension"

次の定義を使用して、MSBuild ファイルに 2 つのカルチャを定義しました。

<PropertyGroup>
    ...
   <Cultures>en-us;no-no</Cultures>
</PropertyGroup>

翻訳されたリソースも追加しました。

<ItemGroup>
    <EmbeddedResource Include="lang\Firewall_no-no.wxl" />
    <EmbeddedResource Include="lang\WixUI_no-no.wxl" />
</ItemGroup>

これらは、ファイアウォール拡張機能と WixUI 拡張機能のノルウェー語への翻訳を表します。ビルドを実行すると、en-us 部分は成功しますが、no-no 部分は失敗し、次のエラー メッセージが表示されます。

C:\delivery\Dev\wix30_public\src\ext\FirewallExtension\wixlib\FirewallExtension.wxs(19):
error LGHT0102: The localization variable !(loc.WixSchedFirewallExceptionsInstall) 
is unknown.  Please ensure the variable is defined.
....

C:\deliveryいくつかの問題:ディレクトリがどこから来たのかわかりません。私はそのようなディレクトリを持っていません。エラー メッセージで参照されているローカライズ変数は、Firewall_no-no.wxl ファイルで翻訳されています。

より詳細な情報を使用して MSBuild を実行すると、エラー メッセージの直前に次の出力が表示されます。

Task "Light"
  Command:
  C:\Program Files (x86)\Windows Installer XML v3\bin\Light.exe -cultures:no-no 
  -ext "C:\Program Files (x86)\Windows Installer XML v3\bin\WixUIExtension.dll" 
  -ext "C:\Program Files (x86)\Windows I nstaller XML v3\bin\WixUtilExtension.dll" 
  -ext "C:\Program Files (x86)\Windows Installer XML v3\bin\WixFirewallExtension.dll" 
  -loc lang\Firewall_no-no.wxl -loc lang\WixUI_no-no.wxl 
  -out F:\Projects\MyProd\MyProj\Installer\bin\Debug\no-no\MyInstaller.msi 
  -pdbout F:\Projects\MyProd\MyProj\Installer\bin\Debug\no-no\MyInstaller.wixpdb
  obj\Debug\MyProj.wixobj

詳細が示すように、MSBuild タスクは-loc、Light 実行可能ファイルに対して 2 つのパラメーターを持つことになります。それがこの問題の原因かどうかはわかりません。これを解決する方法についてのアイデアはありますか?

4

1 に答える 1

2

このエラーの理由は非常に単純なようです。タグのCulture="no-no"属性を変更していないため、例外が発生しました。WixLocalizationこの値を設定すると、エラーが消えました。

于 2010-04-22T14:00:21.160 に答える