2010-04-22 79 views
3

我有一个使用MSBuild生成MSI文件的WiX安装程序项目。该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部分成功,但无任何部分失败,出现以下错误信息:

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参数圣光可执行文件。不知道这是否会成为这个问题的原因。有关如何解决这个问题的任何想法?

回答

2

看来这个错误的原因很简单。我得到了例外,因为我没有更改WixLocalization标记中的Culture="no-no"属性。设置这个值会使错误消失。