有些程序想随windows启动而自动运行,这样部署为windows服务是最自然的选择,但是有些第三方的程序,没有提供windows 服务的部署方式,或者自己写的程序,每次都要为部署为windows服务而写一些重复代码。

于是写了一个程序,可以支持将普通的可执行的文件进行一层包装,部署为windows服务,只需要修改些配置就可以重复使用。

github地址      https://github.com/xl711436/Xiaolei.ServicePacker

编译后bin目录下主要包含如下几个文件

其中 InstallService.bat 用于启动服务

UninstallService.bat 用于卸载服务

Xiaolei.ServicePacker.exe  为 服务对应的exe文件,不需要修改

Xiaolei.ServicePacker.exe.config 为对应的配置文件

目前本服务打包程序支持3种模式

1.批处理模式,通过bat 或者其他可执行脚本来开始和结束服务

2.开始,结束参数模式,通过向指定的程序传特定的参数来开始和结束服务

3.结束进程模式, 开始服务时,启动指定的程序,结束服务时,通过配置的进程名称终止指定的进程

示例1: 通过 配置 批处理模式 ,将 tomcat 部署为window服务

1.将编译后的bin 目录下的所有文件 copy到tomcat 的bin目录下

2.其中 InstallService.bat  ,UninstallService.bat,Xiaolei.ServicePacker.exe.config  三个文件中配置服务名称的三个地方,名称必须一样 ,这个名称就是 最终部署的服务的名称

3.在批处理模式,只需要配置Xiaolei.ServicePacker.exe.config 文件中的  StartBatFileName ,StopBatFileName  两个配置项,分别配置 开始服务和结束服务时执行的批处理文件或者脚本文件 ,在当前示例中 ,配置为tomcat中自带的 bat文件即可以

4.执行  InstallService.bat  文件 安装服务,此时服务会根据配置自动安装并启动,访问 localhost:8080 可验证tomcat已经启动

5.当需要卸载时,执行 UninstallService.bat 即可

示例2:  通过启动参数模式,将 nginx 部署为windows服务

1. 将编译后的bin 目录下的所有文件 copy到nginx目录。

2.其中 InstallService.bat  ,UninstallService.bat,Xiaolei.ServicePacker.exe.config  三个文件中配置服务名称的三个地方,名称必须一样 ,这个名称就是 最终部署的服务的名称

3.在启动参数模式,只需要配置Xiaolei.ServicePacker.exe.config 文件中  ExecuteFileName ,StartPara  ,StopPara  三个配置项,分别配置 为服务对应的可执行程序,启动时的参数和结束时的参数,对于ngnix而言,启动时不需要参数,结束时传-s stop 即可。

4.执行  InstallService.bat  文件 安装服务。

5.当需要卸载时,执行 UninstallService.bat 即可

示例3: 结束进程模式模式, 将redis 部署成 windows 服务

1. 下载redis 的 windows 安装包,进行解压

2.其中 InstallService.bat  ,UninstallService.bat,Xiaolei.ServicePacker.exe.config  三个文件中配置服务名称的三个地方,名称必须一样 ,这个名称就是 最终部署的服务的名称

3.在 结束进程模式模,只需要配置Xiaolei.ServicePacker.exe.config 文件中  ExecuteFileName ,StartPara  ,KillProcessName  三个配置项。分别配置 为服务对应的可执行程序,启动时的参数和结束时杀掉的进程名称。对于此示例,分别配置为 redis-server.exe 和redis-server即可。

4.执行  InstallService.bat  文件 安装服务。

5.当需要卸载时,执行 UninstallService.bat 即可

最新文章

  1. zabbix通过第三方插件percona监控mysql数据库
  2. 30款最好的 Bootstrap 3.0 免费主题和模板
  3. ROS BY EXAMPLE 1 -- 环境设置与安装
  4. 设计模式(15)-Facade Pattern
  5. synchronized关键字,Lock接口以及可重入锁ReentrantLock
  6. YEdit
  7. ORACLE SELECT INTO NO_DATA_FOUND问题
  8. 通讯录CoreData数据库实现版
  9. GetWindowText和GetDlgItemText的区别
  10. hbase开放lzo压缩
  11. JavaScript修改Canvas图片
  12. ajax执行顺序问题
  13. Round#534 div.2-B Game with string
  14. 封装curl的get和post请求
  15. AWS免费套餐服务器部署NETCORE网站
  16. iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/
  17. linux 设置默认网关永久
  18. 【HDU1710】树的遍历
  19. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(四)
  20. Mysql count+if 函数结合使用

热门文章

  1. mybatis懒加载
  2. 前端下载图片、pdf、excel、world文件;前端下载图片和pdf文件;前端a标签下载图片和pdf文件;下载文件名称不生效原因
  3. 周练3(php反序列化)
  4. python + pyqt 实现的你下载css背景图片的小工具(最终版)
  5. VS 生成事件 xcopy 报错的解决方法
  6. Mac 压缩软件Keka
  7. 在端点0由GET_REPORT类请求上传报表
  8. java ArrayList 原理
  9. Pytest 插件
  10. dcat-admin在弹框中使用grid的编辑框不提示也不报错