ServiceProcessInstaller realiza trabajo común a todos los servicios de un ejecutable. La utilidad de instalación lo utiliza para escribir valores del Registro asociados a los servicios que desea instalar.
Para instalar un servicio, cree una clase de instalador del proyecto que herede de la clase Installer y establezca RunInstallerAttribute en la clase en true. En el proyecto, cree una instancia de ServiceProcessInstaller por cada aplicación de servicio y una instancia de ServiceInstaller para cada servicio de la aplicación. Finalmente, agregue la instancia de ServiceProcessInstaller y las instancias de ServiceInstaller a la clase de instalador del proyecto.
Cuando se ejecuta InstallUtil.exe, la utilidad busca clases en el ensamblado del servicio con RunInstallerAttribute establecido en true. Agregue clases al ensamblado de servicio agregándolas a la colección Installers asociada al instalador del proyecto. Si RunInstallerAttribute es false, la utilidad de instalación omite el instalador del proyecto.
Para una instancia de ServiceProcessInstaller, entre las propiedades que puede modificar se incluye la especificación de que una aplicación de servicio se ejecute en una cuenta que no sea la del usuario que inició la sesión. Es posible especificar un par Username y Password determinado en el cual debe ejecutarse el servicio o se puede utilizar Account para especificar que el servicio se ejecute en la cuenta de sistema del equipo correspondiente, una cuenta de servicio local o de red o una cuenta de usuario.
Nota |
|---|
| La cuenta de sistema del equipo no es igual que la cuenta de administrador. |
Normalmente, no habrá que llamar a los métodos en ServiceInstaller dentro del código; generalmente será la la utilidad de instalación sólo la que los llame. La utilidad de instalación llama de forma automática a los métodos ServiceProcessInstaller.Install y ServiceInstaller.Install durante el proceso de instalación. Deshace los errores, si es necesario, mediante una llamada a Rollback (o ServiceInstaller.Rollback) en todos los componentes instalados anteriormente.
La rutina de instalación de una aplicación mantiene de forma automática la información acerca de los componentes que ya se han instalado mediante la propiedad Installer.Context del instalador del proyecto. Esta información de estado se actualiza continuamente a medida que la utilidad instala la instancia de ServiceProcessInstaller y cada una de las instancias de ServiceInstaller. No suele ser necesario que el código modifique esta información de estado de forma explícita.
Al crear una instancia de ServiceProcessInstaller, se llama al constructor ComponentInstaller de la clase base.