3

We have had a somewhat complicated MSI installer (WiX) for a while and are now in need of calling certain executables after (and potentially before) the MSI. These executables must be ran outside of msiexec. So I have just started to get a WiX bootstrapper going that bundles the current MSI and then calls the EXE needed afterwards as follows:

<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" />

Since all the dialogs we have (license, options, etc) are in the MSI (and we want to keep it that way, for the most part), what's the best way to have the bootstrapper not show any UI before the MSI does? Currently I have a white dialog with a couple of buttons that are from the bootstrapper, but is there a way to tell the bootstrapper to not show any dialogs at the beginning or even to jump to the MSI right away?

After the MSI is done, I'd like to put up some dialog to show some progress on the EXE that are running and a "done" dialog. I guess that would have to come from the bootstrapper? how to do that? Or do I need to create a simple "done" MSI that shows a "done" dialog?

Thanks

Totem
  • 236
  • 1
  • 6

1 Answers1

1

I think it is not possible with StandardBootstrapper, but it is definitely possible with custom managed bootstrapper. In custom MBA you create the bundle UI yourself. In particular, when the switch /quiet is passed on the command line, you do not create the UI at all. But you may not create the UI or create some invisible UI even for the normal case.

However that will go against the Burn philosophy: all UI should be in bootstrapper and the MSIs should be dumb.

dvorn
  • 3,107
  • 1
  • 13
  • 12
  • Thanks for the info. When you say custom managed bootstrapper, you mean just creating a C++ or C# app and calling the MSI and/or EXEs yourself? – Totem Apr 20 '17 at 15:08
  • Also, if /quiet is passed to the bootstrapper, this switch will propagate to the MSI, and the MSI will show no UI as well right? Is there a document or info on how to switch the main work from WIX MSI to WIX bootstrapper? – Totem Apr 20 '17 at 15:09
  • 1
    Take a look http://www.wrightfully.com/part-1-of-writing-your-own-net-based-installer-with-wix-overview – dvorn Apr 20 '17 at 15:18
  • That link is very useful, thanks. Any input on my previous comment: Also, if /quiet is passed to the bootstrapper, this switch will propagate to the MSI, and the MSI will show no UI as well right? Is there a document or info on how to switch the main work from WIX MSI to WIX bootstrapper? – Totem Apr 21 '17 at 05:01
  • Yes, if burn started as /quiet it will run MSIs as quiet. I am not aware if this can be changed. In fact, initially burn has always run MSIs quiet and the option of showing the msi's UI was added as a hack later. – dvorn Apr 21 '17 at 09:08
  • What do you mean by "main work" and its "switching from msi to bootstrapper"? MSIs install files etc. while bootstrapper runs MSIs. – dvorn Apr 21 '17 at 09:11
  • 1
    Just got the same issue .. there is a Option „DisplayInternalUI“ on MSIPackage which replaces the burn UI with the MSI UI https://wixtoolset.org/documentation/manual/v3/xsd/wix/msipackage.html – Markus Apr 23 '21 at 17:58