Tengo un servicio .Net de Windows. Quiero crear un instalador para instalar ese servicio de Windows.
Básicamente, tiene que hacer lo siguiente:
- Pack
installutil.exe
(¿Es necesario?) - Ejecute
installutil.exe
MyService.exe - Iniciar MyService
Además, quiero proporcionar un desinstalador que ejecute el siguiente comando:
installutil.exe /u MyService.exe
¿Cómo hacer esto usando Inno Setup?
c#
windows-services
inno-setup
devnull
fuente
fuente
Respuestas:
No lo necesita
installutil.exe
y probablemente ni siquiera tenga derechos para redistribuirlo.Esta es la forma en que lo estoy haciendo en mi aplicación:
Básicamente, puede hacer que su servicio se instale / desinstale por sí solo usando
ManagedInstallerClass
como se muestra en mi ejemplo.Entonces solo es cuestión de agregar a su script InnoSetup algo como esto:
fuente
Filename: "net.exe"; Parameters: "start WinServ"
. si no funciona, puede agregar un conmutador más: inicie su aplicación c # e inicie el servicio de Windows directamente desde el programa usando la clase ServiceController ( msdn.microsoft.com/en-us/library/… ).using System.Reflection;
o cambiarAssembly
aSystem.Reflection.Assembly
en el código anterior.Así es como lo hice:
Aparentemente, la configuración de Inno tiene las siguientes constantes para hacer referencia a la carpeta .NET en su sistema:
Más información disponible aquí .
fuente
Puedes usar
para crear un servicio. Consulte " sc.exe " sobre cómo iniciar, detener, comprobar el estado del servicio, eliminar el servicio, etc.
fuente
Si desea evitar reinicios cuando el usuario actualiza, debe detener el servicio antes de copiar el archivo exe y comenzar de nuevo después.
Hay algunas funciones de script para hacer esto en Servicio: funciones para iniciar, detener, instalar, eliminar un servicio
fuente