3

一段时间以来,我们有一个有点复杂的 MSI 安装程序 (WiX),现在需要在 MSI 之后(可能之前)调用某些可执行文件。这些可执行文件必须在 msiexec 之外运行。因此,我刚刚开始使用捆绑当前 MSI 的 WiX 引导程序,然后调用所需的 EXE,如下所示:

<Bundle Name=".......">
  <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
    <bal:WixStandardBootstrapperApplication 
    LicenseUrl=""
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" />
</BootstrapperApplicationRef>

<Chain>
  <MsiPackage Id="MainMSI" SourceFile="installer.msi" DisplayInternalUI="yes" />

  <ExePackage Id="EXE1" 
    InstallCommand="...."
    SourceFile="Exe1.exe" />

由于我们拥有的所有对话框(许可证、选项等)都在 MSI 中(并且我们希望在大多数情况下保持这种状态),让引导程序在 MSI 之前显示任何 UI 的最佳方法是什么?目前我有一个白色对话框,其中包含来自引导程序的几个按钮,但是有没有办法告诉引导程序在开始时不显示任何对话框,甚至立即跳转到 MSI?

MSI 完成后,我想显示一些对话框以显示正在运行的 EXE 的一些进度和“完成”对话框。我想这必须来自引导程序?怎么做?还是我需要创建一个显示“完成”对话框的简单“完成”MSI?

谢谢

4

1 回答 1

0

我认为使用 StandardBootstrapper 是不可能的,但使用自定义托管引导程序绝对是可能的。在自定义 MBA 中,您自己创建捆绑 UI。特别是,当在命令行中传递开关 /quiet 时,您根本不需要创建 UI。但是即使在正常情况下,您也可能不会创建 UI 或创建一些不可见的 UI。

然而,这将违背 Burn 理念:所有 UI 都应该在引导程序中,并且 MSI 应该是哑的。

于 2017-04-20T14:48:23.053 回答