2008-08-28 22 views
37

Estoy intentando instalar un servicio .NET que escribí. Como recomienda MSDN, estoy usando InstallUtil. Pero me he perdido la forma de configurar el usuario del servicio predeterminado en la línea de comandos o incluso en el servicio en sí. Ahora, cuando se ejecuta InstallUtil, se mostrará un cuadro de diálogo solicitando al usuario las credenciales para un usuario. Estoy intentando integrar la instalación del servicio en una instalación más grande y necesito que la instalación del servicio permanezca en silencio.Instalación de un servicio .NET usando InstallUtil

Respuesta

42

Creo que lo he encontrado. En el servicio en sí, el componente ServiceProcessInstaller creado automáticamente tiene una propiedad "Cuenta" que se puede establecer en "Servicio local", "LocalSystem", "NetworkService" o "User". Estaba por defecto en "Usuario", que debe haber mostrado el aviso.

+1

Quiero compartir este excelente artículo breve que explica las diferencias entre LocalSystem, LocalService y NetworkService: http://www.windowsitpro.com/article/services/understanding-the-local-service-and-network -servicio-cuentas –

0

¿Se le está pidiendo la cuenta para ejecutar el servicio o los derechos para instalar el servicio? Por el segundo, la instalación como administrador debería evitar que eso suceda. Para el primero, debes agregar un ServiceProcessInstaller a tu Instalador.

Creo que la superficie de diseño de un servicio tiene un enlace para crear un instalador de proyectos. En ese diseñador, puede agregar un instalador de proceso de tipo System.ServiceProcess.ServiceProcessInstaller. Las propiedades de este objeto le permiten configurar la cuenta que se usará para el servicio.

3

También tenga en cuenta el SC.exe util que no requiere la instalación de Visual Studio. Simplemente puede copiar este exe en el servidor que desea crear el servicio o incluso ejecutarlo remotamente. Use el parámetro obj para especificar un usuario.

Aparentemente hay una GUI para esta herramienta, pero no la he usado.

4

Como habrás notado, Karim, la propiedad "Cuenta" es la solución, aquí. Para los interesados ​​en las diferencias entre los contextos de seguridad establecidos por esta propiedad:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx

anteriormente utilizando InstallUtil o SC, me gusta la idea de crear un instalador AUTO:

http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx

incluso aunque encontré esto en la documentación de .Net 1.1:

El ManagedInstallerClass tipo admite la infraestructura .NET Framework y no está destinado a utilizarse directamente desde su código.

Cuestiones relacionadas