Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WiX Toolkit, MSI product with bootstrapper bundle, what is the correct sequence of events?

Tags:

wix

burn

My application requires 12 DLL files and .NET 4.0 Client profile and SQL Server Compact.

Using WiX Toolkit 3.7 and Visual Studio 2012, I have built a Burn bootstrapper that installs the .NET 4.0 and SQL Server Compact and then my MSI file which has all the DLL files, etc. I did this by reading the documentation and other questions on Stack Overflow regarding Wix. I'm testing the install process on a freshly installed Windows 7 machine. :)

However, I am confused about one aspect of the installer process...

I thought that my MSI file ran as the primary installer and only if .NET 4.0 CP or SQL Server Compact were missing on the target machine only then the bootstrapper would fire up and install the missing packages.

The situation I have now, while it works, is that my MSI file is hidden and the only file I have is my Bootstrapper.exe file and the only dialogue I see during install is the bootstrapper dialogue. Is this correct or am I doing something in a bad way?

I have changed the build output of the Bootstrapper to MSI, so I am left with a single MSI file which is great. Considering the fact that the original product.wxs project output (MSI file) is now embedded in the Bootstrapper.msi file - should I take all the UI elements out of the original product.wxs project?

If so, I'm guessing I can customise the bootstrapper UI.

like image 571
VipX1 Avatar asked Dec 26 '22 02:12

VipX1


1 Answers

You were wrongly understanding the bootstrapper concept. Bootstrapper is chaining all packages, including your MSI file and other prerequisites. So you should always run the bootstrapper. If your prerequisites are already installed then the bootstrapper will skip those and install only your MSI installer.

The main goal of the bootstrapper is to provide a single user experience. So you need to write your own MBA (managed bootstrapper application) to show different installer pages and get the input from user as your wish.

But if you look any other immediate simple solutions, then you need to set the DisplayInternalUI attribute to yes for that MSI package to show the dialogs. But in this case, the bootstrapper window is also displayed until the installation completes. If you go with the this option, I give some suggestions to modify the default MBA.

Note: Considered you have license Agreement in your MSI dialog itself.

Use HyperLinklicense and set the License URL to empty. If you use the below Bal extension. You will get the plain installer page with an install and a close button.

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
    <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl="" LogoFile="logo.jpg" />
</BootstrapperApplicationRef>
like image 141
Vinoth Avatar answered May 07 '23 01:05

Vinoth