使用NSSM安装.exe文件成Windows服务(.bat文件操作)

写在前面的话:

之前查到的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的环境变量就可以了
原文地址:https://www.cnblogs.com/wangxiaorang/p/14850266.html