Лучший способ автоматизировать развертывание / установку Windows Service на нескольких удаленных конечных точках? - PullRequest
4 голосов
/ 19 января 2011

Я ищу лучший метод автоматического развертывания для Windows Services. Я посмотрел на AppFabric , однако, похоже, он очень ориентирован на веб-сервисы / IIS и WCF.

Я также изучил MSDeploy, но, похоже, это опять-таки не охватывает все функции, которые я искал.

Так что в качестве примера у меня есть решение .NET с несколькими проектами / службами Windows. Я хотел бы, чтобы эти пакеты были удаленно развернуты на нескольких серверах, а затем удаленно установлены службы Windows. Все из одного скрипта / машины. Без необходимости входа пользователя на соответствующие серверы и установки вручную.

Любые предложения программного обеспечения, способного на это?

Ответы [ 2 ]

6 голосов
/ 19 января 2012

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

Чтобы решить эту проблему с помощью пакетного сценария, вызовите PsExec (один из инструментов SysInternals).Вы можете использовать PsExec для удаленного выполнения задач.Учетные данные, которые вам нужно будет указать, должны быть локальными администраторами на удаленной машине.Например:

PsExec \\computername -u adminuser -p adminuserpassword somecommand somecommandarguments

Если бы я хотел скопировать файл между двумя каталогами, я мог бы сделать следующее:

PsExec \\computername -u adminuser -p adminuserpassword xcopy "C:\TestFile.txt" "C:\MyDir\TestFile.txt" /i /e /r /y

Мне нравится загружать инструменты SysInternals в каталог TOOLS идобавьте это к моей переменной окружения PATH, чтобы мне не нужно было использовать полный путь к PsExec.

Вы можете комбинировать это с переносом службы Windows в MSI для упаковки и установки.В пакете MSI вы сможете определить, как установить службу Windows, чтобы она запускалась с Windows, вручную или как вам угодно.Вы также можете настроить учетную запись пользователя для его запуска.Я всегда предпочитаю вручную запускать сервис.Используйте инструмент командной строки MSIEXEC для запуска пакета MSI.Вы можете связать эти команды вместе, чтобы выполнить копирование и развертывание следующим образом:

PsExec \\computername -u adminuser -p adminuserpassword xcopy "\\buildserver\DeploymentPackages\MyWinService-v1\MyWinService.msi" "C:\Updates\MyWinService.msi" /i /e /r /y

PsExec \\computername -u adminuser -p adminuserpassword MSIEXEC /i "C:\Updates\MyWinService.msi" INSTALLDIR="C:\Program Files (x86)\MyWinService"

PsExec \\computername -u adminuser -p adminuserpassword sc start "MyWinService"

Вам не понадобится PsExec для запуска SC.exe на удаленном компьютере, поскольку у него есть возможность указать компьютер.

Надеюсь, это поможет вам где-то.Я включаю ссылки на инструменты SysInternals и установщик Windows XML (WiX) для создания пакетов MSI из Visual Studio.

PsExec из SysInternals Suite

Windows Installer XML (WiX)

1 голос
/ 20 января 2012

Вы можете сделать это с помощью kwatee . Он позаботится о копировании ваших файлов по сети на любое количество компьютеров и выполнении удаленных действий, которые вы можете настроить для регистрации / отмены регистрации и запуска / остановки служб. Единственный улов в том, что вам нужно установить на цели telnet / ftp или ssh / scp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...