运行 另一个 MSI 通过 visual studio 安装程序

Running another MSI through visual studio installer

我想用我的设置安装 MySQL 安装程序 msi。(MySQL 安装程序必须静默安装。我在自定义操作中使用批处理文件来执行此操作。)

但是,问题是 MySQL 的 msi 不能从主 setup.msi 中 运行 它给出 1618 错误(需要完成另一个安装。)我会想知道解决这个问题的简单方法。

背景信息:MySQL 安装程序解压缩包含 MySQLInstallerConsole.exe 的清单,然后通过另一个 cmd 命令调用它来安装 MySQL.

所以我要做的就是执行 MySQL 安装程序,以便它解压缩清单。稍后我会调用 MySQLInstallerConsole.exe 通过自定义操作安装 MySQL。

没有简单的解决方法。 Windows 安装程序通过使用互斥体强制执行一次安装 1 个规则。您需要创建一个引导程序/链接器来序列化您的包的安装。 Visual Studio 部署项目不支持此功能。我建议查看 Windows 安装程序 XML (WiX),它是 Burn boostrapper / chainer 引擎。

文档有点稀疏,但在 Visual Studio 世界中,定制的 bootstrap 是 Bootstrap 清单生成器。文档从这里开始:

https://msdn.microsoft.com/en-us/library/ms165429.aspx

这里有一篇旧文章:

https://msdn.microsoft.com/en-us/magazine/cc163899.aspx

但不清楚有多少信息和支持可用,因为安装项目已从安装项目中删除,然后又恢复了。

只是提一下更多的可能性——我的一些同事提到了(VS bootstrapper,burn):

  1. 只需开始编写一个批处理或脚本来依次调用两个 MSI。 如果您没有使用 MSI 的经验,也许总是一个好的起点。

  2. 使用 5 行代码编写您自己的迷你 setup.exe 引导程序来执行上述操作。

  3. (在 "Third party tools" 中更具体:)购买 InstallShield 或 Advanced Installer 或 InstallAware,这些工具具有现成的 GUI,可以轻松进行引导。 我会推荐他们中的第二个。启动另一个 MSI 只需单击两次。与另一个相似。但是三者还是有很大区别的,尤其是InstallAware比较特殊

!提到的 "mini bootstrappers" 这些工具不如 Burn 或其他工具强大:

  1. 购买现成的设置套件 SetupFactory,它可以用作 MSI 的引导程序。

  2. 使用 InstallShield "Suite" 项目类型,如果您购买 Premium 版本的 InstallShield。成本高昂,但具有友好的用户界面。几年前我成功地使用了它,但我不得不像使用 IS 一样解决一些错误(但我想你会发现大多数工具的错误。就是这样。)

  3. (再次)Burn 会派上用场,您可以在这里自行修复潜在的错误或行为...... 只是一开始可能会花费更多时间。

...当然可能还有更多