Updater | mit FTP Server

    • VB.NET

    Es gibt 102 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

      Also ich habe es etwas anders gemacht:

      Button1 click <--- Zum Suchen der Updates

      VB.NET-Quellcode

      1. Dim theResponse As HttpWebResponse Dim theRequest As HttpWebRequest Try theRequest = WebRequest.Create(Me.txtfilename.Text) theResponse = theRequest.GetResponse Catch ex As Exception MessageBox.Show("Es ist ein Fehler aufgetreten! Folgende Probleme:" & ControlChars.CrLf & _ "1) Datei wurde nicht gefunden!" & ControlChars.CrLf & _ "2) Server Problem oder Falsche Server Adresse", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete) Me.Invoke(cancelDelegate, True) Exit Sub End Try Dim length As Long = theResponse.ContentLength Dim safedelegate As New ChangeTextsSafe(AddressOf ChangeTexts) Me.Invoke(safedelegate, length, 0, 0, 0) Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create) Dim nRead As Integer Dim speedtimer As New Stopwatch Dim currentspeed As Double = -1 Dim readings As Integer = 0
      2. Do If BackgroundWorker1.CancellationPending Then Exit Do End If speedtimer.Start() Dim readBytes(4095) As Byte Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096) nRead += bytesread Dim percent As Short = (nRead / length) * 100 Me.Invoke(safedelegate, length, nRead, percent, currentspeed)
      3. If bytesread = 0 Then Exit Do writeStream.Write(readBytes, 0, bytesread) speedtimer.Stop() readings += 1
      4. If readings >= 5 Then currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000) speedtimer.Reset() readings = 0 End If Loop
      5. theResponse.GetResponseStream.Close() writeStream.Close()
      6. If Me.BackgroundWorker1.CancellationPending Then IO.File.Delete(Me.whereToSave) Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete) Me.Invoke(cancelDelegate, True) Exit Sub End If
      7. Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete) Me.Invoke(completeDelegate, False)






      end if[/vb]


      Achtung:
      Das ist nur der Code ohne die ganzen Variablen und Erben etc.
      Da fehlen einige.
      Der Code ist nur für den Download zuständig.
      Aber es klappt.
      Wer diesen kompletten Code haben möchte, kann mir gerne eine PN schreiben. :)
      MFG
      Basti

      MiNdFrReAk schrieb:

      Ich finde es leicht logischer wenn man die Last Modified Methode nutzt.
      Denn hierbei muss nur verglichen und runtergeladen werden :) Bei 3-4 Zeilen
      mehr Script kann man das auch schon für mehrer Dateien scirpten!
      Ja das stimmt schon...habe dies auch oft verwendet die Methode,doch es kommt zu Probleme da er diesen script nicht ordnungsgemäß verarbeiten kann.
      Ist genau so als würde ich so machen:
      Button1_Click........
      If My.Computer.Network.IsAvailable = True then
      Progressbar1.Value + = 10
      WebBrowser.Navigate("blaaa")
      Progressbar.Value + = 10
      end if

      Die Methode verwenden viele...es kommt aber immer mehr Probleme auf.
      So wie einige Updates durch einen WebBrowser auslesen möchten.
      Haben sie dann einen schlechten Tag mit dem Internet weils zu lahm ist..kommt die erste fehlermeldung etc.

      Quellcode

      1. Nicht angemeldet.

      Das sagt dir doch schon gut genug was falsch gelaufen ist, oder nicht?!
      Um auf die Datei zugreifen zu können musst du angemeldet sein.
      D.h. Zugriffsrechte von der Datei oder vom Ordner ändern damit du auch ohne Daten draufgreifen kannst.
      Echt gut zu gebrauchen! aber ein klein "schreibfehler" hast beim kommentieren gemacht ^^

      VB.NET-Quellcode

      1. Dim z1 As String = Stream.ReadLine ' Inhalt der ersten Zeile wird in "z1" gespeichert
      2. Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z1" gespeichert


      Müsste heißen

      VB.NET-Quellcode

      1. Dim z1 As String = Stream.ReadLine ' Inhalt der ersten Zeile wird in "z1" gespeichert
      2. Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z2" gespeichert


      :D
      Hi
      Eher den SaveFileDialog. Mit ShowDialog() zeigst du den Dialog an und fängst z.B. Abbrechen ab (einfach mit Select Case SaveFileDialog.ShowDialog()). FileName gibt dir dann die ausgewählte Datei an. Per Filter kannst du ein Schema festlegen, wobei das so aussieht:
      "Beschreibung1|Wildcard1;Wildcard2|Beschreibung2|Wildcard3"
      Die Wildcards sind einfach sowas wie *.exe, um nur Exe-Dateien oder *, um jegliche Dateitypen zuzulassen. Bei der Beschreibung gibst du einfach das an, was du für den Dateitypen dastehen haben willst (z.B. Anwendungen). Mehrere Dateitypen trennst du durch ";".

      Gruß
      ~blaze~
      xD, bin zufälliger Weise wieder über diesen Thread gestossen und hab meinen fürchterlichen "Code" den ich vor Jahren geschrieben hab durchgelesen...
      In nächster Zeit werde ich das Tutorial neu schreiben und überarbeiten... (und nen WebClient benutzen :P)
      "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
      Paul Thurrott
      So habe das ganze nochmal ein bisschen überarbeitet.
      Änderungen:
      -Option Strict ON geeignet
      -Falls in Dokumente schon die Version war wird sie gelöscht
      - jetzt können Version's Angaben auch in 1.0.0.0 gemacht werden

      VB.NET-Quellcode

      1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      2. Try
      3. If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") Then ' Prüfen ob Datei vorhanden ist
      4. My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Wenn ja löschen
      5. End If
      6. My.Computer.Network.DownloadFile("Euer Ftp Downlink", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Datei Neu Downloaden - Hier den Link zu der version.txt
      7. Dim Stream As New IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Auslesen
      8. Dim versiondown As String = Stream.ReadLine
      9. Dim z1 As String = versiondown.Replace(".", "") ' Inhalt der ersten Zeile wird in "z1" gespeichert
      10. Dim z1dou As Double = CDbl(Val(z1)) ' Konvertieren in Double
      11. Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z2" gespeichert
      12. Stream.Close()
      13. Dim lblt As String = Label1.Text.Replace(".", "")
      14. Dim lbltdou As Double = CDbl(Val(lblt)) ' Konvertieren in Double
      15. If lbltdou < z1dou Then ' Wenn Label1.Text kleiner ist als "z1" dann
      16. If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm" + versiondown + ".exe") Then ' Prüfen ob Datei vorhanden ist
      17. My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm" + versiondown + ".exe") ' Wenn ja löschen
      18. End If
      19. My.Computer.Network.DownloadFile(z2, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm_V" + versiondown + ".exe") ' Neue .Exe in den Dokumenten Ordner laden (Downloadlink in "z2")
      20. MsgBox("Update wurde fertiggestellt. Die neue Exe befindet sich in deinem Dokumenten Ordner.", MsgBoxStyle.Information, "Info") ' Nachricht wenn download erfollgreich war
      21. Else
      22. MsgBox("Kein Update gefunden", MsgBoxStyle.Information, "Info") ' Nachricht wenn keine Updates vorhanden sind
      23. End If
      24. Catch
      25. MsgBox("Der Server konnte nicht erreicht werden, bitte Prüfe ob du aktuell eine Verbindung zum Internet hast," & _
      26. vbNewLine & "falls das Problem trotz einer Internet Verbindung besteht wende dich bitte an den Entwickler! ", MsgBoxStyle.Information, "Info")
      27. End Try
      28. End Sub


      was noch fehlt:
      -Openfiledialog
      ...........

      Bitte kein Copy & Paste erstmal lesen und verstehen :)

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Blockman“ ()