2017-06-26 25 views
5

Podczas zbierania plików dla heat.exe, chciałbym wykluczyć pliki z rozszerzeniem .exe z folderu wejściowego, ponieważ pobiera on wszystkie pliki w folderze na pierwszym miejscu.Jak wykluczyć pliki z zestawu narzędzi Wix

Poniżej znajduje się mój kod.

"% WIX_PATH% \ Heat.exe" dir "% input_folder%" -cg SourceProjectComponents -dr INSTALLLOCATION -scom -sreg -srd -var var.BasePath -gg -sfrag -var var.BasePath -out "% output_folder % \ Output.wxs "

PS: Folder input_folder składa się z pojedynczych plików .dll i .exe. w związku z tym indywidualne zbieranie akt nie było możliwe.

Z góry dziękuję.

Odpowiedz

8

Musisz użyć transformaty xlst.

Coś takiego powinno ci pomóc; Wystarczy wpisać -t <Path to the xlst file> w linii poleceń dla ciepła.

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" 
       xmlns="http://schemas.microsoft.com/wix/2006/wi" 
       exclude-result-prefixes="xsl wix"> 

    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /> 

    <xsl:strip-space elements="*"/> 

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

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Remove the exe files --> 
    <xsl:template match="*[self::wix:Component or self::wix:ComponentRef] 
         [key('ExeToRemove', @Id)]" /> 
</xsl:stylesheet> 
+0

Działa jak urok. Dziękujemy za pomoc –

1

miałem ten sam problem, gdzie miałem dużo plików, że muszę to do pliku WXS w projekcie i napisałem źródłowy aplikacji open wiersza polecenia do generowania plików XML o strukturze katalogów, plików i elementów podczas ignorowanie folderów, rozszerzeń, plików itp. za pomocą pliku .wixignore (sformatowanego podobnie do .gitignore).

Możesz rzucić okiem na to here.

+0

dlaczego nie używać heat.exe, który jest częścią wix? Jest przeznaczony dokładnie dla tego, co zrobiłeś –

+0

@Michal Hainc, ponieważ, moim zdaniem, heat.exe nie jest bardzo przyjazny dla użytkownika. –

Powiązane problemy