ServiceProcessInstaller Класс

Определение

Устанавливает классы, содержащие исполняемый файл, которые расширяют класс ServiceBase.Installs an executable containing classes that extend ServiceBase. Этот класс вызывается программами установки, например InstallUtil.exe, при установке служебного приложения.This class is called by installation utilities, such as InstallUtil.exe, when installing a service application.

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
Наследование

Примеры

В следующем примере создается установщик проекта с именем Мипрожектинсталлер, который наследует от Installer.The following example creates a project installer called MyProjectInstaller, which inherits from Installer. Предполагается наличие исполняемого файла службы, который содержит две службы: "Hello-World Service 1" и "Hello-World Service 2".It is assumed there is a service executable that contains two services, "Hello-World Service 1" and "Hello-World Service 2". В конструкторе для мипрожектинсталлер (который вызывается программой установки) ServiceInstaller для каждой службы создаются объекты, ServiceProcessInstaller а для исполняемого файла создается.Within the constructor for MyProjectInstaller (which would be called by the install utility), ServiceInstaller objects are created for each service, and a ServiceProcessInstaller is created for the executable. Чтобы программа установки могла распознать мипрожектинсталлер как допустимый установщик, RunInstallerAttribute атрибуту присваивается trueзначение.For the install utility to recognize MyProjectInstaller as a valid installer, the RunInstallerAttribute attribute is set to true.

Дополнительные свойства задаются в установщике процесса и установщиках служб перед добавлением установщиков в Installers коллекцию.Optional properties are set on the process installer and the service installers before the installers are added to the Installers collection. Когда программа установки обращается к мипрожектинсталлер, объекты, добавленные в Installers коллекцию через InstallerCollection.Add вызов, будут установлены в свою очередь.When the install utility accesses MyProjectInstaller, the objects added to the Installers collection through a call to InstallerCollection.Add will be installed in turn. Во время процесса установщик сохраняет сведения о состоянии, указывающие, какие объекты были установлены, поэтому для каждого объекта можно включить резервное копирование в случае сбоя установки.During the process, the installer maintains state information indicating which objects have been installed, so each object can be backed out in turn in case of an installation failure.

Как правило, класс установщика проекта не создается явным образом.Normally, you would not instantiate your project installer class explicitly. Вы создадите его и добавите RunInstallerAttribute, но программа установки фактически вызывает, и, следовательно, создает экземпляр класса.You would create it and add the RunInstallerAttribute, but the install utility actually calls, and therefore instantiates, the class.

#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

Комментарии

ServiceProcessInstaller Работает как общий для всех служб в исполняемом файле.The ServiceProcessInstaller does work common to all services in an executable. Она используется программой установки для записи значений реестра, связанных со службами, которые необходимо установить.It is used by the installation utility to write registry values associated with services you want to install.

Чтобы установить службу, создайте класс установщика проекта, наследующий от Installer, и RunInstallerAttribute задайте для класса trueзначение.To install a service, create a project installer class that inherits from Installer, and set the RunInstallerAttribute on the class to true. В проекте создайте экземпляр одного ServiceProcessInstaller экземпляра для каждого приложения службы и один ServiceInstaller экземпляр для каждой службы в приложении.Within your project, instantiate one ServiceProcessInstaller instance per service application, and one ServiceInstaller instance for each service in the application. Наконец, добавьте ServiceProcessInstaller экземпляр ServiceInstaller и экземпляры в класс установщика проекта.Finally, add the ServiceProcessInstaller instance and the ServiceInstaller instances to your project installer class.

При запуске программы InstallUtil. exe программа ищет классы в сборке службы с параметром, RunInstallerAttribute имеющим trueзначение.When InstallUtil.exe runs, the utility looks for classes in the service assembly with the RunInstallerAttribute set to true. Добавьте классы в сборку службы, добавив их в Installers коллекцию, связанную с установщиком проекта.Add classes to the service assembly by adding them to the Installers collection associated with your project installer. Если RunInstallerAttribute параметр falseимеет значение, программа установки игнорирует установщик проекта.If RunInstallerAttribute is false, the install utility ignores the project installer.

