【NSIS】安装或卸载时使用nsProcess检查程序是否正在运行
NSIS版本:3.0.6
NsProcess版本:1.6
例子:检查Excel程序是否在运行
1、下载NsProcess
下载NsProcess,将nsProcess.dll、nsProcessW.dll拷贝到NSIS的插件路径C:\Program Files (x86)\NSIS\Plugins\x86-ansi。
2、编写检查脚本
在安装脚本中编写Macro,在检测到进程存在后弹出提示,并退出安装或卸载。
!macro FindProcess StrCpy $1 "excel.exe" nsProcess::_FindProcess "$1" Pop $R0 ${If} $R0 = 0 MessageBox MB_OK|MB_ICONSTOP "程序检测到 Excel 正在运行,请关闭Excel重新开始!" IDOK Abort ${EndIf} !macroend
3、在Function .onInit和un.onInit中分别调用
Function .onInit !insertmacro FindProcess FunctionEnd Function un.onInit !insertmacro FindProcess MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2 FunctionEnd
4、在安装或者卸载程序启动时先检测进程是否存在,如果存在提示并退出执行
参考:
Function Call in .onInit and un.oninit - NSIS Forums (nsis-dev.github.io)