Datei Download wird in Schleife gestartet.

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von aCiD1.

    Datei Download wird in Schleife gestartet.

    Hallo zusammen ich hab ein .net Anwendung geschrieben und wollte den Usern ein Online Update anbieten. Gesagt getan mal an Zeichenbrett gesetzt und was gebastelt.

    Nun hier ma der Code in meiner Hauptanwendung für den Updater

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim value As String = My.Application.Info.DirectoryPath
    3. 'Läd die versions.txt Datei von http://www.chebre.de/hostschanger/update/ herunter und speichert sie in den Ordner \temp\
    4. My.Computer.Network.DownloadFile _
    5. ("http://www.meineseite.de/update/version.txt", _
    6. My.Application.Info.DirectoryPath & "\ups\versions.txt")
    7. Dim sIP As String = "1.0.1.3" 'Speichert die Versions nummer des Aktuellen Programms als As String
    8. 'Dim sIP As String = "x.x.x.x" immer ändern mit Versions nummer.
    9. Dim sBuffer As String = _
    10. My.Computer.FileSystem.ReadAllText( _
    11. My.Application.Info.DirectoryPath & "\ups\versions.txt") 'Angabe wo die Versions.txt der Neusten Software gespeichert wurde
    12. If sBuffer.Contains(sIP & " " & "Version") Then 'Überprüft die Version in der versions.txt vom Webserver wenn sie stimmt
    13. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\ups\versions.txt")
    14. MsgBox("Kein Update vorhanden") 'startet sie else wenn sie stimmt dann kommt die Message "Kein Update vorhanden"
    15. Else
    16. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\ups\versions.txt")
    17. Dim file As System.IO.FileStream
    18. file = System.IO.File.Create(My.Application.Info.DirectoryPath & _
    19. "\updater\Pfad.txt")
    20. file.Close()
    21. With My.Computer.FileSystem.OpenTextFileWriter(My.Application.Info.DirectoryPath & _
    22. "\updater\Pfad.txt", False)
    23. .WriteLine(My.Application.Info.DirectoryPath)
    24. .Close()
    25. End With
    26. Shell(My.Application.Info.DirectoryPath & "\updater\updater.exe", vbNormalFocus, False, -1)
    27. End
    28. End If
    29. End Sub


    und hier der Updater:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim value As String = My.Application.Info.DirectoryPath 'Liest den Pfad in dem der Updater ist aus und Speichert sie in dem Befehl My.Application.Info.DirectoryPath
    3. Dim fileReader As System.IO.StreamReader 'Liest den Pfad aus der Pfad.txt aus wo das eigendliche Upzudatende Programm liegt
    4. fileReader = _
    5. My.Computer.FileSystem.OpenTextFileReader(My.Application.Info.DirectoryPath & "\Pfad.txt") 'Pfadangaber der Datei mit dem Pfad des Hauptprogrammes
    6. Dim stringReader As String
    7. stringReader = fileReader.ReadLine() 'Speichert den Pfad als stringReader
    8. Dim overwrite As Boolean
    9. 'Läd die dateien aus dem Web in das Updater Verzeichniss
    10. My.Computer.Network.DownloadFile( _
    11. "http://www.meineseite.de/update/HostsChanger.pdb", My.Application.Info.DirectoryPath & _
    12. "\HostsChanger.pdb", "", "", False, 100, overwrite, _
    13. FileIO.UICancelOption.ThrowException)
    14. My.Computer.Network.DownloadFile( _
    15. "http://www.meineseite.de/update/HostsChanger.exe", My.Application.Info.DirectoryPath & _
    16. "\HostsChanger.exe", "", "", False, 100, overwrite, _
    17. FileIO.UICancelOption.ThrowException)
    18. My.Computer.Network.DownloadFile( _
    19. "http://www.meineseite.de/update/HostsChanger.xml", My.Application.Info.DirectoryPath & _
    20. "\HostsChanger.xml", "", "", False, 100, overwrite, _
    21. FileIO.UICancelOption.ThrowException)
    22. My.Computer.Network.DownloadFile( _
    23. "http://www.meineseite.de/update/HostsChanger.exe.config", My.Application.Info.DirectoryPath & _
    24. "\HostsChanger.exe.config", "", "", False, 100, overwrite, _
    25. FileIO.UICancelOption.ThrowException)
    26. 'Kopiert die Dateien vom Updater- ind das Programmverzeichniss
    27. My.Computer.FileSystem.CopyFile(My.Application.Info.DirectoryPath & "\HostsChanger.pdb", _
    28. stringReader & "\HostsChanger.pdb", Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
    29. My.Computer.FileSystem.CopyFile(My.Application.Info.DirectoryPath & "\HostsChanger.exe", _
    30. stringReader & "\HostsChanger.exe", Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
    31. My.Computer.FileSystem.CopyFile(My.Application.Info.DirectoryPath & "\HostsChanger.xml", _
    32. stringReader & "\HostsChanger.xml", Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
    33. My.Computer.FileSystem.CopyFile(My.Application.Info.DirectoryPath & "\HostsChanger.exe.config", _
    34. stringReader & "\HostsChanger.exe.config", Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, FileIO.UICancelOption.DoNothing)
    35. 'Löscht die Heruntergeladenen Daten
    36. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\HostsChanger.pdb")
    37. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\HostsChanger.exe")
    38. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\HostsChanger.xml")
    39. My.Computer.FileSystem.DeleteFile(My.Application.Info.DirectoryPath & "\HostsChanger.exe.config")
    40. Shell(stringReader & "\updater\updater.exe", vbNormalFocus, False, -1) 'Startet das Hauptprogramm
    41. End
    42. End Sub


    nun der Download funktioniert 1a auch der Vergleich doch wird der Updater gestartet wird er in einer Schleife gestartet und ich muss neustarten und er führt sein code nicht bis zum ende aus. Nun ich hab auch ma rumgebastellt und das Programm wurde mit einem Timeout abgelaufen geschlossen hat aber den Code auch nicht bis zum ende ausgeführt. Ich bin jetzt Zimlich Ratlos ich muss sagen ich bin Anfänger und steh jetzt echt blöd da in Google konnte ich nichts Hilfreiches finden.

    Danke für eure Hilfe

    mfg
    aCiD1
    acid1,

    normalerweise führt man in .net externe programme mit der process-klasse aus.
    shell - ist veraltet. ;)

    die process-klasse verfügt über eine

    VB.NET-Quellcode

    1. WaitForExit

    anweisung. mit dieser wird gewartet, bis der gestartete prozess beendet wurde.

    gruss

    mikeb69
    Aso ok muss ich ma mich darüber informieren kenn shell aus meinem alten Buch von VB leider is es etwas stark veraltet ^^

    Glaub aber nicht das dass das eigendliche Problem behebt das sich der Updater immer wieder Startet und das Programm herunterläd.

    EDIT: So ich hab mich ma in der msdn datenbank schlau gemacht und Verdammt das war doch das Problem. Mei warum sagt mir das denn nicht gleich Jemand *stück aus der Tischplatte beißt*
    Danke vielmals Mike


    mfg

    acid1

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