我有一个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
参数。不确定这是否是导致此问题的原因。关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
似乎这个错误的原因很简单。我得到了例外,因为我没有更改Culture="no-no"
标记中的WixLocalization
属性。设置此值会使错误消失。