DLL-Registrierung mit PowerShell

Es war ein mal…. eine Junior-Softwareengineer-Stelle, die ich nach meinem Traineeprogramm angetreten habe. Eine Stelle, in der ich rund 3,5 Jahre lang unterwegs war und in der ich vor allem im technischen Bereich sehr viel mitgenommen habe, unter anderem in der Shellprogrammierung mit der Bash.

Einsatzgebiet von Shellscripten

Mit Hilfe von Shellscripten lassen sich vor allem wiederkehrende technische Tätigkeiten auf Servern und Rechnern automatisieren. In meiner damaligen Tätigkeit als Softwareengineer haben wir diese vor allem bei der Verarbeitung von Eingangsmeldungen eingesetzt, beispielsweise um Eingangsmeldungen maschinell zu erkennen, um sie mit richtigen Parametern an Importjobs zu übergeben und sie nach dem erfolgten Import zu archivieren.

Auch wenn ich mit der Syntax der Shellprogrammierung nie warm geworden bin und der Meinung bin, dass teilweise grundlegende Konzepte, wie zum Beispiel If-Abfragen unnötig kompliziert gelöst sind, war die Erfahrung damit dennoch sehr wertvoll.

Aktuell in meiner Tätigkeit als Selbstständiger setze ich keine Bash, sondern PowerShell von Microsoft ein. Wenn man mit Bash und mit .NET bereits gearbeitet hat, dann kommt man in PowerShell besonders schnell und gut rein, zumal es auch unzählige Blogs zu diesem Thema gibt.

DLL-Registrierung

Zuletzt habe ich mit PowerShell ein Script entwickelt, der mir ein paar manuelle Tätigkeiten bei der Registrierung von DLL’s abnimmt. Diese Registrierung ist immer dann nötig, wenn man eine mit .NET entwickelte DLL für die VBA-Welt aufrufbar machen möchte. Um ehrlich zu sein, ist die Zeitersparnis, die mir der Registrierungsscript bietet, relativ klein – im Grunde genommen automatisiert er nur zwei Befehle. Würde ein Controller eines Unternehmens über die Entwicklung zu entscheiden haben, würde er wahrscheinlich befinden, dass die Automatisierung der DLL-Registrierung sich nicht lohnt. Da ich es für mich selbst entwickele und sowohl der Auftraggeber und der Entwickler bin, seh ich über die betriebswirtschaftliche Seite sehr großzügig hinweg, zumal es ja auch dennoch gute Argumente gibt, die für die Umsetzung sprechen 🙂 Das eine Argument war, dass ich mir die Parameterreihenfolge für die Registrierung nie merken und deswegen immer in meiner schlauen Liste (OneNote) nachschauen musste, was zum einen Zeit kostete und zum anderen einfach lästig war. Das zweite, wesentlich ausschlaggebendere Argument, lautete – „Ich will es einfach machen“:-)

Quellcode des DLL-Registrierungsscripts

Wenn man sich den Quellcode des Scripts anschaut, dann fällt auf, dass es relativ umfangreich ist, angesichts der Tatsache, dass es eigentlich nur zwei Befehle automatisiert.

Der Grund für den Overhead ist zum einen die Tatsache, dass ich zum Beispiel Namen oder Verzeichnisse für die bessere Übersicht und die Wiederverwendbarkeit in Variablen auslagere. Zum anderen blähen natürlich die ganzen Plausi-Checks den Code auf, haben aber wie bei herkömmlichen Softwareentwicklung definitiv ihre Daseinsberechtigung

$DIRECTORY_PATH = Get-Location
$LIBRARY_NAME = "VBALibrary"

$DLL_FILE_NAME = "$DIRECTORY_PATH\$LIBRARY_NAME.dll"
$TLB_FILE_NAME = "$DIRECTORY_PATH\$LIBRARY_NAME.tlb"

$REGASM_FILE_PATH = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe"


If(!(Test-Path $DLL_FILE_NAME))
{
	Write-Host -BackgroundColor Red "Die zu registrierende dll-Datei $DLL_FILE_NAME wurde nicht gefunden. Verarbeitung wird beendet..."
	exit 1
}


If(!(Test-Path $REGASM_FILE_PATH))
{
	Write-Host -BackgroundColor Red "Das .NET-Registrierungstool $REGASM_FILE_PATH wurde nicht gefunden. Verarbeitung wird beendet..."
	exit 1
}

#Aufruf des Registrierungsprogramms
 .$REGASM_FILE_PATH $DLL_FILE_NAME /tlb: $TLB_FILE_NAME /codebase


if($?)
{
	Write-Host -BackgroundColor Blue "Die Registierung wurde ohne Fehler abgeschlossen."
}
else
{
	Write-Host -BackgroundColor Red "Die Registierung ist fehlgeschlagen. Verarbeitung wird beendet..."
	exit 1
}

Fazit

Wer bisher nicht mit PowerShell gearbeitet hat, dem kann ich diese Technologie auf jeden Fall ans Herz legen. Auch PowerShell-Anfänger (so wie ich) können damit schnell Erfolge erzielen. Ebenso bin ich der Meinung, dass PowerShell auch durchaus für absolute Programmieranfänger als Erstprogrammiersprache gut geeignet ist.

2 thoughts on “DLL-Registrierung mit PowerShell

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert