使用WinSW安装Windows服务

背景

配置Jenkins Windows节点时,需要手动执行命令启动服务,每次手动启动很麻烦,写成批处理文件放在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp目录下,可以开机启动,但是会显示一个命令号窗口,且不能关闭,因此需要使用将命令行程序配置成程序用于后台运行,winsw工具可以吧命令行程序注册服务

下载

winsw下载地址

github上下载releases版本,我是Windows10电脑,下载了下图中WinSW.NET461.exe

image-20211213103850206

将下载的文件复制到需要安装服务的目录下,同时为了方便修改文件名为winsw.exe

配置文件winsw.xml

文件官网例子如下

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
  <logmode>rotate</logmode>
</service>

相关内容修改如下,我这里是添加jenkins节点agent服务,为了不用每次都需要手动启动,且会有cmd窗口,配置服务如下

<service>
  <id>jenkins_agent</id>
  <name>jenkins_agent</name>
  <description>jenkins节点agent服务</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-jar agent.jar -jnlpUrl http://****/computer/auto_test_environment/jenkins-agent.jnlp -secret 24ef6afb619b73f8bfd12fc04c381436f49a58461321a197b2e98b595a6abc5f -workDir "D:\jenkins"</arguments>
  <logmode>reset</logmode>
</service>
注册

编写好配置文件之后,记得把配置文件和可执行文件放在一起,这样winsw才能正确识别配置文件。然后我们使用管理员省份打开cmd窗口,然后输入下面的命令,如果返回值为0,说明已将程序注册为服务。

C:\Windows\system32>d:
D:\>cd jenkins/agent
D:\jenkins\agent>winsw.exe install
查看

然后打开windows服务查看到已安装的服务

image-20211213130423478

启动类型设置为自动类型并点击启动,则windows服务即启动成功了,且每次重启电脑都会自动启动该服务。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