7Zip nutzen um Archiv zu erstellen

  • Hallo zusammen,

    ich möchte mit 7zip "tar" und "tgz" Archive erstellen und bin dabei auf folgenden Thread gestoßen:

    https://www.autoitscript.com/forum/topic/25…ip32dll/page/4/

    Leider laufe ich immer auf Fehler 33026 (Rückgabewert im DLLCall) und weiß aktuell nicht woran das liegen könnte. @error ist jedoch "0".

    4 Mal editiert, zuletzt von Moombas (16. Dezember 2019 um 11:48)

  • Und nutze ich das Beispiel hier: https://www.autoitscript.fr/forum/viewtopic.php?f=21&t=1943

    Erstellt er zwar das TGZ-Archiv, jedoch nicht das TAR-Archiv, obwohl 7zip ja beides kann. Witzigerweise, kann es ja laut Beschreibung TAR aber kein TGZ XD

    AutoIt
        $Return = _7ZipUpdate(0, @ScriptDir & '\settings.local.tar', @ScriptDir & '\settings.local\sk_lan.xml') ;funktioniert nicht
        If @error = 0 Then
            MsgBox(64, "_7ZipUpdate", $Return)
        Else
            MsgBox(64, "_7ZipUpdate", @error)
        EndIf
    
        _7ZipUpdate(0, @ScriptDir & '\settings.local.tar', @ScriptDir & '\settings.local\sk_wifi.xml') ;funktioniert nicht
        _7ZipUpdate(0, @ScriptDir & '\settings.local.tgz', @ScriptDir & '\settings.local.tar') ;funktioniert

    4 Mal editiert, zuletzt von Moombas (16. Dezember 2019 um 10:07)

    • Offizieller Beitrag

    Funktioniert tadellos:

    AutoIt
    Local $sPath7z = "C:\portable\7zip\App\7-Zip\7z.exe"
    Local $sTarget = @ScriptDir & '\all_txt.tar'
    Local $sSource = @ScriptDir & '\*.txt'
    
    Local $sCmd = StringFormat('%s a %s %s', $sPath7z, $sTarget, $sSource)
    Run($sCmd, @ScriptDir, @SW_HIDE)

    EDIT:

    tgz ist kein unterstütztes Format, insofern ist es wohl eher eine "Fehlfunktion", wenn dein Skript damit funktioniert. :P

    Btw: Bei einer Software mit vorhandener und gut dokumentierter Kommandozeilenoption, kann ich keinen Mehrwert in einer UDF erkennen. Parameter mit StringFormat zusammensetzen, Run und fertig!

  • Bei mir leider überhaupt nicht.

  • Ich seven-zippe problemlos mit folgender Befehlszeile:

    Code
    Local $iReturnValue = RunWait("7z.exe a -tzip " & "MailZIP.ZIP * -p" & $sPassword, $sTempDir, @SW_HIDE)

    7z.exe sowie 7z.DLL liegen dabei im Skriptverzeichnis. Es sind dies die Versionen 16.2.0.0.

  • Gleiches Ergebnis, also keines. Jedoch habe ich Version 19.0.0.0

    Code
        Local $7z = '7z.exe'  
        $sTarget = @ScriptDir & '\settings.local.tar'
        $sSource = @ScriptDir & '\settings.local\sk_lan.xml'
        $sCmd = StringFormat('%s a %s %s', $7z, $sTarget, $sSource)
        RunWait($7z & " a -tzip " & $sTarget & " " & $sSource, @ScriptDir, @SW_SHOW)

    Die Variante aus Beitrag #2 funktionierte ja zumindest schon mal soweit, das ich eine Datei bekam, jedoch brauche ich beide.

    EDIT:

    Ich habs nun mit dem Beispiel aus Beitrag #2 doch hin bekommen:

    Keine Ahnung ob es nun daran lag, das ich 7zip von 16.x auf 19.0 upgedatet habe aber jedenfalls läuft es.

    Einmal editiert, zuletzt von Moombas (16. Dezember 2019 um 12:40)

  • Btw: Bei einer Software mit vorhandener und gut dokumentierter Kommandozeilenoption, kann ich keinen Mehrwert in einer UDF erkennen. Parameter mit StringFormat zusammensetzen, Run und fertig!

    Wenn der Mehrwert ist, das es funktioniert, dann schon^^

  • Btw: Bei einer Software mit vorhandener und gut dokumentierter Kommandozeilenoption, kann ich keinen Mehrwert in einer UDF erkennen. [...]

    Ich auch nicht ^^. Die Kommandozeilenversionen von 7Zip sind super !

    Moombas : Hier mal eine Variante aus meinem Fundus :

    Die aktuelle 7za.exe und 7z.dll müssen vorhanden sein, z.B. im SkriptDir.

    Wenn Du statt 7za.exe die 7zG.exe verwendest, hast Du sogar eine Progressbar.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (16. Dezember 2019 um 13:51)

  • Was auch immer da hier anders läuft Musashi , deine Variante will auch nicht bei mir. (7z.exe und .dll ins Scriptdir kopiert).

    Funktioniert es bei Dir auch nicht mit :

    Die aktuelle 7za.exe und 7z.dll müssen vorhanden sein, z.B. im SkriptDir.

    Version : 19.0.0.0. (siehe Anhang) oder neuer !

    Zum Test, zusätzlich ein Unterverzeichnis @ScriptDir & "\SourceDir\" mit beliebigen Testdaten anlegen. (==> nur aus Interesse, und ggf für andere User ;))

    Gruß Musashi

  • Damit funktioniert es. Mein Fehler war die 7za.exe denke ich, denn die ist bei mir in der 7ZIP-Installation nicht vorhanden gewesen und daher hatte ich nur die 7z.exe kopiert, nicht aber bedacht das im Aufruf von dir 7za drin steht ... XD

    Kopf-Tisch Tisch-Kopf

    So funktioniert es auch mit der 7z.exe aus der normalen Installation und hat den richtigen Aufbau.

    Danke Musashi und natürlich dem Rest auch.

    2 Mal editiert, zuletzt von Moombas (16. Dezember 2019 um 15:12)

  • Liegt der Unterschied evtl. in der Version, dass das "a" für alpha steht?

    Download 7-Zip 19.00 (2019-02-21) for Windows (habe ich gewählt)

    Download 7-Zip 19.02 alpha (2019-09-05) for Windows

  • Liegt der Unterschied evtl. in der Version, dass das "a" für alpha steht?

    7za.exe ==> a = stand-alone

    7zG.exe ==> G = stand-alone (mit Progressbar GUI )

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Moombas :

    Die Zusammenstellung der Pakete, also Vollinstaller und Standalone, ist etwas seltsam.

    Standalone-Konsole von 7-Zip :

    Version : 7-Zip 19.00 (21.02.2019) für Windows

    Download : https://7-zip.org/a/7z1900-extra.7z

    Enthält u.a. :

    7za.exe - Standalone-Konsole von 7-Zip mit reduzierter Formatunterstützung

    7za.dll - DLL für .7z Archive

    Echt witzig ist, dass bei der Installationsversion die 7za.exe NICHT installiert wurde. In der Portable Version ist sie enthalten. - Muss man nicht verstehen.... :Face:

    Stimmt, ich verstehe da so einiges nicht ;).

    Die Hilfedatei (7-zip.chm) mit einer Beschreibung aller commands und switches ist im Standalone-Paket z.B. NICHT enthalten (nur bei Vollinstall). Dabei benötigt man sie standalone viel eher :rolleyes:.

    Gleiches gilt für die standalone mit Mini-GUI -> 7zG.exe.

    Um diese Dateien zu bekommen, muss man den Vollinstaller von 7-Zip ausführen.

    7z.dll (Haupt-DLL für alle Archivtypen) und 7z.exe sind im Standalone-Paket auch nicht enthalten.

    Ob sie da überhaupt benötigt werden, weiß ich nicht genau - ich habe nebenbei die Vollversion installiert und somit sind alle DLL's irgendwo vorhanden. Kann man sicher ermitteln, aber dazu habe ich keine Lust :whistling:.

    Man packt am besten alle diese Dateien in das ScriptDir oder einen Ordner, der im PATH steht.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (17. Dezember 2019 um 15:38) aus folgendem Grund: typo