Книга: C# для профессионалов. Том II
Классы ServiceProcessInstaller и ServiceInstaller
Классы ServiceProcessInstaller и ServiceInstaller
Аналогично приложениям Windows Forms метод InitializeComponent()
вызывается внутри конструктора класса ProjectInstaller
. В методе InitializeComponent()
создается экземпляр класса ServiceProcessInstaller
и класса ServiceInstaller
. Оба эти класса выводятся из класса ComponentInstaller
, который сам является Installer
.
Классы, производные из ComponentInstaller
, используются как части процесса установки. Помните, что служебный процесс может включать более одной службы. Класс ServiceProcessInstaller
применяется для части процесса установки, а класс ServiceInstaller
для части службы, поэтому один экземпляр ServiceInstaller
требуется для каждой службы. Если в процессе имеется три службы, то необходимо добавить дополнительные объекты ServiceInstaller
, в таком случае понадобятся три экземпляра ServiceInstaller
.
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
устанавливает исполняемый файл, который реализует класс
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
/// <summary>
/// требуемые переменные конструктора.
/// </summary>
private System.ComponentModel.Container components;
public ProjectInstaller() {
// Этот вызов затребован конструктором.
InitializeComponent();
// TODO: добавить инициализацию после вызова InitComponent
}
/// <summary>
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
private void InitializeComponent() {
this.serviceProcessInstaller1 =
new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 =
new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.UserName = null;
//
// serviceInstaller1
//
this.serviceInstaller1.ServiceName = "QuoteService";
//
// ProjectInstaller
//
this.Installers.AddRange(
new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1, this.serviceInstaller1});
}
}
}
ServiceProcessInstallerServiceBase
. ServiceProcessInstaller
имеет свойства для всего процесса и для всех служб внутри процесса:
Свойства ServiceProcessInstaller |
|
---|---|
Username , Password |
Указывают учетную запись пользователя, с которой выполняется служба, если свойство RunUnderSystemAccount задано как false. |
Account |
С помощью этого свойства можно определить, будет ли служба выполняться с системной учетной записью. |
HelpText |
Свойство только для чтения, которое возвращает справочный текст для задания имени пользователя и пароля. |
ServiceInstaller
является классом, необходимым для каждой службы. Он имеет свойства, уникальные для каждой службы внутри процесса: StartType
, DisplayName
, ServiceName
и ServiceDependedOn
:
Свойства ServiceInstaller |
|
---|---|
StartType |
Указывает, запускается ли служба автоматически или вручную. Возможные значения: ServiceStartMode.Automatic , ServiceStartMode.Manual , ServiceStartMode.Disabled . |
DisplayName |
Является именем службы, которое выводится пользователю. Это имя используется также многими утилитами управления для контроля и мониторинга службы. |
ServiceName |
Является именем службы. Это значение должно быть идентично свойству ServiceName класса ServiceBase в программе службы. |
ServicesDependentOn |
Определяет массив служб, которые должны запускаться, прежде чем можно будет запустить эту службу. Когда служба запускается, все подчиненные службы запускаются автоматически. |
Заметьте, что если изменяется имя службы в классе, производном от ServiceBase
, то также необходимо изменить свойство ServiceName
в объекта ServiceInstaller
.
Во время тестирования задавайте StartType
как Manual (вручную). Если остановка службы откажет, этот процесс нельзя уничтожить, так как он будет сконфигурирован для выполнения в контексте учетной записи System. Эту конфигурацию можно будет изменить позднее, когда все будет работать правильно.
- 9.1. Классы и прототипы
- Классы сертификатов
- Статические классы
- 9.8. Классы в ECMAScript 5
- 9.7.4. Иерархии классов и абстрактные классы
- Классы синхронизации, внедренные в версии .NET Framework 4.0
- Классы для программирования графики
- У14.6 Отложенные классы и прототип
- Совет 38. Проектируйте классы функторов для передачи по значению
- Классы обобщенных коллекций
- Диаграммы последовательности действий и граничные классы
- Встроенные объекты (классы)