Archiv der Kategorie: Plugins

NSIS Plugin „CLR“ verwenden

NSIS & .NET

NSIS & .NET

Mit C# und dem .NET Framework von Microsoft kann man oftmals einfacher eine Funktionalität implementieren als mit C++, besonders da man sich dank dem Garbage Collector nicht (oder weniger) um das Speicherhandling kümmern muss.

Wenn man dies auch in einem NSIS-Installer nutzen möchte (evtl. hat man den Code bereits vorhanden und möchte ihn nicht noch einmal implementieren) kann man das NSIS-Plugin CLR verwenden.

Dabei sind aber ein paar Punkte zu beachten, damit der Installer auch wirklich funktioniert.

  1. Das .NET Framework muss installiert sein.
    Ohne das .NET Framework kann auch die gewünschte Funktion nicht ausgeführt werden. Je nach Systemvoraussetzungen kann aber davon ausgegangen werden, dass dies schon erfüllt ist. Eine Beschreibung, wie das .NET Framework mit NSIS installiert wird kann im Artikel „Simple Way To Install .NET Framework“ nachgelesen werden.
  2. Das .NET Assembly muss mit .NET 2.0 lauffähig sein.
    Das Plugin CLR wurde mit dem .NET Framework 2.0 erstellt. Dementsprechend können keine Assemblies gestartet werden, die eine neuere .NET Version voraussetzen (z.B. durch den Einsatz von LINQ). In Visual Studio kann das Ziel-Framework in den Project-Optionen angegeben werden. Wenn auf der Kommandozeile mittels csc.exe kompiliert wird muss csc.exe aus dem .NET Framework 2.0 Ordner verwendet werden.
    Um diese Einschränkung zu umgehen kann das Plugin selber mit der passenden .NET Version übersetzt werden. Der Sourcecode ist im .ZIP File enthalten.
  3. Das .NET Assembly muss im Installer enthalten sein.
    Das Plugin fügt das .NET Assembly nicht automatisch dem Installer hinzu. Deshalb müssen das .NET Assembly und alle weiteren nötigen Assemblies mit dem File-Kommando dem Installer hinzugefügt werden.

Noch ein paar Tipps und weitere Quellen:

  • Ausgaben von der .NET Assembly in die NSIS-Konsole.
    Wenn die .NET Assembly eine Arbeit verrichtet, die eine längere Zeit in Anspruch nimmt oder man dem Benutzer anzeigen möchte, was die DLL ausgeführt hat, kann man Anhand des Artikels „DetailPrint From Inside .NET DLL“ die Ausgaben vornehmen.
  • Zusätzliche Hinweise zum Plugin „CLR“.
    Im Forumsthread „Calling managed .NET DLL from NSIS – this works :-)“ ist die Entstehungsgeschichte des Plugins beschrieben und es werden weitere Hinweise zur Verwendung gegeben (Seiten 2 und 3 auch beachten).

Habt ihr dieses Plugin auch schon eingesetzt und wie sind eure Erfahrungen. Fehlen hier noch Fallstricke, die erwähnt werden sollten?