我们必须分发和维护一个有点复杂的软件应用程序,它的安装程序不会(也不预期)安装和配置任何可能类型的服务器上所需的每个部分。
到目前为止,我一直是负责安装的人,并且我知道所有许多陷阱和技巧,以使安装顺利运行。现在我们有更多的人想要在这个程序中进行培训,并希望在他们学习时尽量减少我对他们进行手握的需要。
问题是,针对所有可能情况的线性文档远非理想,因为过程中有许多可能的路径,具体取决于起点(Windows Server 2003 32/64 位、Windows Server 2008 32/64 位、SQL Server 2005 32/64 位、Windows XP Pro SP2/SP3、.NET 2.0 SP1/SP2)以及每种组合可能出现的所有问题。
因此,我正在寻找一种在设计时考虑到这种情况的工具,希望能够根据一组输入参数(机器配置)生成文档,或者更好的是,一种能够根据实际情况指导安装过程的工具一直在发生并且可以记录新问题并将它们映射到已知的解决方案。
我可以设想编写这样一个工具,但它看起来并不是一个(非常)微不足道的问题。这似乎是知识库和专家系统的交集。
所以你会怎么做?假设失败并拥有大量线性文档和知识库等常见问题解答?
好吧,我有两条评论。首先,您想听到的(尽管您可能没想到会这样)。
Gamebook Engine ( http://freshmeat.net/projects/gamebook-engine ) 听起来可能是您想要的,因为您本质上是在谈论“创建自己的冒险”类型的过程。如果您在 Windows XP 上安装,请转到第 45 页,如果您攻击德鲁伊,请转到第 26 页。
第二条评论:您可能以错误的方式进行此操作。您真正应该做的是为此安装程序编写一个包装器,该包装器足够智能以了解您的平台并具有该平台所需的特定说明。这(也许)更多的工作,但听起来从长远来看它会节省每个人的时间。
线性安装的问题是缺乏幂等性,或者无法以相同的结果一遍又一遍地重复任务,如果发生故障,它会在它被破坏的地方重新开始(当然,在修复破坏它的地方之后:- ))。
如果手动安装在中途失败,您通常不得不重新废弃整个安装过程。输入人为因素,你可能会有一场灾难等待发生。
对于 Windows 世界,我没有答案,但 Unix/Linux 有两个为幂等性设计的优秀配置管理工具:Chef 和 Puppet。虽然某些事情可能需要线性安装过程,但如果发生意外情况并且没有完全安装,这些工具将在中断的地方恢复。
我可能会采用 wiki 方式:每个配置问题使用一个 wiki 页面,并根据答案链接到其他 wiki 页面。通过安装的流程将通过遵循相应的链接来表示。随着新问题的出现,您将创建新的 wiki 页面。
然后,根据 wiki,您可能能够以一种很好的方式打印出 wiki 页面,并按照不同服务器安装所需的顺序将它们组合起来。
为什么不直接创建一个可移植的 html 页面,其链接可以在浏览器中通过向导式导航打开,IE“如果您有 Windows 2003 服务器,请单击此链接”等等。