2017-06-26 7 views
5

Beim Ernten von Dateien für heat.exe möchte ich die Dateien mit der Erweiterung .exe aus dem Eingabeordner ausschließen, da es alle Dateien im Ordner an erster Stelle abruft.Ausschließen von Dateien in Wix-Toolset

Unten ist mein Code.

"% WIX_PATH% \ Heat.exe" dir "% input_folder%" -CG SourceProjectComponents -dr INSTALL -scom -sreg -srd -var var.BasePath -GG -sfrag -var var.BasePath -out „% output_folder % \ Output.wxs "

PS: Der Ordner input_folder besteht aus mehreren DLL- und EXE-Dateien. daher war eine individuelle Ernte der Datei nicht möglich.

Vielen Dank im Voraus.

Antwort

8

Sie müssen eine xlst-Transformation verwenden.

So etwas sollte für Sie arbeiten; Fügen Sie einfach -t <Path to the xlst file> in Ihrer Befehlszeile für Hitze ein.

<?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

Es funktioniert wie ein Charme. Danke für die Hilfe –

1

Ich hatte das gleiche Problem, bei dem ich viele Dateien hatte, die ich in die WXS Datei in einem Projekt aufzunehmen brauchte, und ich schrieb eine offene Kommandozeilen-Anwendung Quelle XMLs die Verzeichnisstruktur, Dateien und Komponenten zu erzeugen, während Ignorieren von Ordnern, Erweiterungen, Dateien usw. über eine .wixignore-Datei (ähnlich wie .gitignore).

Sie können einen Blick auf es here werfen.

+0

Warum nicht mit heat.exe, die Teil von Wix ist? Es ist genau für das, was Sie getan haben, –

+0

@Michal Hainc, weil meiner Meinung nach heat.exe nicht sehr benutzerfreundlich ist. –

Verwandte Themen