2014-10-17 4 views
2

Возможно ли включать только определенные расширения файлов при использовании файла xslt для преобразования компонентов сбора тепла с помощью wix? Я знаю, что может исключить расширение файлов со следующим:Могу ли я включить дополнительные расширения файлов с помощью Wix Heat с помощью преобразований?

<xsl:key name="exe-search" match="wix:Component[contains(wix:File/@Source, '.pdb')]" use="@Id" /> <!--.pdb--> 

но можно включить несколько типов файлов и исключить все остальное (например: .exe, .dll, .xml)?

Спасибо!

ответ

6

Несомненно. Внутри условия, вы можете использовать полные выражения, как:

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 
+0

Я просто попытался следующее: и получил каждый файл в папке – downeysyndrome