ServiceProcessInstaller Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Installa un eseguibile contenente classi che estendono ServiceBase. Questa classe viene chiamata dalle utilità di installazione, ad esempio InstallUtil.exe, durante l'installazione di un'applicazione di servizio.
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
- Ereditarietà
Esempio
Nell'esempio seguente viene creato un programma di installazione del progetto denominato MyProjectInstaller, che eredita da Installer. Si presuppone che sia presente un eseguibile del servizio che contiene due servizi, "Hello-World Service 1" e "Hello-World Service 2". All'interno del costruttore per MyProjectInstaller (che verrebbe chiamato dall'utilità di installazione), ServiceInstaller gli oggetti vengono creati per ogni servizio e viene creato un ServiceProcessInstaller per l'eseguibile. Affinché l'utilità di installazione riconosca MyProjectInstaller come programma di installazione valido, l'attributo RunInstallerAttribute è impostato su true.
Le proprietà facoltative vengono impostate nel programma di installazione del processo e i programmi di installazione del servizio prima che i programmi di installazione vengano aggiunti alla Installers raccolta. Quando l'utilità di installazione accede a MyProjectInstaller, gli oggetti aggiunti alla Installers raccolta tramite una chiamata a InstallerCollection.Add verranno installati a sua volta. Durante il processo, il programma di installazione mantiene le informazioni sullo stato che indicano quali oggetti sono stati installati, in modo che ogni oggetto possa essere sottoposto a backup a sua volta in caso di errore di installazione.
In genere, non è possibile creare un'istanza della classe del programma di installazione del progetto in modo esplicito. È necessario crearlo e aggiungere RunInstallerAttribute, ma l'utilità di installazione chiama effettivamente e quindi crea un'istanza della 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
Commenti
Funziona ServiceProcessInstaller comunemente a tutti i servizi in un eseguibile. Viene usato dall'utilità di installazione per scrivere i valori del Registro di sistema associati ai servizi da installare.
Per installare un servizio, creare una classe del programma di installazione del progetto che eredita da Installere impostare nella RunInstallerAttribute classe su true. All'interno del progetto creare un'istanza ServiceProcessInstaller per ogni applicazione di servizio e un'istanza ServiceInstaller per ogni servizio nell'applicazione. Infine, aggiungere l'istanza ServiceProcessInstaller e le ServiceInstaller istanze alla classe del programma di installazione del progetto.
Quando InstallUtil.exe viene eseguito, l'utilità cerca le classi nell'assembly del servizio con l'oggetto RunInstallerAttribute impostato su true. Aggiungere classi all'assembly del servizio aggiungendole alla Installers raccolta associata al programma di installazione del progetto. Se RunInstallerAttribute è false, l'utilità di installazione ignora il programma di installazione del progetto.
Per un'istanza di ServiceProcessInstaller, le proprietà è possibile modificare includono specificare che un'applicazione di servizio viene eseguita con un account diverso dall'utente connesso. È possibile specificare una determinata Username coppia e Password in cui deve essere eseguito il servizio oppure per Account specificare che il servizio viene eseguito con l'account di sistema del computer, un account del servizio locale o di rete o un account utente.
Note
L'account di sistema del computer non corrisponde all'account amministratore.
In genere, non si chiamano i metodi ServiceInstaller all'interno del codice, ma in genere vengono chiamati solo dall'utilità di installazione. L'utilità di installazione chiama automaticamente i ServiceProcessInstaller.Install metodi e ServiceInstaller.Install durante il processo di installazione. Esegue il backout degli errori, se necessario, chiamando Rollback (o ServiceInstaller.Rollback) in tutti i componenti installati in precedenza.
La routine di installazione di un'applicazione gestisce automaticamente le informazioni sui componenti già installati, usando il programma di installazione del Installer.Contextprogetto . Queste informazioni sullo stato vengono aggiornate continuamente come ServiceProcessInstaller istanza e ogni ServiceInstaller istanza viene installata dall'utilità . In genere non è necessario che il codice modifichi queste informazioni sullo stato in modo esplicito.
La creazione di un'istanza di fa ServiceProcessInstaller sì che venga chiamato il costruttore della classe base , ComponentInstaller.
Costruttori
| Nome | Descrizione |
|---|---|
| ServiceProcessInstaller() |
Crea una nuova istanza della ServiceProcessInstaller classe . |
Proprietà
| Nome | Descrizione |
|---|---|
| Account |
Ottiene o imposta il tipo di account in cui eseguire l'applicazione di servizio. |
| CanRaiseEvents |
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
| Container |
Ottiene l'oggetto IContainer contenente l'oggetto Component. (Ereditato da Component) |
| Context |
Ottiene o imposta informazioni sull'installazione corrente. (Ereditato da Installer) |
| DesignMode |
Ottiene un valore che indica se è Component attualmente in modalità progettazione. (Ereditato da Component) |
| Events |
Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto . (Ereditato da Component) |
| HelpText |
Ottiene il testo della Guida visualizzato per le opzioni di installazione del servizio. |
| Installers |
Ottiene la raccolta di programmi di installazione contenuti nel programma di installazione. (Ereditato da Installer) |
| Parent |
Ottiene o imposta il programma di installazione contenente la raccolta a cui appartiene il programma di installazione. (Ereditato da Installer) |
| Password |
Ottiene o imposta la password associata all'account utente in cui viene eseguita l'applicazione di servizio. |
| Site |
Ottiene o imposta il ISite del Component. (Ereditato da Component) |
| Username |
Ottiene o imposta l'account utente in cui verrà eseguita l'applicazione di servizio. |
Metodi
| Nome | Descrizione |
|---|---|
| Commit(IDictionary) |
Quando sottoposto a override in una classe derivata, completa la transazione di installazione. (Ereditato da Installer) |
| CopyFromComponent(IComponent) |
Implementa il metodo della classe CopyFromComponent(IComponent) base senza alcun ServiceProcessInstaller comportamento specifico della classe. |
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| Dispose() |
Rilascia tutte le risorse usate da Component. (Ereditato da Component) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate da Component e, facoltativamente, rilascia le risorse gestite. (Ereditato da Component) |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetLifetimeService() |
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetService(Type) |
Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container. (Ereditato da Component) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| InitializeLifetimeService() |
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| Install(IDictionary) |
Scrive le informazioni dell'applicazione di servizio nel Registro di sistema. Questo metodo è progettato per essere usato dagli strumenti di installazione, che chiamano automaticamente i metodi appropriati. |
| IsEquivalentInstaller(ComponentInstaller) |
Determina se il programma di installazione specificato installa lo stesso oggetto del programma di installazione. (Ereditato da ComponentInstaller) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| OnAfterInstall(IDictionary) |
Genera l'evento AfterInstall. (Ereditato da Installer) |
| OnAfterRollback(IDictionary) |
Genera l'evento AfterRollback. (Ereditato da Installer) |
| OnAfterUninstall(IDictionary) |
Genera l'evento AfterUninstall. (Ereditato da Installer) |
| OnBeforeInstall(IDictionary) |
Genera l'evento BeforeInstall. (Ereditato da Installer) |
| OnBeforeRollback(IDictionary) |
Genera l'evento BeforeRollback. (Ereditato da Installer) |
| OnBeforeUninstall(IDictionary) |
Genera l'evento BeforeUninstall. (Ereditato da Installer) |
| OnCommitted(IDictionary) |
Genera l'evento Committed. (Ereditato da Installer) |
| OnCommitting(IDictionary) |
Genera l'evento Committing. (Ereditato da Installer) |
| Rollback(IDictionary) |
Esegue il rollback delle informazioni dell'applicazione di servizio scritte nel Registro di sistema dalla procedura di installazione. Questo metodo è progettato per essere usato dagli strumenti di installazione, che elaborano automaticamente i metodi appropriati. |
| ToString() |
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
| Uninstall(IDictionary) |
Quando sottoposto a override in una classe derivata, rimuove un'installazione. (Ereditato da Installer) |
Eventi
| Nome | Descrizione |
|---|---|
| AfterInstall |
Si verifica dopo l'esecuzione Install(IDictionary) dei metodi di tutti i programmi di installazione nella Installers proprietà . (Ereditato da Installer) |
| AfterRollback |
Si verifica dopo il rollback delle installazioni di tutti i programmi di installazione nella Installers proprietà . (Ereditato da Installer) |
| AfterUninstall |
Si verifica dopo che tutti i programmi di installazione nella Installers proprietà eseguono le operazioni di disinstallazione. (Ereditato da Installer) |
| BeforeInstall |
Si verifica prima dell'esecuzione Install(IDictionary) del metodo di ogni programma di installazione nella raccolta del programma di installazione. (Ereditato da Installer) |
| BeforeRollback |
Si verifica prima del rollback dei programmi di installazione nella Installers proprietà . (Ereditato da Installer) |
| BeforeUninstall |
Si verifica prima che i programmi di installazione nella Installers proprietà eseguano le operazioni di disinstallazione. (Ereditato da Installer) |
| Committed |
Si verifica dopo che tutti i programmi di installazione nella proprietà hanno eseguito il Installers commit delle installazioni. (Ereditato da Installer) |
| Committing |
Si verifica prima che i programmi di installazione nella proprietà eseseguono il commit delle Installers installazioni. (Ereditato da Installer) |
| Disposed |
Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo . (Ereditato da Component) |