2012-03-20 49 views
1

我需要使用的XMLConfig在安裝過程中,類似的東西來修改我的machine.config文件:wix XmlConfig - 如何定義loc變量?

<util:XmlConfig 
    Id="Machine_Config_Xml_Root" 
    File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
    Action="create" 
    On="install" 
    ElementPath="//configuration/system.data/DbProviderFactories" 
    Name="add" 
    Node="element" 
    Sequence="1"> 
     </util:XmlConfig> 
     <util:XmlConfig 
       Id="Machine_Config_Xml_4" 
       File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
       ElementPath="Machine_Config_Xml_Root" 
       Name="name" 
       Value="My Data Provider" 
       Sequence="2"> 
     </util:XmlConfig> 
     <util:XmlConfig 
       Id="Machine_Config_Xml_3" 
       File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
       ElementPath="Machine_Config_Xml_Root" 
       Name="invariant" 
       Value="Sample.MyDataProvider" 
       Sequence="2"> 
     </util:XmlConfig> 
     <util:XmlConfig 
       Id="Machine_Config_Xml_5" 
       File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
       ElementPath="Machine_Config_Xml_Root" 
       Name="description" 
       Value="My Data Provider" 
       Sequence="2"> 
     </util:XmlConfig> 
     <util:XmlConfig 
       Id="Machine_Config_Xml_2" 
       File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
       ElementPath="Machine_Config_Xml_Root" 
       Name="type" 
       Value="Eli.Sample.MyDataProvider, Sample.MyDataProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5b9d34470b87a97f" 
       Sequence="2"> 
     </util:XmlConfig> 

     <util:XmlConfig 
      Id="Machine_Config_Xml_Uninstall_1" 
      File="[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.Config" 
      Action="delete" 
      On="uninstall" 
      ElementPath="//configuration/system.data/DbProviderFactories/add[\[]@invariant='Sample.MyDataProvider'[\]]" 
      Sequence="1"> 
     </util:XmlConfig> 

但它不會編譯由於這樣的錯誤:

的定位變量(LOC .msierrXmlConfigFailedOpen)未知。

如何定義這個loc.msierrXmlConfigFailedOpen變量和其他?我不想切換到en-Us文化(在這種情況下,變量被定義) - 我需要保留我目前的文化,並自己定義loc變量。我怎麼能做到這一點,我的wxs文件應該放在哪裏?

回答

2

您引用的這個短語可以在UtilExtension文本中找到。這是WiX資源中的相對路徑:/src/ext/UtilExtension/wixlib/en-us.wxl。只要您參考UtilExtension,併爲不同的文化(而不是en-US)構建MSI,則會出現此錯誤,因爲您沒有翻譯此文章以及其他與UtilExtension一起提供的短語。

你可以做到以下幾點:

  • 複製en-us.wxl到您的WiX的來源和其重命名爲你的目標
  • 文化取代與適當的短語翻譯的文化文件<String>元素的值你的目標
  • 進這個文件light.exe(<localizations>部分)

您可能要牛逼o利用語言回退概念,如「指定要構建的文化」主題中所述WiX.chm