Zum Hauptinhalt springen

installOrUpgrade

installOrUpgrade führt die Installation bzw. das Upgrade durch.

API und Checks

Die API der Metadaten orientiert sich an den Package-Metadaten von otrPackage. Da dieses Tool leider bisher alles andere als stabil funktioniert, haben wir uns entschieden, auf der API aufzubauen. Ggf. ist in der Zukunft daher ein schnellerer Wechsel möglich.

API Abweichungen

  • updateScripts wird nicht unterstützt. otris verwendet hier einen XML Runner.
  • updateScriptsJs wurde hinzugefügt. Durch unsere Implementierung ist es möglich, hier mit "normalen" PortalScripten zu arbeiten.

Checks

Package überprüft anhand der Lib compare-versions folgendes:

Ist das Paket bereits installiert?

  • Wenn ja, ist es neuer als die bereits installierte Version? -> Upgrade
  • Wenn nein -> Installation

Sind die Abhängigkeiten erfüllt?

  • Wenn ja -> Upgrade oder Installation

Beispiele

Aufruf im PortalScript:

const { Package } = require("ou.sp.Library");

const PACKAGE_METADATA = {
name: "library-demo",
version: "24.0.0",
title: "Library SDK Demo",
description: "Demo Package for Library SDK",
contentType: "module",
dependencies: [],
// do not use updateScripts yet - this is purely for otris compatibility
updateScripts: {},
updateScriptsJs: [{
version: "1.0.0",
updateScriptName: "ou.cust.demo.install.1.0.0"
}],
icon: "mdi:mdi-transfer-up"
};

Package.installOrUpgrade(PACKAGE_METADATA);

Implementierung eines Upgrade-Scripts (TypeScript)

Update-Scripts werden mit Package.createInstallerModule() implementiert. User-Switching, Fehlerbehandlung und die Konstruktion des Rückgabewertes übernimmt createInstallerModule automatisch.

import type { InstallStepInputOptions } from "@one-unity/library/ou.sp.Package";
const { Package } = require("ou.sp.Library");

function doMyUpgradeStuff(options: InstallStepInputOptions): void {
// do the actual work
options.appendToResultSuccess("Did the thing");
}

module.exports = Package.createInstallerModule(
[{ id: "MY-ISSUE-ID", execute: doMyUpgradeStuff }],
{ message: "Applying update 1.0.0", asUser: "oucadmin" }
);

Siehe createInstallerModule für die vollständige API.