链接和引导多个MSI并将现有的MSIfunction集GUI合并到一个自定义GUI中

关于Bootstrapper和Chaining的问题可能以前曾被问过。 我想问一些类似和不同的东西。

我的要求是将CHAIN 3 installshield msi into a single oneexpose the feature selection GUI of 2 of the MSIs为单个特征集,以便当用户选择顶层的任何特征时,该选择作为参数传递(s)基础相应的msi和安装继续。 用户可以再次启动此exe / setup,他可以通过以常规方式选择它们来删除/修改function。

最后,当安装结束时the package should generate a custom XML file ,由内部工具根据上面用户选择的function使用。


因此,标准和自定义行为混合在一起。 I have no clue about the world of installers 。 可能有人可以建议如何以最小的努力实现这一点或重做correct approach ?

我应该in C#/Winforms (or WPF) ?编写这样的工具in C#/Winforms (or WPF) ? 看起来像重新发明轮子? 即类似的东西

  • 在标准GUI(Winforms / WPF)中拥有自己的自定义TreeView GUI
  • Process.Start(“msiexec / i / ADDLOCAL = Feature1 msi1.msi”) – > ADDLOCAL将从我的自定义GUI选择中传递function集参数。
  • 挂钩过程的退出事件
  • 等待进程退出
  • 成功退出后,使用退出处理程序中的相应参数触发第二个msi,依此类推……

我不知道它是否是正确的方法? 对此有任何帮助非常感谢。 提前致谢!!

(我正在为这个问题标记C#。)

说实话,bootstrappers和chainers是非常复杂的故事…远远超过了眼睛。 如果您对安装程序一无所知,那么您需要为自己做好大量工作。 最好看看WiX(Burn)和InstallShield(Setup Prereqs和Suite安装程序)等工具必须提供哪些工具,并根据其function更改您的要求。

微软的团队(这个Office,SQL,Visual Studio)投入了大量的时间和人才来开发他们的自定义解决方案。 我们其他人通常需要花费更多的时间。

就个人而言,我会考虑将你的MSI分解成许多小的“微包装”,每个都包含1个function。 然后使用具有安装先决条件和function先决条件的InstallShield Basic MSI项目将它们组合在一起。 我遗漏了很多细节因为你必须有详细的要求才能说明你的设计方法。

WiX 3.6 ala Burn也是一种可能性。