NSIS安装或卸载时检查程序是否正在运行
转载:https://www.cnblogs.com/z5337/p/4766415.html
转载:https://www.gongzi.org/nsisbuildqqstop.html
转载:http://blog.sina.com.cn/s/blog_6aeaee7e0100smrn.html(如果当前程序正在运行,杀掉进程继续安装或者卸载,给了启发)
转载:https://blog.csdn.net/llmys/article/details/88618177(教程)
使用场景:
如果我们要安装或升级程序时,软件正在运行,这个时候安装文件肯定会替换失败,友好的操作是提示用户结束正在运行的程序
准备工作:
1. 检测程序是否在运行,需要使用插件FindProcDLL.dll,杀死当前运行的进程,需要使用插件KillProcDLL.dll
2.这两个插件的下载地址:http://nsis.sourceforge.net/FindProcDLL_plug-in
3. 放到C:\Program Files (x86)\NSIS\Plugins里面

4. 添加脚本
; ------ 安装前检查程序是否正在运行
Function .onInit
FindProcDLL::FindProc "AppSetup.exe"
Pop $R0
IntCmp $R0 no_run
MessageBox MB_OKCANCEL|MB_ICONSTOP "安装程序检测到 ${PRODUCT_NAME} 正在运行。$\r$\n$\r$\n点击 “确定” 强制关闭${PRODUCT_NAME},继续安装。$\r$\n点击 “取消” 退出安装程序。" IDCANCEL Exit
KillProcDLL::KillProc "AppSetup.exe"
Sleep
FindProcDLL::FindProc "AppSetup.exe"
Pop $R0
IntCmp $R0 no_run
Exit:
Quit
no_run:
FunctionEnd

; ------ 卸载前检查程序是否正在运行
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除${PRODUCT_NAME},及其所有的组件?" IDYES +
Abort
;检测程序是否运行
FindProcDLL::FindProc "AppSetup.exe"
Pop $R0
IntCmp $R0 no_run
KillProcDLL::KillProc "AppSetup.exe"
Sleep
FindProcDLL::FindProc "AppSetup.exe"
Pop $R0
IntCmp $R0 no_run
Quit
no_run:
FunctionEnd
NSIS安装或卸载时检查程序是否正在运行的更多相关文章
- NSIS:安装、卸载时检查程序是否正在运行
原文 NSIS:安装.卸载时检查程序是否正在运行 如果我们要安装或升级的程序正在运行,文件肯定会替换不成功,以下代码可以提示用户结束正在运行的程序. 需要使用插件FindProcDLL.dll,下载路 ...
- [转]NSIS:安装、卸载时检查程序是否正在运行
原文链接 http://www.flighty.cn/html/bushu/20110402_115.html 如果我们要安装或升级的程序正在运行,文件肯定会替换失败,以下代码可以提示用户结束正在运行 ...
- 如何运用inno在安装和卸载时提示用户结束进程?
我尝试着写了一段,但是卸载段存在问题,请指点! CODE [Files]Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion [Code]f ...
- Inno Setup安装、卸载时判断是否程序正在运行
var ErrorCode: Integer; IsRunning: Integer; // 安装时判断客户端是否正在运行 function InitializeSetup(): Boolean; b ...
- SQL Server 2008 Express 安装或卸载时提示“重启计算机失败"的解决办法
安装或卸载SQL Server 遇到错误提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机.如下图: 解决办法: 1.在开始->运行中输入regedi ...
- SQL Server 2008 安装或卸载时提示“重启计算机失败"的解决办法(转)
安装或卸载SQL Server 遇到错误提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机.如下图: 解决办法: 1.在开始->运行中输入regedi ...
- Inno Setup 系列之安装、卸载时调用bat
需求 想在安装的时候调用install.bat,在卸载的时候调用uninstall.bat 解决 可以这样写 Inno Setup 的脚本: [Setup] ; NOTE: The value of ...
- vmware安装或卸载时,显示无法打开注册表项
vmware卸载是出了名的臭名昭著,因为太难删干净了,删不干净又会有各种各样的问题.比如下文这个"无法打开注册表项" 这个我相信有很多人在重装vmware的时候遇到过,因此我来 ...
- python各种库、框架的安装和卸载
才疏学浅,努力深入,逐步更新,有问题敬请留言告知,谢谢. 关于python第三方库的安装最好少使用 easy_install,因为 easy_install 只能安装不能卸载,如果要卸载需要进入到 p ...
随机推荐
- Linux相关目录
Linux 启动流程 Linux--基本目录 Linux--selinux Linux--网卡配置 Linux--系统运行级别 Linux--重要文件
- python爬虫中遇到的问题以及解决方法
(1)运行后报错:“TypeError: cannot use a string pattern on a bytes-like” 原因:content用decode(‘utf-8’)进行解码,由by ...
- Spring Cloud 之 Consul 知识点:服务注册与发现(类似工具:Eureka、ZooKeeper、Etcd)
资料 网址 springcloud(十三):注册中心 Consul 使用详解 http://ityouknow.com/springcloud/2018/07/20/spring-cloud-cons ...
- 转载 Easyui Tree方法扩展 - getLevel(获取节点级别)
Easyui Tree一直就没有提供这个方法,以前没有用到,所 以一直没怎么在意,这次自己用到了,顺便扩展了一个方法,分享给大家. $.extend($.fn.tree.methods, { getL ...
- DataNode 工作机制
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_35641192/article/d ...
- python Tkinter的Text组件中创建x轴和y轴滚动条
#!/usr/bin/python #coding: utf-8 from Tkinter import * root = Tk() root.title("记事本") root. ...
- JAVA接口与类的区别
抽象类:一个类中有抽象方法,这个类就变成了抽象类.抽象类中class的前面必须有abstract修饰符.抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个.子类继承父类 ...
- 监听localStorage中的数据变化
问题描述:我们在js里面获取了某一个localstorage的值,但是后期它可能改变了,我们js只执行一遍没办法再次获取它的值,当然可以刷新页面获取,但如果是我们的但页面就不能刷新页面了,此时:我们可 ...
- 【转载】windbg 常用命令详解
windbg 常用命令详解 https://blog.csdn.net/chenyujing1234/article/details/7743460 vertarget 显示当前进程的大致信息 lmv ...
- C++中vector的使用总结
vector简单说明 vector也是一个容器,并且是个顺序容器.顺序容器有可变长数组vector.双向链表list.双端队列deque. 顺序容器的定义,是因为容器元素的位置和他们的值大小无关,也就 ...