it-swarm.com.de

Ist es möglich, eine Datei nach dem Extrahieren aus einem 7-Zip-Archiv (SFX) auszuführen?

Ich versuche, eine komprimierte bereitstellbare Anwendung zu erstellen.

Derzeit nehme ich eine Reihe von Dateien, die ich aus meiner IDE (von Visual Studio 2008 - WPF veröffentlichte Anwendung) veröffentlicht habe, und komprimiere sie in einem 7-Zip-SFX-Archiv.

Meine Benutzer haben gefragt, ob sie "Ein-Klick-Installation" von der 7-Zip-Exe können. Beim Erstellen des Archivs wird eine Parameterliste angezeigt. Gibt es eine Möglichkeit, eine Kombination von Parametern festzulegen, um die ausführbare Datei des Installationsprogramms aufzurufen, die extrahiert wird?

Leider scheint die 7-Zip-Dokumentation dieses Szenario nicht abzudecken. Ich habe mehrere kostenpflichtige Anwendungen gesehen, die etwas Ähnliches tun, aber ich versuche, das Tool, das ich schreibe, frei von lizenziertem Code zu halten, damit wir es intern verwenden können.

37
Mike G

SFX-Module für Installateure

SFX-Module für Installer sind in einem externen Paket (7z_extra) enthalten. Sie können diese Module von www.7-Zip.org herunterladen. Mit SFX-Modulen für Installer (7zS.sfx und 7zSD.sfx) können Sie Ihr eigenes Installationsprogramm erstellen. Ein solches Modul extrahiert das Archiv in den temporären Ordner des Benutzers, führt ein bestimmtes Programm aus und entfernt die temporären Dateien, nachdem das Programm beendet ist. Ein selbstextrahierendes Archiv für Installer muss als Verknüpfung von 3 Dateien erstellt werden: SFX_Module, Installer_Config, 7z_Archive. Darüber hinaus ist die optionale Datei Installer_Config zulässig. Mit dem folgenden Befehl können Sie ein selbstextrahierendes Installationsarchiv erstellen:

copy /b 7zS.sfx + config.txt + archive.7z archive.exe

Eine optimal kleine Größe des Installationspakets kann erreicht werden, wenn die Installationsdateien dekomprimiert werden, bevor sie in das 7z-Archiv aufgenommen werden.

Der Schalter -y für das Installationsmodul gibt die Extraktion im stillen Modus an.

Quelle

Verwenden Sie das Attribut RunProgram, um ein Programm anzugeben, das nach dem Entpacken ausgeführt werden soll. Hier ist zum Beispiel ein Beispiel config.txt, der nach dem Entpacken Install.cmd ausführt. Das aktuelle Arbeitsverzeichnis ist die oberste Ebene des erweiterten archive.7z-Baums, daher sollte sich dort Install.cmd befinden.

;[email protected]@!UTF-8!
Title="Your Title"
RunProgram="Install.cmd"
;[email protected]@!

An die ausführbare SFX-Datei übergebene Argumente werden an das Skript Install.cmd übergeben.

33
Molly7244

Die vereinbarte Lösung ist korrekt, hilft aber nicht, zu erklären, was Sie tatsächlich tun müssen !. Ich habe diese und viele andere Lösungen gelesen und konnte keine vollständigen und einfachen Anweisungen dazu finden.

Wenn Sie genauso verwirrt sind wie ich, lesen Sie bitte meinen Blog-Beitrag, in dem Sie Schritt für Schritt erfahren, wie Sie das erreichen, was Molly7244 veröffentlicht hat.

So erstellen Sie ein selbstextrahierendes Archiv, in dem Ihre setup.exe mit dem 7Zip -sfx-Schalter ausgeführt wird

Ich wurde darauf aufmerksam gemacht, dass Links nicht mehr funktionieren können. Hier sind die Schritte aus meinem Blog

Schritt 1 - Richten Sie Ihren Installationsordner ein

Um dies zu vereinfachen, erstellen Sie einen Ordner c:\Install. Hier kopieren wir alle benötigten Dateien.

Schritt 2 - 7Zippen Sie Ihre Installationsprogramme

  1. Wechseln Sie zu dem Ordner, in dem sich Ihre MSI-Datei und Ihre setup.exe befinden
  2. Wählen Sie sowohl die MSI-Datei als auch die Datei setup.exe aus
  3. Rechtsklicke und wähle 7Zip -> "Zum Archiv hinzufügen"
  4. Nennen Sie Ihr Archiv "Installer.7z" (oder einen Namen Ihrer Wahl)
  5. OK klicken
  6. Sie sollten jetzt "Installer.7z" haben.
  7. Kopieren Sie diese .7z-Datei in Ihr Verzeichnis c:\Install

Schritt 3 - Holen Sie sich das 7z-Extra sfx-Erweiterungsmodul

Sie müssen das 7z-Extra herunterladen.

  1. Folgen Sie diesem Link, um zum Download von 7Zip zu gelangen .
  2. Sie müssen die Version 9.20 (Stand: Mai 2015) herunterladen, da die Beta nicht die richtigen Dateien enthält.
  3. Ein direkter Download Link.
  4. Extrahieren Sie die zusätzlichen 7Zip-Dateien
  5. Kopieren Sie die Datei "7zS.sfx" nach c:\Install

