本文介绍了如何将 SVN 文件排除在加热收集 (WiX) 之外?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
I hate to practically duplicate existing questions, but the supplied answers haven't worked:
Here's what my .wxs looks like:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="SDKCONTENTDIR">
<Directory Id="dirE2EC21E8B765C611E918FB22F30721D1" Name=".svn" />
<Directory Id="dir7DC42F44E7FE9E20277B180A353D0263" Name="bin" />
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="sdkContent">
<Component Id="cmp5E86312F0CA2C53B8173AECD6A428747" Directory="dirE2EC21E8B765C611E918FB22F30721D1" Guid="{E87F312D-9DA2-4A68-B6C5-BCE2FF90720C}">
<File Id="filB766A28A7577EB4311FD03CD707BC211" KeyPath="yes" Source="$(var.publishContentDir).svnall-wcprops" />
</Component>
<Component Id="cmp6EF52B3E331F226299060D45F533DC07" Directory="dirE2EC21E8B765C611E918FB22F30721D1" Guid="{5EA6AB2D-20C3-4B07-8E0A-7C28135BE922}">
<File Id="fil83205196F05211A66F9D25A7A5496FBA" KeyPath="yes" Source="$(var.publishContentDir).svnentries" />
</Component>
...
I'm using this .xsl code to exclude:
<xsl:key name="svn-search" match="wix:Component[ancestor::wix:Directory/@Name = '.svn']" use="@Id" />
<xsl:template match="wix:Directory[@Name='.svn']" />
<xsl:template match="wix:Component[key('svn-search', @Id)]" />
But I'm getting many "Error 48 Unresolved reference to symbol" errors as its not removing all child elements.
Ideas?
解决方案
Here is what I got working:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
<!-- Copy all attributes and elements to the output. -->
<xsl:template match="@*|*">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates select="*" />
</xsl:copy>
</xsl:template>
<xsl:output method="xml" indent="yes" />
<!-- Create searches for the directories to remove. -->
<xsl:key name="svn-search" match="wix:Directory[@Name = '.svn']" use="@Id" />
<xsl:key name="tmp-search" match="wix:Directory[@Name = 'tmp']" use="@Id" />
<xsl:key name="prop-base-search" match="wix:Directory[@Name = 'prop-base']" use="@Id" />
<xsl:key name="text-base-search" match="wix:Directory[@Name = 'text-base']" use="@Id" />
<xsl:key name="props-search" match="wix:Directory[@Name = 'props']" use="@Id" />
<!-- Remove directories. -->
<xsl:template match="wix:Directory[@Name='.svn']" />
<xsl:template match="wix:Directory[@Name='props']" />
<xsl:template match="wix:Directory[@Name='tmp']" />
<xsl:template match="wix:Directory[@Name='prop-base']" />
<xsl:template match="wix:Directory[@Name='text-base']" />
<!-- Remove Components referencing those directories. -->
<xsl:template match="wix:Component[key('svn-search', @Directory)]" />
<xsl:template match="wix:Component[key('props-search', @Directory)]" />
<xsl:template match="wix:Component[key('tmp-search', @Directory)]" />
<xsl:template match="wix:Component[key('prop-base-search', @Directory)]" />
<xsl:template match="wix:Component[key('text-base-search', @Directory)]" />
<!-- Remove DirectoryRefs (and their parent Fragments) referencing those directories. -->
<xsl:template match="wix:Fragment[wix:DirectoryRef[key('svn-search', @Id)]]" />
<xsl:template match="wix:Fragment[wix:DirectoryRef[key('props-search', @Id)]]" />
<xsl:template match="wix:Fragment[wix:DirectoryRef[key('tmp-search', @Id)]]" />
<xsl:template match="wix:Fragment[wix:DirectoryRef[key('prop-base-search', @Id)]]" />
<xsl:template match="wix:Fragment[wix:DirectoryRef[key('text-base-search', @Id)]]" />
</xsl:stylesheet>
这篇关于如何将 SVN 文件排除在加热收集 (WiX) 之外?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!