2010-04-22 78 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"屬性。設置這個值會使錯誤消失。