把任何运行程序安装为windows服务

本文目的

公司需求用到把命令行程序作为windows服务运行,不允许出现令人烦恼的小黑框。遂开始搜查该方面的工具,于是乎便记录下来谨防忘记。

1. 需求

单独的jar包程序,python脚本,以及任何可以用命令启动运行事物安装为windows服务程序,以实现开机自启。

2. 如何实现

在github上一个3k多个star的项目,作者是kohsuke,下载链接:点击下载

若是windows10系统,建议下载最新版


笔者在这里下载了2.4.0版本作为说明示例。目录中,两个exe文件,一个是.net2版本,一个是.net4版本。pom是开发依赖库,不用在意它。


除了一个可执行文件外,还需要一个配置文件,最新的版本中配置文件也是和老版的一样是xml形式。较大的不同是新版的根节点是,而老版本的是下面是几个基本配置项。

     yourself service id 

    yourself service name

    This service runs Jenkins continuous integration system.

     name="JENKINS_HOME" value="%BASE%"/>

    java

    -Xrs -Xmx256m -jar "my_winsw.jar" --httpPort=8080

    rotate

重要的参数:

i. executable:运行命令,可以写全路径。若是配置了env,则会自动扫描该环境变量,只用命令即可。

ii. arguments: 运行参数,除了命令之外的参数都可以写在这里。

iii. logmode: 日志记录模块,详细看这里

这两个文件弄好之后,放在同一目录(c:\example)下。exe文件推荐改为与自己服务相关的名称。接下来是安装服务。我的exe改名为my_winsw.exe.

以管理员身份打开黑色命令行窗口,切换到c:\example,执行

my_winsw.exe install

启动服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行

net start "your_service_id"

停止服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行 

net stop "your_service_id"

重启服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行 

net restart "your_service_id"

3. 优化

我们发现每次都要去打开命令行窗口才能对服务进行一些操作,很是麻烦。既然都是命令行,我们不妨把安装,启动,停止,重启等都保存为批处理文件。

重要:

在命令行中获取管理员权限

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"

例如安装.bat

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"

my_winsw.exe install

最后我们的目录呈一下状态:


至此完成,windows服务的安装。

你可能感兴趣的:(把任何运行程序安装为windows服务)