Existe-t-il un moyen rapide de créer, à partir d'un fichier exécutable, un service Windows qui, une fois démarré, le lance?
Pour créer un service Windows à partir d'un exécutable, vous pouvez utiliser sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
Vous devez avoir des guillemets autour du chemin exe
réel et un espace après le binPath=
.
Plus d'informations sur la commande sc
peuvent être trouvées dans Microsoft KB251192 .
Notez que cela ne fonctionnera pas avec n'importe quel exécutable: l'exécutable doit être un service Windows ( implémenter ServiceMain ). Lorsque vous enregistrez un exécutable non-service en tant que service, le message d'erreur suivant s'affiche lors d'une tentative de démarrage du service:
Erreur 1053: le service n'a pas répondu à la demande de démarrage ou de contrôle dans les délais.
Certains outils peuvent créer un service Windows à partir d’exécutables arbitraires autres que des services. Voir les autres réponses pour obtenir des exemples de tels outils.
Utilisez NSSM ( le gestionnaire de service non-sucer ) pour exécuter un fichier .BAT ou un fichier .EXE en tant que service.
nssm.exe install [serviceName]
Extending (Kevin Tong) répond.
Étape 1: Téléchargez et décompressez nssm-2.24.Zip
Étape 2: À partir du type de ligne de commande:
C:\> nssm.exe install [servicename]
il ouvrira l'interface graphique comme ci-dessous (l'exemple est le serveur UT2003), puis parcourez-le simplement jusqu'à: yourapplication.exe
Plus d'informations sur: https://nssm.cc/usage
De nombreuses réponses existantes incluent une intervention humaine au moment de l'installation. Cela peut être un processus sujet aux erreurs. Si de nombreux exécutables doivent être installés en tant que services, la dernière chose à faire est de les faire manuellement au moment de l'installation.
Vers le scénario décrit ci-dessus, j'ai créé serman , un outil de ligne de commande pour installer un exécutable en tant que service. Tout ce dont vous avez besoin d'écrire (et d'écrire une seule fois) est un simple fichier de configuration de service avec votre exécutable. Courir
serman install <path_to_config_file>
va installer le service. stdout
et stderr
sont tous consignés. Pour plus d'informations, consultez le site web du projet .
Un fichier de configuration fonctionnel est très simple, comme illustré ci-dessous. Mais il possède également de nombreuses fonctionnalités utiles telles que <env>
et <persistent_env>
ci-dessous.
<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>
ces extras s'avèrent utiles .. doivent être exécutés en tant que administrateur
sc install <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
Si votre nom de service comporte des espaces, mettez-les entre "guillemets".
J'ai testé un bon produit pour cela: AlwaysUp . Pas gratuit, mais ils ont une période d'essai de 30 jours afin que vous puissiez l'essayer ...