Visual Basic 2010 - Ionic.Zip.dll - Download von Zip und direkt Auspacken

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Visual Basic 2010 - Ionic.Zip.dll - Download von Zip und direkt Auspacken

    Hallo liebe vb-paradise Mitglieder,

    ich habe ein kleines Problem und möchte gerne eure Hilfe in Anspruch nehmen.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports Ionic.Zip
    3. Imports System.IO
    4. Public Class allauncher
    5. Dim File = Application.StartupPath + "\data\launcher.ini"
    6. Dim Section = "Einstellungen"
    7. Dim Path = "Path"
    8. Dim Parameter = "Parameter"
    9. Dim Web As New Net.WebClient
    10. Private Property WindowsState As FormWindowState
    11. Dim WithEvents wClient As New WebClient
    12. Dim WithEvents zip As New client_Extract
    13. Dim sc As New Shell32.Shell()
    14. Private Property bytesOn As Double
    15. Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
    16. Function TestInternetConnection()
    17. Dim ping As New Net.NetworkInformation.Ping
    18. Try
    19. ping.Send("******.com")
    20. Return True
    21. Catch ex As Exception
    22. Return False
    23. End Try
    24. End Function
    25. Sub RunUpdate()
    26. If TestInternetConnection() = True Then
    27. Try
    28. Dim version As Integer = Web.DownloadString("http://********/launcher/data/version.txt")
    29. version = CInt(version)
    30. If version > CInt(lblversion.Text) Then
    31. Try
    32. MsgBox("Es existiert eine neue Version. Starte den Updater!")
    33. Process.Start("Updater.exe")
    34. Application.Exit()
    35. Catch ex As Exception
    36. MsgBox(ex.ToString)
    37. End Try
    38. End If
    39. Catch ex As Exception
    40. 'nothing
    41. End Try
    42. End If
    43. End Sub
    44. Private Sub allauncher_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    45. If (e.Button = Windows.Forms.MouseButtons.Left) Then
    46. Me.Capture = False
    47. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    48. Else : End If
    49. End Sub
    50. Private Sub ugnbt4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnbt4.Click
    51. Dim client As WebClient = New WebClient
    52. AddHandler client.DownloadProgressChanged, AddressOf client_ProgressChanged
    53. AddHandler client.DownloadFileCompleted, AddressOf client_DownloadCompleted
    54. client.DownloadFileAsync(New Uri("http://*******/launcher/data/UGN.Altis.zip"), ReadIni(File, Section, Path, "") & "\MPMissions\UGN.Altis.zip")
    55. ugnbt4.Text = "Download in Progress"
    56. ugnbt4.Enabled = False
    57. End Sub
    58. Private Sub client_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    59. MessageBox.Show("Download Complete")
    60. ugnbt4.Text = "Start Download"
    61. ugnbt4.Enabled = True
    62. Call client_Extract()
    63. End Sub
    64. Private Sub client_Extract(ByVal sender As Object)
    65. Try
    66. Using ziping As ZipFile = ZipFile.Read(ReadIni(File, Section, Path, "") & "\MPMissions\UGN.Altis.zip")
    67. Dim auspacken As ZipEntry
    68. For Each auspacken In ziping
    69. auspacken.Extract()
    70. Next
    71. End Using
    72. Catch ex1 As Exception
    73. Console.Error.WriteLine("exception: {0}", ex1.ToString)
    74. End Try
    75. End Sub
    76. Private Sub ugnbt1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnbt1.Click
    77. Process.Start("http://unlimited-gaming-network.com")
    78. End Sub
    79. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnmin.Click
    80. Me.WindowState = FormWindowState.Minimized
    81. End Sub
    82. Private Sub ugnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnclose.Click
    83. Application.Exit()
    84. End Sub
    85. Private Sub ugnbt2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnbt2.Click
    86. Process.Start("http://unlimited-gaming-network.com/launcher/info.html")
    87. End Sub
    88. Private Sub allauncher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    89. TestInternetConnection()
    90. RunUpdate()
    91. End Sub
    92. Private Sub ugnbt7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ugnbt7.Click
    93. Process.Start("ts3server://******?port=9987")
    94. End Sub
    95. Private Function ZipFile() As Object
    96. Throw New NotImplementedException
    97. End Function
    98. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles einstll.Click
    99. Einstellungen.Show()
    100. End Sub
    101. Private Sub MyExtractProgress(sender As Object, e As ExtractProgressEventArgs)
    102. If e.BytesTransferred > 0 AndAlso e.TotalBytesToTransfer > 0 Then
    103. Me.Invoke(Sub() ProgressBar1.Value = CInt(e.BytesTransferred * 100 \ e.TotalBytesToTransfer))
    104. End If
    105. End Sub
    106. Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
    107. Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
    108. Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
    109. Dim percentage As Double = bytesIn / totalBytes * 100
    110. ProgressBar1.Value = Int32.Parse(Math.Truncate(percentage).ToString())
    111. End Sub
    112. Private Function ZipFileToExtract() As Object
    113. Throw New NotImplementedException
    114. End Function
    115. Private Sub client_Extract()
    116. Throw New NotImplementedException
    117. End Sub
    118. End Class



    Spoiler eingefügt. ~Trade

    Das Problem ist ich habe die Iionic.Zip und ich will jetzt direkt nach dem das Download ausgeführt wurde die Zip entpacken lassen.
    Das Problem ist ich habe mich seid 2 Jahren mal wieder an VB rangewagt und ich habe nach 3 Std Kapituliert.

    Ich habe zurzeit mit dem Code wirklich nur Probleme. Der Download funktioniert er verschiebt es auch in den Pfad von der Ini datei.
    Jedoch bekomme ich bei dem entpacken bereich ein Problem beim starten des Launchers.

    was mache ich falsch und habt ihr evtl einen besseren Lösungsansatz als ich den habe.


    Mein nächstes Problem wäre ich habe Versucht den Download und das Extrahieren in die Progress Bar einzuarbeiten.
    Heißt erstes Mal durchlaufen der Download und beim zweiten mal das Extrahieren.
    Jedoch klappte das nicht da ich gar nicht zum extrahieren kam.

    Mit freundlichen grüßen

    Zeeanq

    P.S. nehmt es mir nicht übel wenn ich so wirr schreibe es ist schon spät und ich habe langsam die Lust verloren.

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

    Moin,

    da das sowieso ziemlich rudimentär aussieht und das Problem eh nicht wirklich klar ist:
    Updater - Warum sollte man eigene Updater vermeiden?

    Das ist sehr unsicher und bevor Du Dich weiter rumplagst, rate ich Dir zu 'ner Fertiglösung. Da kannste z.B. entsprechend nUpdate verwenden und fertig. Lässt sich auch prima für Launcher und so Zeugs integrieren und verwenden, also nicht nur für reine Updatefunktionen, da auch wirklich notfalls Pakete, die riesig sind, unterstützt werden. Hier ist jedoch schon weitaus im Ansatz eine Problematik und es wäre auch wenig sinnvoll hier deshalb Hilfestellungen zugeben, da man fast alles überarbeiten müsste, zumal viel Unfug drin ist (nicht böse gemeint). Auch steigt man da deshalb dann kaum durch. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Und das ist das Problem mit so Tutorials etc. Die Thematik ist durchaus etwas umfangreicher. ;)
    Jo, mach das. Wenn noch gesagt werden soll, wie das Problem gelöst werden kann bzw. warum es auftaucht, müsste man zunächst noch wissen, was genau das Problem ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Zeeanq schrieb:

    Das Problem ist wie gesagt ich kann nichts entpacken von dem was ich downloadet habe.

    Warum? Also wie äußert sich das? Gibt es einen Fehler?

    Und auf dem Bild sieht man das leider sehr schlecht, bitte zukünftig den ganzen StackTrace hier posten, sonst nützt das nichts. Hast Du die Meldung denn gelesen?

    VB.NET-Quellcode

    1. Private Function ZipFile() As Object
    2. Throw New NotImplementedException
    3. End Function


    Du wirfst ja hier die Exception entsprechend selbst. Davon abgesehen, dass hier Object als Rückgabetyp imo auch völlig falsch ist.
    Mein Tipp: Den Code hast Du (dann) sicher aus dem Internet irgendwo, oder? Mach das lieber nicht. Es macht keinen Sinn, etwas zu nutzen, was man nicht versteht. Nur selber schreiben und nach und nach verstehen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich habe die Meldung gelesen jedoch kam ich auf keinen Nenner.

    Wie gesagt es ist spät mittlerweile stecke ich seid 4 Std in der selben Situation.

    Das zeigt sich so. Ich starte den Launcher und er lädt die Datei herunter nach dem er das tut sollte er es entpacken.
    Jedoch habe ich wenn ich den Bereich des Entpackers hinein schreibe diesen besagten Fehler. Ohne den gibt es diesen Fehler nicht.

    Diesen bereich aus deinem Zitat sehe ich erst jetzt. Wieso ist das so?
    Vorher war das nicht so. Es ist das Problem ich kann nur die Zip runterladen lassen. Wenn er den ganzen Ordner erfassen könnte wäre das besser. Mit einer End-To-End Verschlüsselung oder Md5 abgleich. Aber das habe ich das Letzte mal in einem Launcher gesehen der von jemanden für mich gemacht wurde und das würde ich selber nicht hinkriegen.

    Ich weiß ja auch nicht was mich dazu getrieben hat ja zu diesem Projekt zu sagen, aber es macht Spaß zu programmieren.

    Ich bin mal für heute raus. ich hoffe das morgen mal ein paar andere Blickpunkte dazu kommen.
    aber danke für den Tipp mit deinem nUpdate das sieht sehr gut aus. Kann ich da die Oberfläche von dem Client Gui anpassen? Noch funktioniert mein FTP Zugriff nicht daher kann ich die Admin Oberfläche nicht testen.

    Mal schauen was morgen so noch auf mich zu kommt.


    Danke und gute Nacht.

    P.S. Ich habe vergessen zu erwähnen das keine entpackten Ordner entstehen ist egal wo ich den Pfad hinsetze.

    Zeeanq schrieb:

    Kann ich da die Oberfläche von dem Client Gui anpassen?

    Ja, das ist alles eigens implementierbar. Dadurch wird z. B. unter anderem WPF-Kompatiblität gewährleistet, da das dann bei den speziellen Klassen, die die Methoden etc. bereitstellen komplett ohne GUI abläuft und rein von der Implementierung her einer puren Klassenbibliothek entspricht.

    Zeeanq schrieb:

    Noch funktioniert mein FTP Zugriff nicht daher kann ich die Admin Oberfläche nicht testen.

    Du kannst auch HTTP(S) + PHP benutzen, wenn Du eigene Transferhandler angibst und eine spezielle, selbstgeschriebene Assembly verwendest, die die Schnittstelle implementiert und einen Service bereitstellt. Aber gut, das wäre dann schon einen Schritt zu weit und eher schon fortgeschrittene Einrichtung, damit will ich Dich jetzt nicht belasten. Also nur so am Rande. Über den FTP ist es vermutlich einfacher und damit sinnvoller. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: