WiX Toolset,带引导程序包的MSI产品,什么是正确的事件序列?

时间:2013-06-11 10:35:14

标签: wix burn

我的应用程序需要12个DLL文件和.NET 4.0客户端配置文件和SQL Server Compact

使用WiX Toolkit 3.7和Visual Studio 2012,我构建了一个Burn引导程序,用于安装.NET 4.0和SQL Server Compact,然后是我的MSI文件,其中包含所有DLL文件等。我做了通过阅读有关Wix的Stack Overflow的文档和其他问题。我正在新安装的Windows 7计算机上测试安装过程。 :)

但是,我对安装程序过程的一个方面感到困惑......

我认为我的MSI文件作为主安装程序运行,并且只有在目标计算机上缺少.NET 4.0 CP或SQL Server Compact时才会启动引导程序并安装缺少的软件包。

我现在的情况,虽然它有效,但是我的MSI文件是隐藏的,我唯一的文件是我的Bootstrapper.exe文件,我在安装过程中看到的唯一对话是引导程序对话。这是正确的还是我做得不好?

我已经将Bootstrapper的构建输出更改为MSI,所以我留下了一个很棒的MSI文件。考虑到原始product.wxs项目输出(MSI文件)现在已嵌入Bootstrapper.msi文件这一事实 - 我应该从原始product.wxs项目中获取所有UI元素吗?

如果是这样,我猜我可以自定义引导程序UI。

1 个答案:

答案 0 :(得分:9)

你错误地理解了引导程序的概念。 Bootstrapper链接所有包,包括您的MSI文件和其他先决条件。所以你应该总是运行引导程序。如果已经安装了先决条件,则引导程序将跳过这些并且仅安装MSI安装程序。

引导程序的主要目标是提供单一用户体验。因此,您需要编写自己的MBA(托管引导程序应用程序)来显示不同的安装程序页面,并根据您的意愿获取用户的输入。

但是,如果您查看任何其他即时简单的解决方案,则需要将 DisplayInternalUI 属性设置为yes,以便该MSI包显示对话框。但在这种情况下,也会显示引导程序窗口,直到安装完成。如果您使用此选项,我会提供一些修改默认MBA的建议。

注意:您认为自己在MSI对话框中拥有许可协议。

使用HyperLinklicense并将许可证URL设置为空。如果您使用以下Bal扩展名。您将获得带有安装和关闭按钮的普通安装程序页面。

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
    <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl="" LogoFile="logo.jpg" />
</BootstrapperApplicationRef>