写在前面的话:
之前查到的nssm安装Windows服务都是用 nssm install <servicename> ,但是会弹出窗口,需要填写路径参数
下面介绍一种,直接使用.bat命令就可以实现的安装方式(本文使用的.exe文件是,.net core项目发布的一个网站项目,其他的应该也是一样的原理)
1、下载nssm, download
2、解压后,把nssm.exe文件复制到,发布完项目的文件夹里(就是放.exe文件的那个文件夹)
3、创建install.bat文件(名字随便取都可以),文件中内容
@ echo off @echo 添加环境变量 set mypath=%~dp0 set path=%mypath%;%path% @echo 开始安装【GDSM服务】 call nssm install GDSMService %~dp0GDSMPlateForm.exe echo wscript.sleep 5000 > delay.vbs cscript //nologo delay.vbs & del delay.vbs @echo 开始启动【GDSM服务】 call nssm start GDSMService pause
4、右键install文件,创建快捷方式(快捷方式名字随便取),修改为管理员权限打开
5、双击打开快捷方式,就会自动安装服务,并开启服务
6、查看服务
7、(如果需要)删除服务,建议先关闭服务,再删除
1)管理员身份打开cmd,删除命令:sc delete 服务名 如:sc delete GDSMService
注意:
1)在执行nssm命令之前,一定要先添加nssm.exe的环境变量,否则会出下“找不到nssm命令”
2)安装服务和启动服务要使用call,不能用start或者不写,否则也会出现“找不到nssm命令”,原因是使用start或者不写,添加的环境变量没有立即生效
(这里被坑了很久,之前都是不写【nssm install GDSMService】,然后发现环境变量一直不生效,也试过重启explorer,都不行)
3)添加环境变量(临时环境变量,等服务安装完成,环境变量不存)
@echo 添加环境变量
set mypath=%~dp0
set path=%mypath%;%path%
总结:nssm安装服务不弹出弹窗的命令就是(可以直接在cmd中执行):nssm install GDSMService <路径>,但是使用当前文件夹路径的时候,就需要先添加环境变量
比方说:nssm install GDSMService C:WindowsSetupDSMPlateForm.exe 完全没问题
但是,如果想要使用当前文件夹的路径呢?
正常应该是这样的, nssm install GDSMService %~dp0GDSMPlateForm.exe 然而就是不行(猜测原因:应该是nssm没有在环境变量里面,没有资格使用系统的变量%~dp0)
解决办法:先添加nssm.exe的环境变量就可以了