Kleine Installer mit 7-Zip schnell gebaut

Es muß nicht immer ein ausgewachsener Installer mit  NSIS oder ähnlicher Software sein. Wenn man einfach nur eine Sicherheitsabfrage ("Software XYZ jetzt installieren?") haben möchte und anschließend die Setup.exe nach dem Entpacken des Distributionsarchivs automatisch aufgerufen werden soll, so kann man dafür auch  7-Zip nehmen.

 SevenZip ist ein Packer/Archiver, der sowohl eine Commandline-Version wie auch einen eigenen File-/Archivmanager mitbringt. Wer schon einmal über die Dateiendung 7z gestolpert ist, kennt den 7-Zip bereits. Der verwendete Algorithmus ist LZMA, welcher eine deutlich höhere Kompression als *zip erreicht.

Angenommen, man hat ein Verzeichnis mit vielen Dateien (mydir) und einer Setup.exe. Daraus möchte man eine einzige Datei machen, nämlich eine kleinere Setup.exe.

  1. Man komprimiert das Verzeichnis mittels 7-Zip zuerst einmal mit höchster Kompression (Ultra) in eine Datei (z.B. mydir.7z). Am bequemsten geht das direkt im Explorer, rechte Maustaste auf das Verzeichnis, "Zu Archiv hinzufügen".
  2. Eine config.txt muss erstellt werden, in der man dem Self-Extractor beschreibt, was er beim entpacken noch tun soll. Diese Datei muß UTF-8 codiert vorliegen und kann zum Beispiel folgenden Inhalt haben:
    ;!@Install@!UTF-8!
    Title="Installer"
    BeginPrompt="Do you want to install this fancy Software?"
    RunProgram="mydir\Setup.exe"
    ;!@InstallEnd@!

  3. Nun fügt man die Einzelteile zu einem gesamten, selbstextrahierenden Archiv zusammen. Dafür wird der copy-Befehl in der Commandline herangezogen:
    copy /b c:\Programme\7-Zip\7zS.sfx + config.txt + mydir.7z mydir_installer.exe

 

Danach sollte man eine "mydir_installer.exe" im entsprechenden Verzeichnis finden, die dann

Voilà. Möchte man Software per Download verteilen, ist das sicher eine gute Alternative zu kompletten Installer-Archiven.