ServiceProcessInstaller Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Instala um executável que contém classes que estendem ServiceBase. Essa classe é chamada por utilitários de instalação, como InstallUtil.exe, ao instalar um aplicativo de serviço.
public ref class ServiceProcessInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceProcessInstaller : System.Configuration.Install.ComponentInstaller
type ServiceProcessInstaller = class
inherit ComponentInstaller
Public Class ServiceProcessInstaller
Inherits ComponentInstaller
- Herança
Exemplos
O exemplo a seguir cria um instalador de projeto chamado MyProjectInstaller, que herda de Installer. Supõe-se que há um executável de serviço que contém dois serviços, "Hello-World Service 1" e "Hello-World Service 2". Dentro do construtor para MyProjectInstaller (que seria chamado pelo utilitário de instalação), ServiceInstaller os objetos são criados para cada serviço e um ServiceProcessInstaller é criado para o executável. Para que o utilitário de instalação reconheça MyProjectInstaller como um instalador válido, o RunInstallerAttribute atributo é definido true
como .
As propriedades opcionais são definidas no instalador do processo e nos instaladores de serviço antes que os instaladores sejam adicionados à Installers coleção. Quando o utilitário de instalação acessar MyProjectInstaller, os objetos adicionados à Installers coleção por meio de uma chamada para InstallerCollection.Add serão instalados por sua vez. Durante o processo, o instalador mantém informações de estado indicando quais objetos foram instalados, para que cada objeto possa ser retirado, por sua vez, em caso de falha de instalação.
Normalmente, você não instanciaria explicitamente a classe do instalador de projeto. Você o criaria e adicionaria o RunInstallerAttribute, mas o utilitário de instalação realmente chama e, portanto, cria uma instância da classe .
#using <System.dll>
#using <System.ServiceProcess.dll>
#using <System.Configuration.Install.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Configuration::Install;
using namespace System::ServiceProcess;
using namespace System::ComponentModel;
[RunInstaller(true)]
public ref class MyProjectInstaller : public Installer
{
private:
ServiceInstaller^ serviceInstaller1;
ServiceInstaller^ serviceInstaller2;
ServiceProcessInstaller^ processInstaller;
public:
MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = gcnew ServiceProcessInstaller;
serviceInstaller1 = gcnew ServiceInstaller;
serviceInstaller2 = gcnew ServiceInstaller;
// The services run under the system account.
processInstaller->Account = ServiceAccount::LocalSystem;
// The services are started manually.
serviceInstaller1->StartType = ServiceStartMode::Manual;
serviceInstaller2->StartType = ServiceStartMode::Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1->ServiceName = "Hello-World Service 1";
serviceInstaller2->ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers->Add( serviceInstaller1 );
Installers->Add( serviceInstaller2 );
Installers->Add( processInstaller );
}
static void Main()
{
Console::WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
};
int main()
{
MyProjectInstaller::Main();
}
using System;
using System.Collections;
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;
[RunInstaller(true)]
public class MyProjectInstaller : Installer
{
private ServiceInstaller serviceInstaller1;
private ServiceInstaller serviceInstaller2;
private ServiceProcessInstaller processInstaller;
public MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = new ServiceProcessInstaller();
serviceInstaller1 = new ServiceInstaller();
serviceInstaller2 = new ServiceInstaller();
// The services run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem;
// The services are started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual;
serviceInstaller2.StartType = ServiceStartMode.Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1";
serviceInstaller2.ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1);
Installers.Add(serviceInstaller2);
Installers.Add(processInstaller);
}
public static void Main()
{
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
}
Imports System.Collections
Imports System.Configuration.Install
Imports System.ServiceProcess
Imports System.ComponentModel
<RunInstallerAttribute(True)> _
Public Class MyProjectInstaller
Inherits Installer
Private serviceInstaller1 As ServiceInstaller
Private serviceInstaller2 As ServiceInstaller
Private processInstaller As ServiceProcessInstaller
Public Sub New()
' Instantiate installers for process and services.
processInstaller = New ServiceProcessInstaller()
serviceInstaller1 = New ServiceInstaller()
serviceInstaller2 = New ServiceInstaller()
' The services will run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem
' The services will be started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual
serviceInstaller2.StartType = ServiceStartMode.Manual
' ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1"
serviceInstaller2.ServiceName = "Hello-World Service 2"
' Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1)
Installers.Add(serviceInstaller2)
Installers.Add(processInstaller)
End Sub
Public Shared Sub Main()
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]")
End Sub
End Class
Comentários
O ServiceProcessInstaller funciona comum a todos os serviços em um executável. Ele é usado pelo utilitário de instalação para gravar valores de registro associados aos serviços que você deseja instalar.
Para instalar um serviço, crie uma classe de instalador de projeto que herda de Installere defina a RunInstallerAttribute na classe como true
. Em seu projeto, instancie uma ServiceProcessInstaller instância por aplicativo de serviço e uma ServiceInstaller instância para cada serviço no aplicativo. Por fim, adicione a ServiceProcessInstaller instância e as ServiceInstaller instâncias à classe do instalador do projeto.
Quando InstallUtil.exe é executado, o utilitário procura classes no assembly de serviço com o RunInstallerAttribute definido como true
. Adicione classes ao assembly de serviço adicionando-as Installers à coleção associada ao instalador do projeto. Se RunInstallerAttribute for false
, o utilitário de instalação ignorará o instalador do projeto.
Para uma instância do ServiceProcessInstaller, as propriedades que você pode modificar incluem especificar que um aplicativo de serviço seja executado em uma conta diferente do usuário conectado. Você pode especificar um par e Password específico Username sob o qual o serviço deve ser executado ou você pode usar Account para especificar que o serviço seja executado sob a conta do Sistema do computador, uma conta de serviço local ou de rede ou uma conta de usuário.
Observação
A conta do sistema do computador não é igual à conta de Administrador.
Normalmente, você não chama os métodos em no ServiceInstaller seu código; eles geralmente são chamados apenas pelo utilitário de instalação. O utilitário de instalação chama automaticamente os ServiceProcessInstaller.Install métodos e ServiceInstaller.Install durante o processo de instalação. Ele faz backup de falhas, se necessário, chamando Rollback (ou ServiceInstaller.Rollback) em todos os componentes instalados anteriormente.
A rotina de instalação de um aplicativo mantém informações automaticamente sobre os componentes já instalados, usando o instalador do Installer.Contextprojeto. Essas informações de estado são atualizadas continuamente como a ServiceProcessInstaller instância e cada ServiceInstaller instância é instalada pelo utilitário. Geralmente, é desnecessário que seu código modifique essas informações de estado explicitamente.
A instanciação de um ServiceProcessInstaller faz com que o construtor de classe base, ComponentInstaller, seja chamado.
Construtores
ServiceProcessInstaller() |
Cria uma nova instância da classe ServiceProcessInstaller. |
Propriedades
Account |
Obtém ou define o tipo de conta na qual executar este aplicativo de serviço. |
CanRaiseEvents |
Obtém um valor que indica se o componente pode acionar um evento. (Herdado de Component) |
Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
Context |
Obtém ou define informações sobre a instalação atual. (Herdado de Installer) |
DesignMode |
Obtém um valor que indica se o Component está no modo de design no momento. (Herdado de Component) |
Events |
Obtém a lista de manipuladores de eventos que estão anexados a este Component. (Herdado de Component) |
HelpText |
Obtém o texto de ajuda exibido para opções de instalação do serviço. |
Installers |
Obtém a coleção de instaladores que contém esse instalador. (Herdado de Installer) |
Parent |
Obtém ou define o instalador que contém a coleção à qual o instalador pertence. (Herdado de Installer) |
Password |
Obtém ou define a senha associada à conta de usuário na qual aplicativo de serviço é executado. |
Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
Username |
Obtém ou define a conta do usuário na qual aplicativo de serviço será executado. |
Métodos
Commit(IDictionary) |
Quando substituído em uma classe derivada, conclui a transação de instalação. (Herdado de Installer) |
CopyFromComponent(IComponent) |
Implementa o método CopyFromComponent(IComponent) da classe base sem nenhum comportamento específico a uma classe de ServiceProcessInstaller. |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo Component e opcionalmente libera os recursos gerenciados. (Herdado de Component) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (Herdado de MarshalByRefObject) |
GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
Install(IDictionary) |
Grava informações do aplicativo de serviço no Registro. Este método destina-se a ser usado por ferramentas de instalação, que chamam automaticamente os métodos apropriados. |
IsEquivalentInstaller(ComponentInstaller) |
Determina se o instalador especificado instala o mesmo objeto como este instalador. (Herdado de ComponentInstaller) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
OnAfterInstall(IDictionary) |
Aciona o evento AfterInstall. (Herdado de Installer) |
OnAfterRollback(IDictionary) |
Aciona o evento AfterRollback. (Herdado de Installer) |
OnAfterUninstall(IDictionary) |
Aciona o evento AfterUninstall. (Herdado de Installer) |
OnBeforeInstall(IDictionary) |
Aciona o evento BeforeInstall. (Herdado de Installer) |
OnBeforeRollback(IDictionary) |
Aciona o evento BeforeRollback. (Herdado de Installer) |
OnBeforeUninstall(IDictionary) |
Aciona o evento BeforeUninstall. (Herdado de Installer) |
OnCommitted(IDictionary) |
Aciona o evento Committed. (Herdado de Installer) |
OnCommitting(IDictionary) |
Aciona o evento Committing. (Herdado de Installer) |
Rollback(IDictionary) |
Reverte informações de aplicativo de serviço gravadas no Registro pelo procedimento de instalação. Este método destina-se a ser usado pelas ferramentas de instalação, que processam os métodos apropriados automaticamente. |
ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
Uninstall(IDictionary) |
Quando substituído em uma classe derivada, remove uma instalação. (Herdado de Installer) |
Eventos
AfterInstall |
Ocorre depois que os métodos do Install(IDictionary) de todos os instaladores na propriedade Installers foram executados. (Herdado de Installer) |
AfterRollback |
Ocorre após as instalações de todos os instaladores na propriedade Installers serem revertidas. (Herdado de Installer) |
AfterUninstall |
Ocorre depois que todos os instaladores na propriedade Installers realizam suas operações de desinstalação. (Herdado de Installer) |
BeforeInstall |
Ocorre antes do método Install(IDictionary) de cada instalador no instalador em que a coleção foi executada. (Herdado de Installer) |
BeforeRollback |
Ocorre antes que os instaladores na propriedade Installers sejam revertidos. (Herdado de Installer) |
BeforeUninstall |
Ocorre antes dos instaladores na propriedade Installers executarem suas operações de desinstalação. (Herdado de Installer) |
Committed |
Ocorre depois que todos os instaladores na propriedade Installers confirmaram suas instalações. (Herdado de Installer) |
Committing |
Ocorre antes que os instaladores na propriedade Installers façam commit de suas instalações. (Herdado de Installer) |
Disposed |
Ocorre quando o componente é disposto por uma chamada ao método Dispose(). (Herdado de Component) |