我们的客户有解决方案,其中包括多个相互合作的产品。当我们更新解决方案的任何部分时,我们必须为每个操作系统(XP、Windows 7、Windows Server 2008 等)提供管理员指南。指南告诉你:
- 更新前应该停止哪些服务和进程
- 应该备份哪些文件
- 应该更新哪些配置键
- 应该卸载哪些程序/模块
- 应该安装哪些程序/模块
- 如何检查更新是否成功
- 恢复步骤
- ETC
基本上,我们将安装文件放在网络文件夹中,并提供应该在客户希望更新的工作站上运行的 powershell 脚本。此脚本可能相当复杂,并且在安装之间可能会发生巨大变化。
我想有没有任何平台可以简化这种分发?
使用标准安装程序 (.msi),这可以处理大多数事情。查看用于构建安装程序的开源平台的WiX 。
你可能想看看 Puppet。我用它来管理基于 Unix 的计算机的配置,但它也适用于 Windows 操作系统。
http://www.puppetlabs.com
没有任何“灵丹妙药”可以为您处理这些事情。我会怀疑任何告诉你有的人。
我来自使用签入 VCS 的构建脚本的背景,所以我的偏见可能会在这里显示。
我将讨论其他人提到的几个项目:
Windows Installer 乍一看确实很有吸引力,但它不是“免费午餐”。如果您选择构建 Windows 安装程序包,您只需将脚本中的依赖项和逻辑封装到安装程序包中,可能会有很多丑陋,例如大量的自定义操作。实际上,您将使用 Windows Installer 作为脚本环境,其中包含许多内置的怪癖和限制。
如果您使用配置管理系统(Desired State Configuration、Puppet 等),您仍然需要对依赖项和逻辑进行建模。使用配置管理系统,我敢说您将遇到平台描述您的依赖关系的能力的限制,此时您无论如何都需要补充脚本。
我认为您的 Powershell 脚本已经走上了正确的道路。我会对脚本进行评论,并且我会非常努力地构建一个可以处理所有各种安装场景的脚本(或者,更有可能的是,从单个中央脚本调用的一组较小的脚本)。我会使用版本控制软件来维护这些脚本。只要您从不透明的二进制 blob 安装的产品可行,我将构建测试逻辑来验证这些安装程序是否实际工作。