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