Erstellung eines Updaters über einen Server

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von TTX.exe.

    Erstellung eines Updaters über einen Server

    Guten Morgen,

    Ich habe vor mir einen Updater zu Schreiben . Ein Programm das vom Inhalt größer wird , und deswegen muss ich es updaten lassen .
    Ich bekomme 3 Fehlermeldungen wie diese : "downloadstring" ist kein Member von "Web". , Die Variable "ex" verbirgt eine Variable in einem einschließendem Block.
    Hier habe ich noch die Source und einen ScreenShot. Ich hoffe ihr könnt mir weiterhelfen.

    Source :
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Function TestInternetConnection()
    3. Dim ping As New Net.NetworkInformation.Ping
    4. Try
    5. ping.Send("http://google.com")
    6. Return True
    7. Catch ex As Exception
    8. Return True
    9. End Try
    10. End Function
    11. Sub RunUpdate()
    12. If TestInternetConnection() = True Then
    13. Try
    14. Catch ex As Exception
    15. Dim version As String = Web.downloadstring("http://pfad/current_ver.txt")
    16. version = CInt(version)
    17. If version > CInt(lblversion.text) Then
    18. Try
    19. Dim path As String = "http://pfad.de/hello.exe"
    20. My.Computer.Network.DownloadFile(path, Application.StartupPath & "/[Update" & version & "]" & "hello.exe")
    21. MsgBox("Ein Update wurde erkannt und heruntergeladen!")
    22. Catch ex As Exception
    23. MsgBox(ex.ToString)
    24. End Try
    25. End If
    26. Catch ex As Exception
    27. 'nothing
    28. End Try
    29. End If
    30. End Sub
    31. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    32. TestInternetConnection()
    33. RunUpdate()
    34. End Sub
    35. Private Sub BetaBlueButton1_Click(sender As System.Object, e As System.EventArgs) Handles BetaBlueButton1.Click
    36. Me.Close()
    37. End Sub
    38. Private Sub BetaBlueButton5_Click(sender As System.Object, e As System.EventArgs) Handles BetaBlueButton5.Click
    39. Form2.Show()
    40. End Sub
    41. End Class

    Mit freundlichen Grüßen
    thelord189

    Edit by Manschula: Code-Tag sowie Spoiler für bessere Lesbarkeit eingefügt!
    Bilder
    • Was soll ich machen .jpg

      268,75 kB, 1.280×984, 190 mal angesehen

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

    Naja, was soll denn das alles werden?
    Du hast da zig Try-Catch-Blöcke drin.
    Wo ist web eigentlich deklariert?
    Du gibst bei erfolgreichem Ping True zurück und im Fehlerfall auch.
    Du hast so ziemlich alles angesammelt, was im Forum 9001 mal angeprangert wurde. Deshalb verlinke ich mal auf diese nützlichen Threads:
    Simple 3D zu 2D Projektion (Besonders Punkt 3 beachten)
    Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Bitte nimm folgenden Code her, du hast dich nämlich einmal vertan, indem du einen Try ... Catch auf gemacht hast, du hast dann in den Catch block deinen Code geschrieben, der gehört aber in den Try, also vor den Catch ex as Exception:

    Visual Basic-Quellcode

    1. Public Class Form2
    2. Function TestInternetConnection()
    3. Dim ping As New Net.NetworkInformation.Ping
    4. Try
    5. ping.Send("http://google.com")
    6. Return True
    7. Catch ex As Exception
    8. Return True
    9. End Try
    10. End Function
    11. Sub RunUpdate()
    12. If TestInternetConnection() = True Then
    13. Try
    14. Dim version As String = Web.downloadstring("http://pfad/current_ver.txt")
    15. version = CInt(version)
    16. If version > CInt(lblversion.text) Then
    17. Try
    18. Dim path As String = "http://pfad.de/hello.exe"
    19. My.Computer.Network.DownloadFile(path, Application.StartupPath & "/[Update" & version & "]" & "hello.exe")
    20. MsgBox("Ein Update wurde erkannt und heruntergeladen!")
    21. Catch ex As Exception
    22. MsgBox(ex.ToString)
    23. End Try
    24. End If
    25. Catch ex As Exception
    26. MsgBox(ex.Message & vbCrLf & Err.Number)
    27. End Try
    28. End If
    29. End Sub
    30. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    31. TestInternetConnection()
    32. RunUpdate()
    33. End Sub
    34. Private Sub BetaBlueButton1_Click(sender As System.Object, e As System.EventArgs) Handles BetaBlueButton1.Click
    35. Me.Close()
    36. End Sub
    37. Private Sub BetaBlueButton5_Click(sender As System.Object, e As System.EventArgs) Handles BetaBlueButton5.Click
    38. Form2.Show()
    39. End Sub
    40. End Class
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Autsch. Abgesehen von den ranzigen Codes hier, das ist alles ne gewaltige Sicherheitslücke. Deine Updatepakete müssen signiert werden, ansonsten sind die austausch- und mit Viren infizierbar.

    Bitte, nehme dazu das updatesystem.net, das ist leicht zu verwalten, schön implementiert und sicher. (Solange ich an nUpdate schreibe :P)

    Edit:// Tausendster Beitrag =)
    #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 :!:
    So, nochmal. Bitte vergiss den Code von just_one_help4me, das ist 1. total schlechter Code und 2. unsicher^10. Dafür gibt es auch noch hilfreich... :huh:

    Nochmal: Deine Pakete MÜSSEN signiert werden, ansonsten sind die austauschbar und jeder, und damit meine ich JEDER Hacker, kann Dir dann einen Virus reinmachen und Du verteilst Diesen schön an alle Clients. Willst Du das?
    Ich hoffe mal nicht. Also, nimm bitte Updatesystem.NET und nicht so nen Bullshitcode.
    #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 :!:
    Da muss ich @Trade recht geben, er hat hier sogar einen Beitrag dazu geschrieben der dir vielleicht zeigt was es bring ein Updatesystem zu nutzen ;)

    Updater - Warum sollte man eigene Updater vermeiden?
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    Mein Updater Code

    VB.NET-Quellcode

    1. Private Sub Form1Loading()
    2. Try
    3. Dim VsNum As String = "1.0" ' gibt die Versions Nummer An
    4. Dim Password As String = InputBox("bIS ©" & vbNewLine & "If u have no access please buy this software!" & vbNewLine & vbNewLine & vbNewLine & "Type in your password!", "Login", "", Me.Location.X, Me.Location.Y)
    5. If Password = "" Then
    6. MsgBox("Please type a password!", , "Error")
    7. Me.Close()
    8. Else 'Passwort eingabe
    9. Dim client As New WebClient
    10. Dim onoff As String = "0"
    11. serverget.Text = client.DownloadString _
    12. ("URL zensiert")
    13. If Passwort = "Correct" Then ' den richtigen code möchte ich natürlich nict posten
    14. onoff = "1"
    15. End If
    16. If onoff = "0" Then
    17. MsgBox("Login failed!", , "") 'bei falschen Passwort
    18. Me.Close()
    19. Else
    20. serverget.Text = client.DownloadString _
    21. ("sry kann auch hier den link nicht drin lassen")
    22. If serverget.Lines(0) = VsNum Then 'wenn im web ne neue version steht dann downloaded er diese
    23. Else
    24. Try
    25. DClient.DownloadFileAsync(New Uri(serverget.Lines(1)), Application.StartupPath & "/" & serverget.Lines(2) & ".exe")
    26. Catch ex As Exception
    27. MsgBox(ex.Message, , "")
    28. End Try
    29. End If
    30. End If
    31. End If
    32. Catch ex As Exception
    33. MsgBox("Some thing went wrong! Please contact the coder!" & vbNewLine & ex.Message, , "Err")
    34. End Try
    35. ' bei downloadfilecomplete schließt er sich, löscht sich, und öffnet die neue version
    36. End Sub


    was haltet ihr von diesem anfänger code?
    was muss ich besser machen
    (ich hoste die Files mit dropbox)
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    *ARGS*

    Schau bitte die Beiträge über Dir an, dann weißt DU, warum das keine gute Lösung ist.
    #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 hab din theard gelesen, aber mal ehrlich, mein programm nutzen vlt 5 leute, und keiner davon in einem Öffentlichen netzwerk, auserdem ist es viel zu aufwändig sich über ein öffentliches netzwerk in andere PCs zu hacken, da ist es einfacher einen "aimbot für Black ops 2" zu machen und den auf youtube hochzuladen, im idealfall verschickt der sich noch selbst über skype, da errreicht man doch viel mehr!

    Edit by Manschula: Unnötiges Vollzitat entfernt!
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.

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

    Tja, leider gibt es nicht nur die Möglichkeit, dass einer deiner Clients ein Opfer davon wird und selbst das ist nicht so selten, wie Du denkst, manche warten da nur drauf, auch wenn man sich das nicht vorstellen kann. Das spielt keine Rolle, wie viele Leute dein Programm nutzen, Sicherheit muss da sein, außerdem geht es ja um den TE, was weiß ich, was der vor hat.
    #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 :!:
    @Trade lol ich mach das über dropbox, da kann keiner irgendwie auf mich zurückkommen
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Du hast es immer noch nicht verstanden, oder? Lies Dir bitte meinen Artikel nochmal sorgfältig durch. Es ist völlig egal wo Du hostest, wenn Du nicht signieren lässt besteht immer eine gewaltige Sicherheitslücke.
    #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 :!:
    ohne schei* jetzt hab ich mr fett, die mühe gemacht nen schönen fetten langen text zu schreiben, und wenn ich auf absenden drücke ist alles wieder weg,
    Kurzfassung:
    für meine kleinen programme erfüllt mein code seinen zweck sehr gut,
    und man ist Paranoid, wenn man jeden scheiß gleich so krass verschlüsseln (diesem fall signieren) muss
    Meine Software findet ihr HIER, bin in Android und Windows entwicklung aktiv.

    Falls ihr meine begehrte Movie Box für Android haben wollt, diese findet ihr auch auf meiner Website oder hier direkt download.
    Schön, mach doch was Du willst, aber beschwere Dich dann nicht, wenn es mal soweit kommt. :)
    #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 :!:
    Hat er aber Recht man muss immer den Aufwand mit dem Ergebnis vergleichen. Außerdem: Damit Pakete ausgetauscht werden können muss auf den Client schon etwas falsch laufen (manipulierte host datei, proxy, dns). Von daher ist dort jede Hoffnung schon verloren. Wieso sollte ich mir über User sorgen die eh ein verseuchtes System haben.

    Desweiteren: Wer hat Interesse daran, Updatepakete von Software aus einen Hobby-Programmier Forum auszutauschen. Ein gezielter Austausch ist eh quasi nicht möglich und auch sinnlos.
    So habe ich auch mal gedacht, aber es gibt wirklich gezielte Angreifer, die auf sowas warten, ohne Witz.
    Nun, am Client muss nicht unbedingt schon was schiefgelaufen sein, der Angreifer muss ja nur das Paket tauschen, da kann vorher also alles glatt gegangen sein.

    Es gibt immer Leute, die sowas können und evtl auch machen.
    btw: Wenn man von Aufwand redet, dann kann man Updatesystem.NET nutzen, das ist dann sehr wenig Arbeit und dann such sicher.
    #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 :!:
    Aha und wie genau funktioniert das? Stimmt es gibt bestimmt Leute die Updatepakete von Shworoom software manipulieren. Srsly.

    Ich bin gespannt wie mein Download in meinen Privaten Netz manipuliert wird. Wenn du etwas aus den Internet runterlädst, achtest du auch auf Signierung? Ich denke nein. Also ist alles was du da machst sehr sicherheitsbedenklich. Ich denke du weißt worauf ich hinaus will.
    Ich finde es immer wichtig das man sich die "Gefahren" des Netzes vor Augen hällt.

    Aber ich gebe @ThuCommix recht das man es auch übertreiben kann. Vorallem außschließlich privatgenutzte Software, die vielleicht noch von ein paar Freunden genutzt wird und daher einen Updater bekommt, ist für gezielte Angriffe von "bösen Hackern" eher uninteressant.

    Außerdem gibt es soviele einfachere Wege um Schadsoftware auf Rechner zu bekommen, seit die Menschen bei Emails erst klicken und dann nachdenken ... "Oh mist ich bin ja gar nicht bei der VR-Bank jetzt haben die meine Kreditkarteninfos"
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @Andy16823 Es geht nicht darum, wie es funktioniert, abgesehen davon, dass die Klasse verbessert werden muss, sondern man muss auch wissen, wie man das implementiert.
    #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 :!: