[R] Updater

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

[R] Updater

#1

Message par arrkhan »

Plop,

je souhaite faire un updater pour une appli, mais je ne sais pas quel méthode employer.

Première soluce:
intégrer dans mon appli un exe qui se chargera de telecharger la nouvelle version remplacant de facto l'ancienne.

Deuxième soluce:
que l'appli télécharge la nouvelle version sous un autre nom, la lance et avec un truc dans le genre au debut du script, "si nom <> appli.exe alors copier l'appli en cour en la renommant et s'autodetruire"

en écrivant la deuxieme soluce, je l'ai trouvé un peu bidon en fait...

sinon y a t il une convention ou un truc dans le genre que tout le monde utilise pour les MàJ.
je suis ouvert a toute propositions...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#2

Message par Tlem »

Je dirais plutôt, télécharger la mise à jours ou vous voulez, autodétruire l'exe, et dans le code d'autodestruction, déplacer le fichier télécharger à la place de l'ancien.

Vous pouvez aussi vous inspirer du code de Voodoo pour ForumColor, puisque il y à les sources.
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é".
sergio
Niveau 2
Niveau 2
Messages : 25
Enregistré le : jeu. 25 oct. 2007 16:14
Status : Hors ligne

#3

Message par sergio »

Autre solution (que j'emploie) j'ai fait un lanceur avec l'icone de l'application (pour eviter de perturber l'utilisateur)
ce lanceur vérifie le répertoire local avec le répertoire de référence sur un serveur. Si la version est différente il copie la version en cours en local sur le pc. Une fois copié je lance l'application.
L'utilisateur ne s'apperçoit de rien et les versions sont toujours à jour.
Auparavant je ne vérifiais que les fichiers qui étaient updatés (en windev toujours les memes) avec la commande "FileGetTime".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#4

Message par Tlem »

Le problème, c'est que votre lanceur cherche une mise à jour à chaque lancement, et cela n'est peut être pas judicieux dans tous les cas (Pas de connexion internet par exemple, ou l'utilisateur préfère telle version, car la nouvelle ne lui convient pas ...).

Dans tous les cas, il est préférable de laisser à l'utilisateur le choix du type de mise à jour (Automatique, ou manuelle).
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é".
sergio
Niveau 2
Niveau 2
Messages : 25
Enregistré le : jeu. 25 oct. 2007 16:14
Status : Hors ligne

#5

Message par sergio »

Tlem a écrit :Le problème, c'est que votre lanceur cherche une mise à jour à chaque lancement, et cela n'est peut être pas judicieux dans tous les cas (Pas de connexion internet par exemple).
Suivant le type de connexion ce n'est peut etre pas judicieux bien que maintenant avec l'ADSL cela coute moins cher que les LS.
Tlem a écrit :ou l'utilisateur préfère telle version, car la nouvelle ne lui convient pas ...).
Pour le choix .... c'est moins evident. Cela dépend du type d'applications. Pour une application métier qui peut générer des erreurs dans une base de données, on ne laisse pas trop la main à l'utilisateur.

Je donnais une piste, (toutes les propositions etaient les bienvenus :P )
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#6

Message par arrkhan »

Re,

Pour la vérification de la connectivité internet, pas de problème perso, j'ai tout prévu ^^

Code : Tout sélectionner

Func _VerifNetSilent()
    Ping("arrkhan.free.fr", 250)
    If @error = 0 Then
        SetError(0) ; net ok
    Else
        SetError(1) ; pas le net
    EndIf
EndFunc   ;==>_VerifNetSilent


_VerifNetSilent()
    If @error = 1 Then
        MsgBox(0, $APPTitle & " - Erreur", "Impossible de se connecter à internet, certaines fonctions ont été grisées.")
        GUICtrlSetState($Send, $GUI_DISABLE)
    EndIf
Je ferai mon updater apres le jour de l'an. Alors avec un peu d'avance Bonne Année
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#7

Message par Tlem »

Si je peut me permettre, j'ai deux remarque :
arrkhan a écrit :Pour la vérification de la connectivité internet, pas de problème perso, j'ai tout prévu ^^
Sauf, que certains utilisateur utilisent un part-feu logiciel, et que il est souvent vu d'un mauvais oeil, un logiciel qui veux ce connecter sur le net sans autorisation !!!

Pour votre code, je n'ai pas souvent vu l'utilisation de SetError(0).
En ce qui me concerne, je ferais plutôt :

Code : Tout sélectionner

Func _VerifNetSilent()
    Ping("arrkhan.free.fr", 250)
    If @error = 1 Then Return 1
EndFunc   ;==>_VerifNetSilent


If _VerifNetSilent() Then
    MsgBox(0, $APPTitle & " - Erreur", "Impossible de se connecter à internet, certaines fonctions ont été grisées.")
    GUICtrlSetState($Send, $GUI_DISABLE)
EndIf
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
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

#8

Message par arrkhan »

c'est pas faux, je n'ai vu l'utilite de return qu'il y a quelque jours, et il est vrai que le reste des mes func l'utilise...

pour la connection au net, l'utilisateur a le choix d'autoriser ou non dans le pare feu.
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

#9

Message par Voodoo »

Effectivement dans Forumcolor, il y a un executable qui s'occupe de l'update.

Je ne sais pas si j'emploie la technique la plus fonctionnel mais sa peut toujours servir.

Il faut crée un repertoire sur ton ftp avec une architecture identique à ton application installé. Ensuite ton updater va telecharger un fichier *.ini. C'est rapide (2-3ko), ce fichier ini contient les informations de mise à jour. Il y a différent moyen de le faire mais le plus important est qu'il doit contenir les noms des fichiers à mettre à jour. L'updater selectionne suivant la version de l'installation les fichiers et lance le telechargement en ecrasant directement les fichies installés.

Si il faut mettre a jour l'updater, cela est specifié dans le *.ini alors l'updater telecharge un updater_2. Il crée un fichier *.bat qui va s'occuper de l'autodestrction dé l'updater et du renomage de updater2.

En faite une fois le fichier *.ini fait et interprété, il ne reste plus qu'a faire les inetget !

et si je peut donner un conseil, le module update merite un executable à part. Car il y a une partie gestion des erreurs assez importantes ce qui ne vaut pas le coup de scracher l'application principale alors que le ftp est peut etre down !

Bon code !
Répondre