NSIS打包,判断当前程序是否在运行

如果我们要安装或升级的程序正在运行,文件肯定会替换失败,以下代码可以提示用户结束正在运行的程序,需要使用插件FindProcDLL.dll和KillProcdll。

FindProcDLL下载链接:https://pan.baidu.com/s/1AfgyXBkyr2XZTIFi3-1EXg
提取码:u6bf

下载之后,解压出来。拷贝ANSI和Unicode目录下的FindProcDLL.dll到NSIS安装目录下的 Plugins对应目录中。


NSIS打包,判断当前程序是否在运行_第1张图片
image.png

KillProcdll下载链接: https://pan.baidu.com/s/1pu3E8ejDkG6kDh-1k1Y1Ow
提取码:8fcn

下载之后,解压出来。拷贝KillProcdll.dll到NSIS安装目录下的 Plugins对应目录中。

Function .Oninit
  FindProcDLL::FindProc "Template.exe"
    Pop $R0
    IntCmp $R0 1 0 no_run
    MessageBox MB_ICONSTOP "安装程序检测到 Template 正在运行,请退出程序后重试"
    Quit
    no_run:
FunctionEnd

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
  Abort
  FindProcDLL::FindProc "Template.exe"
   Pop $R0
   IntCmp $R0 1 0 no_run
   MessageBox MB_ICONSTOP "安装程序检测到 Template正在运行,请退出程序后重试"
   Quit
   no_run:
FunctionEnd

参考链接:

https://segmentfault.com/a/1190000007132149

你可能感兴趣的:(NSIS打包,判断当前程序是否在运行)