Question

Quelle est la meilleure façon de terminer un programme, puis d'exécuter du code supplémentaire à partir du programme en cours d'arrêt ?Par exemple, quelle serait la meilleure façon pour un programme de se mettre à jour automatiquement ?

Était-ce utile?

La solution

Vous avez plusieurs options:

Vous pouvez utiliser une autre application .exe pour effectuer la mise à jour automatique.C'est probablement la meilleure méthode.

Vous pouvez également renommer l'exe d'un programme pendant son exécution.Vous permettant ainsi d'obtenir le fichier à partir d'un serveur de mise à jour et de le remplacer.Au prochain démarrage du programme, il utilisera le nouveau .exe.Vous pouvez ensuite supprimer le fichier renommé au démarrage.

Autres conseils

Ce serait vraiment utile de savoir de quelle langue nous parlons ici.Je suis sûr que je pourrais vous donner de très bons conseils pour faire cela dans PowerBuilder ou Cobol, mais ce n'est peut-être pas vraiment ce que vous recherchez !Si vous parlez de Java, vous pouvez utiliser un hook d'arrêt - cela fonctionne très bien pour moi.

Une autre chose à considérer est que la plupart des applications « majeures » que j'utilise (FileZilla, Paint.NET, etc.) demandent aux programmes de mise à jour de désinstaller la version précédente de l'application, puis de procéder à une nouvelle installation de la nouvelle version. de la demande.

Je comprends que cela ne fonctionnera pas pour les très grandes applications, mais cela semble être un processus « préféré » pour les applications de petite et moyenne taille.

Je ne connais pas de moyen de le faire sans un deuxième programme lancé par le programme principal avant de s'arrêter.Le programme 2 télécharge et installe les modifications, puis relance le programme principal.

Nous avons fait quelque chose comme ça dans notre application précédente.Nous avons capturé la fin du programme (dans .NET 2.0) à partir du bouton X ou du bouton de fermeture, puis avons lancé un processus de mise à jour en arrière-plan que l'utilisateur n'a pas vu.Il vérifierait le serveur (application client-serveur) pour une mise à jour, et s'il y en avait une disponible, il la téléchargerait en arrière-plan à l'aide de BITS.Ensuite, la prochaine fois que l'application s'ouvrirait, elle se rendrait compte qu'il y avait une nouvelle version (nous avons défini un indicateur) et affichait un message alertant l'utilisateur de la nouvelle version, ainsi qu'un bouton sur lequel cliquer s'il souhaitait voir les nouvelles fonctionnalités ajoutées. à cette version.

Cela facilite la tâche si vous disposez d'une application secondaire qui s'exécute pour effectuer les mises à jour.Vous exécuteriez l’application « de mise à jour », puis attendriez à l’intérieur que l’autre processus se termine.Si vous avez besoin d'accéder aux DLL des applications standard et autres, mais qu'elles doivent également être mises à jour, vous pouvez exécuter le programme de mise à jour à partir d'un emplacement secondaire avec des DLL déjà mises à jour afin qu'elles ne soient pas utilisées dans l'emplacement d'origine.

Si vous utilisez l'écriture d'une application .NET, vous pouvez envisager d'utiliser ClickOnce.Si vous avez besoin d’un peu de personnalisation, vous pouvez chercher ailleurs.

Nous disposons d'un processus externe qui effectue la mise à jour pour nous.Lorsqu'il trouve une mise à jour, il la télécharge dans un dossier secondaire, puis attend la fermeture de l'application principale.À la sortie, il remplace tous les fichiers actuels.Le processus principal lance simplement le processus de mise à jour toutes les 4 heures.Étant donné que le processus de mise à jour attendra la sortie de l’application principale, celle-ci n’a pas besoin d’effectuer de traitement spécial autre que le démarrage de l’application de mise à jour.

Il s'agit d'un problème secondaire, mais si vous envisagez d'écrire votre propre processus de mise à jour, je vous encourage à envisager d'utiliser une sorte de compression pour (1) enregistrer lors du téléchargement et (2) fournir un fichier à extraire d'un serveur de mise à jour. .

J'espère que cela a du sens !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top