Gambas France BETA


Pas de compte ? Incription

Exemple 2 :

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 :



====================