windows服务包装程序
有些程序想随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 即可
windows服务包装程序的更多相关文章
- C# 生成windows 服务打包程序
c# 开发windows服务程序. 一个简单的服务程序示例. 归纳了几点.有不足之处,请赐教. 一.创建服务程序 1. 菜单栏“文件”--->“新建”--->“项目”,在项目类型中选择“w ...
- .NET创建一个即是可执行程序又是Windows服务的程序
不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...
- C# 创建Windows Service(Windows服务)程序
本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建一个Windows Service 1)创建Windows Service项目 2 ...
- 安装、部署... Windows服务 .net程序 安装 命令
@echo offInstallutil.exe 程序目录 F:\test\TestWindows.exe 服务程序目录@sc start "服务名称"@sc config &qu ...
- C#穿透session隔离———Windows服务启动UI交互程序
在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...
- C# windows服务,解决应用程序开机自启问题
最近在东营做一个超市购物的项目,业务体量很小,是仅供内部员工使用的内网应用程序,其中涉及一个商品数据同步的winform应用程序,有一个问题就是服务器重启后,必须登录服务器操作系统,手动启动才行,于是 ...
- Winsw将jar包部署为windows服务
1. 下载Winsw https://github.com/winsw/winsw/releases 下载winsw官网上的xml文件和.exe文件 2. 编辑配置文件 创建一个文件夹demo,将所需 ...
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...
- C# windows服务制作(包括安装及卸载)
开篇语 因工作内容需要做一个windows服务,此前并没有相关经验,所以做了一个demo来跑跑这个梗(高手跳过,需要的来踩)- 效果如下:打开服务,可以找到我们新增的一个windows服务,这个dem ...
- Nginx添加到windows服务
在windows平台,把Nginx注册到服务,又可以启动.停止和重启的方法,网上并没找到好的办法. 既然如此,唯有自己写程序实现了 使用C#进行编写,有兴趣的可以下载源码自己改:源码下载(2016-1 ...
随机推荐
- Docker中使用Nginx镜像配置HTTPS和HTTP强制使用HTTPS访问(4)
一.前言 上一文章当中说了Docker-Compose管理镜像和容器,本文章介绍使用Docker中Nginx镜像,使用的工具和ubuntu版本在ASP.NET CORE部署在Docker容器中已详细说 ...
- Mysql数据库基础第六章:变量、存储过程与函数
Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...
- ElementUI导航连续点击报错
原因 vue项目中连续多次点击路由, 原因是在路由跳转时不允许同一个路由添加多次 错误解决: 吧vue-router换成3.0版本 import Vue from 'vue' import Route ...
- 【狂刷面试题】GO常见面试题汇总
先给大家推荐一个实用面试题库 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 2.前端技术导航大全 推荐:★★★★★ 地址:前端技术导航大全 3 ...
- cisco的telnet远程登入
Cisco配置telnet登入 拓扑图: IP地址表: 设备 IP地址 PC0 192.168.1.1 Switch0 vlan1:192.168.1.254 1.不需要用户的telnet登入 Swi ...
- PHP压缩二进制流转CSV文件
接口返回的数据是二进制流,需先BASE64解码,再进行解压缩,压缩的文件格式为ZIP,需使用Inflater进行解压,即可得到文件. java demo: 转成PHP代码: 贴上 原始二进制流数据,需 ...
- RabbitMQ-01-使用Java进行简单消息发送与接收
前言 这里使用手动管理jar与使用Maven管理jar两种方式,分别演示消息的发送和接收. 手动管理jar实现消息发送与接收 添加jar amqp-client-5.7.1.jar slf4j-api ...
- Centos 7 部署Kubernetes集群 (基于cri-dockerd)
前言 基础描述 从 k8s 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能 ...
- 其他6-break,continue,exit,return区别
break.continue.exit.return的区别 break 跳出整个循环语句 continue 跳过本次循环,进入下一次循环语句 exit n 退出当前shell,并返回状态值 retur ...
- git连接不上,使用git镜像
github有一个镜像网站:把github替换为kgithub