经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
使用NSSM将.exe程序安装成windows服务
来源:cnblogs  作者:MaQaQ  时间:2024/5/6 16:15:58  对本文有异议

1、下载NSSM:NSSM - the Non-Sucking Service Manager

 

2、cmd方式安装服务

将下载的压缩包解压,找到nssm.exe,以管理员身份打开cmd,在cmd中定位到nssm.exe所在路径,执行nssm install 服务名:

 按下enter键会自动弹出nssm的窗体:

 在Application-Application Path中选择你的可执行文件.exe,确认后会自动填入Startup directory,Service name处可以修改服务名

上方选项卡的Details中可以填入显示名称、描述、启动方式,一般默认是自动启动

填写完成后点击右下角的Install service即可。

3、批处理文件方式安装服务

将nssm.exe复制到要打包的程序文件夹中,再在同目录下新建三个txt文本,分别对应安装服务、关闭服务、卸载服务,将后缀名改为bat

  • 右键编辑,安装服务:
  1. REM 创建服务
  2. echo off
  3. echo 即将开始采用nssm安装应用程序为windows服务,请确认以系统管理员身份运行
  4. set servicename=自定义服务名称
  5. REM %~dp0 BAT脚本取当前系统目录命令,API_HOST.EXE为需要包装为服务的应用程序
  6. set app_path="%~dp0程序.exe"
  7. set nssm_path="%~dp0nssm.exe"
  8. REM NSSM复制至系统盘目录,或者 添加 windows 环境变量亦可达到目的
  9. set targetFolder="C:\windows\System32\nssm.exe"
  10. REM 检查NSSM.exe文件是否存在
  11. echo 检查当前目录nssm.exe文件是否存在
  12. if not exist %nssm_path% (
  13. echo %nssm_path% 不存在,请确认
  14. pause
  15. goto exitCode
  16. )
  17. )
  18. echo %nssm_path% 存在,即将检查文件并复制
  19. REM 复制nssm
  20. if not exist %targetFolder% (
  21. copy /y %nssm_path% %targetFolder%
  22. echo 复制nssmwindows系统目录完成
  23. )
  24. echo 即将创建服务 %servicename%
  25. echo ****************************************
  26. REM 判断service 是否存在,若存在,先停止,至删除
  27. echo 检查服务是否存在,存在则停止服务后删除,再安装
  28. sc query|find /i "%servicename%" >nul 2>nul
  29. if not errorlevel 1 (
  30. echo 服务已存在,停止运行服务
  31. echo stop %servicename%
  32. REM NSSM停止服务命令:nssm stop <ServiceName>
  33. nssm stop %servicename%
  34. echo 开始移除服务 %servicename%
  35. echo remove service %servicename%
  36. REM NSSM删除服务命令:nssm remove <ServiceName> confirm
  37. REM 移除命令最后的 confirm 即表示无限弹窗确认,直接移除。
  38. nssm remove %servicename% confirm
  39. echo 移除服务完成
  40. )
  41. echo *********************************
  42. echo 开始创建服务 %servicename%
  43. REM NSSM命令:nssm install <服务名> <服务需要执行的程序>
  44. nssm install %servicename% %app_path%
  45. echo 开始设置服务信息
  46. echo set service property
  47. echo 设置服务显示名称
  48. REM nssm set <ServiceName> DisplayName <ServiceName>
  49. nssm set %servicename% DisplayName %servicename%
  50. echo 设置服务描述
  51. REM nssm set <ServiceName> Description <ServiceName>
  52. nssm set %servicename% Description xxx控制系统
  53. echo 设置服务启动方式为:自动
  54. nssm set %servicename% Start SERVICE_AUTO_START
  55. echo *********************************
  56. echo 启动服务 %servicename%
  57. echo start service %servicename%
  58. nssm start %servicename%
  59. echo 服务创建并启动完成
  60. :exitCode
  61. pause
  1. set servicename=自定义服务名称,这里的自定义服务名称改为你想要的名称
  1. set app_path="%~dp0程序.exe",这里的程序.exe改为你的可执行文件名
  1. %~dp0代表的是当前目录
  • 右键编辑,关闭服务
  1. @echo off
  2. @title 关闭服务
  3. echo= 开始关闭服务!
  4. @echo off
  5. @sc stop 自定义服务名称
  6. @echo off
  7. echo= 关闭服务结束!
  8. @pause
  • 右键编辑,卸载服务
  1. @echo off
  2. @title 删除服务
  3. echo= 开始删除服务!
  4. @echo off
  5. nssm stop 自定义服务名称
  6. nssm remove 自定义服务名称 confirm
  7. @echo off
  8. echo= 删除完成!
  9. @pause
  • 上述的bat文件都需要用管理员身份运行,可以为bat文件创建快捷方式,在快捷方式上右键属性-快捷方式-高级-勾选用管理员身份运行

  • 双击快捷方式执行即可。

4、参考链接:

使用NSSM部署.net API自动化BAT脚本 - 知乎 (zhihu.com)

使用NSSM安装.exe文件成Windows服务(.bat文件操作) - 汪小让 - 博客园 (cnblogs.com)

原文链接:https://www.cnblogs.com/magicMaQaQ/p/18174409

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号