WiX安装程序包:跳过安装程序包界面,先显示MSI对话框

3
我们有一个相当复杂的 MSI 安装程序(WiX),现在需要在 MSI 之后(或者潜在情况下,在 MSI 之前)调用某些可执行文件。这些可执行文件必须在 msiexec 外部运行。因此,我刚刚开始编写 WiX 引导程序,将当前 MSI 打包,然后按如下方式调用所需的 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来显示“完成”对话框?

谢谢

1个回答

1

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

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


谢谢提供信息。当您说自定义托管引导程序时,是指创建一个C++或C#应用程序并自己调用MSI和/或EXE吗? - Totem
此外,如果将 /quiet 传递给引导程序,则此开关将传播到 MSI,并且 MSI 也不会显示任何 UI,对吗?是否有关于如何从 WIX MSI 切换到 WIX 引导程序的文档或信息? - Totem
1
请查看http://www.wrightfully.com/part-1-of-writing-your-own-net-based-installer-with-wix-overview。 - dvorn
是的,如果burn以/quiet启动,则会将MSI作为静默运行。我不知道是否可以更改这一点。实际上,最初burn始终以静默方式运行MSI,后来添加了显示msi UI的选项作为hack。 - dvorn
1
刚遇到了同样的问题..在MSIPackage上有一个“DisplayInternalUI”选项,它可以用MSI UI替换烧录UI。https://wixtoolset.org/documentation/manual/v3/xsd/wix/msipackage.html - Markus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接