【发布时间】:2013-03-14 15:04:09
【问题描述】:
我们需要在我们的服务器上安装大约 4-5 个供应商 MSI(我们谈论的是接近 50k 台机器)。在安装过程中,我们需要根据运行它的机器传递一些属性。
我已经组装了一个 WIX Bundle 包,它从注册表中读取它需要的属性,并为写入注册表值创建了一个 C# 控制台应用程序。所以部署的最终输出将是 3 个文件(控制台应用程序、控制台 app.config、wix_bundle.exe)。我没有为此创建任何自定义引导程序,只是为此应用程序使用默认引导程序。
现在另一个处理相同 6MSI 的小组提出了一个 VBScript 来安装供应商 Msi。他们还编写了管理升级/补丁等的逻辑。我们需要做出决定继续前进,我想知道这方面的利弊。我会提到我的想法,如果有错请补充或纠正我。
我不赞成或反对任何解决方案,但我需要确保该解决方案能够持续多年。我们将至少再使用 5-10 年。
非常感谢任何帮助!
WIX 捆绑包的优点 1. 所有的 MSI 都组合为一个实体,因此与 VBScript 相比,卸载非常容易。 2. 我们有一个与 WIX Bundle 相关联的版本,无需查找各个 MSI 的版本。 3. 控制台应用程序控制写入 WIX-Bundle 所需的属性,因此服务帐户/密码等具有某种抽象。
WIX BUndle 的缺点 1. 我不知道它究竟是如何处理补丁和升级的。我看到很多帖子说他们看到 wix 包中的补丁/升级问题。 2. 通过注册表读取参数并不是最好的解决方案。如果我可以将属性作为命令行传递给 WIX 捆绑包,那就更好了。我知道我必须为此编写一个自定义引导程序? 3.
VBScript 的优点 1. 至少在我们的案例中,使用 VBScript 的解决方案是有效的,不需要额外的工作。 2.
VbScript 的缺点 1. 在安装过程中我们使用了多个服务账号,这些服务账号根据机器而变化,但是在VB脚本中所有这些账号(基于每台机器)以及密码都是硬编码的。 2. 维护脚本,因为它具有使用 GUID/版本号等的卸载/升级/补丁等逻辑。我们需要为每个版本保存/更新 vbscript 以确保它工作正常。
【问题讨论】:
-
您将来会升级捆绑包中的单个 MSI,还是一起更新?
-
是的,这是可能的,我们可以得到一个也需要升级的 MSI。
标签: c# vbscript wix bundle wix3.5