自动化部署/安装Windows服务到多个远程端点的最佳方法是什么?

3
我正在寻找最佳的自动化部署方法,用于“Windows服务”。我已经研究了AppFabric,但这似乎非常适用于Web服务/IIS和WCF。
我还研究了MSDeploy,但它似乎也没有真正涵盖我所需要的所有功能。
因此,举个例子,我有一个包含多个项目/Windows服务的.NET解决方案。我想将这些程序包远程部署到多台服务器上,然后远程安装Windows服务,而无需用户登录到各自的服务器并手动安装。
有没有软件可以胜任这项工作呢?
2个回答

6

我已经编写了处理这个问题的工具,不仅限于基本脚本示例。但我会先讲解一些基本脚本示例。

使用批处理脚本来解决这个问题的一种方法是调用 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软件包。 SysInternals套件中的PsExec Windows Installer XML (WiX)

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接