如何使用wix工具集修改XML文件

时间:2014-03-31 10:55:09

标签: wix

我的XML文件包含下一个内容:

    <!--<appcache appCacheType="None" />-->
<appcache appCacheType="SingleClient" defaultExpiration="3600"/>

在安装补丁上,我需要将XML文件中的此内容更改为:

    <appcache appCacheType="None" />
    <!--<appcache appCacheType="SingleClient" defaultExpiration="3600"/>-->

有什么更好的方法呢?

感谢。

1 个答案:

答案 0 :(得分:2)

我尝试(invane)为此目的使用MSI Community Extensions,但无法启动并运行它们。 我最终使用了Util-extension中的util:XmlFile - 标签,它可以完美运行。

  • 将Util-extension的命名空间添加到Wix - 元素中的源文件中:

    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
    
  • 然后将其用作相关组件的子元素。在您的情况下,您要删除属性并更改另一个属性的值。以下应该可以解决问题,只需将ElementPath - 属性中的XPath调整为与您的代码匹配的属性(在示例中,它会更新appcache - 具有属性appCacheType的代码值SingleClient)和XML文件的文件密钥:

<Component Id="myComponentToUpdateTheXmlFile" ... >
    <!-- Removing the defaultExpiration-attribute first -->
    <util:XmlFile Id="UpdateAppCacheTag" Action="deleteValue" ElementPath="//appcache[\[]@appCacheType='SingleClient'[\]]/@defaultExpiration" File="[#MyConfigFile.xml]" SelectionLanguage="XPath" Sequence="1" Name="defaultExpiration" />
    <!-- Now updating the value -->
    <util:XmlFile Id="UpdateAppCacheTag" Action="setValue" ElementPath="//appcache[\[]@appCacheType='SingleClient'[\]]/@appCacheType" File="[#MyConfigFile.xml]" SelectionLanguage="XPath" Sequence="2" Value="None" />
</Component>
  • 在调用蜡烛和灯光时,请务必在命令行上添加Util-extension:

    <candle or light command line> ... <parameters> ... -ext <PathToWiXExtensions>\WixUtilExtension.dll
    

如果您只想在例如修补,然后为此组件添加适当的条件。