c# - from - visual studio windows service tutorial
¿ClickOnce despliega un servicio de Windows? (4)
¿Es posible implementar un servicio de Windows usando ClickOnce? Si es así, ¿cómo lo logras?
Actualmente tenemos que usar un proyecto de implementación, y el proceso de instalación podría simplificarse mucho utilizando ClickOnce.
Puede usar la implementación de ClickOnce para instalar un servicio de Windows. Sin embargo, en mi experiencia cada vez que se emite una actualización, se requiere la intervención del usuario y eso normalmente rompe la razón por la que el programa se ejecuta como un servicio de Windows.
Sin embargo, un problema que nunca funcionó completamente para el servicio de Windows fue ejecutar installutil.exe para instalar el servicio en la lista de servicios de Windows. Pero eso no fue un problema para las circunstancias en las que implementé.
Supongo que NO de acuerdo con Choosing Between ClickOnce y Windows Installer
AFAIK no puede usar ClickOnce de extremo a extremo para implementar un servicio; Hay problemas tanto con la ubicación de los archivos (las instalaciones de ClickOnce en el perfil de un usuario) como con la instalación (ClickOnce está libre de efectos secundarios).
Sin embargo, puede escribir un servicio como un exe que puede autoinstalarse / desinstalarse de la lista de servicios, como tal ; básicamente, lo escribe como un exe de consola y maneja algunos argumentos de línea de comando, usando AssemblyInstaller
para [un] install desde el ensamblado actual. Otra ventaja es que el mismo enfoque se puede utilizar para ayudar a la depuración, ya que puede ejecutarlo desde la línea de comandos.
En lugar de ClickOnce, me gusta usar el enfoque usando Inno Setup, como aquí https://.com/a/1450051/396200
Usted tiene más control sobre qué y cómo se copiarán y ejecutarán.
Como Marc Gravell dijo en su respuesta, creo un exe que autoinstalo mi servicio, y luego uso Inno Setup para empacarlo e implementarlo. Después de la instalación de Inno instalada, ejecuta automáticamente el exe y luego mi exe instala mi servicio.