Update Funktion in VB08?

05/25/2010 14:35 nag#1
Ja ich würde gerne wissen wie die Funktion funktioniert bzw. wie ich diese nutze.
Ich hab schon bei google gesucht aber gescheites nicht gefunden.
Ein leichtes Tutorial würde genügen. Thx jetzt schon mal.
(Für alle die mich nicht verstanden haben: Ich möchte wissen wie ich eine Update Funktion mache um zu gucken ob die Aktuellste Version benutzt wird.
05/25/2010 15:15 Yakiyo#2
Nicht von mir!


Das braucht ihr:
-Ftp Server
-From1.vb
-ConsolenApp

1. Der Versions Code auf dem FTP Server
Als erstes macht ihr eine .php datei öffnet sie und schreibt dies hinein.


Code:
<?
echo 'ersetze mich durch eine Versions nummer!'
?>


Nun schreibt ihr nachdem "echo" eure Versions nummer hin!
Speichert alles ab und ladet es auf euren Webspace hoch.

2. Updater in Form1.vb einbringen (oder euer Projekt, aber dort die Start Form)
Ihr erstellt eure 1ste Form oder öffnet euer Projekt. Auf die erste Form (Start Form) macht ihr doppelklick drauf. Dann steht dass im Code:



Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Dann fügt ihr dies unter Form1_Load ein:



Code:
Dim Updateme As New Net.WebClient
    Dim ResultBytes() As Byte = Updateme.DownloadData("http://www.meinftp.de/version.php")
    Dim Version As String = System.Text.Encoding.Default.GetString(ResultBytes)
    If Version = "ersetze mich durch eine Versionsnummer!!" = False Then
        MsgBox("Neues Update gefunden!")
        Process.Start("updater.exe")
        Me.Close()
    End If


Nun Speichert ihr alles ab herstellt die .exe Datei die ihr dann einen beliebigen Namen gibt.

Wenn ihr nun eine neuere Version habt müsst ihr nur die Versions Nummer im Code ändern und natürlich in der .php Datei.

3. ConsolenApp als Updater
Nun macht ihr ein neues Projekt in einer ConsoleApplication.
Als erstes steht im Code nur dieses:


Code:
Module Module1

Sub Main()
   
 End Sub

End Module

Nun schreibt ihr unter Sub Main den Code damit er die Datei downloaded die neu ist. Das sieht dann so aus:


Code:
Module Module1

Sub Main()
    If My.Computer.Network.Ping("Ip eures Servers um zu checken ob der Download Server Online ist!") = True Then
        Console.WriteLine("Verbindung zum Update Server hergestellt!")
        System.IO.File.Delete("alteversion.exe")
        Console.WriteLine("Die Alte Version wurde gelöscht!")
Console.WriteLine("Bitte warten, die neue Version wird heruntergeladen...")
 My.Computer.Network.DownloadFile("http://www.meinftp.de/neueversion.exe", "Name der neuen Version.exe", "Benutzername (FTP)", "passwort")
        Console.WriteLine("Erfolgreich Geupdatet!")
        Console.WriteLine("Starte neue Version beim Druck von Enter!")
        Console.ReadKey()
        Process.Start("neueversion.exe")
    Else
 Console.WriteLine("Die Verbindung zum Update Server konnte nicht hergestellt werden! Bitte versuchen sie es später erneut.")
    End If
End Sub

End Module


So das wars alles!!

4. Was ist zu beachten?
Bitte beachtet das die .exe namen im Code gleich sind wie die Datei .exe Namen. Außerdem müssen beide Dateien im gleichen Ordner sein.

__________________________________________________ _______________

Oder so, auch nicht von mir!

Folgende Importierungen sind notwendig:




Code:
Imports System.Net

Die Funktion gibt True bei neuer Version zurück und False, wenn der Server down ist oder es keine neue version gibt.
Bei meinem Test habe ich es mit einer .txt Datei verwendet.




Code:
Function CheckForNewVersion(ByVal verFile As String) As Boolean
    	Dim wc As New WebClient
    	Dim ver As String = vbNullString
    	Try
        	ver = wc.DownloadString(New Uri(verFile))
    	Catch ex As Exception
        	MsgBox("Der Update Server ist Offline!", MsgBoxStyle.Critical)
        	Return False
        	Exit Function
    	End Try

    	If ver <> My.Application.Info.Version.ToString Then
        	MsgBox("Neue Version verfügbar", MsgBoxStyle.Information)
        	Return True
    	Else
        	MsgBox("Sie verfügen bereits über die Neueste Version", MsgBoxStyle.Information)
        	Return False
    	End If

	End Function
05/25/2010 16:44 nag#3
Also bei mir funktioniert es wenn ich Update.exe per Hand starte sonst nicht.
Das würde mir aber schon reichen
05/25/2010 16:49 Yakiyo#4
Du kannst die update funktion doch einbauen 0o