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) |