打包的时候遇到了这样的需求:假似用户都是傻瓜                  式操作,如果更新安装程序的时候,之前的老程序还在运行这个时候如果你去提示让用户吧老程序手动退掉也不现实。

所以当遇到这种情况的时候能不能在更新安装程序上下手,在更新的时候就默认吧老程序杀掉(如果老程序在运行)。

答案是明确的inno setup 是可以这样的操作。

下面是转的文章,谢谢作者的分享。

==============================================================

最近用inno setup想做一个exe,可是在安装之前要停止正在运行的相应进程,可是发现它自身的方法不能满足要求,终于在网上找到了相应的资料,在这里总结一下,方便以后使用。

1:如果我只是单纯的想在安装之前判断一个进程是否存在,要引入psvince.dll这个dll,放在inno setup的安装目录下(与其他dll相同目录),代码如下:

[files]

; 安装前判断进程,dll文件放在inno的安装目录中

Source: compiler:psvince.dll; Flags: dontcopy noencryption//安装前判断是否有进程正在运行

functionIsModuleLoaded(modulename: String ): Boolean;

external'IsModuleLoaded@files:psvince.dll stdcall setuponly';functionInitializeSetup(): Boolean;

var

value:string;

IsAppRunning: boolean;

begin//check Diagnosis press

value := ExpandConstant('{cm:DiagnosisRunning}');

Result:= true;

IsAppRunning:= IsModuleLoaded('进程名:如mysql.exe');while IsAppRunning dobeginif MsgBox('**工具正在运行,请先关闭它!', mbConfirmation, MB_OKCANCEL) = IDOK thenIsAppRunning:= IsModuleLoaded('进程名:如mysql.exe')elsebegin

IsAppRunning:= false;

Result:= false;

end;

end;

end;

2:如果我想在安装前结束掉某个进程,就要引入IsTask.dll了,放在inno setup的安装目录下(与其他dll相同目录),代码如下:

[Files]

Source: D:\FDisk\makeexe\fd\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

; 安装前判断进程,dll文件放在inno的安装目录中

Source: compiler:IsTask.dll; Flags: dontcopy noencryption

[Code]//安装前判断是否有进程正在运行,istask.dll文件与打包的exe文件一起

function RunTask(FileName: string; bFullpath: Boolean): Boolean;

external'RunTask@files:ISTask.dll stdcall delayload';function KillTask(ExeFileName: string): Integer;

external'KillTask@files:ISTask.dll stdcall delayload';functionInitializeSetup(): Boolean;

begin

Result:= true;if RunTask('进程名:如mysql.exe', false) thenbeginif MsgBox('安装程序检测到**正在运行!'#13''#13'点击 "是" 按钮将停止进程然后继续安装;'#13''#13'点击"否" 按钮将终止安装程序!', mbConfirmation, MB_YESNO) = IDYES thenbegin

KillTask('进程名:如mysql.exe');

KillTask('mysqld.exe');

Result:= true;

endelseResult:= false;

endelseResult:= true;

end;

inno setup安装之前关闭mysql_inno setup 安装前判断进程是否存在,以及停止相应进程转...相关推荐

  1. inno setup 中文乱码问题_Inno Setup添加中文安装语言文件

    如果你不添加中文安装语言文件,你编译生成的安装包的语言是不会有中文. 一,打开软件安装目录下的Languages文件夹下,有如下好多文件,可是就是没有Chianese.isl. 好了,你只需要随便拷贝 ...

  2. Inno Setup实例教程之一:软件安装和demo使用

    介绍 Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务 安装 环境 win ...

  3. 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yexiaohhjk/article/d ...

  4. pip 另一种安装方法:python setup.py install

    最近在安装prophet,使用'pip install prophet' 怎么安装都不对(报错信息附在最后[Requirement already satisfied和warning部分略去了],如果 ...

  5. pip安装软件 Command “python setup.py egg_info“ failed with error code 1 in

    本文只提供本人的一些经验,不代表可以解决所有人的问题. pip安装软件时出现:Command "python setup.py egg_info" failed with erro ...

  6. python3 setup.py install_安装Twisted执行python3 setup.py install报错

    源自:2-1 scrapy的安装.和安装中遇到的问题 安装Twisted执行python3 setup.py install报错 [bigdata@elephant Twisted-17.1.0]$ ...

  7. 金蝶软件安装时,提示安装包配置文件(Setup.Lst)文件不存在无法安装处理方法

    最近安装包文件转移到了另外一台服务器上,访问共享安装包,点击setup安装,弹出警示窗口,提示"安装包配置文件(setup.lst)文件不存在",无法进行客户端软件安装,可是此安装 ...

  8. python项目安装_简单使用setup.py来安装Python项目

    最近做个一个项目需要用到setup.py 这个构建工具来进行项目的便捷安装,把搜集到的一些资料加上个人理解整理成文章,如有错误的地方请各位大佬及时指出,小弟马上修改,下面正式进入setup.py的描述 ...

  9. win10 安装程序错误,the setup files are corrupted.please obtain a new copy of the program

    解决方法: 该报错的意思是"安装文件损坏.请重新找一份完整的文档安装"一般由于以下原因造成: 1.说明安装程序已崩溃,下载时丢失了字节等因素导致,请重新下载.(Think官方网站不 ...

  10. 计算机管理服务中没有ANSYS,WIN7:ANSYS12.0时,出现:必须使用控制面板中的打开或关闭windows功能安装或配置...

    ect to any license serber. The server is down or is not responsive. ANSYSLI_SERVERS:2325@jianpengli ...

最新文章

  1. 面相对象的topSort和递推【ural1022/ural1017】
  2. SSL certificate problem: unable to get local issuer certificate
  3. 001 Cisco router prewired
  4. 设计模式(3):抽象工厂模式(Abstract Factory Pattern)
  5. rust 编程入门_面向初学者的Rust –最受欢迎的编程语言入门
  6. ARM S3C2410硬件手册重点
  7. C++ 输入和输出IO
  8. tsql语句中的t是什么_TSQL中的Java HashCode
  9. cms运行php,迅睿CMS 主程序运行之后
  10. 游戏开发之C++多继承及虚继承(C++基础)
  11. Unix/Linux的内存映射
  12. Python轻松多条件计数与求和
  13. 电信云服务器装系统,天翼云主机重装系统的详细操作步骤
  14. Docker容器内部 DNS 解析失败的问题
  15. cocos2dx的64位安卓包spine读取atlas失败
  16. (转)程序员键盘推荐
  17. 避坑:关于两个HC-05主从一体蓝牙模块互连,连不上问题
  18. 安卓App自启动,两种不同的方式!!!支持到安卓4.4
  19. 魔兽争霸 php文件,[War3]Fdf文件详解,简单的UI教程演示-by CarlosX
  20. 公众号 自动生成海报 python_Python 生成公众号头图 1.0

热门文章

  1. LAMP环境安装1之freetype
  2. android手机debian 编译nodejs
  3. Servlet、Listener、Filter、JSP
  4. chrome配置文件校验初始化隐含參数的逆向
  5. shell读取用户输入
  6. 如何清空其他终端上的屏幕
  7. [解决方案]SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
  8. SessionID的传送
  9. IT人士易犯4大职业病 鼠标手居第一位
  10. html position属性作用,CSS学习之浅谈position属性