ErfinderDesRades - Moderator - Notiz:
Von der Verwendung selbstgebastelter Update-Systeme raten wir ab - Zu leicht kann ein Angreifer Schad-SoftWare einschleusen.
Professionelle Update-Systeme, die heutigen Sicherheits-Standards besser gerecht werden, gibt es auch als Freeware
Also ich zeige heute einen Updater fürs Programm:
Ihr könnt es z.B in die Start-Form und danach die Hauptform zeigen(Nur ein Beispiel).
Geht natürlich auch anders!
Was ihr benötigt:
-FTP Server
-VisualBasic
-Grundlagen(um manche sachen zu verstehen xD)
-Brain.exe(um Code anzupassen)
Also fangen wir an:
Toolbox-Elemente:
-PB1 (ProgressBar)
-btUpdate (Button) -Dieser Button führt dass Update durch
-btWeiter - Wenn kein Update oder No gedrückt wird Kommt dieser Button
-lblStatus(Label)
Label für Download anzeige... (lblStatus)
Dass war erstmal!
Nun fangen wir an mit den Codes:
Hier erstmal Deklarationen und der Import:
Spoiler anzeigen
Und jetzt der eigentliche Code buttonUpdate Click event:
Spoiler anzeigen
Form Load Event um zu Schauen Ob Update verfügbar ist:
Spoiler anzeigen
Und nun der Button Weiter welchen ihr genau so groß macht wie Update und auch an den gleichen ort verschiebt:
Und um den Status anzuzeigen: Im WebClient Progress Changed Event:
Spoiler anzeigen
Bitte Feedback! Eventuelle Fehler posten!
Von der Verwendung selbstgebastelter Update-Systeme raten wir ab - Zu leicht kann ein Angreifer Schad-SoftWare einschleusen.
Professionelle Update-Systeme, die heutigen Sicherheits-Standards besser gerecht werden, gibt es auch als Freeware
Also ich zeige heute einen Updater fürs Programm:
Ihr könnt es z.B in die Start-Form und danach die Hauptform zeigen(Nur ein Beispiel).
Geht natürlich auch anders!
Was ihr benötigt:
-FTP Server
-VisualBasic
-Grundlagen(um manche sachen zu verstehen xD)
-Brain.exe(um Code anzupassen)
Also fangen wir an:
Toolbox-Elemente:
-PB1 (ProgressBar)
-btUpdate (Button) -Dieser Button führt dass Update durch
-btWeiter - Wenn kein Update oder No gedrückt wird Kommt dieser Button
-lblStatus(Label)
Label für Download anzeige... (lblStatus)
Dass war erstmal!
Nun fangen wir an mit den Codes:
Hier erstmal Deklarationen und der Import:
VB.NET-Quellcode
- Imports System.Net
- Public Class Form1
- Private WithEvents WebClient1 As New WebClient
- Dim pgversion As String = "1.0"
- '*Programm version - Geht auch so: *
- '*Dim pgversion2 As String = IO.File.ReadAllText("Pfad der programm version")*
- '*Machts wie ihr wollt *
- Dim aktversion As String = WebClient1.DownloadString("Addresse der Aktuellen version")
- Dim dialog As New SaveFileDialog
- Dim pfad As String
- '* Selbst erklärend :)*
Und jetzt der eigentliche Code buttonUpdate Click event:
VB.NET-Quellcode
- Private Sub btUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btUpdate.Click
- dialog.Filter = "(*.exe)|" 'usw.:
- '* 'Filter des Dialogs, passt es an! Bsp: (*.form)| Dass:[|]-Abschluss strich *
- dialog.Title = "Update speichern unter..."
- '* 'Titel des dialogs
- If MessageBox.Show("Ihre Version ist: " & pgversion & vbNewLine & "Die Version des Updates ist: " & aktversion & vbNewLine & "Wollen sie Updaten?", "Update?", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then 'Wenn ja zu Update gedrückt wird:
- 'vbNewLine ist "Enter"
- If dialog.ShowDialog = Windows.Forms.DialogResult.OK Then 'Wenn bei dialog OK gedrückt wird:
- Try 'Try Block um Fehler abzufangen
- pfad = dialog.FileName 'Dann ist Variable "pfad" der Pfad unter den ihr gespeichert habt
- WebClient1.DownloadFileAsync(New Uri("Addresse der Download Datei"), pfad) 'Webclient downloaded Async(Kein einfrieren)
- Catch ex As Exception
- MsgBox("Fehler: " & ex.Message)
- End Try
- If IO.File.Exists(pfad) Then 'Hier wird dann überprüft ob dass update existiert
- Process.Start(pfad) 'Wenn ja dann wird es gestartet + dieses programm geschlossen
- Me.Close()
- End If
- ElseIf Windows.Forms.DialogResult.Cancel Then 'Wenn bei dialog Chanel Gedrückt wird dann:
- Me.Hide() 'Könnt auch anderes machen...
- Hauptform.Show()
- ElseIf pfad = Nothing Then 'Wenn pfad nichts ist dann:
- Me.Hide() 'Ebenfalls
- Hauptform.Show()
- End If 'End If für dialog abfrage
- ElseIf MsgBoxResult.No Then ' Wenn nein zur MsgBox gedrückt wird:
- btUpdate.Visible = False 'Update button wird nicht gezeigt
- btWeiter.Visible = True ' Weiter button wird gezeigt
- End If 'End if für messagebox abfrage
- End Sub
Form Load Event um zu Schauen Ob Update verfügbar ist:
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- If pgversion < aktversion Then 'Wenn die Programmversion kleiner als die Aktuelle Version ist:
- btUpdate.Visible = True
- btUpdate.PerformClick() ' Button wird einfach gedrückt
- ElseIf aktversion < pgversion Then ' Wenn es größer ist:
- btUpdate.Visible = False
- btWeiter.Visible = True ' Dann wird der Weiter button gezeigt
- End If ' End if für Versions abfrage
- End Sub
Und nun der Button Weiter welchen ihr genau so groß macht wie Update und auch an den gleichen ort verschiebt:
Und um den Status anzuzeigen: Im WebClient Progress Changed Event:
VB.NET-Quellcode
- Private Sub WebClient1_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WebClient1.DownloadProgressChanged
- Dim by As String = e.BytesReceived
- Dim by2 As String = e.TotalBytesToReceive
- Dim by3 As String = "Bytes/"
- Dim by4 As String = "Bytes"
- If by2 > 1024 Then ' Wenn es 1024 Bytes sind (1KB) Dann ist die Ausgabe in KB's
- by = e.BytesReceived / 1024
- by2 = e.TotalBytesReceived / 1024
- by3 = "KB/"
- by4 = "KB"
- ElseIf by2 > 1048576 Then ' Wenn die Bytes insgesamt 1 MB sind ist die Ausgabe in MB's
- by = e.BytesReceived / 1024 / 1024
- by2 = e.TotalBytesReceived / 1024 / 1024
- by3 = "MB/"
- by4 = "MB"
- ElseIf by2 > 1073741824 Then ' Wenn es GB ist ...
- by = e.BytesReceived / 1024 / 1024 / 1024
- by2 = e.TotalBytesReceived / 1024 / 1024 / 1024
- by3 = "GB/"
- by4 = "GB"
- End If 'Dieser Code durchläuft jetzt die größe und wenn es größer 1kb ist wird es als
- 'KB angezeigt
- With PB1
- .Value = e.ProgressPercentage
- lblStatus.Text = by & by3 & by2 & by4
- End With
- End Sub
Bitte Feedback! Eventuelle Fehler posten!
Dieser Beitrag wurde bereits 23 mal editiert, zuletzt von „ErfinderDesRades“ () aus folgendem Grund: Code-Total bei (Total)BytesReceived vergessen.