Установка нескольких экземпляров одной и той же службы Windows на сервере

Итак, мыМы создали службу Windows для передачи данных в наше клиентское приложение, и все идет отлично. Клиент пришел с забавным запросом конфигурации, который требует, чтобы два экземпляра этой службы работали на одном и том же сервере и были настроены для указания на отдельные базы данных.

До сих пор у меня нетЯ не смог этого добиться и надеялся, что мои коллеги-члены stackoverflow смогут дать некоторые подсказки о том, почему.

Текущая настройка: I '

мы создали проект, который содержит службу Windows, мыТеперь я буду называть его AppService и файлом ProjectInstaller.cs, который обрабатывает пользовательские шаги установки для установки имени службы на основе ключа в App.config, например:

this.serviceInstaller1.ServiceName = Util.ServiceName;
this.serviceInstaller1.DisplayName = Util.ServiceName;
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

В этом случае Util - это просто статический класс, который загружает имя службы из файла конфигурации.

Начиная с этого момента, я попробовал два разных способа установить обе службы, и обе оказались одинаковыми.

Первый способ состоял в том, чтобы просто установить первую копию службы, скопировать установленный каталог и переименовать его, а затем выполнить следующую команду после изменения конфигурации приложения, чтобы изменить имя нужной службы:

InstallUtil.exe /i AppService.exe

Когда это неЯ попытался создать второй проект установщика, отредактировал файл конфигурации и собрал второй установщик. Когда я запустил установщик, он работал нормально, но служба не обнаруживалась в services.msc, поэтому я выполнил предыдущую команду для второй установленной базы кода.

Оба раза я получал следующий вывод от InstallUtil (только соответствующие части):

Запуск транзакционной установки.

Начало фазы установки установки.

Установка службы Служба приложений Два ... Служба приложений Служба Два успешно установлена. Создание службы приложений источника EventLog Два в журнале приложения ...

Возникла исключительная ситуация на этапе установки. System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта.

Фаза отката установки начинается.

Восстановление журнала событий до прежнего состояния для исходной службы приложений два. Служба приложения службы два удаляется из системы ... Служба приложения службы два успешно удалена из системы.

Фаза отката успешно завершена.

Транзакция завершена. Установка не удалась, и откат был выполнен.

Извините за длинный переулок, хотел убедиться, что достаточно актуальной информации. Часть, которая до сих пор меня озадачила, состоит в том, что в ней говорится, что установка службы завершается успешно, и только после того, как она отправляется на создание источника EventLog, создается впечатление, что исключение NullReferenceException создается. Так что, если кто-нибудь знает, что яЯ делаю неправильно или лучше подход, это будет высоко ценится.

Ответы на вопрос(10)

Ваш ответ на вопрос