我使用Visual Studio 2010和C#创建了一个Windows服务。我进行了很多关于自动化安装过程的研究。得到了很多建议,但都没有为我解决问题。我创建的Windows服务有很多依赖项,我希望在安装过程中客户端不需要任何UI交互。我为此创建了一个设置项目,并将所有依赖项都包含在安装程序中。
涉及的步骤:
- 为Windows服务创建一个构建
- 将安装文件(.msi)推送到远程位置
- 调用.msi文件并无用户交互地安装服务。
我目前所做的:
- 创建了一个PowerShell脚本来将文件推送到远程位置
- 执行PowerShell脚本并安装服务
请注意,PowerShell脚本
sc create "servicename" binpath="somepath"
该命令用于从项目目录安装服务,而不是安装使用Setup Project创建的.msi文件,这是两种非常不同的事情。如果您不理解这一点,请不要回答。
可能的解决方案:
- 使用 (http://www.msbuildextensionpack.com/help/4.0.5.0/html/258a18b7-2cf7-330b-e6fe-8bc45db381b9.htm) msbuild 扩展包。
- 使用 buildarguments 调用 msbuild 扩展包来安装 Windows 服务。
- 使用 (http://msdn.microsoft.com/en-us/library/x8zx72cd.aspx) Exec Task。
- 使用 WIX(Windows Installer Xml)。
现在我的问题是,我如何将Windows服务安装程序推送到远程位置?如何创建自定义构建参数并使用msbuild扩展包或Exec Task安装服务?
我知道对于那些没有使用由Setup Project创建的.msi文件安装服务的人来说,这听起来很愚蠢和恼人。但这是我在企业环境中试图解决多周的需求。