У меня есть приложение-приложение, встроенное в Delphi, которое отлично работает. Он делает именно то, что я хочу, чтобы он делал, и все счастливы. Все нормально, пока я не хочу запускать два (или более) экземпляра этой службы на одной машине. Поскольку имя службы жестко закодировано в программе (через свойство Name службы), я могу установить службу только один раз на любом компьютере. Если я попытаюсь изменить свойство Name во время выполнения, служба не отвечает, если для свойства Name не установлено то же самое, что было установлено во время разработки.Возможно ли установить несколько экземпляров одного и того же приложения-приложения delphi?
Я сделал обходной путь для этого, когда у меня есть весь код, который не взаимодействует напрямую с менеджером управления сервисом, инкапсулированным в отдельные единицы. Затем я пишу отдельный проект Delphi для каждого экземпляра, который я хочу от службы, которая имеет достаточно кода для запуска и начала запуска основного кода.
Этот метод, на мой взгляд, уродлив и, безусловно, неэффективен. Он работает нормально для двух экземпляров, но тогда нам нужен третий и четвертый и ...
Есть ли способ изменить мой код, чтобы у меня был только один проект Delphi, который может устанавливать и запускать себя как несколько экземпляры службы с некоторым простым входом во время выполнения (например, флаг командной строки)?
Или, возможно, более широкий вопрос: есть ли «правильный путь» для достижения цели?
Если я это сделаю, служба не запускается, если параметр ParamStr (2) не равен значению, установленному для имени в Инспекторе объектов в среде IDE. Если параметр ParamStr (2) отличается, то при запуске службы он переходит в постоянное состояние «Запуск» и никогда не выполняется. –
Извините, это только часть того, что необходимо. Для этого вам нужно событие OnStart. (Работа с памятью здесь!) –
Я не могу найти этот метод ServiceLoadInfo, который вы используете. Это стандартный метод или просто предложение написать метод, который определяет, какое имя он вызывает в этом случае? –