Ответ 1
Я сделал бы большую часть работы из powershell script.
-
Используйте задачу msbuild Exec, как вы упомянули, чтобы добавить ее в процесс сборки. Здесь довольно хорошая статья о с помощью задачи exec для запуска вашей powershell script.
-
Поскольку вы используете VS 2010, проект настройки и развертывания довольно прост. Добавьте один из них в свое решение и добавьте к нему вывод своего сервисного проекта. Здесь статья о добавлении проекта установки для службы Windows.
-
Используйте сценарии powershell для копирования установщика .msi на удаленный сервер. Вы можете просто использовать
copy-item [source] [destination]
, если у вас есть доступ к файловому ресурсу. -
Остановите службу на удаленном компьютере. Вы можете использовать
(get-service -ComputerName [destination] -Name [service-name]).Stop()
(от этот вопрос) -
Установите службу без помощи psexec
psexec \\remotecomputer "[msi-destination-path]" /qn
Здесь остальные параметры командной строки для .msi. -
Запустите службу, используя
(get-service -ComputerName [destination] -Name [service-name]).Start()
Я также добавил бы набор параметров в powershell script для целевого сервера, имени службы и т.д. Это упростит сохранение этой части вашего процесса сборки. Ваш агент сборки, скорее всего, также будет администратором на конечной машине.
И наконец, убедитесь, что вы установили свою команду powershell script в исходное управление!
Изменить (июнь 2014 года)
В VS 2013 снова есть программы для установки! (Извините, VS 2012)
Кроме того, если найден этот удивительный ответ о том, как установить службу Windows без использования проекта установки.