Tengo una aplicación de servicio integrada en Delphi que funciona muy bien. Hace exactamente lo que yo quiero que haga y todo está feliz. Todo está bien hasta que quiera ejecutar dos (o más) instancias de ese servicio en una sola máquina. Como el nombre del servicio está codificado en el programa (a través de la propiedad Nombre del servicio), solo puedo instalar el servicio una vez en cualquier computadora. Si trato de modificar la propiedad Name en tiempo de ejecución, el servicio no responde a menos que la propiedad Name esté configurada para lo mismo que se configuró durante el tiempo de diseño.¿Es posible instalar varias instancias de la misma aplicación de servicio Delphi?
He hecho una solución para esto donde tengo todo el código que no está interactuando directamente con el administrador de control de servicio encapsulado en unidades separadas. Luego escribo un proyecto Delphi por separado para cada instancia que quiero del servicio que tiene el código suficiente para iniciarse y comenzar a ejecutar el código principal.
Este método es, en mi opinión, feo y sin duda es ineficiente. Funciona bien para dos instancias, pero luego necesitamos un tercero y un cuarto y ...
¿Hay alguna manera de que pueda modificar mi código para que tenga solo un proyecto Delphi que pueda instalarse y ejecutarse como múltiple instancias de servicio con alguna entrada de tiempo de ejecución simple (por ejemplo, indicador de línea de comando)?
O tal vez una pregunta más amplia: ¿Hay una "manera correcta" de lograr el objetivo?
Si hago esto, el servicio no se ejecutará a menos que ParamStr (2) sea igual al valor que se ha establecido para Nombre en el Inspector de objetos en el IDE. Si ParamStr (2) es diferente, cuando se inicia el servicio, entra en un estado perpetuo de "Inicio" y nunca se ejecuta. –
Disculpe, esto es solo una parte de lo que se necesita. Necesita el evento OnStart para llamar esto también. (¡Trabajando desde la memoria aquí!) –
No puedo encontrar este método ServiceLoadInfo que está utilizando. ¿Es ese un método estándar, o simplemente una sugerencia para escribir un método que averigüe a qué nombre se lo está llamando en este caso? –