Schritt 4 - Richten Sie Ihre config.txt ein

Ich würde empfehlen, NotePad ++ zu verwenden, um diese Textdatei zu bearbeiten, da Sie in UTF-8 codieren müssen. Die folgenden Anweisungen verwenden Notepad ++.

  1. Gehen Sie im Windows Explorer zu c:\Install
  2. klicken Sie mit der rechten Maustaste und wählen Sie "New Text File" und nennen Sie es config.txt
  3. klicken Sie mit der rechten Maustaste und wählen Sie "Bearbeiten mit NotePad ++"
  4. Klicke auf "Encoding Menu" und wähle "Encode in UTF-8"
  5. Geben Sie so etwas ein:

    ;[email protected]@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;[email protected][email protected]!
    

Bearbeiten Sie dies, indem Sie [SOFTWARE v1.0.0.0] durch Ihren Produktnamen ersetzen. Hinweise zu den Parametern und Optionen für die Setup-Datei finden Sie hier

Kontrollpunkt

Sie sollten jetzt einen Ordner "c:\Install" mit den folgenden 3 Dateien haben:

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

Schritt 5 - Erstellen Sie das Archiv

Diese Anweisungen habe ich im Internet gefunden, aber nirgendwo wurden die 4 oben genannten Schritte erklärt.

  1. Öffnen Sie ein Cmd-Fenster, Fenster + R -> Cmd -> drücken Sie die Eingabetaste
  2. Geben Sie im Befehlsfenster Folgendes ein

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. Schauen Sie in c:\Install nach und Sie werden sehen, dass Sie eine MyInstaller.exe haben

    Du bist fertig

Führen Sie das Installationsprogramm aus

Doppelklicken Sie auf MyInstaller.exe und es wird mit Ihrer Nachricht aufgefordert. Klicken Sie auf OK und die setup.exe wird ausgeführt.

P.S. Hinweis zur Automatisierung

Jetzt, da Sie dies in Ihrem c:\Install-Verzeichnis haben, würde ich eine "Install.bat" -Datei erstellen und das Kopierskript darin ablegen.

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

Jetzt können Sie die Datei Install.bat einfach jedes Mal bearbeiten und ausführen, wenn Sie eine neue Version Ihres Bereitstellungspakets erstellen müssen.

20
jcrawfor74

Sie sollten sich auch NSIS ansehen. Mit dieser Option können Sie ein Installationsprogramm erstellen, das mit der gleichen Methode komprimiert wird, die 7-Zip verwendet ( LZMA ) Sie haben die volle Kontrolle über den Installationsprozess.

7
Matthew Talbert

Aufbauend auf der Antwort von jcrawfor74 finden Sie hier einige zusätzliche Informationen:

Anstelle von 7zS.sfx können Sie auch die Datei 7zS2.sfx verwenden. Dies ist eine viel kleinere Version (28 kB gegenüber 140 kB), die config.txt-Datei wird jedoch nicht unterstützt. Sie können es also einfach im Kopierbefehl weglassen. Wenn Sie nur winzige Konfigurationsskripte erstellen möchten, können Sie kleinere EXE-Dateien erstellen.

Das kleinere SFX-Modul stellt keine Fragen. Es extrahiert die Dateien in einen temporären Ordner als das andere Modul und findet dann ausführbare Kandidaten. Entsprechend dem Quellcode (auch auf der Downloadseite verfügbar) werden in C\Util\SfxSetup\SfxSetup.c Dateien auf der Grundlage ihres Namens und ihrer Erweiterung unterschiedlich gewichtet, und anschließend wird die Datei mit der höchsten Punktzahl ausgewählt.

Beide SFX-Module werden automatisch als Administrator ausgeführt, zumindest in Windows 10, und dies kann nicht konfiguriert werden. Während dieses Verhalten für systemweite Setups wünschenswert sein kann, ist dies möglicherweise nicht immer der Fall. Außerdem basiert diese Entscheidung nur auf den Dateiversionsdaten, da kein Manifest enthalten ist, das Windows explizit mitteilt, was zu tun ist. Die Windows-Kompatibilität überprüft die Datei und findet Zeichenfolgen wie "Setup", die zur Eingabeaufforderung für die Elevation führen.

Wenn Sie ein SFX-Modul benötigen, für das keine Administratorrechte erforderlich sind, können Sie das SFX-Modul aus dem Quellcode neu erstellen oder die Dateiversionsinformationen mit einem Ressourceneditor wie diesem bearbeiten . Entfernen Sie einfach das Wort "Setup" aus dem Feld "FileDescription", kompilieren Sie im Falle des erwähnten Resource Hacker die Datei und speichern Sie die EXE-Datei. Sie können diesen Schritt auch direkt für die Datei 7zS.sfx oder 7zS2.sfx ausführen und sie an einem beliebigen Ort aufbewahren, damit Sie damit SFX-Pakete mit nicht erhöhten Rechten erstellen können. Und Sie können dies verwenden, um die Dateiversionsinformationen vollständig anzupassen und Ihren Produktnamen oder irgendetwas darin abzulegen, das die Nutzlast beschreibt.

1
ygoe