Для экземпляра ServiceProcessInstallerсвойства можно изменить, указав, что приложение службы запускается от имени пользователя, не вошедшего в систему.For an instance of ServiceProcessInstaller, properties you can modify include specifying that a service application run under an account other than the logged-on user. Можно указать конкретную Username пару и Password , в которой должна выполняться служба, или использовать Account , чтобы указать, что служба работает под системной учетной записью компьютера, локальной или сетевой учетной записью или учетной записью пользователя.You can specify a particular Username and Password pair under which the service should run, or you can use Account to specify that the service run under the computer's System account, a local or network service account, or a user account.

Примечание

Системная учетная запись компьютера не совпадает с учетной записью администратора.The computer's System account is not the same as the Administrator account.

Обычно методы ServiceInstaller в коде не вызываются; они обычно вызываются только программой установки.Normally, you do not call the methods on ServiceInstaller within your code; they are generally called only by the install utility. Программа установки автоматически вызывает методы и ServiceProcessInstaller.Install ServiceInstaller.Install в процессе установки.The install utility automatically calls the ServiceProcessInstaller.Install and ServiceInstaller.Install methods during the installation process. При необходимости он создает ошибки, вызывая Rollback (или ServiceInstaller.Rollback) для всех ранее установленных компонентов.It backs out failures, if necessary, by calling Rollback (or ServiceInstaller.Rollback) on all previously installed components.

Программа установки приложения автоматически сохраняет сведения об уже установленных компонентах с помощью установщика Installer.Contextпроекта.An application's install routine maintains information automatically about the components already installed, using the project installer's Installer.Context. Эти сведения о состоянии постоянно обновляются, ServiceProcessInstaller так как экземпляр ServiceInstaller и каждый экземпляр устанавливаются программой.This state information is continuously updated as the ServiceProcessInstaller instance and each ServiceInstaller instance is installed by the utility. Обычно нет необходимости явно изменять сведения о состоянии в коде.It is usually unnecessary for your code to modify this state information explicitly.

При создании экземпляра вызывается ComponentInstallerконструктор базового класса. ServiceProcessInstallerInstantiating a ServiceProcessInstaller causes the base class constructor, ComponentInstaller, to be called.

Конструкторы

ServiceProcessInstaller()

Создает новый экземпляр класса ServiceProcessInstaller.Creates a new instance of the ServiceProcessInstaller class.

Свойства

Account

Получает или задает тип учетной записи, под управлением которой должно запускаться данное служебное приложение.Gets or sets the type of account under which to run this service application.

CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Унаследовано от Component)
Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Унаследовано от Component)
Context

Получает или задает сведения о текущей установке.Gets or sets information about the current installation.

(Унаследовано от Installer)
DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Унаследовано от Component)
Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Унаследовано от Component)
HelpText

Получает текст справки для параметров установки службы.Gets help text displayed for service installation options.

Installers

Получает коллекцию установщиков, содержащуюся в данном установщике.Gets the collection of installers that this installer contains.

(Унаследовано от Installer)
Parent

Получает или задает установщик, содержащий коллекцию, к которой принадлежит данный установщик.Gets or sets the installer containing the collection that this installer belongs to.

(Унаследовано от Installer)
Password

Получает или задает пароль, связанный с учетной записью пользователя, под управлением которой запускается служебное приложение.Gets or sets the password associated with the user account under which the service application runs.

Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Унаследовано от Component)
Username

Получает или задает учетную запись пользователя, под управлением которой будет запускаться служебное приложение.Gets or sets the user account under which the service application will run.

Методы

Commit(IDictionary)

Завершает транзакцию установки, если переопределен в наследующем классе.When overridden in a derived class, completes the install transaction.

(Унаследовано от Installer)
CopyFromComponent(IComponent)

