kb976932 - ¿Cuál es la forma más fácil de actualizar un servicio.NET Windows en producción?
windows server 2012 r2 service pack 1 x64 download (3)
Para actualizar servicios, utilizamos paquetes MSI (en caso de que proporcionemos un instalador a nuestros clientes de todos modos) o un script corto que maneja la detención y desinstalación de la versión anterior del servicio, y luego copia, instala e inicia la nueva versión.
Para crear scripts para la implementación de servicios locales, puede usar comandos estándar de Windows, como net start
y net stop
en combinación con installutil
, para la implementación remota, puede usar psexecute
y psservice
de SysInternals.
Supongamos que tiene un servicio personalizado de Windows instalado en un servidor. El servicio está escrito usando .NET, y se instala utilizando InstallUtil, un paquete MSI o ManagedInstallerClass (si hace una diferencia, elija el que resuelve el problema). Regularmente, deberá implementar cambios en el servicio y, por supuesto, desea que esto sea lo más fácil posible.
¿Es "seguro" simplemente detener el servicio, reemplazar el archivo .exe y reiniciar el servicio? ¿O tendría que desinstalar y volver a instalar con el nuevo archivo .exe? ¿Sería más fácil si la parte "evolutiva" del servicio se dividiera en un conjunto separado? ¿Hay alguna herramienta o API que pueda ser de ayuda en el desarrollo o la implementación del servicio?
Simplemente detenga el servicio, reemplace el EXE y reinícielo. Esto probablemente debería ser parte de tu instalador. Separarlo en ensamblajes separados por el solo hecho de reinstalarlo es un agujero de conejo.
Solo detengo el servicio y reemplazo el exe; es seguro hacer eso.
Puede tenerlo para que su servicio comience a cargar módulos, y usted desarrolla su sistema de esa manera; funcionaría, pero puede ser demasiado complicado o no, dependiendo de qué es exactamente lo que quieres hacer.