Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-83377
gizar
2003-05-05 08:33
2003.05.26
ADOStoreProc и DBGrid


3-83347
Rocker
2003-04-28 10:34
2003.05.26
как программно ввести пароль при доступе к БД?


6-83625
Жорик
2003-03-24 11:19
2003.05.26
Indy, D7 & HTTP....


1-83587
SKYNET
2003-05-13 12:09
2003.05.26
ShowModal


3-83376
Belkova
2003-05-05 21:23
2003.05.26
Выделение в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский