2017-04-20 121 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