Главная страница
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.018 c
3-83340
diokant
2003-05-05 15:35
2003.05.26
Подскажите по MS SQL 2000, почему так нельзя...


8-83613
zenov
2003-02-12 19:01
2003.05.26
TMediaPlayer


6-83643
$hade
2003-03-25 16:06
2003.05.26
И снова Indy.


1-83576
Salvator
2003-05-13 11:49
2003.05.26
Работа с Word через Delphi


7-83769
_sMile
2003-03-24 11:31
2003.05.26
Как убить приложение?