|
<< Click to Display Table of Contents >> RayPack > 8.0 > User Guide > PackDesigner > MSI / MST / RPP-basierte Projekte > Erweiterter Modus > Benutzerdefinierte Aktionen > Eine neue benutzerdefinierte Aktion hinzufügen PowerShell-Benutzerdefinierte Aktionen hinzufügen |
PowerShell-Custom-Actions sind eine exklusive Funktion, die RayPack auf Basis der Windows Installer-Technologie bereitstellt. Die Verwendung ähnelt nativen Skriptsprachen (.vbs oder .js), mit bestimmten Einschränkungen.
•Es sind drei Quelltypen zulässig: Binärtabelle, Inline-Skript und eine Windows Installer-Property. Es ist nicht möglich, ein mit dem Paket bereitgestelltes Skript zu starten.
•Der gesamte Inhalt eines Skripts wird gestartet. Es ist nicht möglich, eine bestimmte Funktion zu starten.
•Nur die Ausführung als Immediate und Deferred wird unterstützt. Rollback- und Cleanup-Custom-Actions werden nicht unterstützt.
Der PowerShell-Skript-Editor verfügt über einen Standardsatz an Funktionen.

•Load from file... - Lädt den Inhalt einer vorhandenen .ps1-Datei.
•Snippets - Ein Dropdown mit wiederverwendbaren Inhalten, Skripten und Snippets.
•Edit with default application - Ein geteilter Button, der das aktuelle Skript in einem externen Editor (Standard) oder einem der Editoren öffnet, der .ps1-Dateien öffnen kann.
Der Texteditor bietet Syntaxhervorhebung für PowerShell sowie eine Zeilennummerierungsfunktion.
Arbeiten mit MSI-Session und Properties
Ein aus der RayPack-Umgebung als Custom Action ausgeführtes PowerShell-Skript verfügt über spezielle Funktionen zum Zugriff (Lesen und Ändern) auf Session-Properties und -Methoden. Um auf die Session zuzugreifen, verwenden Sie das vordefinierte Objekt $msiSession. Die von der Session bereitgestellten Methoden sind in der MSDN-Dokumentation der Automatisierungsschnittstelle beschrieben: https://msdn.microsoft.com/en-us/library/windows/desktop/aa367810(v=vs.85).aspx.
MSI-Properties auslesen:
Für den schnellen Zugriff auf den Wert einer MSI-Property verwenden Sie das folgende Codebeispiel:
$productCode = Get-MSIProperty "ProductCode"
Damit wird der Wert von ProductCode gelesen und in der Variablen productCode gespeichert. Ähnliche Funktionalität kann auch durch direkten Zugriff auf die MSI-Session erreicht werden.
In MSI-Properties schreiben
Um den Wert in der MSI zu speichern:
Set-MSIProperty "MyCustomProperty" "Value Of My Property"
Ähnliche Funktionalität kann auch durch direkten Zugriff auf die MSI-Session erreicht werden.
Zeichenfolgen erweitern
Um eine MSI-Zeichenfolge zu erweitern (z. B. um den Pfad zu einer Datei myFile.exe abzurufen):
$expandedValue = $msiSession.Format("[#myFile.exe]")
Arbeiten mit Snippets
Die Standardinstallation von RayPack enthält eine Reihe vorinstallierter Snippets.

Durch Klicken auf den Namen eines Snippets wird dessen Inhalt in den Editor eingefügt. Wenn Sie den Mauszeiger über den Namen bewegen, wird der einzufügende Inhalt angezeigt.
Snippets werden am folgenden Speicherort gespeichert:
<PackPoint>\Snippets\PowerShellSnippets.xml
Jeder Snippet hat einen Namen und einen Inhalt. Verwenden Sie einen beliebigen XML- oder Text-Editor, um den Standardsatz an Snippets zu ergänzen oder anzupassen.