[R] Vérification de la version d'un outil

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Amesamana
Niveau 5
Niveau 5
Messages : 108
Enregistré le : dim. 09 sept. 2012 16:37
Status : Hors ligne

[R] Vérification de la version d'un outil

#1

Message par Amesamana »

Bonjour,

Je veux vérifier la version de mon outil est proposer le téléchargement si une nouvelle version est en ligne.

je me suis fait cette function :
► Afficher le texte
Je ne comprends pas pourquoi en ayant les mêmes caractères (2.0) sur version.txt et $VERSION j'ai $TELCHARMENT qui s'affiche, je ne devrait pas !
Si $VERSION passe à 2.1 $TELCHARMENT ne s'affiche pas, logique, mais pourquoi en 2.0 il s'affiche alors que nous avons la même valeur.
En le marquant ainsi je ne devrait pas avoir de soucis ?
If $VVERSION > $VERSION Then
Merci.
Modifié en dernier par Amesamana le lun. 28 oct. 2013 00:25, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#2

Message par jguinch »

Etonant, ce truc là fonctionne, normalement...

Code : Tout sélectionner

$version = "2.0.0.1"
$newVersion = "2.0.0.3"
If $newVersion > $version Then MsgBox(0, "", "Une nouvelle version est disponible")
Peut-être que tu as essayé ton script plusieurs fois en changeant la valeur dans le fichier Version.txt ?
Du coup, c'est possible que le téléchargement ne se fasse pas car il utilise le cache.
Tu peux forcer le téléchargement avec InetGet :

Code : Tout sélectionner

InetGet("http://xxx/Version.txt", @TempDir & "\Version.txt"[b], 1[/b])
Sinon, tu peux comparer les valeurs en spécifiant qu'il s'agît d'un nombre :

Code : Tout sélectionner

If Number($VVERSION) > Number($VERSION)
...mais du coup, tu ne pourras pas utiliser des versions du style 2.0.1.3
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#3

Message par Tlem »

jguinch a écrit :mais du coup, tu ne pourras pas utiliser des versions du style 2.0.1.3
Il suffit de supprimer les points. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#4

Message par jguinch »

@tlem : oui, mais non...
Si on doit comparer les versions 2.7.1 et 2.8, ça ne marche plus si on enlève les points. :P

Edit : si on respecte le même type de versioning, ça marchera
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#5

Message par Tlem »

Oui, mais ....
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#6

Message par jguinch »

Oui mais... là ça marche plus :P :

Code : Tout sélectionner

$Version1 = "2.7.1"
$Version2 = "2.10"
MsgBox(32, "La plus grande version", _GreaterVersion($Version1, $Version2))
On peut faire ça :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#7

Message par Tlem »

jguinch a écrit :Oui mais... là ça marche plus :P
Rhooo.
Mais effectivement.

Ton code semble ok, mais n'est-il pas judicieux de le simplifier à ceci :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#8

Message par jchd »

Si on exclut les cas pathologiques où un développeur fou crée plus de 10000 versions à un niveau donné, on peut encore simplifier :
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#9

Message par jguinch »

JC, tu m'as foutu la honte :oops:
Une seule ligne...

Bref, si Amesamana pouvait nous dire si ça lui va ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#10

Message par jchd »

Mais non, reste positif : j'ai soumis une idée qui pourra te servir dans d'autres contextes.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#11

Message par Tlem »

jguinch a écrit :JC, tu m'as foutu la honte :oops:
Je ne suis pas tout à fait d'accord. En fait JC triche légèrement puisqu'il utilise quelque chose qui n'est pas encore sorti en version finale !
De plus la fonction ne compare pas deux n° de version. Elle se contente de modifier une chaine. Il faut ensuite rajouter un traitement pour déterminer quel version est la plus élevée ...

Pour une fonction équivalente à celles proposées, ceci correspondrait mieux :

Code : Tout sélectionner

Func _PgmVersion($v1, $v2)
    Local $nv1 = (Execute(StringRegExpReplace($v1, "(\d+)(\.)?", "StringFormat('%04u', \1) & ") & "''"))
    Local $nv2 = (Execute(StringRegExpReplace($v2, "(\d+)(\.)?", "StringFormat('%04u', \1) & ") & "''"))
    Return ($nv1 > $nv2 ? $V1 : $V2)
EndFunc
Et là, ce n'est plus 1 lignes, mais 3. Bon, il faut saluer la performance quand même. ;)

Ceci dit, non seulement pour utiliser ce code il faut une version minimale d'AutoIt qui gère l'opérateur ternaire, mais en plus ce n'est pas rétro-compatible. :mrgreen:
Donc un "Require AutoIt version 3.9.x" aurait été bien vu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#12

