MSDeploy для установки службы Windows? - PullRequest
24 голосов
/ 30 октября 2010

У нас есть веб-сайт, который публикует события, используя NServiceBus. Сайт разворачивается с использованием msdeploy. У нас также есть NServiceBus.exe, который должен запускаться как служба Windows для подписки на эти события, и мы хотели бы также развернуть это.

Есть ли способ упаковать сервис и веб-сайт, чтобы его можно было также установить? Можно ли упаковать отдельно, чтобы мы могли развернуть его на другом сервере?

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

Ответы [ 3 ]

5 голосов
/ 13 марта 2011

Я недавно сделал это, используя MSDeploy, Phantom и installUtil.exe

Вам просто нужно изменить класс вашего установщика и повысить привилегии удаленной службы wmsvc, если это необходимо.

Ссылка на блог

4 голосов
/ 09 сентября 2011

Вот строка msdeploy cmd, которую я использовал для синхронизации archivedir, созданного на шаге после сборки в моем файле Windows Service.proj.

Он синхронизируется с моего сервера сборки на сервер приложений в другой сети. У меня есть шаги до и после сборки, которые запускают и останавливают службы на удаленном сервере. Вы должны обернуть скрипт powershell в скрипт vb из-за ошибки в powershell и msdeploy. Опция -verbose очень полезна.

У меня также есть сценарии vbscript и ps1 ниже. Будьте осторожны со сном VB и тайм-аутами до и после msdeploy.

msdeploy -verb:sync -source:archivedir=\\qa-xxxxx1.qa.lan\deployment\backups\FreddieMacDelivery\FreddieMacDelivery.zip,tempAgent='True',computerName=qa-xxxxx1.qa.lan,userName=QA\xxxxx,password=xxxx,authtype=NTLM,includeAcls='False' -dest:dirpath=\\qa-xxxxxx1.qa.lan\protk\Services\FreddieMacDelivery\1.4.1.test -useCheckSum -verbose -preSync:runCommand="cscript.exe c:\temp\stop_win_svc.vbs" -postSync:runCommand="c:\temp\start_win_svc.vbs",waitInterval=15000,waitAttempts=1

VB скрипт:

Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")

appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&c:/temp/Get_Win_SVC.ps1"" "

Set oShellExec = oShell.Exec(appCmd)

WScript.Sleep 1000
oShellExec.StdIn.Close()

Скрипт Powershell:

$username = 'QA\xxxxx'
$password = 'xxxxx'
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))

(Get-WmiObject  -computer qa-xxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")


$svc = (Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'") 

Write-Host  $svc

$svc.InvokeMethod("StartService", $null)


(Get-WmiObject  -computer qa-xxxxx1.qa.lan  -Credential $cred Win32_Service -Filter "Name='ProTeck.FreddieMac.DeliveryService'")> c:\temp\win_stat_post.txt
4 голосов
/ 16 ноября 2010

В итоге мы создали слой «контроллер», который координирует задачи развертывания, даже такой, который мог бы использовать msdeploy.По сути, msdeploy - не самый высокий уровень абстракции в нашей системе развертывания.

Мы решили использовать MSBuild для координации этих задач по развертыванию элементов из «пакета».

В нашем процессе развертывания веб-приложение, развернутое с помощью msdeploy, - это просто еще один элемент развертывания, такой же, какслужба Windows.

Во всех раскрытиях мы еще не создали задачи развертывания msdeploy, хотя они должны / будут вписываться в то, что мы уже создали, поскольку MSBuild будет вызывать msdeploy.В настоящее время мы используем задачи сообщества MSBuild для автоматизации развертывания веб-приложений, координируемые с помощью MSBuild.

Подробнее о том, как мы «обобщали» наши развертывания, можно прочитать в опубликованном мною посте « PANDA - Packaging ANdАвтоматизация развертывания".

...