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?
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" :)
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% Es gibt eine $(HeatDefinitions)
-Eigenschaft, die Sie definieren können, um diese in der übergeordneten .wixproj-Datei zu definieren:
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.
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%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.