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. P>
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? P>
3 Réponses :
Je viens d'arrêter le service et de remplacer l'EXE; C'est sûr de faire ça. P>
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. p>
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.
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. P>
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. p>
Pour scripter le déploiement des services locaux Vous pouvez utiliser des commandes Windows standard telles que net Démarrage code> et
NET STOP code> en combinaison avec
InstallUtil code>, pour Déploiement à distance Vous pouvez par exemple Utilisez
Psexecute code> et
PSService code> de Sysinternals. P>
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.