wix XmlConfig - 如何定义loc变量?

时间:2012-03-20 13:27:54

标签: wix

我需要在安装过程中使用XmlConfig修改我的machine.config文件,如下所示:

  <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文件应该放在哪里声明?

1 个答案:

答案 0 :(得分:2)

您引用的这句话可以在UtilExtension文本中找到。这是WiX源中的相对路径:/src/ext/UtilExtension/wixlib/en-us.wxl。只要您引用UtilExtension,并为不同的文化(而不是en-US)构建MSI,就会出现此错误,因为您没有翻译这个以及其他与UtilExtension一起使用的短语

您可以执行以下操作:

  • en-us.wxl复制到您的WiX来源并将其重命名为您定位的文化
  • 将该文件中的<String>元素的值替换为您所定位的文化的适当短语翻译
  • 将此文件提供给light.exe(<localizations>部分)

您可能希望利用WiX.chm

中“指定要构建的文化”主题中描述的语言回退概念