How can I exclude SVN files from harvesting with heat (WiX)?

1,336 views
Skip to first unread message

jbierling

unread,
Jan 5, 2012, 8:39:05 AM1/5/12
to xs...@googlegroups.com
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"?>
<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)\.svn\all-wcprops" />
</Component>
<Component Id="cmp6EF52B3E331F226299060D45F533DC07" Directory="dirE2EC21E8B765C611E918FB22F30721D1" Guid="{5EA6AB2D-20C3-4B07-8E0A-7C28135BE922}">
<File Id="fil83205196F05211A66F9D25A7A5496FBA" KeyPath="yes" Source="$(var.publishContentDir)\.svn\entries" />
</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?

jbierling

unread,
Jan 6, 2012, 9:59:48 AM1/6/12
to xs...@googlegroups.com

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>
Reply all
Reply to author
Forward
0 new messages