| 
| 
 | Вопрос # 2 696/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Подскажите в чем может быть проблема:
 Есть сервис, есть необходимость на одной машине запустить несколько копий таких сервисов (на разные БД). Для этого пытаюсь сделать динамичекое назначение имени сервиса при выполнении /install.
 Для этого сделал вот такой код (см. приложение).
 При установке приложения и его удалении - все нормально, имя сервиса регистрируется нормально, удаляется сервис тоже нормально.
 НО: после добавления такого кода, запуск сервиса происходит очень долго, в результате выдает ошибку, о том что сервис запустить не удалось. Однако процесс в диспетчере задач сидит.
 
 Без приведенного кода сервис работает нормально.
 Приложение:Переключить в обычный режим procedure TsmsMailSvc.ServiceBeforeInstall(Sender: TService);var  SERVICE_NAME: String; begin   SERVICE_NAME := Trim(ExtractFileName(ParamStr(0)));  SERVICE_NAME := Copy(SERVICE_NAME, 1, Length(SERVICE_NAME)-4);  GMainLog.LogMsg('AfterConstruction: service name is "'+SERVICE_NAME+'"');   Name := SERVICE_NAME;  DisplayName := SERVICE_NAME;end; procedure TsmsMailSvc.ServiceBeforeUninstall(Sender: TService);var  SERVICE_NAME: String; begin   SERVICE_NAME := Trim(ExtractFileName(ParamStr(0)));  SERVICE_NAME := Copy(SERVICE_NAME, 1, Length(SERVICE_NAME)-4);  GMainLog.LogMsg('AfterConstruction: service name is "'+SERVICE_NAME+'"');   Name := SERVICE_NAME;  DisplayName := SERVICE_NAME;end;
|  |   Вопрос задал: HotMan (статус: Посетитель)Вопрос отправлен: 28 апреля 2009, 17:30
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 28 апреля 2009, 18:28; участников в обсуждении: 2. 
|   | Вадим К (статус: Академик), 28 апреля 2009, 18:10 [#1]:Плохое решение. Но сама проблема думаю в том, что происходит борьба за ресурсы - например попытка открыть сервер на одном и том же порте. К тому же с приведенного кода я не увидел, как изменяется имя от сервиса к сервису - у них всех будет одинаковое.
 Зачем приводить код, который работает? мешающий код скорее всего сидит в OnCreate форм и объектов.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | HotMan (статус: Посетитель), 28 апреля 2009, 18:15 [#2]:1)Имя сервиса назначается по имени файла, у каждого сервиса ведь свое имя. 2) Вряд ли проблема из-за борьбы за ресурсы, такая ситуация происходит и когда рассматриваемый сервис запускается в единственном экземпляре.
 |  
|   | HotMan (статус: Посетитель), 28 апреля 2009, 18:19 [#3]:Хорошо. А какие более подходящие есть решения?   |  
|   | Вадим К (статус: Академик), 28 апреля 2009, 18:24 [#4]:И плодяться exe файлы? о ужас. А о том, что можно задавать параметры при запуске не в курсе? так делает майкрософт с своим svchost, но они файлы не плодят. Плодить таким образом сервисы... да памяти на них не напасёшся
  А вот по параметрам, можно. я думаю, что где то ещё имя сервиса задается. Имена не совпадают - и вот все проблемы.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | HotMan (статус: Посетитель), 28 апреля 2009, 18:28 [#5]:ок, спасибо. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |