Existe-t-il un moyen de créer un exécutable à mise à jour automatique dans Windows?

Je voudrais produire un exécutable qui pourrait faire une vérification de mise à jour avant de le charger, puis, s’il y a une mise à jour, je voudrais qu’il remplace son fichier et qu’il soit rechargé.

Je pense que ce serait mieux que d’avoir un exe “updater” séparé, parce que si le programme de mise à jour doit être mis à jour?

Il est impossible pour moi d’avoir des dossiers partagés sur le réseau.

https://stackoverflow.com/questions/264788/can-i-update-a-exe-that-is-running-closed

Oui, vous pouvez avoir le téléchargement exfile lui-même. Renommez simplement l’exe en cours d’exécution en .bak, téléchargez le nouvel exe en .exe, puis redémarrez l’application.

La clé ici est que vous ne pouvez pas télécharger la nouvelle version sur l’ancienne version lorsque le programme est en cours d’exécution, et la solution est que vous pouvez renommer le fichier exécutable et ensuite télécharger le nouveau avec le même nom que le fichier exécutable avant le renommage . Alors c’est juste une vérification de la taille de l’exe téléchargé: un redémarrage du programme et vous êtes prêt!

L’exécutable n’a pas pu remplacer son propre fichier mais il peut télécharger le nouvel Exe à un emplacement ou un nom de fichier connu dans le même répertoire, puis lancer, à la sortie, un processus modifiant le fichier. court.

Si vous y réfléchissez, il s’agit là d’une meilleure approche, car vous ne pouvez pas être sûr que le téléchargement du fichier sera terminé. Même si vous le pouviez, voudriez-vous vraiment faire patienter l’utilisateur jusqu’à la fin du téléchargement? Non … mieux vaut laisser le téléchargement s’exécuter en arrière-plan.

Si vous faites une application .NET et que vous avez besoin de quelque chose de simple. Microsoft a un clic une fois le déploiement qui fait ce que vous recherchez. Avant d’utiliser le déploiement ClickOnce, j’ai développé un programme de mise à jour de base. L’exécution a eu lieu, au démarrage du programme, il a vérifié une nouvelle version des fichiers sur un thread d’arrière-plan. Si une mise à jour était disponible, elle serait téléchargée sur ce thread d’arrière-plan. Si la mise à jour était pour l’exécutable du programme de mise à jour, je remplacerais l’exécutable. Sinon, je signalerais à l’utilisateur qu’une mise à jour est prête à être installée. Ils sauvegardent leur travail et cliquent sur le bouton de mise à jour. Cela exécutera l’exécutable updater qui a remplacé les fichiers et a redémarré le programme. C’était très simple, mais ne faisait pas bien les mises à jour incrémentielles ou les versions. J’ai également fourni une fonctionnalité de restauration, de sorte que les fichiers remplacés ont été conservés au cas où l’utilisateur souhaiterait revenir à la version précédente. Je n’ai pas gardé d’historique de versions. Au lieu de cela, j’ai supposé que la dernière version était une bonne version.