首页 > 代码库 > Windows service wrapper 初探

Windows service wrapper 初探

    Windows 服务包装器(Windows service wrapper),用于把.exe文件注册为windows服务。比如把Nginx.exe注册为windows服务,这样做的好处是,每次启动nginx时不用在命令行中输入命令,而且可以随windows系统启动而启动。不用担心服务器意外重启,服务挂掉。
    github地址:https://github.com/kohsuke/winsw
    下载地址:https://github.com/kohsuke/winsw/releases
    目前(2017 年 1 月 11 日)最新版本是2.0.1版。有两种选择,WinSW.NET2.exe安装在.netframework2.0中,WinSW.NET4.exe安装在.netframework4.0中,根据安装环境选择需要下载的文件。如图1
技术分享
    下载完成后,需要通过配置文件进行配置,官方文档中关于XML Configuration File格式似乎不是最新的版本。因为我使用这种配置方法,虽然能够注册为服务,但是不能启动,会报代号为1067的错误。图2中红框中是不正确的xml文件格式,正确的为图1中sample-minimal.xml或sample-allOptions.xml中所示。
    技术分享
使用方法
以WinSW.NET4.exe为例,下载WinSW.NET4.exe,放至待包装的exe文件夹中,它可以自定义名字,比如这里我们命名为nginxservice.exe。图中的.log文件都是启动后自动生成的。
技术分享
最重要的是,要在nginxservice.exe同目录中新建一个同名的xml文件,对其配置。如前所述,该文件的格式在sample-minimal.xml或sample-allOptions.xml中所示。
这里所配置的是最简单的格式,更丰富的配置可以在sample-allOptions中查看。
技术分享
其中id和name不能与系统中其它服务的冲突。
配置完成后,在命令行中进行安装,
nginxservice.exe install
卸载命令:nginxservice.exe uninstall
技术分享
 
安装后运行services.msc打开服务查看器,就能看到该服务
 
技术分享
 
查看它的属性,就是我们在配置文件中的配置信息。
 
技术分享
 
 

Windows service wrapper 初探