2010-10-04 30 views
8

Piszę pakiet programów dla komputerów klienckich -Automatyczna aktualizacja C# programów

  • usługa Windows
  • użytkownik przestrzeń Windows Forms Application

muszę być mogą publikować zaktualizowaną wersję tych programów i automatycznie aktualizować komputery klienckie w sposób automatyczny i przejrzysty (bez interakcji użytkownika). Ta aktualizacja zostanie wykonana przez niewiarygodne połączenie 3G (EvDO). Aplikacje będą ciągle działać, więc aktualizacja będzie musiała z gracją zamknąć usługę/zamknąć aplikacje, a następnie zakręcić je po aktualizacji.

Zanim spędzę czas na rozwijaniu własnego rozwiązania, czy istnieją jakieś wcześniej istniejące rozwiązania dotyczące czegoś podobnego?

Uwaga: ClickOnce nie działa tutaj z powodu usługi systemu Windows, a także z kilku innych powodów. Nie mogę też korzystać z usługi BITS, ponieważ korzystam z systemu Windows Azure, w którym brakuje wtyczki BITS IIS.

Odpowiedz

9

Dlaczego nie wziąć pod uwagę kopii w tle.

Cień umożliwia kopiowanie zestawów, które są używane w domenie aplikacji do być aktualizowane bez rozładunku domenę aplikacji. Jest to szczególnie przydatne w aplikacjach , które muszą być stale dostępne, , takie jak witryny ASP.NET.

Twórz programy bardzo prostych powłok. Następnie niech obserwują (FileWatcher) aktualizacje folderu, z którego zostały załadowane (i gdzie dostarczane są aktualizacje). Następnie dynamicznie załaduj ponownie AppDomain.

Aby uzyskać więcej informacji, zobacz here i here.

Można użyć właściwości klasy AppDomainSetup w następujący sposób skonfigurować domenę aplikacji do kopiowania cienia:

umożliwić kopiowanie cień przez ustawienie właściwości ShadowCopyFiles do wartości ciąg „true” . Domyślnie to ustawienie powoduje, że wszystkie zestawy w ścieżce aplikacji zostaną skopiowane do pamięci podręcznej pobierania , zanim zostaną załadowane. Jest to ta sama skrzynka utrzymywany przez plików wykonywalnych języka wspólnego przechowywanie plików pobranych ...

+0

To wydaje się bardzo obiecujący. Zajrzę do tego i skontaktuję się z tobą. –

+1

Zapomniałem dodać, że używaliśmy tego w przeszłości, aby umożliwić nam aktualizację usług za pomocą nowych bibliotek dll bez konieczności ich wyłączania. –

Powiązane problemy