Software Pakete erzeugen

Das Erzeugen von Software Paketen muss mehrstufig erfolgen, da nicht alle notwendigen Arbeitsschritte durch die SOAP-Schnittstelle abgebildet werden. 


Zunächst werden mit Hilfe des SOAP-Interfaces die Datenbankobjekte erzeugt. In einem zweiten Schritt werden dann die Dateisysteminhalte erzeugt, die zusammen mit den Datenbankobjekten ein minimales, aber valides Software Paket ergeben.


1. Datenbankobjekte erzeugen


Hinweis: Voraussetzung für die Beispiele ist ein verbundenes PowerShell-Laufwerk.


Software Pakete werden mit dem Cmdlet New-EmdbSoftwarePackage erzeugt. Neben dem Pfad des zu erzeugenden Software Paketes in der Global Software Library erwartet das Cmdlet den Typ des zu erzeugenden Paketes und das Repository, in dem es erzeugt werden soll. Im Beispiel wird ein eScript Package "MyEScriptPackage"  im Ordner "Application Library" erzeugt. Das Paket  wird im Master-Repository erzeugt:


$MyRepository = "master"

$MyPackagePath = "emdb:\rootDSE\Global Software Library\Application Library\MyEScriptPackage"

$MySoftwarePackage = New-EmdbSoftwarePackage -Path $MyPackagePath -PackageType eScriptPackage -RepositoryID $MyRepository


Beim Absetzen des Kommandos weist das System darauf hin, dass das neue Paket noch nicht im Dateisystem existiert und darum noch nicht komplett bzw. valide ist. Wird diese Abfrage positiv beantwortet, werden die Datenbankobjekte erzeugt, die ein Software Paket repräsentieren. Dies kann in der DSMC geprüft werden. Das Einsehen des Paketverzeichnisses liefert allerdings einen Fehler, da die Dateisysteminhalte noch fehlen.


Sollen diese zusätzlich in einem separaten Schritt erzeugt werden, kann obiges Beispiel wie folgt abgeändert werden:


$MyRepository = "master"

$MyPackagePath = "emdb:\rootDSE\Global Software Library\Application Library\MyEScriptPackage"

$MySoftwarePackage = New-EmdbSoftwarePackage -Path $MyPackagePath -PackageType eScriptPackage -RepositoryID $MyRepository -CustomDepotManagement


Der zusätzliche Schalter -CustomDepotManagement unterdrückt die zuvor gebrachte Meldung und bereitet das Paket zur Durchführung des zweiten Schrittes vor.



2. Dateisysteminhalte erzeugen


Hinweis: Seit DSM 2017 ist die Angabe der Fileset-Version zwingend erforderlich, wenn für das Paket auch Dateisysteminhalte erzeugt werden sollen. Daher müssen die obigen Beispiele um folgende Zeilen ergänzt werden.


$MySoftwarePackage.FilesetVersion = 1

$MySoftwarePackage.Update()


Im zweiten Schritt werden nun die Dateisystemoperationen durchgeführt, die nicht durch die SOAP-Schnittstelle abgedeckt werden. Im einfachsten Fall ist für ein eScript-Paket die Datei "Script.inc" zu erzeugen. Zur Illustration wird im Beispiel noch ein Meldungsfenster implementiert.


Zunächst muss der Pfad im Dateisystem ermittelt werden. Dieser setzt sich zusammen aus dem UNC-Pfad zur DSM$-Freigabe, dem Work-Verzeichnis, der Id des gewählten Repositories und der Id des Paketes. Dieser Pfad wird angelegt und darin die Datei "Script.inc" erzeugt:


$MyDSMShare = "\\CHISV01\DSM$"

$MyWorkPath = "$MyDSMShare\Work\$($MySoftwarePackage.RepositoryID)\Projects\$($MySoftwarePackage.PackageId)"

$MyScriptInc = "MsgBox`r`n Hello World!`r`nEndProc"

New-Item -ItemType directory filesystem::$MyWorkPath

New-Item -ItemType file -Path "filesystem::$MyWorkPath\Script.inc" -Value $MyScriptInc


Das Software Paket ist nun vollständig und kann z.B. lokal ausgeführt oder verteilt und Computern zugewiesen werden.