Dateidownload

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Cell.

    Dateidownload

    Hallo Community,
    Ich habe in meinem Programm eine Updatefunktion eingebaut, doch diese will die Datei nicht downloaden...

    VB.NET-Quellcode

    1. Sub UpdateDownload()
    2. Try
    3. Dim downloader As New System.Net.WebClient
    4. downloader.DownloadFile("http://meinlink.net/update/ncs2.exe", "C:\Desktop")
    5. MsgBox("Ein Update wurde erkannt und aug ihren Computer heruntergeladen!", MsgBoxStyle.Information, "Update")
    6. Catch ex As Exception
    7. MsgBox("Fehler")
    8. End Try
    9. End Sub


    Jemand eine Idee was falsch sein könnte?
    Du gibst ja auch keinen Dateinamen an, sondern nur der den Desktop. Das ist kein ganzer Pfad.
    Aber: Spare Dir den Aufwand, denn das ist sehr unsicher.

    Du lädst einfach Binaries vom Server und validierst diese nicht. Jene könnten also manipuliert worden sein.
    Du kannst etwas fertiges nutzen (z. B. nUpdate oder Updatesystem.NET) oder das Signierungsverfahren selbst einbauen.

    Wichtig ist jedoch erstmal, dass Du die Problematik verstehst. ;) Erstere Methode würde Dir natürlich auch Komfort bieten und Arbeit abnehmen.

    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 :!:
    Ok, aber dann musst Du entsprechende Sicherungsverfahren implementieren. Ist sonst sehr gewagt und dem User nicht zumutbar, dass er eventuell ohne es zu Wissen Malware runterlädt und ausführt. Bedenke, dass Dein Programm dann der Verteiler ist. ;)
    Hat schon bei z. B. puush gereicht, als da ein Virus als Update verkleidet unterwegs war und hunderte Clients infiziert hat. (Siehe auch Thread)

    Du musst natürlich einen Dateinamen angeben, unter dem die Datei gespeichert werden soll. Du kannst sie ja nicht als Desktop speichern, das ist der bestehende Ordner.

    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 :!:
    Alsom so?

    VB.NET-Quellcode

    1. Sub UpdateDownload()
    2. Try
    3. Dim downloader As New System.Net.WebClient
    4. downloader.DownloadFile("http://meinlink.net/update/ncs2.exe", "C:\Desktop\ncs2.exe")
    5. MsgBox("Ein Update wurde erkannt und aug ihren Computer heruntergeladen!", MsgBoxStyle.Information, "Update")
    6. Catch ex As Exception
    7. MsgBox("Fehler")
    8. End Try
    9. End Sub

    Teste es...
    Übrigens: MessageBox.Show statt MsgBox nutzen und nicht einfach den Fehler verschlucken, sondern so verwalten, dass er nachvollziehbar ist. Sonst kommt "Fehler" und dann suchst Du Dich tot.

    Und nimm Dir bitte meine Aussage zu Herzen, es ist kein Spaß und wirklich wichtig. ;)</justmy2cents>

    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 :!:

    BreadShirt schrieb:

    Hat nichts gebracht, bekomme wieder nur "Fehler".

    Merkst Du selbst, dass es nicht sinnvoll ist? ;)

    Trade schrieb:

    und nicht einfach den Fehler verschlucken, sondern so verwalten, dass er nachvollziehbar ist. Sonst kommt "Fehler" und dann suchst Du Dich tot.


    Aber hast wenigstens jetzt gleich die Erkenntnis gemacht. :P
    Wenn Du es noch nicht getestet hast, dann einfach die IDE Fehler melden lassen. Try-Catch ist gut, aber sinnvoll einzusetzen am Ende, wenn alles fertig ist. Dann auch so, dass man trotzdem alles schön verpackt bekommt.
    TryCatch ist ein heißes Eisen

    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 :!:
    War lange aus der VBNET Szene raus... Wollte mich so langsam mal wieder rantasten und hab etwas vergessen...

    Habs abgerufen... Komme damit aber wirklich nichtmehr richtig weiter...

    Das einzigste was ich so entziffere:
    Der Zugriff auf den Dateipfad wurde verweigert


    Ähm ok ich mach nen Bild... xD


    Jo, da hast Du ja auch nichts zu suchen bzgl. Dateien reinkopieren usw.
    Dafür würde man auch eigentlich Adminrechte benötigen.

    Also such Dir z. B. AppData, wo die Daten auch hingehören.

    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 :!:
    Warum lädst Du Sie dann nicht dahin?

    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 :!:
    Über die IDE? Hast Du Dir überhaupt irgendwas durchgelesen, was ich geschrieben habe? Oo
    Wenn ja, wären wir nämlich damit schon lange 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 :!:
    Alle mal ruhig bleiben.
    Entferne den Try-Catch-Block komplett, also das ​Try und alles nach ​Catch.
    Danach einfach das Programm debuggen, d.h. grüner Pfeil oben im Visual Studio.
    Sobald ein Fehler auftritt, meldet dir die IDE (in diesem Fall Visual Studio) den Fehler und markiert den Code an entsprechender Stelle.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!