Sie haben ein paar Optionen:
Sie können eine andere Anwendung .exe verwenden, um die automatische Aktualisierung durchzuführen. Dies ist wahrscheinlich die beste Methode.
Sie können die Programm-Exe auch umbenennen, während sie ausgeführt wird. Daher können Sie die Datei von einem Update-Server abrufen und ersetzen. Beim nächsten Start des Programms wird die neue .exe verwendet. Sie können die umbenannte Datei beim Start löschen.
Es macht es einfacher, wenn Sie eine sekundäre App haben, die ausgeführt wird, um die Aktualisierungen durchzuführen. Sie würden die App "Updater" ausführen und dann darin warten, bis der andere Prozess beendet wird. Wenn Sie Zugriff auf die regulären Apps-DLLs usw. benötigen, diese aber auch aktualisiert werden müssen, können Sie den Updater von einem sekundären Speicherort mit bereits aktualisierten DLLs ausführen, damit sie nicht am ursprünglichen Speicherort verwendet werden.
Es wäre wirklich hilfreich zu wissen, über welche Sprache wir hier sprechen. Ich bin mir sicher, dass ich Ihnen in PowerBuilder oder Cobol einige wirklich gute Tipps geben kann, aber das ist vielleicht nicht das, wonach Sie suchen! Wenn Sie Java jedoch sprechen, dann könnten Sie einen heruntergefahrenen Haken verwenden - funktioniert gut für mich.
Eine andere Sache, die man beachten sollte, ist, dass die meisten der "großen" Apps, die ich benutzt habe (FileZilla, Paint.NET, etc.), die Updater die vorherige Version der App deinstallieren und dann eine Neuinstallation von die neue Version der Anwendung.
Ich verstehe, dass dies nicht für wirklich große Anwendungen funktionieren wird, aber dies scheint ein "bevorzugter" Prozess für die kleinen bis mittleren Anwendungen zu sein.
Wir haben so etwas in unserer vorherigen App gemacht. Wir haben die Beendigung des Programms (in .NET 2.0) entweder über die X- oder die Schließen-Schaltfläche erfasst und dann einen Hintergrundaktualisierungsprozess gestartet, den der Benutzer nicht gesehen hat. Es würde den Server (Client-Server-App) auf ein Update prüfen, und wenn es einen gab, würde es im Hintergrund mit BITS herunterladen. Dann beim nächsten Öffnen der Anwendung würde es erkennen, dass es eine neue Version gab (wir setzten ein Flag) und eine Nachricht aufwarf, die den Benutzer auf die neue Version aufmerksam machte, und eine Schaltfläche zum Klicken, wenn sie die hinzugefügten neuen Funktionen sehen wollten zu dieser Version.
Wenn Sie eine .NET-Anwendung schreiben, sollten Sie ClickOnce verwenden. Wenn Sie einiges an Anpassung benötigen, können Sie sich woanders umsehen.
Wir haben einen externen Prozess, der die Aktualisierung für uns durchführt. Wenn es ein Update findet, lädt es es in einen sekundären Ordner herunter und wartet dann darauf, dass die Hauptanwendung beendet wird. Beim Beenden ersetzt es alle aktuellen Dateien. Der primäre Prozess startet den Aktualisierungsprozess nur alle 4 Stunden. Da der Aktualisierungsprozess auf das Beenden der primären App wartet, muss die primäre App keine spezielle Verarbeitung durchführen, außer dass sie die Aktualisierungsanwendung startet.
Dies ist ein Nebenproblem, aber wenn Sie Ihren eigenen Update-Prozess schreiben möchten, würde ich Sie ermutigen, die Art der Komprimierung zu untersuchen, um (1) beim Download zu sparen und (2) eine Datei bereitzustellen ein Update-Server.
Hoffen Sie, dass das Sinn macht!