2017-04-20 124 views
0

我们已经有一段时间有点复杂的MSI安装程序(WiX),现在需要在MSI之后(以及可能在之前)调用某些可执行文件。这些可执行文件必须在msiexec之外运行。所以我刚开始得到维克斯引导程序会捆绑当前MSI,然后调用之后所需的EXE如下:WiX引导程序:跳过引导程序UI,先显示MSI对话框

<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,显示“完成”对话框?

感谢

回答

0

我认为这是不可能的StandardBootstrapper,但它绝对是可以自定义管理引导程序。在自定义MBA中,您可以自己创建包UI。特别是,当在命令行上传递开关/静音时,根本不会创建UI。但是,即使是正常情况下,您也不可以创建UI或创建一些隐形UI。

但是,这将违背Burn哲学:所有UI都应该在引导程序中,MSI应该是愚蠢的。

+0

感谢您的信息。当你说自定义托管引导程序时,你的意思是创建一个C++或C#应用程序并自己调用MSI和/或EXE? – Totem

+0

另外,如果将/ 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