Ich schreibe eine Reihe von Programmen für Client-PCs -
Ich muss in der Lage sein, eine aktualisierte Version dieser Programme zu veröffentlichen und die Client-PCs automatisch und transparent (ohne Benutzerinteraktion) selbst aktualisieren zu lassen. Dieses Update wird über eine unzuverlässige 3G-Verbindung (EvDO) durchgeführt. Die Anwendungen werden ständig ausgeführt, daher muss das Update den Dienst ordnungsgemäß herunterfahren / die Anwendungen schließen und nach dem Update erneut hochfahren.
Bevor ich meine eigene Lösung in die Rollen bringe, gibt es bereits existierende Lösungen für etwas Ähnliches?
Hinweis: ClickOnce funktioniert hier aufgrund des Windows-Dienstes und aus mehreren anderen Gründen nicht. Ich kann BITS auch nicht nutzen, weil ich gegen Windows Azure läuft, dem das BITS IIS-Plugin fehlt.
Warum nicht Schattenkopie in Betracht ziehen?
Schattenkopieren ermöglicht Baugruppen, die werden in einer Anwendungsdomäne verwendet aktualisiert werden, ohne die Anwendungsbereich. Das ist besonders nützlich für Anwendungen das muss ständig verfügbar sein, wie ASP.NET-Sites.
Machen Sie die Programme zu sehr einfachen Shells. Lassen Sie sie dann (FileWatcher) nach Updates für den Ordner sehen, aus dem sie geladen wurden (und wo Updates bereitgestellt werden). Laden Sie dann die AppDomain dynamisch neu.
Siehe hier und hier für weitere Informationen.
Sie können die Eigenschaften des AppDomainSetup-Klasse wie folgt zu Konfigurieren Sie eine Anwendungsdomäne für Schattenkopieren:
Aktivieren Sie die Schattenkopie, indem Sie die Option ShadowCopyFiles-Eigenschaft für die Zeichenfolge Wert "wahr". Standardmäßig diese Einstellung verursacht alle Assemblys in der Anwendungspfad, der in a kopiert werden soll Lade den Cache herunter, bevor sie geladen werden. Dies ist derselbe Cache, der von verwaltet wird die Common Language Runtime zu speichern Dateien heruntergeladen ...
Zwei der besten Ressourcen, auf die ich gestoßen bin (beide verwenden BITS, die mit einer unzuverlässigen Verbindung umgehen können).