2011-01-04 7 views
0

Wie kann eine Anwendung am besten auf eine neue Version aktualisiert werden? Details:So implementieren Sie eine nicht beschädigte, sich selbst aktualisierende Anwendung

  • Es ist eine eigenständige WPF/C# Windows-Anwendung auf .NET 3.5.
  • Die Anwendung wird automatisch beim Windows-Start gestartet.
  • Die Anwendung läuft auf einem Touchscreen-Panel-PC ohne Netzwerk-/Internetzugang.
  • Der Benutzer darf nicht auf Windows zugreifen und hat keine Tastatur (think kiosk)
  • Eine neue Version der Anwendung kann von einem USB-Laufwerk installiert werden. Der Benutzer hat Zugriff auf eine Schaltfläche "Software aktualisieren", die auf dem USB-Stick nach neuen Softwareversionen sucht und sich automatisch aktualisiert.

Ich dachte an die Anwendung schließen sich selbst, dann starten Sie den Updater auf schließen. Ich muss nur vermeiden, dass die neue Installation unterbrochen wird, die Anwendung beschädigt ist und der Kiosk nicht mehr verwendbar ist. Haben Windows-Installer Schutz vor diesem Szenario?

Vielen Dank im Voraus!

+0

Ist die Anwendung nur eine Exe, oder gibt es zusätzliche Dateien, die versionsabhängig sind? –

+0

@Tyler: Es gibt mehrere Dateien ... DLLs etc. – BabaBooey

Antwort

1

In diesem Fall ist der beste Weg, es zu tun, einen neuen Ordner zu erstellen, die neue Version zu extrahieren und schließlich die zwei Ordner umzubenennen, und nach dem Austausch löschen Sie die alte Version. Die Umbenennungen sollten atomar sein, so dass die alte Version nicht berührt wird, bis das Upgrade abgeschlossen ist.

+0

In Ihrer Lösung, wer ist verantwortlich für die Umbenennung der Verzeichnisse als der letzte Schritt? Die Host-App (die zu aktualisierende und zu löschende) kann dies nicht, da sie ihr eigenes Verzeichnis nicht umbenennen kann. Es scheint so, als müsste die Host-App zuerst geschlossen werden, dann erledigt ein Updater die Arbeit. Kann eine Windows Installer-Anwendung (über Visual Studio) mit diesen zusätzlichen Schritten erstellt werden oder muss eine benutzerdefinierte App geschrieben werden, um Dateien manuell zu kopieren und das Umbenennen/Löschen von Verzeichnissen durchzuführen? – BabaBooey

Verwandte Themen