services - windows service visual studio 2015
Crear servicio de Windows desde ejecutable. (6)
¿Hay alguna forma rápida de, dado un archivo ejecutable, crear un servicio de Windows que, cuando se inicia, lo inicie?
Extendiendo (Kevin Tong) la respuesta.
Paso 1: Descargar y nssm-2.24.zip
Paso 2: Desde la línea de comando escribe:
C:/> nssm.exe install [servicename]
abrirá la GUI como se muestra a continuación (el ejemplo es el servidor UT2003), luego simplemente busque en: yourapplication.exe
Más información sobre: https://nssm.cc/usage
He probado un buen producto para eso: AlwaysUp . No es gratis, pero tienen un período de prueba de 30 días, así que puedes intentarlo ...
Muchas respuestas existentes incluyen la intervención humana en el momento de la instalación. Esto puede ser un proceso propenso a errores. Si tiene muchos ejecutables que desea instalar como servicios, lo último que desea hacer es hacerlo manualmente en el momento de la instalación.
Hacia el escenario descrito anteriormente, creé serman , una herramienta de línea de comandos para instalar un ejecutable como un servicio. Todo lo que necesita escribir (y solo escribir una vez) es un archivo de configuración de servicio simple junto con su ejecutable. correr
serman install <path_to_config_file>
Instalaré el servicio. stdout
y stderr
están todos registrados. Para más información, eche un vistazo a la serman .
Un archivo de configuración de trabajo es muy simple, como se muestra a continuación. Pero también tiene muchas características útiles como <env>
y <persistent_env>
continuación.
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}/hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable to the system.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
Use NSSM ( el administrador de servicios que no chupa ) para ejecutar un archivo .BAT o cualquier archivo .EXE como un servicio.
- Paso 1 : Descargar NSSM
- Paso 2 : instala tu servicio con
nssm.exe install [serviceName]
- Paso 3 : Esto abrirá una GUI que usarás para localizar tu ejecutable
estos extras son útiles ... necesitan ser ejecutados como un administrador
sc install <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
Si el nombre de su servicio tiene espacios, escríbalo entre "comillas".
Para crear un servicio de Windows a partir de un ejecutable, puede usar sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
Debe tener comillas alrededor de la ruta exe
real y un espacio después de binPath=
.
Puede encontrar más información sobre el comando sc
en Microsoft KB251192 .
Tenga en cuenta que no funcionará para cualquier ejecutable: el ejecutable debe ser un Servicio de Windows ( es decir, implementar ServiceMain ). Al registrar un ejecutable que no es de servicio como un servicio, obtendrá el siguiente error al intentar iniciar el servicio:
Error 1053: el servicio no respondió a la solicitud de inicio o control de manera oportuna.
Existen herramientas que pueden crear un Servicio de Windows a partir de ejecutables arbitrarios que no son de servicio. Consulte las otras respuestas para ver ejemplos de dichas herramientas.