WIX HeatDirectory Task - Einstellen der preprocessorVariable

8

Ich versuche, die Präprozessor-Variable in wix zu setzen, und ich kann kein Beispiel dafür oder eine Erklärung finden, wie man es irgendwo im Internet macht, ich hoffe, dass jemand hier mir erklären oder zeigen kann, wo ich bin falsch machen!

Ich habe das hier gezeigte Beispiel zum Einstellen von var-Werten versucht Ссылка

Die Dokumentation zur Verwendung des HeatDirectory-Tasks in wix finden Sie hier und ist überhaupt nicht sehr nützlich!

Wie stelle ich die preprocessorVariable so ein, dass das SourceDir durch einen anderen Variablennamen ersetzt wird?

    
Stuart 09.04.2010, 08:10
quelle

6 Antworten

16

PreprocessorVariable für Hitze braucht wirklich mehr Doc und Beispiel ... Ich habe viel Zeit damit verbracht, es zu arbeiten. So funktioniert es in meiner wixproj-Datei:

%Vor%

Sie brauchen nur die Variable zu definieren. Es gibt keine magischen "HeatDefinitions" :)

    
laishiekai 11.02.2013 21:47
quelle
7

Ich benutze Wix v3.10.

Sie müssen HeatDirectory MSBuild Task nicht explizit aufrufen. ItemGroup mit dem speziellen Namen "HarvestDirectory" kann vorbereitet werden, und später wird das Target "HarvestDirectory" es verarbeiten. Die * .wsx-Datei wird im IntermediateOutputPath erstellt und ist in der Kompilierliste (verarbeitet von Candle) enthalten.

%Vor%

Die wxs-Datei:

%Vor%     
Sergei Zinovyev 15.09.2015 16:46
quelle
3

Ich fand heraus, was es war, nachdem ich einen Tag lang verschiedene Dinge ausprobiert habe, ist der obige Link korrekt, aber um die Variable in der Heatdirectory-Aufgabe zu verwenden, musst du es so machen.

%Vor%     
Stuart 09.04.2010 08:25
quelle
3

Es gibt eine $(HeatDefinitions) -Eigenschaft, die Sie definieren können, um diese in der übergeordneten .wixproj-Datei zu definieren:

%Vor%

Die einzige Erwähnung dieser magischen Eigenschaft, die ich (im gesamten Internet) finden kann, ist eine einzelne Frage zu Team Build auf der wix-users Mailingliste. Ich bin zufällig darüber gestolpert, nachdem ich fast einen Tag damit verbracht hatte, mir die Haare auszureißen, während ich versuche, undefinierte Präprozessor-Variablenfehler zu beheben.

    
Richard Dingwall 13.09.2011 15:32
quelle
3

Ich habe ein Beispielprojekt für GitHub erstellt, das zeigt, wie das HarvestDirectory-Ziel erfolgreich verwendet werden kann , was eine übergeordnete Sache ist, die die HeatDirectory-Aufgabe aufruft. Sie müssen die HeatDirectory-Aufgabe nicht direkt aufrufen. Sie können den gesamten Beispielcode hier sehen:

Ссылка

Hier sind die wichtigsten Teile:

foo.wixproj

%Vor%

foo.wxs

%Vor%     
David Grayson 01.01.2016 02:21
quelle
0

Ich habe ein sehr großes Installer-Kit zum Erstellen in Visual Studio 2013 (enthält einige Tools für das Hauptprojekt, einen Windows-Dienst und eine Webanwendung mit einer nicht-trivialen Verzeichnisstruktur). Ich lerne immer noch, wie man WiX benutzt, und bastle, teste und veredele immer noch das WiX-Projekt. Derzeit habe ich die Erntestellungen als Build-Ereignisse mit einem Befehl des Formulars

eingerichtet

"C: \ Programme (x86) \ WiX Toolset v3.9 \ bin \ heat.exe" Verzeichnis "$ (SolutionDir) \ MyProjectDir \ bin \ $ (Konfigurationsname)" -cg MyComponentRef -ag -dr MYINSTALLDIR - srd -wixvar -var var.MySourceFiles -sreg -out "$ (SolutionDir) \ Deployment \ Mein Installationsprogramm Project \ ComponentList.wxs" -t "$ (SolutionDir) \ Deployment \ Mein Installationsprogramm Project \ FileFilter.xslt"

Dieser Befehl erfasst nur alle Dateien im Ordner bin \ Debug (oder bin \ Release) des Projekts und filtert sie anschließend mit einer XML-Stylesheet-Transformation. Es gibt eine ganze Reihe von Ernten, die so gesammelt werden müssen. Daher wurde es immer mühsamer und fehleranfälliger, alle Variablen der Quelldatei beizubehalten (das Argument "var.MySourceFiles" im Befehl). Anfangs hatte ich die Deklarationen zu den Präprozessor-Variablen des Projekts hinzugefügt, aber ich wollte etwas, das etwas "eigenständiger" war. Mit den hilfreichen Tipps, die ich bei WiX-Tricks und Tipps gefunden habe, habe ich eine neue Include-Datei deklariert. " PreprocessorVars.wxi "mit Inhalt

  

und hat die xslt dazu gebracht, sie in die Ausgabe einzufügen, die von heat.exe mit dem Snippet

erzeugt wurde %Vor%

Das xslt erzeugt nun eine Ausgabe, die ungefähr so ​​aussieht:

%Vor%

welches Wix ohne Fehler verarbeitet.

    
1MuddyDog 18.06.2015 11:29
quelle

Tags und Links