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

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

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容