从可执行文件创buildWindows服务
有没有什么快捷的方法,给一个可执行文件,创build一个Windows服务,启动时,启动它?
要从可执行文件创buildWindows服务,可以使用sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
您必须在实际的exe
path和binPath=
之后有一个空格。
有关sc
命令的更多信息,请参见Microsoft KB251192 。
请注意,它不适用于任何可执行文件:可执行文件必须是Windows服务( 即实现ServiceMain )。 在将非服务可执行文件注册为服务时,尝试启动服务时会出现以下错误:
错误1053:该服务没有及时响应启动或控制请求。
有一些工具可以从任意的非服务可执行文件创build一个Windows服务,查看这些工具的例子的其他答案。
(Kevin Tong)回答。
第1步:下载并解压缩nssm-2.24.zip
第二步:从命令行input:
C:\> nssm.exe install [servicename]
它将打开如下所示的GUI(示例是UT2003服务器),然后将其简单浏览到:yourapplication.exe
有关更多信息: https : //nssm.cc/usage
许多现有的答案包括安装时的人为干预。 这可能是一个容易出错的过程。 如果你想将许多可执行文件作为服务来安装,最后要做的就是在安装时手动执行它们。
针对上述情况,我创build了serman ,一个命令行工具将可执行文件安装为服务。 所有你需要写的(只写一次)是一个简单的服务configuration文件以及你的可执行文件。 跑
serman install <path_to_config_file>
将安装该服务。 stdout
和stderr
都被logging下来。 有关更多信息,请查看项目网站 。
工作configuration文件非常简单,如下所示。 但它也有许多有用的function,如下面的<env>
和<persistent_env>
。
<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>
这些附加certificate是有用的..需要作为pipe理员执行
sc install <service_name> binpath=<binary_path> sc stop <service_name> sc queryex <service_name> sc delete <service_name>
如果您的服务名称有任何空格,请用“引号”括起来。
我已经testing了一个好的产品: AlwaysUp 。 不是免费的,但他们有一个30天的试用期,所以你可以试试看…
由于某些原因,我无法使用NSSM覆盖可执行目录的path。
这是我所做的服务指向正确的可执行文件。
SC CONFIG YourServiceName binPath =“C:\ SomeDirectory \ YourFile.EXE” 有关更多详细信息