在C#中创建自定义引导程序/引导程序

时间:2011-01-17 10:05:25

标签: deployment installation wix installshield bootstrapper

我们决定为我们的部署解决方案创建自定义引导程序。我们目前正在重新编写并重新设计我们所有产品的部署策略。可悲的是,我们都不是部署专家。

这是我们到目前为止所拥有的:

一个。 MSI包将在InstallShield中创作。我们将使用Installshield提供的任何功能(IIS集成,COM注册,注册表等)。将不使用InstallShield创建的对话框(这是引导程序的用途)。 MSI将以静默方式安装。

B中。每当我们需要为InstallShield无法处理的东西编写CA时,我们将使用DTF在托管代码(C#)中编写它们。我们将创建一个“自定义行动框架”,以“标准化”我们如何使用自定义操作。

℃。我们将在C#中创建一个自定义引导程序(“setup.exe”)来“处理”安装。

我们决定使用多个MSI方法并使用MSI事务从boostrapper“链接”安装(受到Office 2007安装程序的启发)

我们想要创建的boostrapper受到Visual Studio和SQL Server的引导程序的启发。 boostrapper将负责以下事项:

  1. 先决条件安装:每个应用程序都需要先决条件。这些先决条件列在与MSI(受Office 2007安装程序启发)相同的文件夹中的XML文件中,以及其他元数据。根据系统的当前状态,boostrapper将决定安装或不安装哪些先决条件。
  2. 功能选择:我们计划以这样一种方式构建“内部”MSI功能,使其不适合立即显示给最终用户。我们将标记为“Core_Files”,或“Vista_Only”或“64bit_Only”。根据XML文件(在第1项)和目标系统上的元数据,引导程序将负责“填充”用户可以自定义的“功能树”(也受到Office 2007引导程序的启发)。
  3. 安装前检查:引导程序将负责检查系统是否已准备好接收安装。例如,如果计算机需要在安装之前重新启动,或者用户需要手动安装Service Pack,修补程序或Windows组件。这里需要显示需要用户干预的任何事情。将其视为带有支票和前款的支票清单(列表框)。 (灵感来自SQL服务器的引导程序)。 “规则”将用C#编写。
  4. 应用程序配置:适用于需要在安装前“配置”的应用程序。这些“参数”(用户配置)将通过 MSI属性传递到相应的MSI。
  5. 实际安装:然后,引导程序将执行安装。必要时应遵守适当的“交易”。应该组合在一起的所有“产品”应在“添加/删除程序”中显示为一个产品(通过弄乱ARP条目)。此外,每个安装的MSI都应报告正确的进度。
  6. - 这就是我们到目前为止所拥有的。

    我认为有一些开箱即用的解决方案可用于创建自定义引导程序,如dotNetInstaller和BMG。我们已经研究过它,但它并不像我们希望的那样灵活。还有BURN,但我们不确定它是否准备好迎接黄金时段。

    所以我们在这里......我们决定创建自己的自定义引导程序。

    问题:

    我们疯了吗?我们不应该创建自己的引导程序吗?上面列出的哪些想法不现实?有更好的方法吗?

    我们将非常感谢有关我们情况的任何意见。另外,如果您有任何疑问,请不要犹豫。

2 个答案:

答案 0 :(得分:2)

坦率地说,Burn至少在一年内不会完成。你已经拥有InstallShield和IMO,它拥有目前最好的现成的bootstrapper。我会回顾你的要求并使其适合盒子。几乎所有我从你这里读到的东西都可以使用InstallShield完成,如果你学会把它推到极限。

答案 1 :(得分:1)

无论如何我会选择Burn或一些现有的解决方案。

我相信一段时间后你会遇到一些你现在无法想象的新问题。 如果你面对它们,这意味着Burn的开发人员已经面对它们并且可能让它们得到解决。如果没有,Burn有一个庞大的社区,可以比你更快地修复潜在的bug。

专注于您正在开发的软件,而不是编写安装程序/引导程序。

如果我在你的鞋子里,我会试一试。我会告诉我几天,看看它是否符合我的要求。