Updater | mit FTP Server
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 102 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.
-
-
-
@ Mozzi: ich würde vieleicht noch deine FTP-Serveradresse "Zensieren", sonst kann sich ja jeder deine Franz-Spick herunterladen^^
mfg Ebrithil -
Also ich habe es etwas anders gemacht:
Button1 click <--- Zum Suchen der Updates
VB.NET-Quellcode
- 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
- 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)
- If bytesread = 0 Then Exit Do writeStream.Write(readBytes, 0, bytesread) speedtimer.Stop() readings += 1
- If readings >= 5 Then currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000) speedtimer.Reset() readings = 0 End If Loop
- theResponse.GetResponseStream.Close() writeStream.Close()
- 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
- 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!
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. -
-
-
-
-
-
Echt gut zu gebrauchen! aber ein klein "schreibfehler" hast beim kommentieren gemacht
Müsste heißen
-
-
-
-
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
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Try
- If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") Then ' Prüfen ob Datei vorhanden ist
- My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Wenn ja löschen
- End If
- My.Computer.Network.DownloadFile("Euer Ftp Downlink", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Datei Neu Downloaden - Hier den Link zu der version.txt
- Dim Stream As New IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Auslesen
- Dim versiondown As String = Stream.ReadLine
- Dim z1 As String = versiondown.Replace(".", "") ' Inhalt der ersten Zeile wird in "z1" gespeichert
- Dim z1dou As Double = CDbl(Val(z1)) ' Konvertieren in Double
- Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z2" gespeichert
- Stream.Close()
- Dim lblt As String = Label1.Text.Replace(".", "")
- Dim lbltdou As Double = CDbl(Val(lblt)) ' Konvertieren in Double
- If lbltdou < z1dou Then ' Wenn Label1.Text kleiner ist als "z1" dann
- If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm" + versiondown + ".exe") Then ' Prüfen ob Datei vorhanden ist
- My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm" + versiondown + ".exe") ' Wenn ja löschen
- End If
- My.Computer.Network.DownloadFile(z2, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\euerprogramm_V" + versiondown + ".exe") ' Neue .Exe in den Dokumenten Ordner laden (Downloadlink in "z2")
- MsgBox("Update wurde fertiggestellt. Die neue Exe befindet sich in deinem Dokumenten Ordner.", MsgBoxStyle.Information, "Info") ' Nachricht wenn download erfollgreich war
- Else
- MsgBox("Kein Update gefunden", MsgBoxStyle.Information, "Info") ' Nachricht wenn keine Updates vorhanden sind
- End If
- Catch
- MsgBox("Der Server konnte nicht erreicht werden, bitte Prüfe ob du aktuell eine Verbindung zum Internet hast," & _
- vbNewLine & "falls das Problem trotz einer Internet Verbindung besteht wende dich bitte an den Entwickler! ", MsgBoxStyle.Information, "Info")
- End Try
- End Sub
was noch fehlt:
-Openfiledialog
...........
Bitte kein Copy & Paste erstmal lesen und verstehenDieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Blockman“ ()
-
Ähnliche Themen
-
mauri2006 - - Sonstige Problemstellungen
-
13 Benutzer haben hier geschrieben
- Gast (70)
- mottzi (13)
- kevin89 (4)
- Rinecamo (3)
- jvbsl (3)
- T1g0r (2)
- razzzer530i (2)
- slice (1)
- MiNdFrReAk (1)
- FlashTek (1)
- ebrithil (1)
- cpu_johnny (1)
- ~blaze~ (1)