如何运用inno在安装和卸载时提示用户结束进程?
我尝试着写了一段,但是卸载段存在问题,请指点!
[Files]
Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion
[Code]
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';
function InitializeSetup(): Boolean;
begin
Result:= true;
if RunTask('MyProg.exe', false) then
begin
if
MsgBox('安装程序检测到 MyProg.exe 正在运行!'#13''#13'单击“是”按钮关闭 LockOn
程序;'#13''#13'单击“否”按钮进行强制安装!', mbConfirmation, MB_YESNO) = IDYES then
KillTask('MyProg.exe');
end
end;
function InitializeUninstall(): Boolean;
begin
Result:= true;
if RunTask('MyProg.exe', false) then
begin
if
MsgBox('安装程序检测到 MyProg.exe 正在运行!'#13''#13'单击“是”按钮关闭 LockOn
程序;'#13''#13'单击“否”按钮进行强制安装!', mbConfirmation, MB_YESNO) = IDYES then
KillTask('MyProg.exe');
end
end;
======================================================
======================================================
======================================================
用上面的代码,在卸载时判断进程的dll已经没有了,所以不能调用它的函数。其实安装和卸载时调用的dll是不同的。
这样修改代码应该可以:
[Files]
Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion
[Code]
function RunTask1(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
function KillTask1(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall uninstallonly';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall uninstallonly';
function InitializeSetup(): Boolean;
begin
Result:= true;
if RunTask1('MyProg.exe', false) then
begin
if
MsgBox('安装程序检测到 MyProg.exe 正在运行!'#13''#13'单击“是”按钮关闭 LockOn
程序;'#13''#13'单击“否”按钮进行强制安装!', mbConfirmation, MB_YESNO) = IDYES then
KillTask1('MyProg.exe');
end
end;
function InitializeUninstall(): Boolean;
begin
Result:= true;
if RunTask('MyProg.exe', false) then
begin
if
MsgBox('安装程序检测到 MyProg.exe 正在运行!'#13''#13'单击“是”按钮关闭 LockOn
程序;'#13''#13'单击“否”按钮进行强制安装!', mbConfirmation, MB_YESNO) = IDYES then
KillTask('MyProg.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
end
end;
如何运用inno在安装和卸载时提示用户结束进程?的更多相关文章
- 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 安装、卸载前检测进程或服务
[转载]Inno Setup 安装.卸载前检测进程或服务 (2015-04-24 17:37:20) 转载▼ 标签: 转载 原文地址:Inno Setup 安装.卸载前检测进程或服务作者:一去丶二 ...
- Inno Setup 安装前卸载原程序
Inno Setup 安装前卸载原程序 分类: Install Setup 2013-02-02 15:53 2315人阅读 评论(0) 收藏 举报 很多時候我們需要在安裝文件之前卸載原有的程序而不是 ...
- NSIS:安装、卸载时检查程序是否正在运行
原文 NSIS:安装.卸载时检查程序是否正在运行 如果我们要安装或升级的程序正在运行,文件肯定会替换不成功,以下代码可以提示用户结束正在运行的程序. 需要使用插件FindProcDLL.dll,下载路 ...
- [转]NSIS:安装、卸载时检查程序是否正在运行
原文链接 http://www.flighty.cn/html/bushu/20110402_115.html 如果我们要安装或升级的程序正在运行,文件肯定会替换失败,以下代码可以提示用户结束正在运行 ...
- NSIS安装或卸载时检查程序是否正在运行
转载:https://www.cnblogs.com/z5337/p/4766415.html 转载:https://www.gongzi.org/nsisbuildqqstop.html 转载:ht ...
- sqlserver 2008 卸载时提示 “重新启动计算机”失败
问题:sqlserver 2008 卸载时提示 “重新启动计算机”失败 解决办法: 1.打开注册表:开始->运行: regedit 2.找到HKEY_LOCAL_MACHINE\SYSTEM\C ...
随机推荐
- 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。解决办法
找到使用中的程序池,右键,设置应用程序默认设置,如下 确定即可.
- [转]何时使用委托而不使用接口(C# 编程指南)
以下内容转自MSDN:http://msdn.microsoft.com/zh-cn/library/ms173173.aspx 委托和接口都允许类设计器分离类型声明和实现. 任何类或结构都能继承和实 ...
- BZOJ1584 [Usaco2009 Mar]Cleaning Up 打扫卫生
令$f[i]$表示以i为结尾的答案最小值,则$f[i] = min \{f[j] + cnt[j + 1][i]^2\}_{1 \leq j < i}$,其中$cnt[j + 1][i]$表示$ ...
- javascript 把字符串转换为对象
function strToJson(str) { var json = (new Function("return " + str))(); return json;}
- 如何解决链入js,innerHTML中文乱码问题呢?
描述:发生在做suhuotong网站的时候,添加在线客服代码的时候三个地方1.将js以UTF-8无BOM编码:VS修改或者使用NotePad++修改2.<meta http-equiv=&quo ...
- ASP.NET备份还原数据库
核心技术:using System.Data.SqlClient;using System.IO;string SqlStr1 = "Server=(local);DataBase=mast ...
- NSString length的坑。
说坑,可能过头了,是我理所当然的把OC看作C了, char* cstr = "zh中文12"; NSString* s = [NSString stringWithUTF8Stri ...
- poj题目必做
OJ上的一些水题(可用来练手和增加自信) (poj3299T,poj2159T,poj2739T,poj1083T,poj2262T,poj1503T,poj3006T,poj2255T,poj309 ...
- undefined reference to typeinfo - C++ error message
undefined reference to typeinfo - C++ error message There are some compiler and loader error message ...
- 类似github的框架
github是程序员经常上的网站,但如果是在一家苦逼不能访问外网的公司,那不能把自己的代码托管在github上绝对是一件非常痛苦的事情.如果想要在公司内网也可以用github托管自己的代码,那就要自己 ...