2010-10-04 8 views
8

J'écris une série de programmes pour PC clients -Mise à jour automatique des programmes C#

  • un service Windows
  • Windows espace utilisateur application de formulaires

Je dois être capable de publier une version mise à jour de ces programmes et d'avoir les ordinateurs clients automatiquement et de manière transparente (sans intervention de l'utilisateur) se mettre à jour. Cette mise à jour sera effectuée via une connexion 3G non fiable (EvDO). Les applications seront en cours d'exécution, de sorte que la mise à jour devra arrêter normalement le service/fermer les applications, puis les relancer après la mise à jour. Avant de consacrer du temps à ma propre solution, existe-t-il des solutions préexistantes pour quelque chose de similaire?

Remarque: ClickOnce ne fonctionne pas ici à cause du service Windows et pour plusieurs autres raisons. Je ne peux pas non plus profiter du BITS parce que je cours avec Windows Azure, qui n'a pas le plugin BITS IIS. Pourquoi ne pas envisager de dupliquer les clichés instantanés?

Répondre

9

copie Ombre permet des assemblages qui sont utilisés dans un domaine d'application à être mis à jour sans décharger le domaine d'application . C'est particulièrement utile pour les applications qui doivent être disponibles en continu, tels que les sites ASP.NET.

Rendez les programmes très simples. Puis demandez-leur de regarder (FileWatcher) pour les mises à jour du dossier où ils ont été chargés (et où les mises à jour sont livrées). Puis rechargez dynamiquement le AppDomain. Pour plus d'informations, voir here et here.

Vous pouvez utiliser les propriétés de la classe AppDomainSetup comme suit pour configurer un domaine d'application pour la copie d'ombre:

Activer la copie d'ombre en définissant la propriété de ShadowCopyFiles à la valeur chaîne « true » . Par défaut, ce paramètre entraîne la copie de tous les assemblages du chemin d'application dans un cache de téléchargement avant leur chargement. Ce est le même cache maintenu par le Common Language Runtime pour stocker les fichiers téléchargés ...

+0

Cela semble vraiment prometteur. Je vais y regarder et revenir vers vous. –

+1

J'ai oublié d'ajouter que nous avons déjà utilisé cela dans le passé pour nous permettre de mettre à jour des services avec de nouvelles DLLs sans avoir à les éteindre. –

Questions connexes