Реализует метод CopyFromComponent(IComponent) базового класса без поведения, определяемого классом ServiceProcessInstaller.Implements the base class CopyFromComponent(IComponent) method with no ServiceProcessInstaller class-specific behavior.

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Унаследовано от Component)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Унаследовано от Component)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetService(Type)

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.Returns an object that represents a service provided by the Component or by its Container.

(Унаследовано от Component)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
Install(IDictionary)

Записывает в реестр сведения о служебном приложении.Writes service application information to the registry. Этот метод предназначен для использования инструментами установки, которые автоматически вызывают соответствующие методы.This method is meant to be used by installation tools, which call the appropriate methods automatically.

IsEquivalentInstaller(ComponentInstaller)

Определяет, устанавливает ли указанный установщик тот же объект, что и текущий установщик.Determines if the specified installer installs the same object as this installer.

(Унаследовано от ComponentInstaller)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
OnAfterInstall(IDictionary)

Вызывает событие AfterInstall.Raises the AfterInstall event.

(Унаследовано от Installer)
OnAfterRollback(IDictionary)

Создает событие AfterRollback.Raises the AfterRollback event.

(Унаследовано от Installer)
OnAfterUninstall(IDictionary)

Вызывает событие AfterUninstall.Raises the AfterUninstall event.

(Унаследовано от Installer)
OnBeforeInstall(IDictionary)

Создает событие BeforeInstall.Raises the BeforeInstall event.

(Унаследовано от Installer)
OnBeforeRollback(IDictionary)

Вызывает событие BeforeRollback.Raises the BeforeRollback event.

(Унаследовано от Installer)
OnBeforeUninstall(IDictionary)

Вызывает событие BeforeUninstall.Raises the BeforeUninstall event.

(Унаследовано от Installer)
OnCommitted(IDictionary)

Вызывает событие Committed.Raises the Committed event.

(Унаследовано от Installer)
OnCommitting(IDictionary)

Создает событие Committing.Raises the Committing event.

(Унаследовано от Installer)
Rollback(IDictionary)

Отменяет сведения о служебном приложении, записанные в реестр процедурой установки.Rolls back service application information written to the registry by the installation procedure. Этот метод предназначен для использования инструментами установки, которые автоматически обрабатывают соответствующие методы.This method is meant to be used by installation tools, which process the appropriate methods automatically.

ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Унаследовано от Component)
Uninstall(IDictionary)

Отменяет установку, если переопределен в наследующем классе.When overridden in a derived class, removes an installation.

(Унаследовано от Installer)

События

AfterInstall

Происходит после выполнения методов Install(IDictionary) всех установщиков из свойства Installers.Occurs after the Install(IDictionary) methods of all the installers in the Installers property have run.

(Унаследовано от Installer)
AfterRollback

Происходит после отката установок всех установщиков из свойства Installers.Occurs after the installations of all the installers in the Installers property are rolled back.

(Унаследовано от Installer)
AfterUninstall

Происходит после выполнения действий по отмене установки всеми установщиками из свойства Installers.Occurs after all the installers in the Installers property perform their uninstallation operations.

(Унаследовано от Installer)
BeforeInstall

Происходит до того, как был запущен метод Install(IDictionary) каждого установщика из коллекции установщиков.Occurs before the Install(IDictionary) method of each installer in the installer collection has run.

(Унаследовано от Installer)
BeforeRollback

Происходит до отката установщиков из свойства Installers.Occurs before the installers in the Installers property are rolled back.

(Унаследовано от Installer)
BeforeUninstall

Происходит до выполнения действий по отмене установки установщиками из свойства Installers.Occurs before the installers in the Installers property perform their uninstall operations.

(Унаследовано от Installer)
Committed

Происходит после фиксации установки всеми установщиками из свойства Installers.Occurs after all the installers in the Installers property have committed their installations.

(Унаследовано от Installer)
Committing

Происходит до фиксации установок установщиками из свойства Installers.Occurs before the installers in the Installers property commit their installations.

(Унаследовано от Installer)
Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Унаследовано от Component)

Применяется к

Дополнительно