Using WiX 3.6, I have a custom .NET BootstrapperApplication where I’ve included the .Net 4.0 web installer in the chain:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="$(var.BundleProductName)"
Version="$(var.BundleVersion)"
...
Compressed="yes" DisableRepair="yes" >
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<PayloadGroupRef Id="MyInstallerUILibs" />
</BootstrapperApplicationRef>
<Chain>
<!-- Install .Net 4 Full -->
<PackageGroupRef Id="NetFx40Web" />
<!-- Install my packages -->
<PackageGroupRef Id="MyPackages" />
</Chain>
</Bundle>
</Wix>
When I run the installer on a machine without .net 4 installed, it prompts
the user to download as expected and correctly installs .net 4.0 before
displaying my custom UI. So far, so good.
In my UI, I want to give the user the option of cancelling/exiting the
install before we install any additional packages. For example, if the user
doesn’t agree to our EULA.
What I’m seeing is this: If the .net 4.0 install runs and completes, then
within my BootstrapperApplication I exit before doing any Plan/Apply
actions, the bundle still shows up in the Windows Add/Remove Programs menu. I’ve
tried calling Engine.Quit((int) ActionResult.NotExecuted) and
Engine.Quit((int) ActionResult.UserExit), but neither seem to keep it off
the ARP list.
Note: the .net 4 install is also shown in the APR list, as expected.
And my question is this:
What is the right way to signal to the WiX engine that the bundle install was
stopped and the bundle itself should not be displayed in the Add/Remove Programs list?
Burn registers itself in ARP as soon as a chain begins, so users can, for example, reinstall a chain that failed partway through without failing the entire chain. The CLR is installed as part of your bundle’s chain from the pre-req BA (since your BA can’t load until the CLR is installed).