Kundenspezifische Erweiterungen (Custom Actions)
Anforderung
Es wird ein Mechanismus benötigt, für neue oder wiederherzustellende Computer während des OS-Deployments kundenspezifische Funktionen innerhalb der von mypOsDeploy bereitgestellten Task Sequence auszuführen.
Beispiele:
Anwenden spezifischer Richtlinien
Kopieren kundenspezifischer Daten oder Programme
...
Lösung
In mypOsDeploy werden ini-Dateien mit Aufrufparametern verwaltet, die in der Task Sequence abgearbeitet werden.
Dieses Funktion ist erst ab mypOsDeploy Version 1.4.1.4 verfügbar.
Start
Die definierten Custom Aktionen werden je nach Konfiguration an spezifischen Stellen der Task Sequence ausgeführt.
Aufruf-Hierarchie:
Prio 1: mypOsDeploy prüft, ob es im Verzeichnis Mandant\Konfiguration eine Datei CustomActions.ini gibt
Prio 2: mypOsDeploy prüft, ob es im Verzeichnis Mandant eine Datei CustomActions.ini gibt
An beiden Stellen kann ein weiteres Verzeichnis "CustomActions" angelegt werden, indem sich die erforderlichen Programme, Skripte usw. befinden. Das Verzeichnis darf leer sein, muss aber vorhanden sein, da es als aktuelles Verzeichnis für die Ausführung gesetzt wird, so dass die aufgerufenen Programme keine expliziten Pfadangaben benötigen.
Werden an beiden Lokationen keine ini-Dateien gefunden wird keine Custom-Action ausgeführt. Dies ist im Auslieferungszustand der Regelfall!
Mandant/Konfiguration
Bitte beachten Sie, dass beim Mandanten hinterlegte kundenspezifische Erweiterungen nicht! ausgeführt werden, wenn die Konfiguration bereits kundenspezifische Erweiterungen enthält!
Aufbau
Die Datei CustomActions.ini darf aus beliebig vielen aufsteigend numerierten Sections bestehen. Diese werden in aufsteigender Reihenfolge nacheinander abgearbeitet. Jede Section hat hierbei folgenden Aufbau:
[xxxx] ---fortlaufender Sectionname
Id= ---fortlaufende ID
Name= ---Name der Aktion
Description= ---Beschreibung (diese Beschreibung wird im Fortschrittsdialog des PE-Assistenten als aktuelle Aktion angezeigt)
Phase= ---entweder Prepare (wird nach der Treiber und vor der Anwendungsinstallation ausgeführt) oder Finalize (wird nach der Anwendungsinstallation ausgeführt)
Command= ---das auszuführende Kommando
Param= ---Parameter für das Programm
BreakOnError= ---False, wenn die Installation trotzdem weiterlaufen soll; True, wenn die Installation im Fehlerfall abgebrochen werden soll
IgnoreErrors= ---Pipe-getrennt alle Exitcodes <> 0, die ebenfalls als Erfolg angesehen werden sollen
Neben globalen Variablen darf für Kommando und Parameter die zusätzliche Variable CustomActionsDir benutzt werden. Diese wird zur Laufzeit durch das Verzeichnis ersetzt, welches sich unterhalb der aktuell ausgeführten CustomAction befindet.
Beispiel für eine CustomActions.ini
[0001]
Id=0001
Name=Sample Custom Action
Description=this is a sample custom action
Phase=Prepare
Command=%SYSTEMROOT%\System32\cslrunw.exe
Param=/statements:"MsgBox(""Hallo Welt"")"
BreakOnError=False
IgnoreErrors=
[0002]
Id=0002
Name=Sample Custom Action
Description=this is a sample Action for calling External Csl
Phase=Finalize
Command=%SYSTEMROOT%\System32\cslrunw.exe
Param=/Script:""%CustomActionsDir%\HelloWorld.csl""
BreakOnError=True
IgnoreErrors=0|1
[0003]
Id=0003
Name=Sample Custom Action
Description=this is a sample Action that causes an error
Phase=Prepare
Command=%SYSTEMROOT%\System32\cslrun_w.exe
Param=
BreakOnError=False
IgnoreErrors=
Section 1 führt hierbei ein einfaches Csl-Statements aus.
In Section 2 wird ein Csl ausgeführt und das auszuführende Csl über %CustomActionsDir% lokalisiert. Weiterhin wird festgelegt, dass neben 0 auch 1 ein zulässiger Rückgabewert ist. Alle anderen Fehler führen zum Abbruch.
Section 3 enthält ein Beispiel für ein Programm, welches nicht gestartet werden kann - über den BreakOnError-Schalter wird das aber ignoriert.
Die Sections 1 und 3 werden in der Vorbereitung ausgeführt, die Section 2 in der Finalisierungsphase.
Ausführung
Die von mypOsDeploy gestartete Task Sequence hat zwei Einsprungpunkte, um CustomActions auszuführen:
Nach der Installation von Betriebssystem und Treibern, aber vor der Installation von mypdeploy (Phase=Prepare).
Nach der Installation aller Anwendungen, aber vor der Ausführung von mypackage-Paketen, die explizit als “immer nach einer Voll-Installation ausführen” gekennzeichnet sind (Phase=Finalize).
mypOsDeploy liest die ini-Datei aus und führt die dort hinterlegten Anweisung hintereinander aus (wenn sie zur gerade aktiven Phase passen), bis
alle Sections abgearbeitet sind
eine Section einen Fehler liefert, der nicht mit "BreakOnError=False" ignoriert werden darf.
Im Fehlerfall wird die letzte erzeugte Fehlermeldung als Fehler im Abschlussbericht angezeigt und die Task Sequence beendet, ansonsten wird nach Abarbeitung der CustomActions die Task Sequence weiter geführt.
lokaler Speicher: die eigentliche Windows-Installation ist zu diesem Zeitpunkt beendet. Lokale abgelegte Dateien sind nach Abschluss der Task Sequence verfügbar; ebenso von CustomActions gesetzte Registy-Einträge.