У меня есть сервисное приложение, встроенное в Delphi, которое прекрасно работает. Он делает именно то, что я хочу, и все счастливы. Все в порядке, пока я не хочу запустить два (или более) экземпляра этой службы на одной машине. Поскольку имя службы жестко запрограммировано в программе (через свойство Name службы), я могу установить службу только один раз на любом компьютере. Если я пытаюсь изменить свойство Name во время выполнения, служба не отвечает, если для свойства Name не установлено то же значение, которое было задано во время разработки.
Я сделал обходной путь для этого, где у меня есть весь код, который не взаимодействует напрямую с менеджером управления службами, инкапсулированный в отдельные блоки. Затем я пишу отдельный проект Delphi для каждого нужного мне экземпляра службы, в которой достаточно кода для запуска и запуска основного кода.
Этот метод, на мой взгляд, безобразен и, безусловно, неэффективен. Это работает нормально для двух случаев, но тогда нам нужен третий и четвертый и ...
Можно ли как-нибудь изменить свой код, чтобы у меня был только один проект Delphi, который можно установить и запустить как несколько экземпляров службы с простым вводом во время выполнения (например, с помощью флага командной строки)?
Или, возможно, более широкий вопрос: есть ли "правильный путь" для достижения цели?