Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Duss
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
1

Delphi: переименовать службу, запуск 2-х экземпляров службы

29.11.2014, 12:26. Просмотров 682. Ответов 1
Метки нет (Все метки)

Написал службу, в системе имя службы и отображаемое имя берется из параметров: Name и DisplayName.

Стоит задача установить 2 (или более) таких служб на ОС.

При повторной установке, естественно, возникает ошибка, что служба с таким именем уже установлена.

Сделал следующее:
в событиях ServiceBeforeInstall и ServiceBeforeUninstall

Delphi
1
2
3
4
5
6
7
8
9
var
  Cnf1 : TStringList;
begin
  Cnf1 := TStringList.Create;
  Cnf1.LoadFromFile(extractfilepath(paramstr(0))+'\INI\Service.ini');
  Service1.Name         := Cnf1.Values['Name'];  // загружаю имя службы из настроек
  Service1.DisplayName  := Cnf1.Values['DisplayName'];
  Cnf1.Free;
end;
Понятно, что способ считывания немного кривой, в будущем переделаю на реестр или на TiniFile, вопрос в следующем:
С таким кодом удается установить в систему более 1 службы (предварительно скопировав ее в отдельную папку), проблем с удалением также не возникает.
Начинаются проблемы с запуском. При запуске служба запускается с Service1.Name установленным по умолчанию и зависает (не запускается). пробовал аналогичным способом подменить Service1.Name в событиях: ServiceCreate, ServiceExecute, ServiceStart, не помогает. Пробовал подменить имя тут:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program WebTrader;
 
uses
  SvcMgr,
  WebTraderService in 'WebTraderService.pas' {Service1: TService},
  VariablesUnit in 'VariablesUnit.pas',
  CreateUnit in 'CreateUnit.pas',
  MySQLUnit in 'MySQLUnit.pas',
 
  Classes, SysUtils, Dialogs;
 
{$R *.RES}
var
  Cnf1 : TStringList;
begin
  Cnf1 := TStringList.Create;
  Cnf1.LoadFromFile(extractfilepath(paramstr(0))+'\INI\Service.ini');
  Service1.Name         := Cnf1.Values['Name'];  // загружаю имя службы из настроек
  Service1.DisplayName  := Cnf1.Values['DisplayName'];
  Cnf1.Free;
 
  Application.Initialize;
  Application.CreateForm(TService1, Service1);
  Application.Run;
end.
также безрезультатно.
Кто сталкивался? Как еще попробовать решить проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2014, 12:26
Ответы с готовыми решениями:

Сервисы или службы в delphi. Инсталл, деинсталл, запуск, остановка
Написал программку для инсталляции и пуска, остановки и деинсталляции Сервиса....

D7, запуск службы из под службы, возможно ли такое?
Hello All. Необходимо написать службу которая будет через определенное время...

Запуск службы от имени
Подскажите, пожалуйста, какие есть принципиальные разницы между запуском службы...

Создание службы в Delphi
подскажите пожалуйста народ, пытаюсь сделать клиент сервер, только сервер...

Запуск Delphi 7
Скачивал несколько раз с инета, при установке ошибок не выдает. При запуске...

1
Duss
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
01.12.2014, 13:06  [ТС] 2
Нашел решение тут.
http://answerstop.org/question/97529...rvice-applicat


Delphi
1
procedure ServiceLoadInfo(Sender: TObject);
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TServiceMain.ServiceLoadInfo(Sender : TObject);// new method, not an override
begin
  Name := ParamStr(2);
  DisplayName := ParamStr(3);
end;
 
procedure TServiceMain.ServiceBeforeInstall(Sender: TService);
begin
  ServiceLoadInfo(Self);
end;
procedure TServiceMain.ServiceCreate(Sender: TObject);
begin
  ServiceLoadInfo(Self);
end;
Буду переделывать на загрузку с моего файла, но главное заработал запуск службы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2014, 13:06

Запуск Delphi
При первом запуске Delphi2007 всё проходит отлично. Закрою Delphi2007 и хочу...

запуск exe проекта в delphi
Здравствуйте! возникла проблема не запускается экзешка после компиляции...

Остановка и запуск службы(сервиса) из другой службы или из приложения не используя консоль
Добрый день! Компилятор Embarcadero XE8 Скажите, как можно остановить и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru