我正在使用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可执行文件。
我如何做到这一点?
答案 0 :(得分:1)
在探索了一些之后,我找到了解决方案。
在[Setup]
部分中,添加一行名为CloseApplicationsFilter
的行,并将其设置为您希望其检测的应用程序文件名。最初,我认为这个属性只接受扩展通配符,例如*.exe
,但完整的文件名也可以。