首页 > 解决方案 > 如何用 Wix+Burn 做动态命名实例

问题描述

我需要创建一个安装程序,允许用户安装我们的服务和应用程序的多个命名实例(即 Sql Server 样式)。

我已经看到一个名为 AdvancedInstaller 的产品可以做到这一点,根据我所读到的内容,这将通过引导程序捕获信息并将其流式传输到 MSI 来实现。我在这里假设自定义 UI 刻录实现应该能够做同样的事情,但是我找不到任何这样做的样本或关于如何将“流”到 MSI。

如果我想走这条路,我还需要在我的 MSI 中指定实例吗?

目前,Windows 服务、应用程序有单独的 MSI,然后是 Bundle Bootstrapper EXE,它允许选择要安装的服务。

谢谢

标签: wixwindows-installerburnwix3.11

解决方案


MSI 具有使用产品代码更改转换进行多实例安装的概念。这些转换可以(但不是必须)嵌入到 MSI 中。这里有一些背景阅读。

http://blog.iswix.com/search?q=multiple+instance

先读 IS12,再读 IS2009。随着微软摧毁他们的网站,预计会有许多断开的链接。这是2020年的链接。

https://docs.microsoft.com/en-us/windows/win32/msi/installing-multiple-instances-of-products-and-patches

https://docs.microsoft.com/en-us/windows/win32/msi/authoring-multiple-instances-with-instance-transforms

https://docs.microsoft.com/en-us/windows/win32/msi/installing-multiple-instances-with-instance-transforms

使用嵌入式转换时,您只能使用您在构建它们时选择的任何产品名称。您还可以动态生成转换并应用它们。

WiX 的标准引导程序应用程序并没有真正支持我在博客文章中谈到的所有场景。InstallShield 和 AdvancedInstaller 等其他工具有更多功能。

尽管我很喜欢 WiX 和 MSI,但这确实是需要很长时间才能理解、开发和测试解决方案的高级东西。您可能想查看使用诸如 InstallShield 或 Advanced Installer 之类的工具,或者只是创建一个普通的直接 MSI 来安装应用程序的模板,然后创建您自己的自定义实例管理工具,允许用户启动您的多个实例应用。

我是一名 WiX/MSI/InstallShield/DevOps 顾问。老实说,如果我要为客户报价,这将不是一个便宜的项目。


推荐阅读