Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

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

}

 }

}

ServiceProcessInstaller
устанавливает исполняемый файл, который реализует класс
ServiceBase
.
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. Эту конфигурацию можно будет изменить позднее, когда все будет работать правильно.

ServiceInstallerDialog

Другим классом установки в пространстве имен

System.ServiceProcess.Design
является
ServiceInstallerDialog
. Если желательно, чтобы системный администратор вводил имя пользователя и пароль во время установки, может использоваться этот класс.

Если задать свойства

Username
и
Password
класса
ServiceProcessInstaller
как
null
, это диалоговое окно будет автоматически выводиться во время установки. Также можно в это время отменить установку:

InstallUtil

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

installutil.exe
для установки и удаления cлужбы. Ввод командной строки для этих действий выглядит соответственно:

installutil quoteservice.exe

installutil /u quoteservice.exe

Если установка отказывает, проверьте файлы регистрации установки

InstallUtil.InstallLog
и
<имя_службы>.InstallLog
. Там можно найти очень полезную информацию, такую как "Указанная служба уже существует".

  • Читать дальше
  • 1
  • ...
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: