createInstallerModule
createInstallerModule ist die Standardmethode zum Implementieren von Update-Scripts. Sie übernimmt automatisch Fehlerbehandlung, User-Switching, Step-Resumption und die Konstruktion des Rückgabewertes.
Signatur
Package.createInstallerModule(steps: InstallStep[], options?: CreateInstallerModuleOptions): InstallerModule
InstallStep
Jeder Step hat eine eindeutige ID (typischerweise die Issue-ID) und eine execute-Funktion:
type InstallStep = {
id: string;
execute: (options: InstallStepInputOptions) => void;
};
InstallStepInputOptions
Innerhalb von execute steht options zur Verfügung:
| Methode | Beschreibung |
|---|---|
appendToResultSuccess(...messages) | Fügt eine Erfolgsmeldung zu den Subtasks hinzu |
appendToResultError(...messages) | Fügt eine Fehlermeldung zu den Subtasks hinzu |
CreateInstallerModuleOptions
| Option | Typ | Default | Beschreibung |
|---|---|---|---|
message | string | "Executing steps" | Zusammenfassende Nachricht im Ergebnis |
saveStepOnFailure | boolean | true | Speichert die ID des fehlgeschlagenen Steps für die Wiederaufnahme beim nächsten Lauf |
submitFileChangesFor | FileTypeName[] | — | Datei-Typen, für die nach erfolgreicher Installation Änderungen submitted werden |
preInstallAction | (options) => void | — | Wird vor den Steps ausgeführt — auch beim Wiederaufnehmen nach einem Fehler |
postInstallAction | (options) => void | — | Wird nach den Steps ausgeführt — immer, unabhängig von Erfolg oder Fehler |
asUser | string | — | Führt die Steps als dieser User aus; wird am Ende automatisch zurückgesetzt |
Verhalten
- Resumption: Schlägt ein Step fehl, wird beim nächsten Aufruf automatisch nach dem fehlgeschlagenen Step fortgesetzt (alle Steps bis einschließlich des fehlgeschlagenen Steps werden übersprungen).
- User-Switching:
asUserruftcontext.changeScriptUser()auf und setzt den User am Ende — auch im Fehlerfall — zurück. postInstallActionläuft imfinally-Block und wird immer ausgeführt.
Beispiel
import type { InstallStepInputOptions } from "@one-unity/library/ou.sp.Package";
const { Package } = require("ou.sp.Library");
function pom123(options: InstallStepInputOptions): void {
// do the actual work
options.appendToResultSuccess("POM-123 done");
}
function inv456(options: InstallStepInputOptions): void {
options.appendToResultSuccess("INV-456 done");
}
module.exports = Package.createInstallerModule(
[
{ id: "POM-123", execute: pom123 },
{ id: "INV-456", execute: inv456 },
],
{ message: "Applying update X.Y.Z", asUser: "oucadmin" }
);