Zum Hauptinhalt springen

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:

MethodeBeschreibung
appendToResultSuccess(...messages)Fügt eine Erfolgsmeldung zu den Subtasks hinzu
appendToResultError(...messages)Fügt eine Fehlermeldung zu den Subtasks hinzu

CreateInstallerModuleOptions

OptionTypDefaultBeschreibung
messagestring"Executing steps"Zusammenfassende Nachricht im Ergebnis
saveStepOnFailurebooleantrueSpeichert die ID des fehlgeschlagenen Steps für die Wiederaufnahme beim nächsten Lauf
submitFileChangesForFileTypeName[]Datei-Typen, für die nach erfolgreicher Installation Änderungen submitted werden
preInstallAction(options) => voidWird vor den Steps ausgeführt — auch beim Wiederaufnehmen nach einem Fehler
postInstallAction(options) => voidWird nach den Steps ausgeführt — immer, unabhängig von Erfolg oder Fehler
asUserstringFü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: asUser ruft context.changeScriptUser() auf und setzt den User am Ende — auch im Fehlerfall — zurück.
  • postInstallAction läuft im finally-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" }
);