Ich arbeite daran, unserem WIX-basierten Installationsprogramm eine Funktion hinzuzufügen. Es ist das erste Mal, dass ich mit WIX arbeite, also ist es alles ziemlich neu für mich.Herunterladen und Kopieren von Dateien mit dem WIX-Toolset
Was ich versuche zu tun, ist es Benutzern ermöglichen, ein Auth-Token-Befehlszeilenargument übergeben, wenn Sie msiexec
verwenden.
Das Installationsprogramm führt dann einen API-Aufruf mit dem Authentifizierungs-Token durch. Wenn die Authentifizierung fehlschlägt, wird das Installationsprogramm beendet. Andernfalls lädt das Installationsprogramm eine Datei über die API herunter und kopiert sie in das Installationsverzeichnis (höchstwahrscheinlich unter Program Files
).
Ich habe es geschafft, in der Befehlszeile Argumente als Eigenschaften in WIX einzulesen und eine CustomAction in C# erstellt, um die Authentifizierung/das Herunterladen der Datei zu behandeln.
Der Teil, mit dem ich kämpfe, ist die CustomAction, um die Datei in den Installationsort zu kopieren, da sie keine Schreibrechte für den Speicherort hat.
Ich kann es mit erweiterten Rechten ausführen muß, indem jedoch execute="deffered"
und "impersonate=no
Einstellung, die mich in den Eigenschaften von dem session
Objekt aus der Lektüre verhindert.
Eine weitere mögliche Option besteht darin, die Datei an einer temporären Position in CustomAction zu speichern (die ohne erhöhte Berechtigungen funktioniert) und eine neue Eigenschaft festzulegen. Dann kann ich die CopyFile
Komponente mit SourceProperty
verwenden, um diese Datei zum Zielort zu kopieren.
Ich kann jedoch nicht herausfinden, wie die CustomAction vor der Komponente CopyFile
ausgeführt wird, da die Eigenschaft nicht festgelegt wurde, bis die CustomAction ausgeführt wurde. Ist es einfach, die CustomAction before
einen bestimmten Teil der Installation auszuführen, oder gibt es noch mehr?
Es sollte so einfach wie die Planung sein, bevor "MoveFiles" (http://wixtoolset.org/documentation/manual/v3/xsd/wix/copyfile.html erwähnt die DuplicateFiles und MoveFiles Tabellen und ich nehme an, dass es die MoveFiles verwendet Tabelle, wenn Sie ein CopyFile definieren, das nicht auf die ID eines Dateielements verweist), aber ich füge eine Antwort hinzu, mit der Sie Ihre benutzerdefinierte Aktion verzögern und die Dateien in das Installationsverzeichnis herunterladen können. –