ServiceProcessInstaller Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Instala um executável contendo classes que estendem ServiceBase. Esta classe é chamada por utilitários de instalação, como InstallUtil.exe, ao instalar uma aplicação 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 seguinte cria um instalador de projeto chamado MyProjectInstaller, que herda de Installer. Assume-se que existe um executável de serviço que contém dois serviços, "Hello-World Serviço 1" e "Hello-World Serviço 2". No construtor do MyProjectInstaller (que seria chamado pela utilidade de instalação), ServiceInstaller são criados objetos para cada serviço, e um ServiceProcessInstaller é criado para o executável. Para que a utilidade de instalação reconheça o MyProjectInstaller como um instalador válido, o RunInstallerAttribute atributo é definido como true.
As propriedades opcionais são definidas no instalador do processo e nos instaladores de serviço antes de estes serem adicionados à Installers coleção. Quando a utilidade de instalação acede ao MyProjectInstaller, os objetos adicionados à Installers coleção através de uma chamada a InstallerCollection.Add serão instalados por sua vez. Durante o processo, o instalador mantém informações de estado indicando quais os objetos instalados, para que cada objeto possa ser retirado em caso de falha na instalação.
Normalmente, não instanciaria explicitamente a sua classe de instalador de projeto. Criarias e adicionarias o RunInstallerAttribute, mas a utilidade de instalação chama e, portanto, instancia, a 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
Observações
O ServiceProcessInstaller trabalho é comum a todos os serviços num executável. É usado pela utilidade de instalação para escrever valores de registo associados aos serviços que pretende instalar.
Para instalar um serviço, crie uma classe de instalador de projeto que herde de Installer, e defina a RunInstallerAttribute classe na classe para true. No seu projeto, instância por ServiceProcessInstaller aplicação de serviço e uma ServiceInstaller instância para cada serviço da aplicação. Por fim, adiciona a ServiceProcessInstaller instância e as ServiceInstaller instâncias à tua classe de instalador de projetos.
Quando InstallUtil.exe corre, a utilitária procura classes na assembly de serviço com o RunInstallerAttribute conjunto em true. Adicione classes ao conjunto do serviço adicionando-as à Installers coleção associada ao seu instalador de projeto. Se RunInstallerAttribute for false, a utilidade de instalação ignora o instalador do projeto.
Para uma instância de ServiceProcessInstaller, as propriedades que pode modificar incluem especificar que uma aplicação de serviço está a correr sob uma conta diferente do utilizador iniciado sessão. Pode especificar um par Password e par específicos Username sob os quais o serviço deve funcionar, ou pode usar Account para especificar que o serviço corra sob a conta de Sistema do computador, uma conta de serviço local ou de rede, ou uma conta de utilizador.
Note
A conta de Sistema do computador não é a mesma que a conta de Administrador.
Normalmente, não chamas os métodos no ServiceInstaller teu código; geralmente são chamados apenas pela utilidade de instalação. A ferramenta de instalação chama automaticamente os ServiceProcessInstaller.Install métodos e ServiceInstaller.Install durante o processo de instalação. Compensa falhas, se necessário, ao chamar Rollback (ou ServiceInstaller.Rollback) todos os componentes previamente instalados.
A rotina de instalação de uma aplicação mantém automaticamente informações sobre os componentes já instalados, usando o arquivo do Installer.Contextinstalador do projeto Esta informação de estado é continuamente atualizada à medida que a ServiceProcessInstaller instância e cada ServiceInstaller instância é instalada pela utilidade. Normalmente não é necessário que o seu código modifique explicitamente esta informação de estado.
Instanciar a ServiceProcessInstaller faz com que o construtor de classe base, ComponentInstaller, seja chamado.
Construtores
| Name | Description |
|---|---|
| ServiceProcessInstaller() |
Cria uma nova instância da ServiceProcessInstaller classe. |
Propriedades
| Name | Description |
|---|---|
| Account |
Obtém ou define o tipo de conta sob a qual executar esta aplicação de serviço. |
| CanRaiseEvents |
Obtém um valor que indica se o componente pode gerar 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á atualmente em modo de design. (Herdado de Component) |
| Events |
Obtém a lista de gestores de eventos que estão ligados a isto Component. (Herdado de Component) |
| HelpText |
Aparece o texto de ajuda para as opções de instalação do serviço. |
| Installers |
Fica com a coleção de instaladores que este instalador contém. (Herdado de Installer) |
| Parent |
Obtém ou define o instalador que contém a coleção a que este instalador pertence. (Herdado de Installer) |
| Password |
Obtém ou define a palavra-passe associada à conta de utilizador sob a qual a aplicação do serviço funciona. |
| Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
| Username |
Obtém ou define a conta de utilizador sob a qual a aplicação de serviço irá correr. |
Métodos
| Name | Description |
|---|---|
| Commit(IDictionary) |
Quando é sobreposto numa classe derivada, completa a transação de instalação. (Herdado de Installer) |
| CopyFromComponent(IComponent) |
Implementa o método da classe CopyFromComponent(IComponent) base sem ServiceProcessInstaller comportamento específico da classe. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta todos os recursos utilizados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo Component e opcionalmente liberta os recursos geridos. (Herdado de Component) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Devolve 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() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| Install(IDictionary) |
Regista as informações da aplicação de serviço no registo. 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 que este instalador. (Herdado de ComponentInstaller) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| OnAfterInstall(IDictionary) |
Eleva o AfterInstall evento. (Herdado de Installer) |
| OnAfterRollback(IDictionary) |
Eleva o AfterRollback evento. (Herdado de Installer) |
| OnAfterUninstall(IDictionary) |
Eleva o AfterUninstall evento. (Herdado de Installer) |
| OnBeforeInstall(IDictionary) |
Eleva o BeforeInstall evento. (Herdado de Installer) |
| OnBeforeRollback(IDictionary) |
Eleva o BeforeRollback evento. (Herdado de Installer) |
| OnBeforeUninstall(IDictionary) |
Eleva o BeforeUninstall evento. (Herdado de Installer) |
| OnCommitted(IDictionary) |
Eleva o Committed evento. (Herdado de Installer) |
| OnCommitting(IDictionary) |
Eleva o Committing evento. (Herdado de Installer) |
| Rollback(IDictionary) |
Reverte a informação da aplicação de serviço escrita no registo pelo procedimento de instalação. Este método destina-se a ser utilizado por ferramentas de instalação, que processam automaticamente os métodos apropriados. |
| ToString() |
Devolve a String contendo o nome do Component, se existir. Este método não deve ser ultrapassado. (Herdado de Component) |
| Uninstall(IDictionary) |
Quando sobrescrito numa classe derivada, remove uma instalação. (Herdado de Installer) |
evento
| Name | Description |
|---|---|
| AfterInstall |
Acontece depois de os Install(IDictionary) métodos de todos os instaladores da Installers propriedade terem sido executados. (Herdado de Installer) |
| AfterRollback |
Acontece depois de as instalações de todos os instaladores Installers na propriedade serem revertidas. (Herdado de Installer) |
| AfterUninstall |
Ocorre depois de todos os instaladores da propriedade realizarem Installers as operações de desinstalação. (Herdado de Installer) |
| BeforeInstall |
Ocorre antes de o Install(IDictionary) método de cada instalador na coleção de instaladores ter sido executado. (Herdado de Installer) |
| BeforeRollback |
Acontece antes de os instaladores Installers da propriedade serem recuados. (Herdado de Installer) |
| BeforeUninstall |
Ocorre antes de os instaladores Installers da propriedade realizarem as operações de desinstalação. (Herdado de Installer) |
| Committed |
Acontece depois de todos os instaladores Installers da propriedade terem concluído as suas instalações. (Herdado de Installer) |
| Committing |
Ocorre antes de os instaladores Installers da propriedade realizarem as instalações. (Herdado de Installer) |
| Disposed |
Ocorre quando o componente é eliminado por uma chamada ao Dispose() método. (Herdado de Component) |