Mise à jour du programme automatique

Résolu
cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009 - 1 juil. 2009 à 12:38
killedman Messages postés 17 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 novembre 2017 - 1 sept. 2009 à 21:03
Bonjour

Avant de déployer mon application, je veux implémenter une méthode pour mettre à jour l'application (et le fichier de configuration qui va avec).

J'ai réussi à me faire se connecter le soft à un serveur, là il donne mot de passe/identifiant et le serveur lui dit s'il est à jour.

Viens ensuite le problème épineux :
 - est-ce que doit télécharger l'application avec un nom à part "application_maj.exe" puis fermer mon application en lui fessant exécuter un bach qui supprime l'ancien et renomme le nouveau ?
 - est-ce qu'il existe autre chose qui me permet de faire le remplacement "en live" ?

C'est une application un peu confidentiel donc à minima, je souhaite utiliser un système d'identification (et c'est aussi pour fournir au client le fichier de conf qui va bien).
Je ne peux pas non plus utiliser clickonce car c'est une application qui tourne en tâche de fond et que l'utilisateur ne voit même pas.

3 réponses

cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009
1 juil. 2009 à 13:56
A force de chercher, j'ai trouvé ça
http://forum.hardware.fr/hfr/Programmation/CNET-managed/process-fermeture-resolu-sujet_118842_1.htm#t1806043

La solution proposée est de renommé l'exécutable en cours d'exécution, de créer le ficher mis à jour avec le nom normal puis au redémarrage de l'application mis à jour (ou lors d'une nouvelle mise à jour), supprimer l'ancien programme.

Tout simple : j'aime :-)
Reste à gérer quand même les DLL et le tralala mais dans l'ensemble ça me semble comme je veux.

N'hésitez pas si vous avez des remarques !
3
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
19 août 2009 à 08:01
Pile poil ce que je cherchais, merci.

Pour résumer ce qui se dit sur l'autre page :

Supprimer un éxécutable en train d'être éxécuté sous windows est impossible.
Mais, il est possible de le renommer lorsqu'il est en cours d'éxécution.

Le principe est simple :

Importer la nouvelle version de l'executable sous un nom "x".
Renommer l'executable actuel en rajoutant par exemple "_old" a la fin du nom.
renommer x par le nom normal de l'executable.
Utiliser l'instruction Application.Restart().
Lors du demarage de votre application supprimer tous les fichiers se terminant par "_old".

Et le tour est joué.

Pour les dlls il faut faire un peu plus mumuse mais le principe semble être le même.


-={[ Zeroc00l ]}=-
0
killedman Messages postés 17 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 novembre 2017
1 sept. 2009 à 21:03
Hum ...

Je cherche le moyen de faire un système de mise à jours, style windows.

Mais l'astuce semble être une bonne piste.

Me reste à voir pour l'implémentation des mises à jour de la base de donnée.

Quoique ... suffit d'une classe et pas mal de requête SQL ;)


Jérémie ...
0
Rejoignez-nous