WiX引导程序查询

时间:2012-07-06 16:01:41

标签: wix windows-installer bootstrapper

我为我的产品创建了一个msi,它运行良好,但我需要安装.net 4.0作为先决条件。我遇到了烧伤和引导程序,但有几个问题:

我应该为主要msi和引导程序设置一个单独的项目吗?

我的客户需要一个msi(不是exe),那么bootstrapper可以是一个msi吗?

2 个答案:

答案 0 :(得分:1)

bootstrapper项目是一个单独的项目,并生成一个.exe作为其输出。它是自己的可执行文件,而.msi本质上是一个由Windows Installer处理的数据库。

答案 1 :(得分:1)

MSI(Windows Installer)不支持“嵌套”安装,其中一个 .msi 程序包运行一段时间,然后暂停,运行单独的安装程序包,然后从暂停的位置进行选择。 MSI使用一些本质上是系统全局的Windows资源,因此“内部”安装会在“外部”上安装。

作为单个用户体验进行多次安装的方法是按顺序运行每个安装,一次一个。这就是 bootstrapper 的目的,也称为 chainer :运行安装链,逐个链接。引导程序不是本身一个安装包;它是运行一个或多个安装包的工具。

这就是为什么引导程序不能是 .msi :它本身不是一个安装程序包。引导程序可以像批处理文件或脚本一样简单,也可以使用工业级工具,例如WiX burn bundleFlexera AdminStudio等。

请注意,有些安装程序包以 .exe 的形式提供 - 例如,.NET Framework或SQL Server安装程序。这些基本上是包含一个或多个 .msi 包的自解压存档,转储该有效负载的临时副本,然后在其上运行Windows Installer服务。在某种意义上,它们是“bootstrappers”加上包,所有都归为一类。引导程序可以运行包(和其他引导程序),但反之亦然。

您可能认为可以让外部程序包运行启动内部程序包的自定义操作。我们都试过了......并且发现它一般都不能正常工作,即使你似乎在一些特定的目标系统上侥幸逃脱它。

您必须说服您的客户,Windows Installer不能,不能按照他认为的方式工作。可悲的是,有时候这样做的唯一方法就是更换客户。