Zip-Datei ohne externe Tools entpacken.

    • VB.NET

    Es gibt 78 Antworten in diesem Thema. Der letzte Beitrag () ist von MRBD69.

      jar ist sogesehen ZIP, mit Zusatzinfos, nun ist fraglich ob das dann richtig interpretiert werden kann(also die Zusatzinfos ignoriert werden)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Ja, solltest du können. Diese weiteren Informationen stehen in einem META-INF-Ordner in der jar. Es ist egal ob die Meta-Inf drin ist oder nicht. Die jar würde noch funktionieren. Wenn du einen MC-Patcher machst dann denk dran : Meta-Inf löschen, denn der enthält Informationen zu den Dateien in der jar : Beim Patchen werden Dateien geändert -> jar nicht mehr ausführbar.
      Hallo,
      wenn ich eine Datei entpacken möchte, bekomme ich einen HRESULT-Fehler.
      Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.

      Dieser Fehler tritt bei

      VB.NET-Quellcode

      1. temp.CopyHere(_shell.NameSpace((_file)).Items)
      in der Sub UnzipNow auf.
      Mein Code:

      VB.NET-Quellcode

      1. [...]
      2. Dim entpackpfad As String = My.Settings.Sicherungspfad & "\temp\" & IO.Path.GetFileNameWithoutExtension(files.Items(0).ToString)
      3. If My.Computer.FileSystem.DirectoryExists(My.Settings.Sicherungspfad & "\temp") = False Then
      4. My.Computer.FileSystem.CreateDirectory(My.Settings.Sicherungspfad & "\temp")
      5. End If
      6. Dim cu As New ClassUnzip(files.Items(0).ToString, entpackpfad)
      7. If cu.UnzipNow() = True Then
      8. [...]
      Kann mir jemand helfen?
      mbfan
      You should live for that what you belive. - Drag-Drop Beschreibung

      fehler hilfe

      hallo ich wollte ein unzip programm und machte alles was du schriebst , doch ich ahbe 2 fehler

      "combine" ist kein member von "string"
      und
      "getdirectoryname" ist kein member von "string"

      bitte hilf mir ich brauhce das unzipen für einen updater das ist das einzige was noch fehlt damit es fertig ist#


      mfg robin (black-knight)
      tut mir leid (ins besondere für mich) es klapt nciht auch ein fehler(allerdings tritt der nur manchmal auf) und ins besondere möchte ich keine libary ,da ich wieder credits dazu schreiben mus und da ich keine wirklcihen credits schreibe(wird ein öfentliches programm zum verwalten meiner programme) gibts denn hierfür keine lösung oder ein neues script?


      danke trotzdem für die schnelle hilfe

      Danke Danke Danke

      ich hoffee die überschrift sagt alles ( DANKE DANKE DANKE )

      der letzte kommentar funktionierte und mein updater funktioniert super


      ihr seid echt klasse :D :D


      mfg robin (black-knight)

      ps:eine wunderbare gemeinschaft
      Hallo habe ein Problem das mich nicht Schlafen lässt undzwar haut er mir diese Fehlermeldung Raus :
      Fehler 1 "Path" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\Gamer\AppData\Local\Temporary Projects\AlterMW3 Installation Guide\Step 2.vb 8 48 AlterMW3 Installation Guide
      Wie wir gerade erfahren haben, kommen im .NET Framework 4.5 extra Klassen für's Entpacken von Zip-Archiven.

      msdn.microsoft.com/en-us/libra….compression.zipfile.aspx
      msdn.microsoft.com/en-us/library/hh485723.aspx

      Das Enpacken einer Zip-Datei in ein Verzeichnis würde dann so aussehen:

      VB.NET-Quellcode

      1. System.IO.Compression.ZipFile.ExtractToDirectory("text.zip", "C:\temp\zielordner")
      (das ersetzt dann zukünftig den ganzen Code, der im Eingangspost steht)
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

      nikeee13 schrieb:

      Wie wir gerade erfahren haben, kommen im .NET Framework 4.5 extra Klassen für's Entpacken von Zip-Archiven.

      msdn.microsoft.com/de-de/library/…(v=vs.110).aspx
      msdn.microsoft.com/de-de/library/…(v=vs.110).aspx

      Das Enpacken einer Zip-Datei in ein Verzeichnis würde dann so aussehen:

      Visual Basic Quellcode

      1



      System.IO.Compression.ZipFile.ExtractToDirectory("text.zip", "C:\temp\zielordner")

      (das ersetzt dann zukünftig den ganzen Code, der im Eingangspost steht)
      Hat schon jemand damit Erfahrungen sammeln können?
      Bei mir wird im neuen VB.net 2012 diese Klasse nicht angezeigt :huh:
      Die Links waren down, weil es sich wohl um die Preview-Doku gehandelt hat. Habe sie aktualisiert.

      @KabelMods:
      Du musst wohl vorher einen Verweis zur System.IO.Compression.FileSystem.dll zu deinem Projekt hinzufügen. Danach kannst du diese Klasse verwenden.
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

      Normalerweise muss man nicht umständlich suchen. Der Verweis lässt sich leicht unter den standard .NET-Verweisen finden.
      Bilder
      • verweis.png

        42,32 kB, 892×548, 309 mal angesehen
      Von meinem iPhone gesendet
      Hallo
      Ich hab den Thread hier gefunden.
      Habe ihn auch gleich getestet funktioniert alles nur brauche ich ihn ein wenig anders :D
      Ich habe vor per Button klick das er die Zip Datei runterlädt, entpackt und löscht.
      das löschen stellt kein Problem da, nur die Umsetzung für buttonclick.


      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class ClassUnzip
      2. Private _file As String
      3. Private _folder As String
      4. Private _shell As Shell32.IShellDispatch2
      5. ''' <summary>Event welches vor dem Entpacken (Unzip) ausgeführt wird.</summary>
      6. ''' <remarks></remarks>
      7. Public Event Unzipstart()
      8. ''' <summary>Event welches nach dem Entpacken (Unzip) ausgeführt wird.</summary>
      9. ''' <remarks></remarks>
      10. Public Event UnzipFinishd()
      11. Dim zielpfad As String = "C:\Program Files (x86)\Steam\steamapps\common\Arma 2 Operation Arrowhead\"
      12. Dim webpfad As String = "http://ples-gaming.de/"
      13. Dim file As String = "test.zip"
      14. Public Sub New(ByVal file As String, ByVal towhere As String)
      15. _file = file
      16. _folder = Path.Combine(webpfad + _file, zielpfad)
      17. _shell = CreateObject("Shell.Application")
      18. End Sub
      19. ''' <summary>Das Entpacken (Unzip) wird ausgeführt.</summary>
      20. ''' <returns></returns>
      21. ''' <remarks></remarks>
      22. Public Function UnzipNow() As Boolean
      23. 'prüfen ob der ordner existiert
      24. If Directory.Exists(_folder) = False Then
      25. Directory.CreateDirectory(_folder)
      26. End If
      27. 'event für start feuern
      28. RaiseEvent Unzipstart()
      29. 'entpacken
      30. Dim temp As Shell32.Folder = _shell.NameSpace((_folder))
      31. If temp IsNot Nothing Then
      32. temp.CopyHere(_shell.NameSpace((_file)).Items)
      33. End If
      34. 'event für ende feuern
      35. RaiseEvent UnzipFinishd()
      36. 'rückgabe wert setzen
      37. Return True
      38. End Function
      39. End Class

      Button

      VB.NET-Quellcode

      1. Using ofd As New OpenFileDialog
      2. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
      3. Dim file As String = ofd.FileName
      4. Dim cu As New ClassUnzip(file, Path.Combine(Path.GetDirectoryName(file), "test_unzip_folder"))
      5. AddHandler cu.UnzipFinishd, AddressOf Unziped
      6. cu.UnzipNow()
      7. End If
      8. End Using


      Es soll eine Datei aus dem Internet Runterladen entpacken und die zip löschen ohne "OpenFileDialog"-
      hab es nicht hinbekommen.


      EDIT:
      Hab da was von nikeee13 übersehen:

      VB.NET-Quellcode

      1. ​System.IO.Compression.ZipFile.ExtractToDirectory("text.zip", "C:\temp\zielordner")

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MRBD69“ ()