versienummer ophalen

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Hoe kun je het versienummer van een exe-bestand dat op het web staat opvragen?
Bijvoorbeeld op de site 'site.com' staat het bestandje 'programma.exe'. Hoe vraag ik hiervan het versienummer op?

Code:
if [versie_van_het_programma_van_het_internet_waarvan_de_url_bekend_is] <> My.Application.Info.Version.ToString then 
'...
else
'...
end if
 
Het is (naar mijn weten) niet mogelijk om die informatie via een bestand op een website te verkrijgen. :)
 
Inderdaad... Is het niet mogelijk om een textfile ofzo op die site te zetten met de versie nummer erin?
 
Hey, eerst checken of er een internetverbdinding is, dan je txt file downloaden, en als dat gelukt is eruit lezen, en nadien je file terug verwijderen ;)
 
Hey, eerst checken of er een internetverbdinding is, dan je txt file downloaden, en als dat gelukt is eruit lezen, en nadien je file terug verwijderen ;)

verbinding controleren: dat kan ik.
txt downloaden en eruit lezen: weet ik NIET hoe.
txt verwijderen: hoe???
 
Dat antwoord is niet echt behulpzaam he... Geef dan op zn minst een link naar een resultaat waar het duidelijk en correct staat uitgelegd :)

Dowloaden doe je zo
My.Computer.Network.DownloadFile(urlVanBestand, locatieOpJepc) 'moeten nog een zooi parameters bij, check je vs
' met een backgroundworker en een try-catch structuur werken is ook aangeraden :)

Zo kan je een bestand lezen (heb deze functie lang geleden geschreven, dus mss kan je wat verbeteren)
Code:
    Public Function readFile(ByVal myPath As String) As String
        Dim myReader As New System.IO.StreamReader(myPath) 'reader
        Dim fullTxt As String = ""

        If System.IO.File.Exists(myPath) Then 'only read when file exists
            Do While myReader.Peek() <> -1 'read all lines and make one string
                fullTxt = fullTxt & myReader.ReadLine() & vbNewLine
            Loop
            fullTxt = Microsoft.VisualBasic.Left(fullTxt, fullTxt.Length - 2) 'remove last return
        End If

        myReader.Close()
        Return fullTxt
    End Function
Dan kan je dus dim str as string = readFile(locatieOpJepc) doen

Een file deleten doe je met
System.IO.File.Delete("path van het bestand")

Hoop dat je nu verder kan ;)
 
[...]
Hoop dat je nu verder kan ;)

Dank je. Dit is het eindresultaat geworden.
Code:
Private Function IsConnectieBeschikbaar() As Boolean
        Dim URL As New System.Uri("http://site.com/")'Hier je site
        Dim WebAanvraag As System.Net.WebRequest = System.Net.WebRequest.Create(URL)
        Dim WebReactie As System.Net.WebResponse
        Try
            WebReactie = WebAanvraag.GetResponse()
            WebReactie.Close()
            WebAanvraag = Nothing
            Return True
        Catch ex As Exception
            WebAanvraag = Nothing
            Return False
        End Try
    End Function

    Private Sub FormLaden(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If IsConnectieBeschikbaar() = True Then
            Dim naambestand As String = "naambestand.txt" 'Hier de naam van het bestand met de versies
            Dim appname As String = My.Application.Info.AssemblyName.ToLower
            Dim localappdatamap As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\MAPNAAM\" 'Hier de (tijdelijke) mapnaam
            If IO.File.Exists(localappdatamap + naambestand) Then System.IO.File.Delete(localappdatamap + naambestand)
            My.Computer.Network.DownloadFile("http://site.com/versies/" + naambestand, localappdatamap + naambestand)'Sitenaam
            Dim str As String = readFile(localappdatamap + naambestand)
            System.IO.File.Delete(localappdatamap + naambestand)
            If (str <> My.Application.Info.Version.ToString) And str <> "" Then
                Dim bericht = MessageBox.Show("Er is een nieuwe versie van " + appname + " beschikbaar: " + str + vbCr + "Wilt u deze nu installeren?", "Nieuwe versie beschikbaar", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
                If bericht = Windows.Forms.DialogResult.Yes Then
                    If IO.File.Exists(localappdatamap + appname + ".exe") Then IO.File.Delete(localappdatamap + appname + ".exe")
                    My.Computer.Network.DownloadFile("http://site.com/attachments/" + appname + ".exe", localappdatamap + appname + ".exe")'Sitenaam
                    Process.Start(localappdatamap + appname + ".exe")
                    FORMS.Close()'naam van je forms
                End If
            End If
        End If
    End Sub

    Public Function readFile(ByVal myPath As String) As String
        Dim myReader As New System.IO.StreamReader(myPath)
        Dim fullTxt As String = ""
        If System.IO.File.Exists(myPath) Then
            Do While myReader.Peek() <> -1 'lezen en 1 string maken
                fullTxt = fullTxt & myReader.ReadLine() & vbNewLine
            Loop
            If fullTxt.Length > 1 Then fullTxt = Microsoft.VisualBasic.Left(fullTxt, fullTxt.Length - 2)
        End If
        myReader.Close()
        Return fullTxt
    End Function

'En voor het beste resultaat de installer zichzelf (het installatiebestand) laten verwijderen aan het eind van de sessie
'Voorwaarden hiervoor zijn dat de installer hetzelfde heet als de applicatie die je draait, en dat het een zelfstandige installer is (het programma dus niet nodig heeft).
'Als je alle setups en txtbestanden in dezelfde mappen zet (alle versie.txt bij elkaar in de map .../versies/ en alle installers bij elkaar in de map .../attachments/) op je site, dan ...
'...hoef je alleen maar de regel "Dim naambestand As String = "naambestand.txt"" te veranderen voor elk programma waarbij je het gebruikt
Hij werkt foutloos! Het enige nadeel van deze code is dat je de installer zichzelf moet verwijderen, anders blijft het installatiebestand achter (in de localappdatamap).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan