I've built an installer and tested that it upgrades fine. Subsequently the product team has asked me to ensure that a required property is passed into the installer and to fail it is not. This should only occur on the initial install and not on upgrades, repairs, or uninstall.
This seemed simple enough and that seems to be the default behavior for AI; the Launch Condition are gated behind 'Not Installed' which gets stored in AI_INSTALL.
My problem is: upon upgrade AI_INSTALL is being set to True (value is 1) and the launch conditions are thus being evaluated forcing the passing of the parameter. If I pass the parameters the upgrades succeed, AI_INSTALL=1, AI_MAINT does not exist, and OLDVERSIONS and MIGRATE are populated with the ProductCode of the older version.
We are doing Major upgrades., side-by-side is not supported, I have verified that the upgrade code remains the same while the ProductCode is updated each time. We have "Include maximum version in range" enabled so that we can upgrade based on the fourth digit of the version. However, I've tested with updating the 3rd digit as well with the same results.
My immediate plan is to just use the OLDPRODUCTS property on the launch condition ... but it still feels like something is amiss here. It would seem like AI_INSTALL should not be true when OLDVERSIONS are found.
I'm running Version 22.3 (4E21175D)