8
votes

Quel est le moyen le plus simple de mettre à jour un service Windows .Net en production?

Dites, vous avez un service Windows personnalisé installé sur un serveur. Le service est écrit à l'aide de .NET, et il est installé à l'aide de l'installation d'installation, d'un package MSI ou de la gantEdInstallerClass (si cela fait une différence, choisissez celui qui résout le problème). Régulièrement, vous devrez déployer des modifications au service et, bien sûr, vous souhaitez que cela soit aussi simple que possible.

est-il "sûr" pour arrêter le service, remplacer le fichier .exe et redémarrer le service? Ou devriez-vous devoir désinstaller et réinstaller avec le nouveau fichier .exe? Serait-il plus facile si la partie "évolutive" du service était divisée en un assemblage séparé? Existe-t-il des outils ou des API qui pourraient être utiles dans le développement ou le déploiement du service?


0 commentaires

3 Réponses :


12
votes

Je viens d'arrêter le service et de remplacer l'EXE; C'est sûr de faire ça.

Vous pouvez l'avoir afin que votre service commence à charger des modules et de développer votre système de cette façon; Cela fonctionnerait, mais cela peut être trop compliqué, ou non, en fonction de ce que vous voulez faire exactement.


3 commentaires

C'est plus facile, après l'enregistrement d'installation d'installation, il n'y a plus besoin de faire quelque chose que de ré-copier les fichiers.


Cela fonctionne bien si certains paramètres pertinents dans le programme d'installation de service sont modifiés, par ex. Compte d'utilisateur, etc. Bien sûr, le service peut toujours exécuter, mais avec des réglages différents de ceux attendus.


Divo: Vous avez raison, j'ai négligé de mentionner cela. Il vaut la peine de noter, mais dans la pratique, ces types de choses changent rarement entre les versions des applications.



5
votes

Arrêtez simplement le service, remplacez l'EXE et redémarrez-le. Cela devrait probablement faire partie de votre installateur. Le séparant en assemblages séparés uniquement pour la réinstallation est un trou de lapin.


0 commentaires

2
votes

Pour mettre à jour des services, nous utilisons des packages MSI (si nous fournissons un programme d'installation à nos clients de toute façon) ou un script court qui gère l'arrêt et la désinstallation de l'ancienne version du service, puis copie, installe et démarre la nouvelle version.

Pour scripter le déploiement des services locaux Vous pouvez utiliser des commandes Windows standard telles que net Démarrage et NET STOP en combinaison avec InstallUtil , pour Déploiement à distance Vous pouvez par exemple Utilisez Psexecute et PSService de Sysinternals.


2 commentaires

Une raison particulière que vous choisissez de désinstaller et de réinstaller? Est-il juste de se protéger des modifications possibles aux "paramètres de l'installateur de service"? (cf. Votre commentaire sur la réponse de Silky)


Oui, c'est juste une manière plus propre par exemple. au cas où le nom de service a été modifié. Sans désinstaller / réinstaller, vous pourriez obtenir des entrées étatiques dans le registre.