原文链接 http://www.flighty.cn/html/bushu/20110402_115.html

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

需要使用插件FindProcDLL.dll,下载路径:http://nsis.sourceforge.net/FindProcDLL_plug-in

http://files.cnblogs.com/files/z5337/FindProc.zip

http://files.cnblogs.com/files/z5337/KillProcDll%26FindProcDll.zip

开始安装时检查flighty.exe是否正在运行:

Function .onInit
;关闭进程
Push $R0
CheckProc:
Push "flighty.exe"
ProcessWork::existsprocess
Pop $R0
IntCmp $R0 0 Done
MessageBox MB_OKCANCEL|MB_ICONSTOP "安装程序检测到 ${PRODUCT_NAME} 正在运行。$\r$\n$\r$\n点击 “确定” 强制关闭${PRODUCT_NAME},继续安装。$\r$\n点击 “取消” 退出安装程序。" IDCANCEL Exit
Push "flighty.exe"
Processwork::KillProcess
Sleep 1000
Goto CheckProc
Exit:
Abort
Done:
Pop $R0
FunctionEnd

开始卸载时检查flighty.exe是否正在运行:

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
Abort
;检测程序是否运行
FindProcDLL::FindProc "flighty.exe"
Pop $R0
IntCmp $R0 1 0 no_run
MessageBox MB_ICONSTOP "卸载程序检测到 ${PRODUCT_NAME} 正在运行,请关闭之后再卸载!"
Quit
no_run:
FunctionEnd

顺便提一句:如果你的程序被360误杀过,可以用这个提示用户关闭360才可以进行安装。

[转]NSIS:安装、卸载时检查程序是否正在运行的更多相关文章

  1. NSIS:安装、卸载时检查程序是否正在运行

    原文 NSIS:安装.卸载时检查程序是否正在运行 如果我们要安装或升级的程序正在运行,文件肯定会替换不成功,以下代码可以提示用户结束正在运行的程序. 需要使用插件FindProcDLL.dll,下载路 ...

  2. NSIS安装或卸载时检查程序是否正在运行

    转载:https://www.cnblogs.com/z5337/p/4766415.html 转载:https://www.gongzi.org/nsisbuildqqstop.html 转载:ht ...

  3. NSIS:卸载时选择组件

    原文 NSIS:卸载时选择组件 有时候,我们想要在卸载时也可以选择组件,进行定制性的卸载,那么,以下文字将简略讨论这个问题: 题外:我们想要卸载时选择组件,当然是在安装时要有组件选择页面的前提下,也就 ...

  4. inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效

    inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------- ...

  5. linux升级安装openssh时出现依赖冲突

    通过如下方式下载到openssh安装包 https://www.cnblogs.com/qq931399960/p/11120429.html -rwxrwxrwx. root root Jul : ...

  6. 如何运用inno在安装和卸载时提示用户结束进程?

    我尝试着写了一段,但是卸载段存在问题,请指点! CODE [Files]Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion [Code]f ...

  7. Inno Setup安装、卸载时判断是否程序正在运行

    var ErrorCode: Integer; IsRunning: Integer; // 安装时判断客户端是否正在运行 function InitializeSetup(): Boolean; b ...

  8. NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者

    NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者 作者: raindy 来源:http://bbs.hanzify.org/index.php?showtopic=30029 时间: ...

  9. NSIS:卸载加密码示例

    原文 NSIS:卸载加密码示例 最近有几个同学问我关于卸载时加密码的问题,其实很简单,懂点基础就可以根据安装加密码那篇文章http://www.flighty.cn/html/bushu/201009 ...

随机推荐

  1. JavaScript 自定义文本框光标——初级版

    文本框(input或textarea)的光标无法修改样式(除了通过color修改光标颜色).但笔者希望个人创建自己的网站时,文本框的光标有属于自己的风格.所以,尝试模拟文本框的光标,设计有自己风格的光 ...

  2. DevExpress v18.1新版亮点——WPF篇(一)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...

  3. 借鉴seisman安装软件时的文件放置选择

    对于大型的软件包的安装来说: 当下载成功一个软件的压缩包后: tar -xvf xxxx.tgz ./configure --prefix=/opt/xxxx make sudo make insta ...

  4. js 的垃圾回收器 原理 坑 优化-- 待续

    JavaScript垃圾回收的机制很简单: 找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是时时的, 因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行. 什么叫不再使用的变 ...

  5. mysql 试图

    关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务.对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下.为了 ...

  6. Cisco ASA(8.4)端口映射设定(ASDM)

    1.进入到Configuration→firewall→NAT Rules画面. 2.点“services”添加服务端口,此案例添加TCP 1443和UDP 1443端口映射 3.添加“Network ...

  7. SWIFT中用Switch case 类类型

    有时觉得SWIFT的语法真的强大而又变态,不说了,直接上代码瞅瞅: 首先先定义一个交通工具的父类 class Vehicle{ var wheels:Int! var speed:Double! in ...

  8. tensorflow中屏蔽输出的log信息方法

    tensorflow中可以通过配置环境变量 'TF_CPP_MIN_LOG_LEVEL' 的值,控制tensorflow是否屏蔽通知信息.警告.报错等输出信息. 使用方法: import os imp ...

  9. Adaboost新理解

    Adaboost有几个难点: 1.弱分类器的权重怎么理解? 误差大的弱分类器权重小,误差小的弱分类器权重大.这很好理解.在台湾大学林轩田老师的视频中,推导说,这个权值实际上貌似梯度下降,权值定义成1/ ...

  10. opencv-python教程学习系列4-opencv绘图函数

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv绘图函数,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统 ...