PostSharp 09.06.2020, 11:08 Uhr

Community.Packer: .NET-Apps in eine EXE packen

Mit Hilfe des kostenlosen Open-Source-Tools PostSharp.Community.Packer packen Sie Ihr .NET-Programm in eine einzelne EXE-Datei.
(Quelle: postsharp.net)
PostSharp.Community.Packer wurde im April 2020 veröffentlicht. Der Packer ist ein Add-in für PostSharp, das eine Assembly während der Kompilierung so modifiziert, dass eine .NET-Framework-Anwendung zur Verteilung in eine einzige EXE-Datei gepackt wird.
Wie Petr Hudeček in diesem Blogbeitrag schreibt, stammmen sowohl die Grundidee als auch ein Großteil des Codes selbst von Costura.Fody, einem Add-In zu Fody, das denselben Effekt hat. Der PostSharp.Community.Packer unterscheidet sich vor allem in der verwendeten Architektur.
Ziel des Packers ist es, dem Benutzer die Installtation einer Anwendung so einfach wie möglich zu machen und dadurch die Wahrscheinlichkeit zu erhöhen, dass der Benutzer die Anwendung ausführt.
Unter Windows verteilt man Anwendung traditionell mit Hilfe von Installationsprogrammen. Aber diese sind schwergewichtig und stellen selbst eine Hürde dar. Etliche Benutzer sind womöglich nicht bereit eine Anwendung mit einem sperrigen Installationsprogramm auszuführen.
Eine andere übliche Art, eine Anwendung zu verteilen, ist als .zip-Datei, die der Benutzer extrahieren muss. Aber in diesem Fall muss der Benutzer über ausreichende Computerkenntnisse verfügen, um zu wissen, wie er das tut und dass er sie zunächst extrahieren muss, anstatt sie direkt aus der .zip-Datei auszuführen – in diesem Fall würde Ihr Projekt wahrscheinlich stillschweigend abstürzen. Zudem muss er in der Lage sein, die richtige EXE-Datei aus möglicherweise vielen Dateien, die sich in der .zip-Datei befinden, zu identifizieren. Besonders schwierig wird dabei das Aktualisieren der Anwendung.
Schließlich ist da noch die Frage der Ästhetik: Eine einzelne Datei sieht einfach so viel sauberer aus als ein Ordner mit einer Haupt-EXE-Datei, die sich zwischen Dutzenden von Bibliotheken versteckt. Wenn Sie Ihre Anwendung als einzelne EXE-Datei verteilen, kann der Benutzer nur eine kleine Datei herunterladen und sie sofort ausführen.
Wenn Sie .NET Core 3 anstelle des .NET Framework verwenden, benötigen Sie den Packer nicht, denn .NET Core 3 kann dies schon von alleine. Allerdings können Sie bei .NET Core 3 in der Regel nicht erwarten, dass der Benutzer .NET Core auf seinem Rechner installiert hat, und daher müssen Sie die Runtime mit Ihrer Anwendung mitliefern, was zusätzliche 30-70 MByte Download für den Benutzer bedeutet. Im Gegensatz dazu ist das .NET Framework auf Windows-Rechnern bereits installiert.
Wie der Packer funktioniert erklärt Petr Hudeček in seinem Blogbeitrag. Informationen zum Hinzufügen von Packer zu einem Projekt finden Sie auf der GitHub-Seite zum Projekt PostSharp.Community.Packer.


Das könnte Sie auch interessieren