我在 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)执行任务
- 使用 WIX(Windows 安装程序 Xml)
现在我的问题是。如何将 Windows 服务安装程序推送到远程位置?以及如何创建自定义构建参数并使用 msbuild 扩展包或 Exec Task 并安装服务?
我知道对于尚未使用安装项目创建的 (.MSI) 安装服务的人来说,这听起来既愚蠢又令人恼火。但这是我在企业环境中数周以来一直在努力解决的要求。