我的XML文件包含下一个内容:
<!--<appcache appCacheType="None" />-->
<appcache appCacheType="SingleClient" defaultExpiration="3600"/>
在安装补丁上,我需要将XML文件中的此内容更改为:
<appcache appCacheType="None" />
<!--<appcache appCacheType="SingleClient" defaultExpiration="3600"/>-->
有什么更好的方法呢?
感谢。
答案 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
如果您只想在例如修补,然后为此组件添加适当的条件。