Automatische Aktualisierung von C # -Programmen

8

Ich schreibe eine Reihe von Programmen für Client-PCs -

  • ein Windows-Dienst
  • eine Windows Forms-Anwendung für Benutzerbereiche

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.

    
David Pfeffer 04.10.2010, 02:28
quelle

2 Antworten

9

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 ...

    
Preet Sangha 04.10.2010, 02:38
quelle
2

Zwei der besten Ressourcen, auf die ich gestoßen bin (beide verwenden BITS, die mit einer unzuverlässigen Verbindung umgehen können).

Keith Blows 04.10.2010 07:22
quelle

Tags und Links