У меня есть проект установщика WiX, который использует MSBuild для создания файла MSI. Файл WXS включает расширение брандмауэра WiX:
xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension"
Я определил две культуры в файле MSBuild со следующим определением:
<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 приводит к тому, что исполняемый файл Light имеет два параметра -loc
. Не уверен, что это может быть причиной этой проблемы. Любые идеи о том, как решить эту проблему?