NWC Services Blog
Selbst-Extrahierendes Archiv mit 7Zip erstellen
In manchen Fällen kann es durchaus von Vorteil sein, wenn man sich ohne großen Aufwand selbst einen kleinen "Installer" basteln kann. Gerade für kleinere Aufgaben im Bereich der Automatisierung und vielleicht auch wenn man nicht unbedingt auf Deployment Tools wie DSM und Co. zurück greifen kann, lassen sich somit z.B. eigene Scripte inkl. der benötigter Dateien schnell und einfach in einem Archiv zusammen fassen, welches sich bei Ausführung selbst entpackt und die beinhaltenden Aktionen automatisch ausführt.
Wie Sie sich ein solches, selbst-extrahierendes Archiv mit dem Freeware Tool 7-Zip erzeugen können, möchte ich Ihnen in diesem Artikel nun zeigen.
Zunächst benötigen wir hierfür zum einen 7-Zip, welches Sie sich von der Seite www.7-zip.de herunterladen können. Ebenfalls findet sich auf dieser Seite das LZMA SDK, welches wir zusätzlich benötigen. Bei LZMA handelt es sich um die allgemeine Kompressionsmethode des 7z Formats die neben einer sehr hohen Kompressionsrate auch eine schnelle Dekompression bietet. Gerade aufgrund dieser beiden Merkmale eignet sie sich vor allem sehr gut für eingebettete Applikationen, was bei unserem Vorhaben nicht ganz unwichtig ist. Des Weiteren beinhaltet das LZMA SDK neben allen benötigten Werkzeugen zum Erstellen unseres kleinen "Installers" auch eine relativ gute Dokumentation zu den einzelnen Tools als auch einige Beispiele zur richtigen Anwendung.
Für unser Beispiel möchte ich eine konkrete Anforderung formulieren und mit dem selbst-extrahierenden Archiv einen möglichen Lösungsansatz bieten.
Anforderung
Für die Außendienstmitarbeiter eines Unternehmens soll die Möglichkeit geboten werden zukünftig diverse Dienste wie z.B. DSM Softwareinstallationen direkt über das Internet durchführen zu können. Aktuell benutzen die Mitarbeiter weder VPN noch besteht die Möglichkeit, dass alle der Außendienstmitarbeiter sich regelmäßig im Firmennetzwerk anmelden um Updates zu erhalten. Für die Softwareinstallation wurde bereits ein DSM Management Point in der DMZ des Unternehmens zur Verfügung gestellt. Die Clients sollen nun die Möglichkeit erhalten sich per Zertifikatsbasierter Authentifizierung am DSM DMZ Server zu melden und ausweisen zu können.
Herausforderung
Im Grunde handelt es sich um keine extrem schwierige Anforderung, allerdings wird sehr schnell deutlich, dass es sich hierbei um eine Art "Henne - Ei" Problem handelt. Ohne Zertifikat kann sich der Client nicht "ausweisen" und würde vom DMZ Server abgewiesen werden. Ohne DSM bzw. funktionierendes Software Deployment Tool gibt es aber auch keine Möglichkeit ein eScript an den Clients auszuführen, welches die benötigten Files installieren würde.
Durchführung
Wir möchten nun allen Außendienstmitarbeitern ein Archiv zur Verfügung stellen, welches bei Ausführung das benötigte Clientzertifikat installiert ohne das der Mitarbeiter das benötigte Zertifikatspasswort kennen muss. Zusätzlich sollen gleich noch die aktuellen NCP Files auf den Client kopiert werden.
Hierfür erstellen wir uns zunächst ein kleines Batch oder Command File, welches unsere Aufgaben abarbeitet. Dies kann z.B. so aussehen:
Zusätzlich zu den eigentlichen Befehlen lasse ich für die einzelnen Aktionen noch ein kleines Log File erzeugen um mir später die Überprüfung meiner Aktionen zu erleichtern. Grundsätzlich muss dies natürlich nicht gemacht werden bzw. sollte das Log File vielleicht nicht unbedingt im angegebenen Pfad zurück bleiben und wird rein für Debugging verwendet.
Als nächstes benötigen wir für unser Archiv eine Konfigurationsdatei, die nach einer speziellen 7-Zip Syntax erstellt werden muss. Detaillierte Informationen zur Syntax können Sie der Dokumentation des LZMA SDK entnehmen. (DOCSInstaller.txt)
Wichtig an dieser Stelle ist die Kodierung der Konfigurationsdatei (UTF8). Unsere Konfiguration soll bei Ausführung dem Anwender zunächst ein kleines Fenster zeigen und fragen ob die Aktionen nun ausgeführt werden sollen. Danach werden die benötigten Dateien entpackt und unser darin enthaltenes Batch File "pfxinstall.bat" ausgeführt.
Zum Schluss müssen nun noch alle benötigten Files zu einem Archiv zusammen geführt werden. Hierfür suchen wir uns zunächst alle Files zusammen.
Aus den NCP Files, dem Zertifikat und dem Batch File erstellen wir uns nun ein gewöhnliches 7zip-Archiv (7z).
Über folgende Befehlszeile wird nun das Archiv erstellt.
copy /b 7zsd.sfx + config.txt + zertinst.7z zertinst.exe
Über den Copy wird nun eine Datei "zertinst.exe" erstellt, die den Mitarbeitern zur Verfügung gestellt werden können.
Zu guter Letzt führen wir unsern kleinen "Installer" auf einem Client aus um das Konstrukt zu testen und ggf. zu überprüfen.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Kommentare