Scripteditor
Rolle: Packager
Überblick
Textdateien des Pakets öffnest du per Klick im Dateibaum (siehe Dateien des Pakets ). Sie erscheinen als eigener Reiter neben dem Reiter control im Scripteditor. Für opsi-Scripte bietet der Editor Vervollständigung, Fehlerprüfung, Hilfe zu den Befehlen und Snippets. Alle anderen Textformate bekommen eine Syntaxhervorhebung. Die Farben der Hervorhebung legst du pro Dateityp unter Mein Konto fest.
Bearbeiten kannst du Dateien nur in einer Version mit dem Status Entwurf und mindestens mit der Rolle Packager. Sonst ist der Editor schreibgeschützt; Lesen, Suchen, Hilfe und das Kopieren von Text funktionieren trotzdem.

Aufbau
- Werkzeugleiste des Reiters: Pfad der Datei, bei opsi-Scripten die Zähler „2 Fehler“ und „5 Warnungen“, die Schaltfläche Werkzeugleiste ausblenden bzw. Werkzeugleiste einblenden für die Seitenleiste und Speichern.
- Editorfläche: Zeilennummern, Faltmarken am Rand und bei opsi-Scripten eine Leiste mit Diagnose-Symbolen.
- Seitenleiste (nur bei opsi-Scripten) mit den Reitern Snippets, Variablen, Warnungen und Hilfe. Du kannst sie über ihren Rand breiter oder schmaler ziehen.
- Unteres Panel JOBS: zeigt rechts die Cursorposition („Z. 12, Sp. 8“) und das Zeilenende der Datei (CRLF oder LF).
Zeilenenden bleiben beim Speichern erhalten: Eine Datei mit Windows-Zeilenenden (CRLF) bleibt eine CRLF-Datei.
Unterstützte Sprachen
Die Sprache erkennt der Editor am Dateinamen.
| Sprache | Dateien |
|---|---|
| opsi-script | .opsiscript, .opsiinc, .ins, .opsifunc |
| Shell / Batch | preinst, postinst, .sh, .cmd, .bat |
| Inno Setup | .iss, .isl |
| AutoIt | .au3 |
| PowerShell | .ps1, .psm1, .psd1 |
| INI und ähnliche | .ini, .inf, .reg, .cfg, .conf, .properties, .toml, .desktop |
| XML | .xml, .xsd, .xsl, .manifest, .config, .plist, .svg |
| YAML | .yml, .yaml |
| JSON | .json |
| Python | .py |
Für opsi-script kennt der Editor den Sprachumfang aus dem opsi-script-Handbuch 4.3: Anweisungen, eingebaute Funktionen, Sektionstypen, Befehle der Sekundärsektionen und Konstanten. Dazu kommen die Funktionen der uib-Bibliotheken, die opsi-script mitbringt (z. B. uib_exitcode.opsiscript, uib_strlistutils.opsiscript, uib_backend.opsiscript, osd-lib.opsiscript).
Alle weiteren Funktionen – Vervollständigung, Diagnose, Hilfe, Kontextmenü, Snippets und Seitenleiste – gibt es nur für opsi-Scripte.
Vervollständigung
Beim Tippen schlägt der Editor passende Einträge vor. Mit Strg+Leertaste öffnest du die Liste jederzeit von Hand. Mit den Pfeiltasten wählst du aus, mit Enter übernimmst du den Eintrag.
Vorgeschlagen werden:
- Anweisungen und eingebaute Funktionen von opsi-script,
- Funktionen der uib-Bibliotheken, jeweils mit dem nötigen
importLib "<datei>"als Herkunft, - Funktionen, die im Paket selbst mit
DefFuncdefiniert sind (siehe Funktionen des Pakets ), - Variablen der aktuellen Datei, sobald du
$tippst, - Konstanten wie
%ScriptPath%, sobald du%tippst, - Sektionen der Datei,
- Snippets, gekennzeichnet mit „Snippet · Allgemein“.
Übernimmst du eine Funktion, setzt der Editor die Klammern gleich mit und stellt den Cursor hinein. Innerhalb der Klammern zeigt ein kleiner Hinweis die Signatur; der Parameter, an dem du gerade schreibst, ist fett.
Hilfe zu Befehlen
Fährst du mit der Maus über einen Befehl, eine Funktion, eine Variable oder eine Konstante, erscheint ein Hinweis:
- bei Befehlen und Funktionen die Signatur und eine Kurzbeschreibung, ggf. mit „seit opsi-script 4.12“,
- bei Variablen die Art der Deklaration und „deklariert in Zeile 5“,
- bei Konstanten deren Bedeutung.
Die ausführliche Hilfe steht im Reiter Hilfe der Seitenleiste: Name, Signatur, Beschreibung, Kategorie und Herkunft (z. B. die Bibliothek oder die Datei mit Zeilennummer). Der Reiter zeigt immer die Hilfe zum zuletzt angefragten Befehl, auch wenn du nur mit dem Mauszeiger darauf zeigst. Mit F1 auf dem Befehl oder über das Kontextmenü Hilfe zum Befehl springt die Seitenleiste direkt auf den Reiter Hilfe.

