Tester la Présence d'une mise à jour disponible :
Une fonction, ici NewVersion(raw) va tester la présence d'un fichier (quelconque mais autant utiliser le fichier ".project" de l'IDE) contenant l'information sur la version en cours de votre programme.
Le fichier .project est constitué d'une succession de lignes informatives sur votre projet dont une ligne : Version=1.1.100
Grâce à l'extraction de cette ligne nous vérifions si la version de l'Application.Version est inférieure ou non à l'extraction faite.
Le fichier dont vous donnez l'adresse : "adresse Web du fichier Projet", pour les géants de la programmation, il y a GitLab pour les autres votre propre site internet fait l'affaire.
Quelque soit l'endroit n'oubliez pas d'y déposer ce fichier pour test.
Le fichier .project est un fichier caché.
Extrait d'un fichier .project :
# Gambas Project File 3.0
Title=MonProgrammeAMoi
Startup=Module1
Icon=chukablue2.png
Version=1.1.100
Component=gb.image
Component=gb.qt5
Component=gb.form
Component=gb.dbus
Component=gb.desktop
Component=gb.eval
Component=gb.form.dialog
Component=gb.util
Component=gb.settings
Component=gb.form.stock
Component=gb.net
Component=gb.net.curl
Component=gb.qt5.ext
Component=gb.report2
Component=gb.sdl2.audio
Description="-MonProgrammeAMoi est le meilleur ...
La fonction de contrôle des mises à jour :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| PUBLIC FUNCTION NewVersion(raw AS STRING) AS STRING 'test de la version du prog.
DIM sProjet AS STRING 'futur fichier contenant Version=v DIM r AS STRING 'future ligne dans stx DIM v AS STRING 'future string contenant la version du fichier DIM sCom AS STRING 'commande pour wget DIM sFichier AS STRING 'futur fichier temporaire contenant les informations de version DIM sLog AS STRING 'futur fichier temporaire contenant les logs de wget DIM stx AS String[] 'futur tableau contenant les diverses lignes du fichier
v = "" 'vidage de la variable, juste pour être sûr sFichier = "/tmp/project.txt" 'récupération des données dans un fichier temporaire sLog = "/tmp/wget_log.txt" 'fichier pour récupérer les log de wget
IF Exist(sFichier) THEN 'effacement du fichier si déjà présent SHELL "rm " & sfichier WAIT ENDIF
sCom = "wget -o " & sLog & " -O " & sFichier & " " & raw 'voir : wget --help dans un terminal, pour en apprendre plus SHELL sCom WAIT 'écriture des deux fichiers temporaires
IF NOT Exist(sFichier) OR File.Load(sFichier) = "" THEN 'test si présence du fichier ou si fichier vide Message.Title = (("Attention!")) Message.Info(("Fichier vide") & gb.CrLf & ("Veuillez retester")) ELSE 'recherche de la version dans fichier sProjet = File.Load(sFichier) 'chargement du contenu texte dans un fichier stx = Split(sProjet, "\n") 'découpe par ligne du fichier FOR EACH r IN stx 'pour chaque ligne trouvée IF InStr(r, "Version=") THEN 'le fichier ".project" de l'IDE contient l'information sur la Version IF Split(r, "=")[0] = "Version" THEN ' si le contenu est Version v = Split(r, "=")[1] 'récupération numéro version dans v BREAK 'ce n'est pas la peine d'aller plus loin on break ENDIF 'nous avons notre information ENDIF NEXT ENDIF
RETURN v 'renvoi de la variable v
CATCH 'si erreur Message.Error(Str(Error.Class) & ", code : " & Error.Code & ", " & Str(Error.Backtrace) & " à " Error.Where) END
|
Le menu de mise à jour :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| PUBLIC SUB mnuMiseAJour_Click() 'Click sur le le menu mise à jour
DIM vChk AS STRING
vChk = NewVersion("adresse Web du fichier Projet") 'fonction NewVersion, le fichier projet contenant Version=(v)
IF Application.Version < vChk THEN 'si Application.version est inférieure à vChk alors nouvelle version en ligne Message.Title = (("Attention!")) Message.Info(("Nouvelle version téléchargeable!"& gb.CrLf & ("Version : ") & vChk) frmUpdate.Show 'mise à jour à télécharger dans une form ELSE 'sinon vous avez une version à jour Message.Title = (("Attention!")) Message.Info(("Pas de nouvelle version disponible!") & gb.CrLf & ("Version : ") & vChk) ENDIF
END
|
Un des deux résultats possibles :
====================
Commandes utilisées :
Dim
File.load
Exist
Shell
Message
Split
Break
Show ====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- ====================
Documentation :
====================