2012-03-20 63 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