Findet der Editor keinen Eintrag, steht dort „Keine Hilfe zu „Messagebox“ gefunden.“ Die Beschreibungen sind Zusammenfassungen aus dem opsi-script-Handbuch 4.3 der uib GmbH (CC BY-SA 4.0).
Diagnose
Während du schreibst, prüft der Editor die aktuelle Datei und markiert Auffälligkeiten im Text und am linken Rand. Fährst du mit der Maus über eine Markierung, siehst du die Meldung. Die Zähler „2 Fehler“ und „5 Warnungen“ in der Werkzeugleiste fassen das Ergebnis zusammen.

| Art | Meldung | Bedeutung |
|---|---|---|
| Fehler | „Sektion [x] ist nicht definiert“ | Die Datei ruft eine Sektion auf, die es nicht gibt. |
| Hinweis | „Sektion [x] ist in dieser Datei nicht definiert (evtl. in einer eingebundenen Datei)“ | Wie oben, aber die Sektion kann aus einer eingebundenen Datei stammen (bei sub_-Sektionen und Dateien mit Includes). |
| Warnung | „Variable $x$ wird deklariert, aber in dieser Datei nicht verwendet“ | Die Variable ist überflüssig. |
| Warnung | „Variable $x$ wird gesetzt, aber in dieser Datei nicht gelesen“ | Der Wert der Variable wird nie benutzt. |
Die Prüfung betrachtet nur die geöffnete Datei. Variablen oder Sektionen, die in einer eingebundenen Datei verwendet werden, können deshalb als unbenutzt gemeldet werden.
Navigieren und falten
- Gehe zu Definition: F12 oder Strg+Klick auf eine Variable oder Sektion springt zu der Zeile, in der sie definiert ist. Steht eine aufgerufene Sektion nicht in dieser Datei (Hinweis „Sektion … ist in dieser Datei nicht definiert“), sucht oPBWeb sie in den anderen Scripten des Pakets und öffnet die Datei an der Definition. Findet sich keine, meldet oPBWeb „Sektion … ist in keinem Script des Pakets definiert.“
- Alle Vorkommen auswählen: Strg+Umschalt+L markiert alle Stellen des Worts unter dem Cursor; du kannst sie dann gemeinsam ändern.
- Falten: Jede Sektion (
[Actions],[Files_copy]…) lässt sich über die Marke am Rand ein- und ausklappen. - Seitenleiste Variablen: Ein Klick auf einen Eintrag springt in die Zeile (siehe unten).
Das Kontextmenü
Ein Rechtsklick in den Text oder Umschalt+F10 öffnet das Kontextmenü. Du kannst es auch mit der Tastatur bedienen: Pfeiltasten, Enter oder Leertaste zum Ausführen, → öffnet das Untermenü, Esc schließt.
| Eintrag | Tastenkürzel |
|---|---|
| Gehe zu Definition | F12 |
| Alle Vorkommen auswählen | Strg+Umschalt+L |
| Hilfe zum Befehl | F1 |
| Vorschläge anzeigen | Strg+Leertaste |
| Snippet einfügen ▸ | Untermenü nach Kategorien |
| Snippet aus Auswahl erstellen … | – |
| Ausschneiden | Strg+X |
| Kopieren | Strg+C |
| Einfügen | Strg+V |
| Kommentar umschalten | Strg+Umschalt+C |
| Sektion falten | Strg+Umschalt+[ |
| Alles falten | Strg+Alt+[ |
| Alles entfalten | Strg+Alt+] |
| Suchen/Ersetzen | Strg+F |
Einträge, die den Text ändern, sind in schreibgeschützten Dateien ausgegraut. Erlaubt dein Browser keinen Zugriff auf die Zwischenablage, meldet oPBWeb „Kein Zugriff auf die Zwischenablage – bitte Strg+C/V verwenden.“
Tastenkürzel
Auf dem Mac gilt ⌘ statt Strg und ⌥ statt Alt.
| Tastenkürzel | Wirkung | Dateien |
|---|---|---|
| Strg+S | Datei speichern | alle |
| Strg+Z / Strg+Y | Rückgängig / Wiederholen | alle |
| Strg+F | Suchen/Ersetzen (Leiste oben im Editor) | alle |
| F3 / Umschalt+F3 | nächster / vorheriger Treffer | alle |
| Strg+/ oder Strg+Umschalt+C | Kommentar umschalten | alle |
| Tab | einrücken | alle |
| Alt+Ziehen mit der Maus | rechteckige Auswahl | alle |
| Strg+Leertaste | Vorschläge anzeigen | opsi-script |
| F1 | Hilfe zum Befehl unter dem Cursor | opsi-script |
| F12 oder Strg+Klick | Gehe zu Definition | opsi-script |
| Strg+Umschalt+L | alle Vorkommen auswählen | opsi-script |
| Umschalt+F10 | Kontextmenü öffnen | opsi-script |
| Tab / Umschalt+Tab | nach dem Einfügen eines Snippets zum nächsten / vorherigen Platzhalter | opsi-script |
Die Seitenleiste
Bei opsi-Scripten steht rechts neben dem Text die Seitenleiste mit vier Reitern. Mit Werkzeugleiste ausblenden in der Werkzeugleiste des Reiters blendest du sie aus, mit Werkzeugleiste einblenden wieder ein.
Snippets
Hier findest du alle Snippets, die du verwenden darfst: die globalen und deine eigenen (Abzeichen „eigen“). Sie sind nach Kategorien gruppiert; das Feld „Snippets filtern …“ grenzt die Liste ein. Zeigst du mit der Maus auf ein Snippet, erscheint unten eine Vorschau der ersten zehn Zeilen mit hervorgehobenen Platzhaltern. Ein Klick auf eine Kategorie klappt sie ein oder aus.
Ein Snippet einfügen:
- Setz den Cursor an die Stelle im Script, an der das Snippet stehen soll.
- Doppelklick in der Seitenleiste auf das Snippet oder steuere es mit der Tab-Taste an und drück Enter. Alternativ ziehst du das Snippet mit der Maus an die gewünschte Stelle im Text, wählst es im Kontextmenü unter Snippet einfügen oder übernimmst es aus der Vervollständigung.
- Enthält das Snippet Platzhalter der Form
${Name}, ist der erste davon markiert. Überschreib ihn und spring mit Tab zum nächsten Platzhalter.
Über den Link Snippets verwalten gelangst du zur Snippet-Verwaltung, siehe Snippets .
Variablen
- Definierte Variablen: alle Variablen der Datei mit Art (
DefVar,DefStringList) und Zeile. - Sektionen: alle Sektionen der Datei mit Zeile.
- Konstanten: die Konstanten von opsi-script mit Beschreibung.
Ein Klick auf eine Variable oder Sektion springt in die zugehörige Zeile.
Warnungen

Listet alle Fehler, Warnungen und Hinweise der Datei untereinander, Fehler zuerst, mit Zeilennummer. Die Zahl am Reiter nennt ihre Anzahl. Ein Klick auf einen Eintrag springt in die Zeile. Bei Sektionen, die in einer anderen Datei stehen können, führt Gehe zu Definition unter der Meldung direkt zur Definition in einem anderen Script des Pakets.
Hilfe
Zeigt die ausführliche Hilfe zum zuletzt angefragten Befehl, siehe Hilfe zu Befehlen . Ist noch nichts angefragt, steht dort „F1 auf einem Befehl zeigt hier die Hilfe an.“
Snippet aus Auswahl erstellen
Code, den du öfter brauchst, machst du direkt im Editor zu einem eigenen Snippet.
- Markiere den gewünschten Text im Script.
- Öffne mit einem Rechtsklick das Kontextmenü und wähl Snippet aus Auswahl erstellen ….
- Im Dialog „Snippet aus Auswahl“ prüfst du den Namen. Vorgeschlagen wird die erste nicht leere Zeile der Auswahl (höchstens 60 Zeichen).
- Wähl eine Kategorie oder leg mit Neue Kategorie eine an und gib den Namen der Kategorie ein.
- Wähl die Sichtbarkeit: Nur für mich oder – nur als Administrator – Global.
- Klick auf Speichern. oPBWeb meldet „Snippet gespeichert“; das Snippet steht sofort in der Seitenleiste zur Verfügung.
Stellen, die sich bei jeder Verwendung ändern, schreibst du als Platzhalter ${name} ins Snippet. Nach dem Einfügen springst du mit Tab von Platzhalter zu Platzhalter. Platzhalter setzt du bequem in der Snippet-Verwaltung mit Auswahl als Platzhalter.
Funktionen des Pakets
Funktionen, die du in einem Script des Pakets mit DefFunc definierst, kennt der Editor in allen Scripten desselben Pakets. Sie erscheinen in der Vervollständigung und in der Hilfe, jeweils mit Datei und Zeile der Definition als Herkunft.
Als Beschreibung übernimmt oPBWeb die Kommentarzeilen direkt über dem DefFunc. Kommentare im Stil der uib-Bibliotheken mit @Description und @Returns werden ausgewertet:
; @Description Liefert den Installationspfad des Produkts
; @Returns Pfad als String
DefFunc GetInstallDir(val $Arch$ : string) : string
...
EndFunc
Die Liste der Funktionen wird aktualisiert, sobald du eine Datei gespeichert hast.
Speichern
Mit Strg+S oder der Schaltfläche Speichern in der Werkzeugleiste des Reiters speicherst du die Datei. oPBWeb bestätigt mit „Gespeichert“.
Ungespeicherte Änderungen gehen nicht unbemerkt verloren:
- Schließt du einen geänderten Reiter, fragt oPBWeb „Ungespeicherte Änderungen an setup.opsiscript verwerfen?“.
- Wechselst du die Version oder verlässt du den Editor, kommt „Es gibt ungespeicherte Änderungen. Trotzdem verlassen?“.
- Schließt oder lädst du das Browserfenster neu, warnt der Browser.
Solange eine Datei ungespeicherte Änderungen hat, kannst du das Paket weder bauen noch installieren. Speichere zuerst alle Dateien, siehe Bauen und verteilen .