Online checken naar LastWriteTime

Status
Niet open voor verdere reacties.

The Mighty Atom

Terugkerende gebruiker
Lid geworden
22 mei 2008
Berichten
1.380
Stel, ik heb een bestand op mijn ftp server staan (http://www.themightyatom.nl/projects/application.txt).

Je kan met FileInfo het LastWriteTime opvragen van een bestand op de lokale schijf, bijvoorbeeld zo:

Code:
        Dim File As New FileInfo("C:\test.txt")
        MsgBox(File.LastWriteTime)

Nou wil ik datzelfde doen met het bestand dat online staat. Als LastWriteTimer hoger (later) is dan de LastWriteTime van het programma dat ik op dat moment uitvoer, dan moet het bestand worden gedownload (de code daarvoor heb ik al). Zo niet, dan moet er niks gebeuren, maar laat ik een messagebox zien met "No update available.".

Zoals je ziet wil ik hiermee checken op een programma update. Het probleem is dat ik niet weet hoe ik de LastWriteTime kan controleren van een bestand dat online staat (en dus niet een lokaal bestand). Ik vind er niks over via Google, maar ik kan me haast niet voorstellen dat zoiets niet kan voor online bestanden.

Wie kan me helpen?
 
Laatst bewerkt:
Code:
URI formats are not supported.

Lijkt mij duidelijk dat, het op die manier niet lukt...

Ik heb bij mijn update function een text-file op de site staan met de volgende inhoud:

Code:
version=1.0.0.1=
donwloadlink=http://blablabla/blablabla.exe=

Met een zelf gemaakt functie heb je zeer snel de tekst tussen de ='en. Zet de 1.0.0.1 in een String, Replace de punten. Zet het om naar een Integer. Doe het zelfde voor de String: My.Application.Info.Version.ToString(). Vergelijk de waarden, als de waarde die gedownload is meer is dan de huidige waarde, moet je het programma dus downloaden...

Een file downloaden kan met de volgende code:

Code:
        Dim theResponse As HttpWebResponse
        Dim theRequest As HttpWebRequest

        Dim Save_Location As String = "H:\program.exe"
        Dim URL As String = "http://blablabla/blablabla.exe"
        Try
            theRequest = WebRequest.Create(URL)
            theResponse = theRequest.GetResponse
        Catch ex As Exception
            MsgBox("Fout..." & Environment.NewLine.ToString & ex.ToString())
        End Try

        Dim writeStream As New IO.FileStream(Save_Location, IO.FileMode.Create)

        Do
            Dim readBytes(4095) As Byte
            Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096)
            If bytesread = 0 Then Exit Do
            writeStream.Write(readBytes, 0, bytesread)
        Loop

Het uitlezen van je text-file doe je zo:

Code:
        Dim URL As String = "http://blablabla/blablabla.txt"

        Dim client As Net.WebClient = New Net.WebClient()
        Dim data As IO.Stream = client.OpenRead(URL)
        Dim reader As IO.StreamReader = New IO.StreamReader(data)
        Dim File As IO.File
        Dim str As String
        str = reader.ReadToEnd()
        reader.Close()

In 'str' staat dus je hele tekst file...

Hopelijk kan je er wat mee, als je automatisch wilt laten updaten moet je een aparte exe maken die hem download en eventueel al over je huidige heen schrijft...:thumb:

Edit: Je moet System.NET inporteren...
 
Laatst bewerkt:
Hmm, dat is toch nog best wel lastig. zeker wanneer je al die punten en = tekens eruit moet gaan filteren.
Toch bedankt. :D Ik ga het toch effe proberen.

Ik had eigenlijk gehoopt dat LastWriteTime op een online bestand zou werken. Dan hoef je verder niet te klieren met versie nummers, je upload je geupdate exe, en klaar.

Meh.
 
Die punten zijn niet zo moeilijk hoor...

Code:
Dim a As String = "1.0.0.1"
a = a.Replace(".",Nothing)

Die = zijn lastiger ik heb er ooit eens een functie voor geschreven die de waarde tussen a en b Returnd met een totale invoer van Source...
 
Kan ook, maar om je huidige versie te zien is het toch het makkelijkst om deze op te vragen via: My.Apllication.Info.Version>ToString(). Welke toch in #.#.#.# is...
 
Maar ik bepaal mn versie op deze manier:

1.0.00
1.0.01
1.0.02
1.1.00
1.1.01
1.1.02
2.0.00
etc

Ik vind dat 1.0.0.0. maar vaag, het blijft altijd op 1.0.0.0. staan als ik kijk bij Assemly Info. :/
 
Bij, My Project > Assembly Information kun je hem ophogen!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan