Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизTService: как передать параметры для AfterInstall()? Найти похожие ветки
← →
BlackTiger (2003-05-13 15:26) [0]Мне нужно, чтобы при "Service1.exe /install" можно было бы передать еще несколько параметров, который пропишутся в регистре в AfterInstall().
Дело в том, что Self.ParamCount и Self.Param[] содержат значения только коммандной строки при старте сервиса. С System.ParamCount и System.ParamStr() тоже самое.
А вот где мне выцепить строку, которой сервис инсталлировался в систему?
Service1.exe /install /param1=value1 /param2=value2 ...
Хелп молчит как рыба об лед и не признается, зараза.
← →
BlackTiger (2003-05-14 13:19) [1]Ну же, господа!
Неужели никто не знает? Никому это не нужно было?
Как же поймать командную строку в ТАКОМ случае?
← →
sniknik (2003-05-14 14:02) [2]Параметры в сервисе ничем не отличаются от параметров в программе, во всяком случае когда инсталируеш в систему без разници что обрабатывать
Service1.exe /install
или
Service1.exe /install /param1=value1 /param2=value2 ...
а у тебя похоже (как я понял) проблема получить эти параметры потом когда сервис запускается системой. ну в таком он по моему берет параметры из "Параметров запуска" из свойств самого сервиса, пропиши их руками, в службах открой свойства своего сервиса там на первой закладке.
если хочеш сам устанавливать то это при инсталяции указывается.
посмотри ветку
http://delphimaster.net/view/1-1052802036/
там первым ответом ссылка на сервис который я когдато ложил в кладовку (надо же описание давно глюкнулось а файлик лежит и о нем помнят), как там параметры передаются/обрабатываются видно а перекинуть их в параметры запуска это одно поле структуры при инсталяции дозаполнить (насколько помню), не разберешся сам пиши.
но на самом деле это действительно похоже никому не нужно, пробегись по свойствам служб у многих параметры запуска найдеш?
← →
BlackTiger (2003-05-14 14:18) [3]а у тебя похоже (как я понял) проблема получить эти параметры потом когда сервис запускается системой
Скорее не тогда, когда он запускается, а когда он инсталлируется в системе. Проблема, насколько я понял, в том, что сам СЕРВИС не имеет (не получает) коммандной строки, ее имеет та часть кода (скрытого), которая его прописывает в системе (та часть, которая принимает "/install") - сервис-то у меня визардовский. И вот ее-то я не могу получить.
Не то, чтобы это было проблемой. Я могу в AfterInstall() насоздавать параметры по-умолчанию, но через коммандную строку было бы красивее.
← →
sniknik (2003-05-14 14:28) [4]> сервис-то у меня визардовский.
вот в этом наверное и проблема (хотя чтобы быть увереннным нужно попробовать, а лень :о)), он же сам получает/обрабатывает параметры (на тот же инстал реагирует) может ненужное ему обрезает? но это можно проверить трассировкой с DCUs.
а в API-шном сам видел (если пример смотрел) никаких проблем, с ними, при инсталировании что прописал в командной строке то и получил.
← →
sniknik (2003-05-14 14:50) [5]получай их до того как TServiceApplication.Run; отработает.
получает все параметры (слепил пустой сервис визардом)
program Service;
uses
ShareMem,
SvcMgr,
SysUtils,
ServUnit in "ServUnit.pas" {Service1: TService};
{$R *.RES}
var
i: integer;
procedure EventToLog(Msg: string);
var F: TextFile;
isExists: boolean;
begin
Msg:= DateTimeToStr(Now)+"; "+Msg;
isExists:= FileExists("D:\Work\Srv.log");
AssignFile(F, "D:\Work\Srv.log");
if isExists then Append(F)
else Rewrite(F);
WriteLn(F, Msg);
Flush(F);
CloseFile(F);
end;
begin
for i:= 0 to ParamCount do
EventToLog(ParamStr(i)); <<<-------------------
Application.Initialize;
Application.CreateForm(TService1, Service1);
Application.Run;
end.
← →
Armen (2003-05-14 15:07) [6]program Project1;
uses
SvcMgr,
Forms,
SysUtils,
Unit1 in "Unit1.pas" {Service1: TService},
Unit2 in "Unit2.pas" {Form2},
{$R *.RES}
begin
if FindCmdLineSwitch("configure", ["-", "/"], True) then
begin
Forms.Application.Initialize;
Forms.Application.CreateForm(TForm2, Form2);
Forms.Application.Run;
end else
begin
SvcMgr.Application.Initialize;
SvcMgr.Application.CreateForm(TService1, Service1);
SvcMgr.Application.Run;
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c