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 программа ищет классы в сборке службы с заданным значением RunInstallerAttributetrue. Добавьте классы в сборку службы, добавив их в Installers коллекцию, связанную с установщиком проекта. Если RunInstallerAttribute это falseтак, программа установки игнорирует установщик проекта.

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

Note

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

Как правило, методы 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)

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

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