[R] Updater
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Updater
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...
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...
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
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.
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é".
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é".
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".
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".
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
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).
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é".
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é".
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 :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).
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.Tlem a écrit :ou l'utilisateur préfère telle version, car la nouvelle ne lui convient pas ...).
Je donnais une piste, (toutes les propositions etaient les bienvenus

Re,
Pour la vérification de la connectivité internet, pas de problème perso, j'ai tout prévu ^^
Je ferai mon updater apres le jour de l'an. Alors avec un peu d'avance Bonne Année
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
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Si je peut me permettre, j'ai deux remarque :
Pour votre code, je n'ai pas souvent vu l'utilisation de SetError(0).
En ce qui me concerne, je ferais plutôt :
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 !!!arrkhan a écrit :Pour la vérification de la connectivité internet, pas de problème perso, j'ai tout prévu ^^
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é".
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é".
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 !
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 !