Поделиться через


ServiceProcessInstaller Класс

Определение

Устанавливает классы, содержащие исполняемый файл, которые расширяют класс ServiceBase. Этот класс вызывается программами установки, например InstallUtil.exe, при установке служебного приложения.

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

Примеры

В следующем примере создается установщик проекта с именем MyProjectInstaller, который наследуется от Installer. Предполагается, что существует исполняемый файл службы, содержащий две службы: Hello-World Service 1 и Hello-World Service 2. В конструкторе для MyProjectInstaller (который вызывается программой установки) ServiceInstaller объекты создаются для каждой ServiceProcessInstaller службы, а для исполняемого файла создается объект . Чтобы программа установки распознала MyProjectInstaller как допустимый установщик, RunInstallerAttribute атрибуту присваивается значение true.

Дополнительные свойства задаются в установщике процесса и установщиках служб перед добавлением установщиков в коллекцию Installers . Когда служебная программа установки обращается к MyProjectInstaller, объекты, добавленные в коллекцию Installers с помощью вызова , InstallerCollection.Add будут установлены по очереди. Во время процесса установщик сохраняет сведения о состоянии, указывающие, какие объекты были установлены, поэтому каждый объект может быть по очереди резервирован в случае сбоя установки.

Как правило, вы не создаете экземпляр класса установщика проекта явным образом. Вы создадите его и добавьте RunInstallerAttribute, но служебная программа установки фактически вызывает и, следовательно, создает экземпляр класса .

#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 как общее для всех служб в исполняемом файле. Он используется программой установки для записи значений реестра, связанных со службами, которые вы хотите установить.

Чтобы установить службу, создайте класс установщика проекта, который наследуется от Installer, и задайте для RunInstallerAttribute класса значение true. В проекте создайте экземпляр по одному ServiceProcessInstaller экземпляру для каждого приложения службы и по одному ServiceInstaller экземпляру для каждой службы в приложении. Наконец, добавьте ServiceProcessInstaller экземпляр и экземпляры в ServiceInstaller класс установщика проекта.

При выполнении InstallUtil.exe служебная программа ищет классы в сборке RunInstallerAttribute службы, для которой задано значение true. Добавьте классы в сборку службы, добавив их в коллекцию Installers , связанную с установщиком проекта. Если RunInstallerAttribute имеет значение false, служебная программа установки игнорирует установщик проекта.

Для экземпляра ServiceProcessInstallerсвойства можно изменить, в том числе указать, что приложение службы выполняется под учетной записью, отличной от вошедшего пользователя. Можно указать определенную Username пару и Password , под которой должна выполняться служба, или Account использовать для указания того, что служба выполняется под системной учетной записью компьютера, локальной или сетевой учетной записью службы или учетной записью пользователя.

Примечание

Системная учетная запись компьютера отличается от учетной записи администратора.

Как правило, методы ServiceInstaller в коде не вызываются; они обычно вызываются только программой установки. Служебная программа установки автоматически вызывает методы ServiceProcessInstaller.Install и ServiceInstaller.Install в процессе установки. При необходимости он выполняет резервное завершение сбоев путем вызова Rollback (или ServiceInstaller.Rollback) для всех ранее установленных компонентов.

Подпрограмма установки приложения автоматически сохраняет сведения об уже установленных компонентах с помощью установщика Installer.Contextпроекта . Эта информация о состоянии постоянно обновляется по мере экземпляра ServiceProcessInstaller , и каждый ServiceInstaller экземпляр устанавливается служебной программой. Обычно коду не требуется явно изменять эти сведения о состоянии.

Создание экземпляра ServiceProcessInstaller приводит к вызову конструктора ComponentInstallerбазового класса , .

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

ServiceProcessInstaller()

Создает новый экземпляр класса ServiceProcessInstaller.

Свойства

Account

Получает или задает тип учетной записи, под управлением которой должно запускаться данное служебное приложение.

CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.

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

Возвращает объект IContainer, который содержит коллекцию Component.

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

Получает или задает сведения о текущей установке.

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

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

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

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

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

Получает текст справки для параметров установки службы.

Installers

Получает коллекцию установщиков, содержащуюся в данном установщике.

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

Получает или задает установщик, содержащий коллекцию, к которой принадлежит данный установщик.

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

Получает или задает пароль, связанный с учетной записью пользователя, под управлением которой запускается служебное приложение.

Site

Получает или задает ISite объекта Component.

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

Получает или задает учетную запись пользователя, под управлением которой будет запускаться служебное приложение.

Методы

Commit(IDictionary)

Завершает транзакцию установки, если переопределен в наследующем классе.

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

Реализует метод CopyFromComponent(IComponent) базового класса без поведения, определяемого классом ServiceProcessInstaller.

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

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

Освобождает все ресурсы, занятые модулем Component.

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

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.

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

Определяет, равен ли указанный объект текущему объекту.

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

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

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

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

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

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

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

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

Записывает в реестр сведения о служебном приложении. Этот метод предназначен для использования инструментами установки, которые автоматически вызывают соответствующие методы.

IsEquivalentInstaller(ComponentInstaller)

Определяет, устанавливает ли указанный установщик тот же объект, что и текущий установщик.

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

Создает неполную копию текущего объекта Object.

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

Создает неполную копию текущего объекта MarshalByRefObject.

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

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

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

Вызывает событие AfterRollback.

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

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

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

Вызывает событие BeforeInstall.

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

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

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

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

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

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

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

Вызывает событие Committing.

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

Отменяет сведения о служебном приложении, записанные в реестр процедурой установки. Этот метод предназначен для использования инструментами установки, которые автоматически обрабатывают соответствующие методы.

ToString()

Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять.

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

Отменяет установку, если переопределен в наследующем классе.

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

События

AfterInstall

Происходит после выполнения методов Install(IDictionary) всех установщиков из свойства Installers.

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

Происходит после отката установок всех установщиков из свойства Installers.

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

Происходит после выполнения операций удаления всеми установщиками из свойства Installers.

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

Происходит до того, как был запущен метод Install(IDictionary) каждого установщика из коллекции установщиков.

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

Происходит до отката установщиков из свойства Installers.

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

Происходит до выполнения операций удаления установщиками из свойства Installers.

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

Происходит после фиксации установки всеми установщиками из свойства Installers.

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

Происходит до фиксации установок установщиками из свойства Installers.

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

Возникает при удалении компонента путем вызова метода Dispose().

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

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

См. также раздел