visual usar studio management habilitar deploy como windows-services msdeploy automated-deploy

windows services - usar - MSDeploy para instalar el servicio de Windows?



web deploy visual studio 2017 (3)

Tenemos un sitio web que publica eventos utilizando NServiceBus. El sitio se implementa utilizando msdeploy. También tenemos el NServiceBus.exe, que debería ejecutarse como un servicio de Windows para suscribirse a estos eventos, y nos gustaría implementarlo también.

¿Hay alguna forma de empaquetar el servicio, así como el sitio web, para que también pueda instalarse? ¿Es posible empaquetar por separado para que podamos implementarlo en otro servidor?

Cualquier consejo sobre dónde encontrar información sobre cómo hacer esto sería genial, ya que ahora podemos hacer implementaciones automatizadas para el sitio web.


Hace poco lo hice con MSDeploy, Phantom e installUtil.exe

Básicamente solo necesita modificar su clase de instalador y elevar sus privilegios de servicio wmsvc remotos si es necesario.

Enlace al blog


Lo que acabamos de hacer fue crear una capa de "controlador" que coordina las tareas de implementación, incluso una que podría usar msdeploy. Esencialmente, msdeploy no es el nivel más alto de abstracción en nuestro sistema de implementación.

Elegimos utilizar MSBuild para coordinar las tareas de implementación de elementos de un ''paquete''.

En nuestro proceso de implementación, una aplicación web implementada con msdeploy es solo otro elemento de implementación, al igual que un servicio de Windows.

En toda la divulgación, aún no hemos creado las tareas de implementación de msdeploy, aunque debería / se ajustaría a lo que ya hemos creado, ya que MSBuild invocaría a msdeploy. Actualmente utilizamos tareas de la comunidad de MSBuild para la automatización de la implementación de aplicaciones web, coordinadas a través de MSBuild.

Puede leer un poco más acerca de cómo "generalizamos" nuestras implementaciones a través de una publicación de blog que hice llamada " PANDA - Empaquetado y automatización de la implementación ".


Aquí hay una línea de cmd de msdeploy que solía sincronizar con un archivado que se crea a partir de un paso posterior a la compilación en mi archivo Windows Service.proj .

Se está sincronizando desde mi servidor de compilación a mi servidor de aplicaciones en una red diferente. Tengo pasos de compilación previos y posteriores que inician y detienen los servicios en el servidor remoto. Debe envolver el script powershell en un script vb debido a un error con powershell y msdeploy. La opción -verbose es muy útil.

También tengo el script vbscript y ps1 a continuación. Tenga cuidado con el VB sleep y los tiempos de espera anteriores y posteriores a la implementación de ms.

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

Script 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()

Escritura de 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