【问题标题】:Best way to automate Windows Service deployment/install to multiple remote endpoints? [closed]将 Windows 服务部署/安装到多个远程端点的最佳方法是什么? [关闭]
【发布时间】:2011-01-19 13:41:08
【问题描述】:

我正在寻找可用于“Windows 服务”的最佳自动化部署方法。我查看了AppFabric,但这似乎非常适合 Web 服务/IIS 和 WCF。

我也研究了 MSDeploy,但这似乎并没有真正涵盖我正在寻找的所有功能。

例如,我有一个包含多个项目/Windows 服务的 .NET 解决方案。我想将这些包远程部署到多个服务器,然后远程安装 Windows 服务。全部来自一个脚本/机器。无需用户登录到相应的服务器并手动安装。

有什么软件可以做到这一点的建议吗?

【问题讨论】:

    标签: c# .net deployment windows-services


    【解决方案1】:

    我已经编写了一些工具来处理这个问题,而不仅仅是一个基本的脚本示例。不过,我将讨论基本的脚本示例。

    通过批处理脚本解决此问题的一种方法是调用 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 Installer XML (WiX) 的链接,以便从 Visual Studio 内部构建 MSI 包。

    PsExec from the SysInternals Suite

    Windows Installer XML (WiX)

    【讨论】:

      【解决方案2】:

      您可以使用kwatee 执行此操作。它将负责通过网络将您的文件复制到任意数量的计算机并运行远程操作,您可以配置这些操作以注册/注销和启动/停止服务。唯一的问题是您需要在目标上安装 telnet/ftp 或 ssh/scp。

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 2013-03-27
        • 1970-01-01
        • 2012-05-19
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-28
        相关资源
        最近更新 更多