Message par jchd »

A cette heure-là, tout est flou, hein !
Ceci dit, l'opérateur ternaire n'est là que pour l'affichage.

On peut aussi tout simplement employer _VersionCompare()
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#13

Message par Tlem »

jchd a écrit :On peut aussi tout simplement employer _VersionCompare()
Haaa ben voilà, il me semblait bien que je l'avais déjà vu ça quelque part celui-là !!!

[Mode mauvaise foi ON]
Bon, ceci dit, _VersionCompare() fait 31 lignes (19 lignes si on exclu la comparaison par chaîne et la gestion du séparateur) et oblige un Include ... :mrgreen:
[Mode mauvaise foi OFF]
jchd a écrit :Ceci dit, l'opérateur ternaire n'est là que pour l'affichage.
Oui et non. Sans l'opérateur ternaire, tu ne peux déterminer lequel des arguments est plus grand. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Amesamana
Niveau 5
Niveau 5
Messages : 108
Enregistré le : dim. 09 sept. 2012 16:37
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#14

Message par Amesamana »

Bonjour à tous,

Merci pour vos réponses, je vais regarder tout ça :wink:
Tlem a écrit :Bon, ceci dit, _VersionCompare() fait 31 lignes (19 lignes si on exclu la comparaison par chaîne et la gestion du séparateur) et oblige un Include ... :mrgreen:
Oblige un Include, est-ce un soucis ?
_VersionCompare() fait 31 lignes => je vais rechercher :)
Dans mon fichier de base j'ai ajouté :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_Fileversion=2.0
#include <Version.au3>
_VERIFVERSION()

J'ai essayé d'inclure cette fi=unstion directement dans mon code de dase mais idem.
Mais tout de même pas logique car ma function ne devrait pas poser de soucis.
J'ai bien vidé mon cache, et vérifié si dans @Temp@ la version était bien celle désiré, mais idem.

Je me penche sur vos réponse est revient vers vous.

Merci.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#15

Message par Tlem »

Pour _VersionCompare(), il faut inclure le fichier Misc.au3.
Ouvrez celui-ci et regardez comment fonctionne cette fonction car elle permet de comparer deux version en retournant des valeurs tel que 1, -1 ou 0. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#16

Message par jguinch »

Tu as lu mon premier post à propos de InetGet ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Amesamana
Niveau 5
Niveau 5
Messages : 108
Enregistré le : dim. 09 sept. 2012 16:37
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#17

Message par Amesamana »

Oui j'ai rajouté le 1 pour forcer le téléchargement, mais idem
J'ai même essayé avec 2.0.0.0

Ces deux valeurs sont bien reconnus.
Pas logique tout ça car ma fonction devrait marcher.
J'ai vider le cache mais idem, je surveille bien mon version.txt dans @temp@ change quand je fais le modif mais idem ?

Je ne saisi pas vraiment pourquoi avec une valeur égale j'ai :
Image
Même si je télécharge d'un autre PC.
Je regarde du côté de Misc.au3 :?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#18

Message par jguinch »

En partant du morceau de code (qui ne fonctionne pas :x ) que tu avais mis dans ton premier post, j'ai essayé de reproduire le problème : chez moi ça marche plutôt bien.
J'ai squeezé l'étape du InetGet et créé le fichier Version.txt dans le même répertoire que le script. Tout se passe normalement.

Est-ce que tu peux essayer ce code chez toi, avec le fichier Version.txt dans le répertoire du script ? Si tu n'as pas le problème avec ce code, c'est qu'il y a un problème dans ton script original.
► Afficher le texte


Edit (pour Thierry)
Tlem a écrit :Ton code semble ok, mais n'est-il pas judicieux de le simplifier à ceci
Je rêve : Tlem m'a tutoyé ! :shock: Ils annoncent de la neige ces prochains jours ?
A+ :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Amesamana
Niveau 5
Niveau 5
Messages : 108
Enregistré le : dim. 09 sept. 2012 16:37
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#19

Message par Amesamana »

Bonjour,

Désolé pour cette réponse tardive.

J'ai donc essayé sans inetGet mais idem !
J'ai bien un fichier version.txt dans mon répertoire de l'outil.

J'avoue ne pas comprendre pourquoi ce script ne marche pas !

Merci pour l'aide :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Vérification de la version d'un outil

#20

Message par mikell »

Amesamana a écrit :Je ne saisi pas vraiment pourquoi avec une valeur égale j'ai ...
Attention, avec les codes précédents (même celui de jchd) si une version se termine par .0 la comparaison est faussée :mrgreen:
Faut donc introduire un petit ajustement pour zapper les trailing zeros indésirables
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre