Zip-Datei ohne externe Tools entpacken.

    • VB.NET

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

      Ich bekomme eine Warnung :

      Der in Imports "Shell32" angegebene Namespace oder Typ enthält keine öffentlichen Member oder kann nicht gefunden werden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen Member enthält und dass der importierte Elementname keine weiteren Aliase enthält.
      und 2 Fehler:

      Der Typ "Shell32.IShellDispatch2" ist nicht definiert.


      Der Typ "Shell32.Folder" ist nicht definiert.


      Kann mir da wer helfen ?
      :D danke es geht... *vorn kopf hau*

      gibts dabei zufällignoch ne möglichkeit wie man den Dateinamen der grade entpackt wird (nicht den der zip file sondern der datei die da drin gepackt ist und jetz grade ausgepackt wird) in einem Label anzuzeigen ?

      Mit System.IO.Compression ...

      VB.NET-Quellcode

      1. Public Sub compression()
      2. 'QuellDatei lesen
      3. Dim QuellDatei As String = My.Computer.FileSystem.CurrentDirectory & "\informationen.txt"
      4. Dim Stream As New IO.FileStream(QuellDatei, IO.FileMode.Open)
      5. Dim FileBytes(Stream.Length - 1) As Byte Stream.Read(FileBytes, 0, FileBytes.Length)
      6. Stream.Close() 'Neue komprimierte Datei erstellen
      7. Dim ZielDatei As String = My.Computer.FileSystem.CurrentDirectory & "\informationen.zip"
      8. Dim StreamWrite As New IO.FileStream(ZielDatei, IO.FileMode.Create)
      9. Dim CompressStream As New IO.Compression.GZipStream(StreamWrite, IO.Compression.CompressionMode.Compress)
      10. CompressStream.Write(FileBytes, 0, FileBytes.Length)
      11. CompressStream.Flush()
      12. CompressStream.Close()StreamWrite.Close()
      13. 'Dekomprimieren
      14. Stream = New IO.FileStream(ZielDatei, IO.FileMode.Open)
      15. Dim DecompressStream As New IO.Compression.GZipStream(Stream, IO.Compression.CompressionMode.Decompress)
      16. Dim Reader As New IO.StreamReader(CType(DecompressStream, IO.Stream))
      17. My.Computer.FileSystem.WriteAllText(My.Computer.FileSystem.CurrentDirectory & "\dekomprimierte.txt", Reader.ReadToEnd(), False)
      18. Reader.Close()
      19. Stream.Close()
      20. End Sub


      Der Beitrag ist zwar von 2005 und ich habe es noch nicht getestet, aber müsste hinhauen. :D
      Quelle

      Edit/: Entschuldige nickxx, habe deinen Beitrag nicht gesehen ^^

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

      gs93 schrieb:

      bruno1998 schrieb:

      Der Beitrag ist zwar von 2005 und ich habe es noch nicht getestet, aber müsste hinhauen. :D
      Wie oft denn noch? VB 2005/08/10 ist nur die IDE. VB.net ist die Programmiersprache.

      Habe ich gesagt
      Der Beitrag ist zwar von 2005, also weiß ich nicht, ob es auch mit VB 2008 klappt.

      oder
      Der Beitrag ist zwar von 2005 und ich habe es noch nicht getestet, aber müsste hinhauen

      ?

      Ich wollte damit nur ausdrücken, dass es sich um einen etwas älteren Beitrag handelt.

      bruno1998

      viperkill schrieb:

      Ich bekomme eine Warnung :

      Der in Imports "Shell32" angegebene Namespace oder Typ enthält keine öffentlichen Member oder kann nicht gefunden werden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen Member enthält und dass der importierte Elementname keine weiteren Aliase enthält.
      und 2 Fehler:

      Der Typ "Shell32.IShellDispatch2" ist nicht definiert.


      Der Typ "Shell32.Folder" ist nicht definiert.


      Kann mir da wer helfen ?
      Hallo Viperkill,

      die Antwort kommt vielleicht etwas spät, aber vielleicht hilft sie anderen. Habe mich gerade erst hier registriert.

      Diesen Fehler kannst Du sehr einfach beheben, in dem Du den Verweis "Microsoft
      Shell Controls and Automations
      " hinzufügst. Dort ist der Namespace Shell32 enthalten. Vorgehensweise in VB2008:
      • Menü Projekt/Verweis hinzufügen...
      • Es öffnet sich ein Dialogfenster.
      • Dort in den Reiter "COM" und oben genannte Controls auswählen und mit OK bestätigen.
      Schon ist der Fehler verschwunden und der Code lässt sich einwandfrei kompilieren.

      Zum Abschluss noch ein Dank an den Author dieser wunderbaren UnzipClass. :)


      Viele Grüße
      Zalkortis
      hallo,
      ich benutze nur diesen Teil des Codes:

      Quellcode

      1. Dim file As String = "C:\Program Files\testzip.zip"
      2. Dim cu As New ClassUnzip(file, Path.Combine(Path.GetDirectoryName(file), "C:\test_unzip_folder"))
      3. AddHandler cu.UnzipFinishd, AddressOf Unziped
      4. cu.UnzipNow()


      und ich bekomme den Fehler:
      "der name Unziped wurde nicht deklariert"

      was läuft da schief???
      (habe den verweis auf die shell32.dll erstellt und die entsprechende Klasse eingefügt)
      Ich hab das Problem, dass das Script zwar den Ordner erstellt, aber nicht entpackt?
      Shell32 ist dran, ja.

      Mein Aufruf:

      VB.NET-Quellcode

      1. Dim cu As New ClassUnzip("Latest.zip", Path.Combine(Path.GetDirectoryName("Latest.zip"), Application.StartupPath))
      2. AddHandler cu.UnzipFinishd, AddressOf Unziped
      3. cu.UnzipNow()
      Jetzt mal ´ne Frage:

      Wie kann ich prüfen ob das Zip-File entpackt ist sodass ich weiterarbeiten kann mit einer anderen Funktion?

      EDIT:

      Hab schon ;)
      Hatte nicht darauf geachtet dass der Public Sub Unzipped ja dazu dient das ganze weiterzuführen ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Florian“ () aus folgendem Grund: Gelöst

      Funktioniert wunderbar, dankeschön! Gibt es auch eine Möglichkeit mit Visual Basic Dateien zu packen?

      Hat sich geklärt, Google hilft!

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