Wix toolset Bundle Chain installation global condition

0

CONTEXT: I created a Bootstrapper installer in order to install, if needed, the .net framework 4.8. together with the setup program I want to deliver with it.

Up to here all works nice: my program gets installed always and the .net just if needed.

The thing is that I need to add some more checks to this installer, for example check for a registry key (if another program proper version is installed) and if this does not meet the condition, then the complete installation should be aborted, nothing should be installed.

PROBLEM: the InstallCondition I have added affects just the MsiPackage but the rest of the installation seems to be considered as totally fine and installation finishes successfully, here the interesting part of code:

<util:RegistrySearch Id="OtherProgramVersionId" Root="HKLM" Key="SOFTWARE\XXX\Install::Version" Variable="OtherProgramVersion"/>

<Chain>
  <PackageGroupRef Id="NetFx48Redist" />
  <MsiPackage 
    Id="MySuperProgram.Setup" 
    SourceFile="$(var.MySuperProgram.Setup.TargetPath)"
    InstallCondition="OtherProgramVersion >= v10.0"/>
</Chain>

As said before, even the registry key is not found or it does not fulfill the condition, the installation seems to continue "successfully" and I get it in the ControlPanel->Programs as installed... but the main .msi was not really installed! (checking the destination folder, it's empty)

QUESTION: How can I add a global condition in order to stop completely any installation at all and show the user a message with the condition not fulfilled? If possible with a standard dialog.

I have seen (and I am still experiencing) with conditions, but seems they affect just one of the items in the chain... or they seem to break the installation somehow, I have tried adding to the .msi setup creation, file Product.wxs, the condition in order to abort this installation, but when installing I get this not passed condition as a setup error, seems the exit is not clean at all... even able to see the log where I see something like this:

Error 0x80070643: Failed to install MSI package.

Thanks in advance!

wix
windows-installer
asked on Stack Overflow Sep 21, 2020 by juagicre • edited Sep 22, 2020 by Bogdan Mitrache

1 Answer

1

If you're using WixStandardBootstrapperApplication, you can use bal:Condition to define bundle-level conditions. The WiX documentation has a sample: https://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/block_stdba_install_on_reg.html

answered on Stack Overflow Sep 21, 2020 by Bob Arnson

User contributions licensed under CC BY-SA 3.0