Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,45 @@ Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; \
Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#AppName}}"; \
Flags: nowait postinstall skipifsilent

Filename: "{app}\everything\Everything64.exe"; \
Parameters: "-install-service"; \
WorkingDir: "{app}\everything"; \
Flags: runhidden waituntilterminated; \
Check: NeedInstallEverythingService

[Code]
{ 使用 WMI 检测服务是否存在 }
function ServiceExistsByNameOrDisplay(const NameOrDisplay: string): Boolean;
var
Locator, Services, ResultSet: Variant;
Query: string;
begin
Result := False;
try
Locator := CreateOleObject('WbemScripting.SWbemLocator');
Services := Locator.ConnectServer('.', 'root\CIMV2');

{ 同时按 ServiceName 和 DisplayName 查询,任一匹配即认为存在 }
Query :=
'SELECT Name FROM Win32_Service ' +
'WHERE Name="' + NameOrDisplay + '" OR DisplayName="' + NameOrDisplay + '"';

ResultSet := Services.ExecQuery(Query);
Result := (ResultSet.Count > 0);
except
{ 如果 WMI 不可用或异常,返回 False(让后续安装服务的逻辑照常进行) }
Result := False;
end;
end;


function EverythingServiceInstalled(): Boolean;
begin
Result :=
ServiceExistsByNameOrDisplay('Everything (1.5a)');
end;

function NeedInstallEverythingService(): Boolean;
begin
Result := not EverythingServiceInstalled();
end;
Loading