Ich bin neu im WiX-Installer.
Ich verwende Session.Log, um einige nützliche Daten für den Prozess zu protokollieren.
%Vor%Aber ich bin mir nicht sicher, wo ich das Protokoll finden kann. Gibt es einen Standardpfad für die Protokollierung? Oder muss ich den Pfad angeben, den ich in der .wxs-Datei des Installationsprogramms bereitstellen muss?
Sie müssen Ihr Installationsprogramm über die Befehlszeile mit msiexec.exe ausführen und dann die Befehlszeilenoption L
einfügen, um anzugeben, wo die Protokolle gespeichert werden sollen.
Zum Beispiel:
%Vor%Weitere Informationen zu den Parametern von msiexec finden Sie unter Befehlszeile Optionen
session.Log funktioniert wie session.Message mit Info-Ebene:
%Vor%Sie können den Dirty-Trick verwenden: Definieren Sie eine Eigenschaft im Referenzmodul und setzen Sie ihren Wert in CA auf eine Nachricht, die Sie protokollieren möchten. Es scheint, dass WIX Änderungen von Eigenschaften protokolliert:
& lt; Property Id="WIX_MAGIX_TRICK_PROPERTY" Wert="0" / & gt;
und in CA:
session ["WIX_MAGIX_TRICK_PROPERTY"]="Nachricht zum Einloggen";
Das Ergebnis sollte ähnlich sein:
MSI (c) (78! 34) [09: 48: 13: 770]: PROPERTY CHANGE: Ändern der WIX_MAGIX_TRICK_PROPERTY-Eigenschaft. Der aktuelle Wert ist '0'. Der neue Wert: 'Nachricht zum Einloggen'.
Session.Log fügt Ihr Protokoll dem Standard-MSI-Protokoll hinzu. Wenn Sie den Schalter /l*v <LogPath>
während der Ausführung zur Verfügung gestellt haben, werden Protokolle der benutzerdefinierten Aktion in LogPath gefunden.
Falls Sie Property MsiLogging mit Wert als vx im Installer verwendet haben,
Es würde Standard-MSI-Benutzer-Temp-Speicherort generieren (Typ% temp% in Ausführung), wobei LogName wie MSI * .LOG aussieht, automatisch auch ohne den Schalter /L*v
. LogPath könnte jedoch mit dem Schalter /L*v
überschrieben werden.
Dinge, die Sie wissen müssen:
session.Log protokolliert nicht, wenn es von einer UI-Aktion ausgeführt wird.
Manchmal kann das Installationsprogramm das MSI * -Log aufgrund von Speicherleckproblemen nicht generieren. In diesem Szenario können Sie den explorer.exe-Prozess neu starten.
Ausführen der msi mit den Argumenten: /L!*vx
hat das für mich gelöst.
ZB
Jetzt werden alle meine Aufrufe von Session.Log("..")
in install.log