【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) 

NsProcess plugin - NSIS (sourceforge.io)

posted @ 2022-03-19 11:43  yzhyingcool  阅读(2160)  评论(0编辑  收藏  举报