有些程序想随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服务包装程序的更多相关文章

  1. C# 生成windows 服务打包程序

    c# 开发windows服务程序. 一个简单的服务程序示例. 归纳了几点.有不足之处,请赐教. 一.创建服务程序 1. 菜单栏“文件”--->“新建”--->“项目”,在项目类型中选择“w ...

  2. .NET创建一个即是可执行程序又是Windows服务的程序

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  3. C# 创建Windows Service(Windows服务)程序

    本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建一个Windows Service 1)创建Windows Service项目 2 ...

  4. 安装、部署... Windows服务 .net程序 安装 命令

    @echo offInstallutil.exe 程序目录 F:\test\TestWindows.exe 服务程序目录@sc start "服务名称"@sc config &qu ...

  5. C#穿透session隔离———Windows服务启动UI交互程序

    在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...

  6. C# windows服务,解决应用程序开机自启问题

    最近在东营做一个超市购物的项目,业务体量很小,是仅供内部员工使用的内网应用程序,其中涉及一个商品数据同步的winform应用程序,有一个问题就是服务器重启后,必须登录服务器操作系统,手动启动才行,于是 ...

  7. Winsw将jar包部署为windows服务

    1. 下载Winsw https://github.com/winsw/winsw/releases 下载winsw官网上的xml文件和.exe文件 2. 编辑配置文件 创建一个文件夹demo,将所需 ...

  8. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...

  9. C# windows服务制作(包括安装及卸载)

    开篇语 因工作内容需要做一个windows服务,此前并没有相关经验,所以做了一个demo来跑跑这个梗(高手跳过,需要的来踩)- 效果如下:打开服务,可以找到我们新增的一个windows服务,这个dem ...

  10. Nginx添加到windows服务

    在windows平台,把Nginx注册到服务,又可以启动.停止和重启的方法,网上并没找到好的办法. 既然如此,唯有自己写程序实现了 使用C#进行编写,有兴趣的可以下载源码自己改:源码下载(2016-1 ...

随机推荐

  1. leetcode刷题(三)

    1.图论 找到小镇的法官 在一个小镇里,按从 1 到 N 标记了 N 个人.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人.每个人(除了小镇法官外) ...

  2. python容易被忽略的问题

    1.int()强制转换浮点数 在int()的强制转换浮点数时候,不管是正数还是负数,只取整数部分. print(int(6.235)) # 6 print(int(-6.235)) # -6 注意:这 ...

  3. vs2019中添加rdlc的报表设计器

    在Visual studio 2019中,不会默认安装rdlc的报表设计器,所以需要自行添加. 1. 打开VS2019, 找到扩展-->管理扩展 2. 在扩展管理中,点击"联机&quo ...

  4. golang defer关键字

    defer关键字的作用 defer 会在当前函数或者方法返回(return)之前执行传入的函数.它会经常被用于关闭文件描述符.关闭数据库连接以及解锁资源. 在go语言中,程序有defer语句并不会马上 ...

  5. Nacos配置管理

    一.在Nacos添加公共配置 二.项目中读取方式 1. 引入nacos-config依赖 首先,在要使用 nacos 来管理配置的服务中,引入nacos-config 依赖: <!--nacos ...

  6. 一些excel随笔,瞎记一下

    1 使用sumif函数的时候,如果对于一列0求值返回的时候,显示一个英文中的破折号例 "-" ,是数字格式可能设置为了会计专用,改回数值就行,要逗号的话点其他格式里面的数值,找一下 ...

  7. 使用yum快速安装mysql-5.7(用于测试)

    1)CentOS 7 下安装 MySQL 5.7 下载并安装MySQL官方的 Yum Repository [wget -i -c http://dev.mysql.com/get/mysql57-c ...

  8. 8.class 类

    一.基础语法 class 类名 { } 二.类的属性 基础语法: class 类名 { 属性名: 数据类型 = 属性值; contructor(形参名: 数据类型) { this.属性名 = 属性值; ...

  9. Python 自动化中三种等待时间的详解

    1.强制等待 强制等待是最简单的一种等待方式,强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间. 使用方法:time.sleep(X) .在python中是基于t ...

  10. Selinux讲解

    手动开启/关闭/查询 SELINUX状态的方法在Limx操作系统运行过程中无法使用命令停用 SELINUX,可以在内核启动参数或使用修改配置文件的方式去关闭 SELINUX安全机制.若只是要将 SEL ...