1

关于Bootstrapper & Chaining的问题之前可能已经被问过。我想问一些相似不同的东西。

我的要求作为一个单一的功能集,这样当用户选择顶层的任何功能时,该选择作为参数传递给底层的相应 msi 并继续安装。用户可以再次启动此 exe/安装程序,他可以通过以通常方式选择它们来删除/修改功能。CHAIN 3 installshield msi into a single oneexpose the feature selection GUI of 2 of the MSIs

最后,当安装结束时the package should generate a custom XML file,将由内部工具使用,该工具基于用户上面选择的功能。


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

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

  • 在标准 GUI (Winforms / WPF) 中拥有自己的自定义 TreeView GUI
  • Process.Start("msiexec /i /ADDLOCAL=Feature1 msi1.msi") --> ADDLOCAL 将从我的自定义 GUI 选择中传递功能集参数。
  • 挂钩进程的退出事件
  • 等待进程退出
  • 成功退出后,使用退出处理程序中的适当参数触发第二个 msi 等等...

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

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

4

1 回答 1

2

老实说,bootstrappers 和 chainers 是非常复杂的故事......远远超过了眼睛。如果您对安装程序一无所知,那么您正在为大量工作做好准备。最好看看 WiX(Burn)和 InstallShield(Setup Prereqs 和 Suite Installers)等工具必须提供哪些工具,并更改您的要求以匹配它们的功能。

Microsoft 的团队(Office、SQL、Visual Studio)投入了大量时间和人才来开发他们的定制解决方案。比我们其他人通常必须花费的时间要多得多。

就个人而言,我会考虑将您的 MSI 分解为许多小型“微包”,每个“微包”都有 1 个功能。然后使用带有设置先决条件和功能先决条件的 InstallShield Basic MSI 项目将它们捆绑在一起。我遗漏了很多细节,因为您必须先有详细的要求,然后才能详细说明您将如何设计它。

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

于 2012-09-02T22:01:28.703 回答