Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-83476
Zigs
2003-05-14 21:04
2003.05.26
Запуск макроса Excel c параметрами из Delphi


1-83526
ламерша
2003-05-13 16:29
2003.05.26
PrintDialog


14-83706
SiJack
2003-05-06 16:22
2003.05.26
Хочу шарить в БД ?


8-83609
Yurko
2003-02-09 01:27
2003.05.26
Звук с микрофона или LineIn


14-83672
pavel_k
2003-05-05 21:34
2003.05.26
Assembler лит-ра и инфа