innosetup安装之前关闭进程

    InnoSetup覆盖安装的时候可能会因为源程序正在运行而安装失败,以下脚本能够关闭原运行进程。

[code]
// 安装前检查关闭**进程
function InitializeSetup():Boolean;
//进程ID
var appWnd: HWND;
begin
  Result := true;
  //Log('Checking If Running...');
  //根据窗体名字获取进程ID
  appWnd := FindWindowByWindowName('IE Scavenger');
  if (appWnd <> 0) then
     //进程存在,关闭
     begin
        //Log('Is Runing...');
        //给进程发送关闭消息
        PostMessage(appWnd, 18, 0, 0);       // quit
     end else
     //进程不存在 
     begin 
        //Log('Not Runing...');
     end;
end;

    InitializeSetup 函数在安装程序初始化时调用,返回 False 中断安装,返回 True 反之。

    FindWindowByWindowName 获取窗口名与指定字串匹配的顶层窗口的句柄。这个函数不搜索子窗口 ,且不执行区分大小写搜索。如果没有找到窗口则返回 0。

    运行流程就是根据窗口名获取正在运行的程序,如果已经运行则强制关闭。相应的卸载的时候如果需要先关闭程序,可以调用编写InitializeUninstall函数,关闭源程序。这种是无痛关闭,没有任何提示。你可以自己添加提示,引导用户进行操作。

 

posted @   Max Woods  阅读(3429)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2010-12-01 BlogEngine .NET 日期控件显示问题
点击右上角即可分享
微信分享提示