diff --git a/BaseInstallerBuild/Framework.wxs b/BaseInstallerBuild/Framework.wxs index 8bae5ca..30d65c7 100644 --- a/BaseInstallerBuild/Framework.wxs +++ b/BaseInstallerBuild/Framework.wxs @@ -129,31 +129,45 @@ ICU_DATA points at) install to the wrong locations. Reduced (/passive, UILevel 4) and full UI installs continue to resolve these in the InstallUISequence, so the UILevel guard keeps this from overriding a user-chosen path. VerifyDataPath populates REGDATAFOLDER (used by the - conditions below) and always returns Success, so it is safe in a silent install. --> - UILevel < 4 - UILevel < 4 - (UILevel < 4) and (NOT REGAPPFOLDER) and (NOT OVRAPPFOLDER) - (UILevel < 4) and (NOT REGAPPFOLDER) and (OVRAPPFOLDER) - (UILevel < 4) and (REGAPPFOLDER) - (UILevel < 4) and (NOT REGDATAFOLDER) and (NOT OVRDATAFOLDER) - (UILevel < 4) and (NOT REGDATAFOLDER) and (OVRDATAFOLDER) - (UILevel < 4) and (REGDATAFOLDER) - (UILevel < 4) and (NOT OVRHARVESTDATAFOLDER) - (UILevel < 4) and (OVRHARVESTDATAFOLDER) + conditions below) and always returns Success, so it is safe in a silent install. + + LT-22801: NOT PATCH keeps them out of patch transactions. A patch is applied with /qb, which + is UILevel 3, so UILevel < 4 alone also caught every patch. These actions are sequenced + after AppSearch and FindRelatedProducts, which puts them before CostFinalize; reassigning + the directory properties there leaves the installer unable to confirm the product's existing + components are still local, so every feature costs out Advertised and every component + Action: Null. The patch then reports success while installing only components that are + absent, and no already-installed file is replaced. The directories a patch needs are + already resolved from the installed product, so a patch has nothing to gain here anyway. --> + (UILevel < 4) and (NOT PATCH) + (UILevel < 4) and (NOT PATCH) + (UILevel < 4) and (NOT PATCH) and (NOT REGAPPFOLDER) and (NOT OVRAPPFOLDER) + (UILevel < 4) and (NOT PATCH) and (NOT REGAPPFOLDER) and (OVRAPPFOLDER) + (UILevel < 4) and (NOT PATCH) and (REGAPPFOLDER) + (UILevel < 4) and (NOT PATCH) and (NOT REGDATAFOLDER) and (NOT OVRDATAFOLDER) + (UILevel < 4) and (NOT PATCH) and (NOT REGDATAFOLDER) and (OVRDATAFOLDER) + (UILevel < 4) and (NOT PATCH) and (REGDATAFOLDER) + (UILevel < 4) and (NOT PATCH) and (NOT OVRHARVESTDATAFOLDER) + (UILevel < 4) and (NOT PATCH) and (OVRHARVESTDATAFOLDER) - - - (NOT REGAPPFOLDER) and (NOT OVRAPPFOLDER) - (NOT REGAPPFOLDER) and (OVRAPPFOLDER) - REGAPPFOLDER - (NOT REGDATAFOLDER) and (NOT OVRDATAFOLDER) - (NOT REGDATAFOLDER) and (OVRDATAFOLDER) - REGDATAFOLDER - NOT OVRHARVESTDATAFOLDER - OVRHARVESTDATAFOLDER + + NOT PATCH + NOT PATCH + (NOT PATCH) and (NOT REGAPPFOLDER) and (NOT OVRAPPFOLDER) + (NOT PATCH) and (NOT REGAPPFOLDER) and (OVRAPPFOLDER) + (NOT PATCH) and (REGAPPFOLDER) + (NOT PATCH) and (NOT REGDATAFOLDER) and (NOT OVRDATAFOLDER) + (NOT PATCH) and (NOT REGDATAFOLDER) and (OVRDATAFOLDER) + (NOT PATCH) and (REGDATAFOLDER) + (NOT PATCH) and (NOT OVRHARVESTDATAFOLDER) + (NOT PATCH) and (OVRHARVESTDATAFOLDER)