Avatar billede deathkiller Nybegynder
29. maj 2002 - 09:38 Der er 8 kommentarer

Opdate

Hvordan laver jet et program der tjekker efter opdates

fx at den tjekker om der ligger en nyer version af den selv på:
http://www.deathkill.tk/opdate.exe  ,( virker ikker )
Avatar billede tjacob Juniormester
29. maj 2002 - 10:51 #1
Du kan bruge sjh's svar i dette spm: http://www.eksperten.dk/spm/217267

Sådan: indsæt en knap (Command1) i en form, og indsæt følgende kode i formen:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then DownloadFile = True
End Function

Private Sub Command1_Click()
    'her kaldes funktionen, og URL og downloadplacering indsættes:
    DownloadFile "http://www.deathkill.tk/opdate.exe ", "c:\opdate.exe"
   
    If DownloadFile Then
        MsgBox "Opdateringen er downloaded."
    Else
        MsgBox "Der findes ingen opdateringer."
    End If

End Sub

I knappen hvor du kalder funktionen, skal du naturligvis indsætte de korrekte URL og lokalplacering.

Hvis det skulle udføres automatisk, f.eks. hver gang dit program starter, kunne du lægge koden i Form_Load i stedet for i en knap.

/tjacob
Avatar billede dk_akj Nybegynder
29. maj 2002 - 10:52 #2
Mit forslag er at du bruger inetkontrollen.

Opret en simpel html side på dit site hvor du skriver versionsnummeret

Brug denne kode til at få fat i htmlsourcen:
Dim HTMLSource As String
HTMLSource = Inet1.OpenURL("www.surfsms.dk")
MsgBox HTMLSource

Så kan du checke om der er forskel på versionsnumrene

//akj
Avatar billede tjacob Juniormester
29. maj 2002 - 11:00 #3
OBS dette tjekker ikke om opdateringen er ny! Dette kunne så gøres med FileSystemObjektet:
Tilføj en reference til Microsoft Scripting Runtime til dit projekt, og tjek for hvornår filen sidst er blevet ændret således:

    Dim fso As New FileSystemObject, sFileOrg As File, sFileNew As File

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set sFileOrg = fso.GetFile("c:\program.exe")    'den gamle fil
    Set sFileNew = fso.GetFile("c:\opdate.exe")    'den nye fil

    If sFileOrg.DateLastModified < sFileNew.DateLastModified Then
        MsgBox "Opdateringen er nyere."
    End If
Avatar billede tjacob Juniormester
29. maj 2002 - 11:03 #4
Men tjekket for om opdateringen er ny, kunne du jo lægge i selve filnavnet,så behøver du slet ikke FSO. Men kan blot indsætte det korrekte filnavn i funktionskaldet i mit første svar.
Avatar billede dk_akj Nybegynder
29. maj 2002 - 11:13 #5
Lav en htmlside således:

<html>
<head>
</head>
<body>
version=1.4;
</body>
</html>

Gem den som ver.html

I VB laver du flg script:
HTMLSource = Inet1.OpenURL("http://www.deathkill.tk/ver.html")
pos1 = InStr(1, HTMLSource, "=")
pos2 = InStr(pos1, HTMLSource, ";")
ver = Mid(HTMLSource, pos1 + 1, pos2 - pos1 - 1)
MsgBox ver ' Giver dig versionsnumret på filen på dit site.

Denne løsning er meget hurtig og du slipper for at downloade filen.
Er ddet en lille fil eller er det ligemeget om det tager x min at checke er tjacobs svar bedre.

//akj
Avatar billede tjacob Juniormester
29. maj 2002 - 11:51 #6
I mit svar sker download kun hvis filen eksisterer, (dvs hvis der ER en update). Hvis dette er tilfældet, så SKAL den vel downloades?
Avatar billede dk_akj Nybegynder
29. maj 2002 - 17:07 #7
Set sFileOrg = fso.GetFile("c:\program.exe")    'den gamle fil
Set sFileNew = fso.GetFile("c:\opdate.exe")    'den nye fil

Så skal filen da være downloadet for at lave denne sammenligning eller...


//akj
Avatar billede tjacob Juniormester
29. maj 2002 - 17:53 #8
dk akj> du har ret - jeg henviste til første del af mit svar. ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester