Windows Service Wrapper 一个将可执行文件封装为windows服务的工具

WinSW是一个可执行二进制文件,可用于包装和管理作为Windows服务的自定义进程。下载安装包后,您可以将 WinSW.exe 重命名为任何名称,例如 MyService.exe 。

支持的平台

WinSW提供了.NET Framework 2.0、4.0和4.6.1的可执行文件。它可以在安装了这些版本的.NET Framework的Windows平台上运行。对于没有.NET Framework的系统,该项目提供了基于.NET Core 3.1的本机64位和32位可执行文件。

下载

可选下载地址:

CI builds are available on Azure Pipelines.
NuGet. (2.x)

用法

WinSW通过配置文件(提供xml和yaml两种格式)的方式进行管理: Main XML configuration file 和 Main YAML configuration file .

配置完成后,可配合以下命令进行windows服务的安装、启动、停止等操作:

install 将服务安装到Windows Service Controller.
uninstall 卸载服务和上面相反的操作。
start 启动服务,该服务必须已经安装。
stop 停止服务。
stopwait 停止服务并等待,直到它实际上停止为止。
restart 重新启动服务。如果该服务当前未运行,则此命令的作用类似于start。
status 检查服务的当前状态。
大多数命令都需要管理员权限才能执行。

执行格式: MyService.exe install

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>
  <log mode="roll"></log>
</service>

nginx示例:

<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <executable>D:\WebServer\nginx-1.12.2\nginx.exe</executable>
  <logpath>D:\WebServer\nginx-1.12.2\</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-p</startargument>
  <startargument>D:\WebServer\nginx-1.12.2\</startargument>
  <stopexecutable>D:\WebServer\nginx-1.12.2\nginx.exe</stopexecutable>
  <stopargument>-p</stopargument>
  <stopargument>D:\WebServer\nginx-1.12.2\</stopargument>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>

配置2:

<service>
	<id>nginxSzGas</id>
	<name>nginxSzGas</name>
	<description>XXX项目</description>
	<logpath>C:\ShenZhenGasProject\nginx</logpath>
	<logmode>roll</logmode>
	<depend></depend>
	<executable>C:\gas\nginx\nginx.exe</executable>
	<stopexecutable>C:\gas\nginx\nginx.exe -s stop</stopexecutable>
</service>

备注: WinSW.exe 和对应的xml配置文件进行重命名时采用相同的文件名。如: myserver.exe myserver.xml

官方仓库地址

地址

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个Windows Service Wrapper与批处理文件的例子是使用Apache Commons Daemon的Procrun来封装一个Java应用程序作为Windows服务运行。以下是具体步骤: 1. 下载并解压缩Apache Commons Daemon的二进制文件 2. 创建一个批处理文件,命名为“install.bat”,并将以下命令添加到文件中: ``` @echo off set SERVICE_NAME=MyService set PR_INSTALL=C:\path\to\commons-daemon-1.2.2-bin-windows\prunsrv.exe set PR_DESCRIPTION=My Service Description set PR_DISPLAYNAME=My Service Display Name set PR_LOGPREFIX=MyService set PR_LOGPATH=C:\path\to\logs set PR_STDOUTPUT=C:\path\to\logs\stdout.log set PR_STDERROR=C:\path\to\logs\stderr.log set PR_CLASSPATH=C:\path\to\my\jar\file.jar set PR_STARTCLASS=com.example.MyServiceMainClass set PR_STARTMETHOD=start set PR_STOPCLASS=com.example.MyServiceMainClass set PR_STOPMETHOD=stop set PR_JVM=auto set PR_JVMMS=256 set PR_JVMMX=1024 set PR_JVMSS=4000 set PR_JVMOPTIONS=-Dfile.encoding=UTF-8 %PR_INSTALL% //IS//%SERVICE_NAME% ^ --DisplayName="%PR_DISPLAYNAME%" ^ --Install="%PR_INSTALL%" ^ --LogPath="%PR_LOGPATH%" ^ --LogPrefix="%PR_LOGPREFIX%" ^ --StdOutput="%PR_STDOUTPUT%" ^ --StdError="%PR_STDERROR%" ^ --Jvm="%PR_JVM%" ^ --JvmMs="%PR_JVMMS%" ^ --JvmMx="%PR_JVMMX%" ^ --JvmSs="%PR_JVMSS%" ^ --Classpath="%PR_CLASSPATH%" ^ --StartClass="%PR_STARTCLASS%" ^ --StartMethod="%PR_STARTMETHOD%" ^ --StopClass="%PR_STOPCLASS%" ^ --StopMethod="%PR_STOPMETHOD%" ^ --Description="%PR_DESCRIPTION%" ^ ++JvmOptions=%PR_JVMOPTIONS% pause ``` 3. 将上述命令中的参数替换为您的应用程序的实际值,并运行install.bat文件,以安装服务。 4. 创建一个批处理文件,命名为“uninstall.bat”,并将以下命令添加到文件中: ``` @echo off set SERVICE_NAME=MyService set PR_INSTALL=C:\path\to\commons-daemon-1.2.2-bin-windows\prunsrv.exe %PR_INSTALL% //DS//%SERVICE_NAME% pause ``` 5. 运行uninstall.bat文件,以卸载服务。 通过以上步骤,您的Java应用程序现在可以作为Windows服务运行,并使用Procrun作为Windows Service Wrapper
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值