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) => 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
asUserstring—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: 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" }
);