提示仅关闭某些应用程序

时间:2016-04-16 21:51:05

标签: windows-services installer inno-setup

我正在使用Inno Setup 5.5.6(u)为一个应用程序编写安装程序,该应用程序由一个Windows服务应用程序和一个UI应用程序组成,每个应用程序都有自己的独立EXE。安装程序提供了安装服务和UI应用程序的选项,或者只安装没有服务的UI应用程序。这一切都很好。

当安装程序在现有安装上运行时,安装程​​序检测到该服务正在运行时,会出现问题。我确实有代码在更新运行之前显式停止服务,但是这个其他屏幕在我的代码运行之前捕获它,并为Inno Setup的用户提供自动结束该过程。

procedure CurStepChanged(CurStep: TSetupStep);
begin
  case CurStep of
    ssInstall: begin
      //Just before install starts
      if ServiceExists(SVC_NAME) then begin        
        StopMyService;
      end else begin
        ServiceWasRunning:= True;
      end;
      InstallMyService; //Ignores if already exists
    end;
    ssPostInstall: begin
      //Just after install finishes
      if ServiceWasRunning then begin
        StartMyService;
      end;
    end;
  end;
end;

现在我不想完全禁用此检测 - 我只想指示安装程序不要检查服务可执行文件,但仍检查UI可执行文件。

我如何做到这一点?

1 个答案:

答案 0 :(得分:1)

在探索了一些之后,我找到了解决方案。

[Setup]部分中,添加一行名为CloseApplicationsFilter的行,并将其设置为您希望其检测的应用程序文件名。最初,我认为这个属性只接受扩展通配符,例如*.exe,但完整的文件名也可以。