2

我们需要在我们的服务器上安装大约 4-5 个供应商 MSI(我们谈论的是接近 50k 的机器)。在安装过程中,我们需要根据运行它的机器传递一些属性。

我已经组装了一个 WIX Bundle 包,它从注册表中读取它需要的属性,并为写入注册表值创建了一个 C# 控制台应用程序。所以部署的最终输出将是 3 个文件(控制台应用程序、控制台 app.config、wix_bundle.exe)。我没有为此创建任何自定义引导程序,只是为此应用程序使用默认引导程序。

现在另一个处理相同 6MSI 的小组提出了一个 VBScript 来安装 Vendor Msi。他们还编写了管理升级/补丁等的逻辑。我们需要做出决定继续前进,我想知道这方面的利弊。我会提到我的想法,如果有错请补充或纠正我。

我不赞成或反对任何解决方案,但我需要确保该解决方案可以持续多年。我们将至少再使用 5-10 年。

任何帮助深表感谢!

WIX Bundle 的优点 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 以确保它工作正常。

4

1 回答 1

3

我会使用烧录。它围绕所有需要的包创建一个“身份”,您可以识别、升级、附加组件、补丁等。Burn 处理包的升级和补丁,Visual Studio 2012 将其用于所有产品、补丁和 VS 更新. 如果有问题,我希望看到在它们上面打开的错误。:)

此外, wixstdba允许您通过设置刻录变量的命令行指定属性,请参阅WixBalExtension. 您不需要自定义 BA 来支持该功能。

Bundle 的另一个优点是,如果 MSI 失败,Burn 将尝试回滚以使机器再次处于良好状态。您可以控制回滚通过RollbackBoundary元素的距离。

于 2013-03-14T15:40:55.260 回答