[VB-Tut]Autoupdater mit Dateidownload[EigenesSystem]

08/26/2011 08:11 _Eckl#1

EDIT: FTP SERVER FINDET IHR ÜBER GOOGLE WIE Z.B [Only registered and activated users can see links. Click Here To Register...]

Huhu ihr :-)

Dies ist nun mein zweites Tutorial und ich hoffe mal ich kann euch da zumindest ein bisschen helfen.
Ich möchte euch hier erklären wie ihr einen Autoupdater in euer Programm einbaut.

IZP = Internetadresse zum Programm (FTP-Server)
IZV = Internetadresse zur Version.txt
PZP = Pfad zum Programmspeicherort (lokal, eigene Dokumente)
FTP = Internetadresse des Servers
PN = Projektname

So, fangen wir also an zu Programmieren.

Als erstes geht ihr auf den Desktop und erstellt dort eine *.txt-Datei.
Nennt die Datei 'Version' und schreibt '1.0.0.0' hinein.
Dann speichert die Datei.

Ladet nun die Datei auf euren Server hoch.
Die Internetadresse sollte nun 'FTP/Version.txt' lauten.

Nun nehmt ihr die *.exe-Datei, die euer Programm bildet, bzw. euer Programm später installiert.
Diese ladet ihr unter dem namen 'Setup' auf euren Server.

Nun geht ihr in euer Projekt und dann auf

Projekt -> PN-Eigenschaften...

Nun klickt ihr auf Assemblyinformationen und tragt bei Assemblyversion und Dateiversion
jeweils '1.0.0.0' ein.

Nun zum Code:

Geht auf den Button oder ähnliches und klickt zweimal darauf.
In der *.vb tragt ihr nun ein
Code:
Try
If My.Computer.Network.Ping("www.google.com") = True Then
Else
End if
Catch
MsgBox("Beim Versuch, auf die neuste Version zu prüfen das Programm zu aktualisieren ist ein Fehler aufgetreten.", 0 + 48, "Fehler")
End Try

Damit wird überprüft ob der PC mit einem Netzwerk verbunden ist.

Zwischen 'Then' und 'Else' schreibt ihr nun:
Code:
Dim y As String
                Dim Web As New WebClient
                Dim Update As String = Web.DownloadString("IZV")
Damit wird der Inhalt ver Verion.txt als String heruntergeldan, in diesem Fall '1.0.0.0'

Dann schreibt ihr weiter:
Code:
If Update.Contains(Application.ProductVersion) Then
                Else
                    y = MsgBox("Neue Version. Jetzt herunterladen ?", 4 + 48, "Neue Version")
                    If y = "6" Then
                        My.Computer.Network.DownloadFile("IZP", System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "PZP")
                        Process.Start(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "PZP")
                        Me.Close()
                    End If
                End If
Nun wird überprüft ob der heruntergeladene String mit dem Inhalt '1.0.0.0' der selbe ist,
wie die beiden Versionen in den Projekteigenschaten.
Ist dies Der Fall wird fortgefahren, falls nicht kommt eine Messagebox die fragt,
ob die neue Version heruntergeladen und installiert werden soll. Wenn nun ja gedrückt wird,
wird die Datei in den Pfad PZP gespeichert und gestartet.
Danach wird das Programm geschlossen.

Nun noch
Code:
End if
anhngen und normal müsste alles funktionieren...

Ich hoffe ich konnte helfen :-)

Credits:
_Eckl ~ Me
Ninoxo
08/26/2011 10:06 Shonenx3#2
habs net getestet müsste aber gehen nice :)
08/26/2011 11:35 Snake124#3
habs auf c# umgeschrieben, funktioniert auch perfekt, danke für die tolle vorlage :D hab schon ewig überlegt ._.
08/26/2011 11:48 _Eckl#4
Bitte Bitte aber mit Thx Button wäre mir lieber :)
08/26/2011 12:06 Snake124#5
aber gerne doch :D
08/26/2011 15:46 .SkyneT.#6
Quote:
If My.Computer.Network.Ping("meinftpserver") = True Then
So wäre das besser, sonst könnte es passieren das dein Server offline ist,
aber trotzdem der Download startet.
(Würde ziemlich sicher eine unbehandelte Ausnahme werden)

MfG
08/26/2011 17:35 Che#7
[Only registered and activated users can see links. Click Here To Register...]

achja nebenbei:

[Only registered and activated users can see links. Click Here To Register...]
08/26/2011 18:57 _Eckl#8
Quote:
Originally Posted by 〤Che〤 View Post
[Only registered and activated users can see links. Click Here To Register...]

achja nebenbei:

[Only registered and activated users can see links. Click Here To Register...]
Das obere ist andere Methode und jedem ist es selbst überlasen!
Ich finde persönlich meine Methode besser.

lg _Eckl
08/27/2011 00:27 Che#9
die frage ist nicht, ob du deine besser findest, sondern welche tatsächlich stabiler läuft bzw besser funktioniert, und das ist ja wohl meine :awesome: (<-- smiley grade gefunden und der is einfach dooooooooahl )
08/27/2011 09:05 _Eckl#10
:p Ja das kann schon sein das deine Stabiler ist aber ich nehm diese her ohne Probleme :)