• INNO安装卸载自动结束进程插件使用


    [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';

    function InitializeSetup(): Boolean;
    begin
      Result:= true;
      if RunTask('{#MyAppExeName}', false) then
          begin
               if MsgBox('安装程序检测到 {#MyAppName} 正在运行!'#13''#13'单击“是”按钮关闭程序并继续安装;'#13''#13'单击“否”按钮退出安装!', mbConfirmation, MB_YESNO) = IDYES then
                  begin
                  KillTask('{#MyAppExeName}');
                  Result:= true;
                  end
               else
                  Result:= false;
          end
      else Result:= true;
    end;

    // 卸载前判断进程是否在运行
    function RunTaskU(FileName: string; bFullpath: Boolean): Boolean;
      external 'RunTask@{app}/ISTask.dll stdcall delayload uninstallonly';
    function KillTaskU(ExeFileName: string): Integer;
      external 'KillTask@{app}/ISTask.dll stdcall delayload uninstallonly';

    function InitializeUninstall(): Boolean;
      begin
        Result:= true;
        if RunTaskU('{#MyAppExeName}', false) then
          begin
            if MsgBox('卸载程序检测到 {#MyAppName} 正在运行!'#13''#13'单击“是”按钮关闭程序并继续卸载;'#13''#13'单击“否”按钮退出卸载!', mbConfirmation, MB_YESNO) = IDYES then
              begin
                KillTaskU('{#MyAppExeName}');
                Result:= true;
              end
            else
              Result:= false;
          end
        else
        Result:= true;
        UnloadDll(ExpandConstant('{app}/ISTask.dll'));

      end;

  • 相关阅读:
    初步学习css 从css手册看起———text
    IE6双倍margin间距两大解决方案转载
    div+css的基本 常用到语法(一) 。
    初步学习css 从css手册看起———Font
    行内宽高设置无效的解决
    C++面对对象基础
    C++继承和派生
    基于MATLAB的FIR滤波器的设计
    C++多态
    C++中的静态成员和静态函数
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/4135737.html
Copyright © 2020-2023  润新知