我在Delphi 10.2.3中创建了一个服务,它运行良好。
为了调试它,我在dpr
文件中添加了这个:
{$ifdef DEBUG}
try
// In debug mode the server acts as a console application.
WriteLn('MyServiceApp DEBUG mode. Press enter to exit.');
// Create the TService descendant manually.
EseguiProcessiClient := TEseguiProcessiClient.Create(nil);
// Simulate service start.
EseguiProcessiClient.ServiceStart(EseguiProcessiClient, MyDummyBoolean);
// Keep the console box running (ServerContainer1 code runs in the background)
ReadLn;
// On exit, destroy the service object.
FreeAndNil(EseguiProcessiClient);
except
on E: Exception do
begin
Writeln(E.ClassName, ': ', E.Message);
WriteLn('Press enter to exit.');
ReadLn;
end;
end;
{$else}
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TEseguiProcessiClient, EseguiProcessiClient);
Application.Run;
{$endif}
这样,我可以毫无问题地调试它。
但是现在,我想在运行时更改服务名称,所以我遵循了这个答案:
https://stackoverflow.com/a/612938/1032291
但是现在,当我在发布模式下运行服务时,如果我保留原始名称(EseguiProcessiClient)我没有问题,但是如果我将名称更改为其他名称,则服务无法启动。看起来它会进入ServiceCreate
事件,但不会进入ServiceStart
事件。
有人可以给我一些帮助吗?
答案 0 :(得分:1)
好的,我自己解决了。正如我所说,问题是ImagePath
。我必须使用sc create
自己创建服务并手动添加参数。