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

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

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

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

Спасибо!


person dingdangdowney    schedule 17.10.2014    source источник


Ответы (1)


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

   contains(wix:File/@Source, '.pdb') 
or contains(wix:File/@Source, '.exe') 
or contains(wix:File/@Source, '.dll') 
or contains(wix:File/@Source, '.xml')

Если это всего лишь горстка, это должно быть ремонтопригодно. Для удобства чтения вы можете поместить символы новой строки внутри значения атрибута соответствия (или вообще любого атрибута).


Я бы использовал это так. Обратите внимание на концы бедняка — с уловкой.

Шаблон сопоставляет нежелательные Компоненты и ничем их не заменяет.

<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
person Tom Blodget    schedule 17.10.2014
comment
Я только что попробовал следующее: ‹xsl:key name=exe-search match=wix:Component[not(contains(wix:File/@Source, '.exe') or contains(wix:File/@Source, '.dll ') или contains(wix:File/@Source, '.xml')))] use=@ID/› и получили все файлы в папке - person dingdangdowney; 18.10.2014