代码之家  ›  专栏  ›  技术社区  ›  Andy

MSDeploy要安装windows服务吗?

  •  24
  • Andy  · 技术社区  · 14 年前

    我们有一个使用NServiceBus发布事件的网站。使用msdeploy部署站点。我们还有NServiceBus.exe,它应该作为windows服务运行以订阅这些事件,我们也希望部署它。

    有没有办法把服务和网站打包,这样也可以安装?是否可以单独打包以便我们可以将其部署到另一个服务器?

    任何关于如何找到信息的提示都是很好的,因为我们现在可以为网站进行自动部署。

    3 回复  |  直到 14 年前
        1
  •  5
  •   Shashank Shekhar    6 年前

    我最近使用了MSDeploy、Phantom和installUtil.exe

    Link to blog

        2
  •  4
  •   Nifle Hassan Syed    13 年前

    我们最终要做的是创建一个“控制器”层来协调部署任务,甚至可以使用msdeploy。实际上,msdeploy并不是部署系统中的最高抽象级别。

    我们选择使用MSBuild来协调从“包”部署项的任务。

    在我们的部署过程中,使用msdeploy部署的web应用程序和Windows服务一样,只是另一个部署项。

    在所有公开内容中,我们还没有实际创建msdeploy部署任务,尽管它应该/将很好地插入到我们已经创建的内容中,因为MSBuild将调用msdeploy。我们目前使用MSBuild社区任务实现webapp部署自动化,通过MSBuild进行协调。

    PANDA - Packaging ANd Deployment Automation ".

        3
  •  4
  •   Benoit Garret    13 年前

    这里有一个msdeploy命令行,我用来同步一个archivedir,它是在我的 Windows Service.proj 文件。

    它正在从我的生成服务器同步到另一个网络上的应用服务器。我有在远程服务器上启动和停止服务的构建前和构建后步骤。由于powershell和msdeploy的错误,必须将powershell脚本包装在vb脚本中。这个 -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()
    

    $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