Je veux que mon Windows en C# Service de mise à jour automatique de lui-même
Est-il un cadre qui peut être utilisé pour activer un Windows en C# Service pour vérifier automatiquement pour une version plus récente et se mettre à niveau? Je peux certainement écrire du code pour ce faire, mais je suis à la recherche d'un cadre qui a déjà été mis en œuvre et (plus important encore) testé.
[modifier]
Voici un lien vers une question similaire, avec des liens vers des projets modernes que nous aider à accomplir cette: Mise à jour automatique de la bibliothèque pour le .NET?
- Je viens de trouver un post de blog "la Création d'une Auto-mise à jour de l'Application dans .NET/C#" (nerdparadise.com/tech/csharp/autoupdatingapp) avec un lien vers le code. C'est pour une application, plutôt que d'un service, mais je parie qu'il pourrait facilement être mis à jour pour fonctionner.
Vous devez vous connecter pour publier un commentaire.
Le seul moyen de décharger les types est de détruire l'appdomain. Pour ce faire, il faudrait une séparation de votre couche d'hébergement de votre service d'exécution de code c'est assez complexe. (un peu comme faire de la chirurgie de trou de la serrure)
Peut être plus facile de soit a) d'exécuter une tâche ou b) en service de détecter les mises à jour puis de lancer un autre processus qui arrête le service, les mises à jour, etc assemblées. puis il redémarre.
Si vous êtes intéressé dans l'ancien, le MSDN modèles et des pratiques folkloriques écrit une application de mise à jour de bloc que vous puissiez vous adapter à votre service.
https://web.archive.org/web/20080506103749/http://msdn.microsoft.com/en-us/library/ms978574.aspx
Je ne suis pas au courant des Cadres susceptibles de faciliter des solutions à ce problème spécifique.
Ce que vous pouvez essayer est bien de séparer la logique métier du service de l'actuel code de service dans les différentes assemblées. Le service de l'assemblée vérifier les mises à jour de la logique métier de l'assemblée, à intervalles réguliers, de les copier à partir d'une source distante, si nécessaire, retirez le vieux BL assemblée (et peut-être supprimer), puis charger dynamiquement la nouvelle version (déchargement de l'ancienne assemblée n'est pas une tâche triviale).
Une autre solution possible est d'avoir un autre service qui s'exécute, s'arrête de l'autre, si il y a une mise à jour et les mises à jour du service. Vous ne pouvez pas avoir un service de mise à jour lui-même, car l' .dll qui est en cours d'exécution ne s'arrêtera pas.
Séparant la couche de logique serait une bonne option. Vous pouvez également réécrire le principal service à exécuter en vertu de la réflexion par un master ou un service de contrôle. Ceci est similaire à séparant la logique métier, et il serait tout simplement exiger l'arrêt d'un thread et le départ à nouveau.
Je ne connais pas connue cadre qui fait cela. Je l'ai fait moi-même, mais ce n'est pas un cadre public.
J'ai été en utilisant WyBuild pour mettre à jour mes applications (y compris les services de Windows) et c'est assez impressionnant. Très facile d'utilisation, et vraiment facile à intégrer avec les applications existantes. C'est une très grande mise à Jour Automatique de cadre...
http://wyday.com/wybuild/help/automatic-updates/windows-services-console-apps.php
http://wyday.com/wybuild/help/silent-update-windows-service.php
Notez qu'il est payé cadre de la licence est par développeur, un essai gratuit est inclus)
Au cas où quelqu'un d'autre est à la recherche de cela; j'ai trouvé ce lien intéressant. Je n'ai pas mis en œuvre cette solution, mais il semble que cela pourrait fonctionner pour moi
http://www.eggheadcafe.com/articles/20041204.asp
Pourriez-vous préciser votre question un peu? Je suis un peu confus, car autant que je sache,
vous pouvez toujours remplacer les Dll utilise le service. La copie et redémarrez le service peut facilement être fait partie de vous, processus de construction.