Mise à jour du programme automatique [Résolu]

Signaler
Messages postés
134
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
23 décembre 2009
-
Messages postés
17
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 novembre 2017
-
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

Messages postés
134
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
23 décembre 2009

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 !
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

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 ]}=-
Messages postés
17
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 novembre 2017

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 ...