Несомненно. Внутри условия, вы можете использовать полные выражения, как:
contains(wix:File/@Source, '.pdb')
or contains(wix:File/@Source, '.exe')
or contains(wix:File/@Source, '.dll')
or contains(wix:File/@Source, '.xml')
Если это всего лишь горстка, которые будут поддерживаться. Чтобы облегчить читаемость, вы можете поместить символы новой строки внутри значения атрибута match (или любого атрибута в целом).
Я бы использовал его следующим образом. Обратите внимание на концы бедных людей - с трюком.
Шаблон совпадает с нежелательными компонентами и заменяет их ничем.
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wi="http://schemas.microsoft.com/wix/2006/wi"
xmlns="http://schemas.microsoft.com/wix/2006/wi">
<xsl:template match="wi:Component[not(
contains(concat(wi:File/@Source,'|'), '.exe|') or
contains(concat(wi:File/@Source,'|'), '.config|'))]">
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Вот команда тепла, что она работает с:
heat dir "%wix%\bin" -cg CompGroup -ag -t byext.xsl -o test.wxs
Я просто попытался следующее: и получил каждый файл в папке –
downeysyndrome