From 213fb1d3cd004ae97413b31ab3b7d10f91a00ddc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 2 Jun 2026 19:45:34 +0000 Subject: [PATCH 01/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260602.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1026.260601-1300.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260602.3 --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9f211c3190..b6552288d6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - bcefb53ef31cde2d4d7e97760db1970335047aed + 16ffc9acf96bc285a28d6e08e7f5449b02c27908 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - bcefb53ef31cde2d4d7e97760db1970335047aed + 16ffc9acf96bc285a28d6e08e7f5449b02c27908 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - bcefb53ef31cde2d4d7e97760db1970335047aed + 16ffc9acf96bc285a28d6e08e7f5449b02c27908 From 8b7643b859b66786a0d26477cfaf05144cafc7d6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 6 Jun 2026 01:44:56 +0000 Subject: [PATCH 02/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260605.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1027.260605-1010.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260605.2 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b6552288d6..9cc4203a23 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 16ffc9acf96bc285a28d6e08e7f5449b02c27908 @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 16ffc9acf96bc285a28d6e08e7f5449b02c27908 @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 16ffc9acf96bc285a28d6e08e7f5449b02c27908 From ee55e0ecf3af2091882583331f13e41891e903e7 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 9 Jun 2026 15:40:38 +0000 Subject: [PATCH 03/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260609.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1028.260608-1010.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260609.1 --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9cc4203a23..8c8a10d2f1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 16ffc9acf96bc285a28d6e08e7f5449b02c27908 + 352b642cc65a014a13951f0bd1994d7e0ba108be https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 16ffc9acf96bc285a28d6e08e7f5449b02c27908 + 352b642cc65a014a13951f0bd1994d7e0ba108be https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 16ffc9acf96bc285a28d6e08e7f5449b02c27908 + 352b642cc65a014a13951f0bd1994d7e0ba108be From d570a23fa2b65fa533bc5d4adc0f7c1605f36615 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 17 Jun 2026 17:03:26 +0000 Subject: [PATCH 04/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260617.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1029.260616-0840.3 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260617.1 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8c8a10d2f1..93841be620 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be From fa679159013886eff591a480405f59cc19da7c91 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 22 Jun 2026 21:54:13 +0000 Subject: [PATCH 05/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260622.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1030.260622-0700.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260622.2 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 93841be620..6cbf532342 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be From 24c6f255d40be3cf3ebe56771f7f38483ed54854 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 29 Jun 2026 21:23:05 +0000 Subject: [PATCH 06/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260629.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1031.260629-0710.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260629.1 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6cbf532342..63b8127c48 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be From 49e86f93d786dbc363b45088d39c065723b60027 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 30 Jun 2026 12:27:00 +0000 Subject: [PATCH 07/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260630.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1032.260629-2200.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260630.1 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 63b8127c48..832404a0be 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be From 29aa8e47d8564d734f41574d85ede947d509aff3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 1 Jul 2026 14:11:41 +0000 Subject: [PATCH 08/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260701.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1033.260630-2330.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.16-experimental-Rolling.20260701.1 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 832404a0be..8845d39d36 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 352b642cc65a014a13951f0bd1994d7e0ba108be From f40a285e574d70248cfe518fcd32bc045feec63d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sun, 5 Jul 2026 23:41:52 +0000 Subject: [PATCH 09/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260705.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1034.260705-0915.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.17-experimental-Rolling.20260705.3 --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8845d39d36..b5465d6982 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 352b642cc65a014a13951f0bd1994d7e0ba108be + f540cf15886d6357630100b6d4b80d0d9cfde3a3 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 352b642cc65a014a13951f0bd1994d7e0ba108be + f540cf15886d6357630100b6d4b80d0d9cfde3a3 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 352b642cc65a014a13951f0bd1994d7e0ba108be + f540cf15886d6357630100b6d4b80d0d9cfde3a3 From 5612a29dcd9e8374fa4e15dc54fd25dd571196f0 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 9 Jul 2026 01:37:00 +0000 Subject: [PATCH 10/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260708.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1036.260708-1000.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.17-experimental-Rolling.20260708.3 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b5465d6982..02c0a54358 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 From b104e958666ef22083370d712d2c8c943fd926a9 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 9 Jul 2026 03:03:48 +0000 Subject: [PATCH 11/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260708.4 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.0.0-experimental-27200.1036.260708-1000.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.0.17-experimental-Rolling.20260708.4 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 02c0a54358..5d6f608d4c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP f540cf15886d6357630100b6d4b80d0d9cfde3a3 From ca35527706cea9c029fdf15bfa8422013c6310ab Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 13 Jul 2026 04:05:44 +0000 Subject: [PATCH 12/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260712.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.1.0-experimental-27200.1037.260712-1330.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.1.1-experimental-Rolling.20260712.1 --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5d6f608d4c..67af6783e0 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - f540cf15886d6357630100b6d4b80d0d9cfde3a3 + 91addcd134bfa8b9725300cdf6030d8f100bbddf https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - f540cf15886d6357630100b6d4b80d0d9cfde3a3 + 91addcd134bfa8b9725300cdf6030d8f100bbddf https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - f540cf15886d6357630100b6d4b80d0d9cfde3a3 + 91addcd134bfa8b9725300cdf6030d8f100bbddf From e7f0cc7d67f0cc781280c28cfd1df73ff0e90856 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 16 Jul 2026 02:39:07 +0000 Subject: [PATCH 13/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260715.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.1.0-experimental-27200.1038.260715-1144.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.1.1-experimental-Rolling.20260715.1 --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 67af6783e0..f25a8e1da9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 91addcd134bfa8b9725300cdf6030d8f100bbddf @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 91addcd134bfa8b9725300cdf6030d8f100bbddf @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 91addcd134bfa8b9725300cdf6030d8f100bbddf From 355854f82534cc91ec244c9cbcf99d6c15d1b62b Mon Sep 17 00:00:00 2001 From: Agne Lukoseviciute Date: Mon, 20 Jul 2026 16:17:12 -0700 Subject: [PATCH 14/17] Containment v2: drop obsolete patchVersion/WinAppSDK_Security template arg from IsChangeEnabled The FrameworkUdk bump in this dependency flow (2.1.0-experimental-27200) enforces a static_assert rejecting the obsolete per-callsite patchVersion template argument; per-change patch versions are now owned centrally in RuntimeCompatibilityOptions.cpp. Mirrors release/2.0-stable commits 815b31ba and ada08459: drop the second arg from the WINAPPSDK_CHANGEID_* macros and the WinAppSDK_Security arg from CompatibilityTests. --- dev/ApplicationData/M.W.S.ApplicationData.cpp | 2 +- .../src/Helper.cpp | 2 +- .../CompatibilityTests/CompatibilityTests.cpp | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dev/ApplicationData/M.W.S.ApplicationData.cpp b/dev/ApplicationData/M.W.S.ApplicationData.cpp index fb379d6a25..10eeeadac6 100644 --- a/dev/ApplicationData/M.W.S.ApplicationData.cpp +++ b/dev/ApplicationData/M.W.S.ApplicationData.cpp @@ -20,7 +20,7 @@ #include // 61684930: [2.0 servicing] WindowsAppSDK: Microsoft.Windows.Storage.ApplicationData.GetForUnpackaged() -#define WINAPPSDK_CHANGEID_61684930 61684930, WinAppSDK_2_1_5 +#define WINAPPSDK_CHANGEID_61684930 61684930 static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::Local)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::LocalCache) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::LocalCache)); diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp index 6b79268695..37ede14e27 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp @@ -7,7 +7,7 @@ #include // Bug 62382643: Fix sparse-packaged apps unable to discover module-specific PRI files -#define WINAPPSDK_CHANGEID_62382643 62382643, WinAppSDK_2_1_5 +#define WINAPPSDK_CHANGEID_62382643 62382643 bool IsResourceNotFound(HRESULT hr) { diff --git a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp index bcddf0b729..a93e53687b 100644 --- a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp +++ b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp @@ -131,12 +131,12 @@ namespace Test::CompatibilityTests WEX::Logging::Log::Comment(WEX::Common::String(L"RuntimeCompatibilityOptions with DisabledChanges applied.")); // Verify that the specified DisabledChanges are disabled. - VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<12345, WinAppSDK_Security>())); - VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<23456, WinAppSDK_Security>())); - VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<34567, WinAppSDK_Security>())); + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<12345>())); + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<23456>())); + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<34567>())); // A different value not in DisabledChanges should remain enabled. - VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999, WinAppSDK_Security>())); + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999>())); } }; } From a9638f9b4311e4fa2eaf2b7699a4076be3a843dc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 20 Jul 2026 23:49:12 +0000 Subject: [PATCH 15/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260720.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.1.0-experimental-27200.1040.260719-1733.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.1.3-experimental-Rolling.20260720.1 --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f25a8e1da9..8a2c0932d1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 91addcd134bfa8b9725300cdf6030d8f100bbddf + 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 91addcd134bfa8b9725300cdf6030d8f100bbddf + 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - 91addcd134bfa8b9725300cdf6030d8f100bbddf + 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 From 75ec31c61c679a0fc8065402adbf9f8afd7001f8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 21 Jul 2026 01:05:25 +0000 Subject: [PATCH 16/17] Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260720.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 2.0.0-experimental-27200.1024.260527-1035.2 -> To Version 2.1.0-experimental-27200.1040.260719-1733.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 2.0.16-experimental -> To Version 2.1.4-experimental --- eng/Version.Details.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8a2c0932d1..30d270d697 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,7 +27,7 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 @@ -35,7 +35,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed 4c1df0de1a0025847b63017d0eefd6dc89d685f3 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 @@ -43,7 +43,7 @@ https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 6f349c49ec4dfe60d424d12b3ab1091c06a1428f - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP 3fe865e9c77580e74858a5064b1f079a8cd3b8b5 From bde5355343257f87ddfdf7b1ee81bee5abc0ad44 Mon Sep 17 00:00:00 2001 From: Agne Lukoseviciute Date: Tue, 21 Jul 2026 09:52:46 -0700 Subject: [PATCH 17/17] Containment v2: port RuntimeCompatibilityOptions foundation to release/2.0-experimental PR #6529 bumps Microsoft.FrameworkUdk to 2.1.0-experimental, whose Containment.h (Containment v2, PR 2) removes WinAppSDKPatchVersion / WinAppSDKPatchVersionFromValues / WinAppSDK_Security / WinAppSDK_Latest. release/2.0-experimental's RuntimeCompatibilityOptions.cpp still referenced those, causing C2065/C3861 across all build jobs. Mirror the release/2.0-stable foundation cherry-pick (#6535, commit 8c14c391) verbatim: WASDK-owned anonymous-namespace WinAppSDKReleaseVersion enum + WinAppSDKReleaseVersionFromValues, CatalogGroup/MakeGroup, prod catalog (2_1_0 + 2_1_5 + 2_3_0) and test catalog, ContainmentTestInitialize export, and Apply() pre-prune + std::sort rewrite. Adds the .def export and the CompatibilityTests test catalog + delay-load. The 1-arg IsChangeEnabled callsite migration was already done in 355854f8. --- .../RuntimeCompatibilityOptions.cpp | 243 +++++++++++++++++- .../WindowsAppRuntime.def | 2 + .../CompatibilityTests/CompatibilityTests.cpp | 104 ++++++++ .../CompatibilityTests.vcxproj | 12 +- 4 files changed, 354 insertions(+), 7 deletions(-) diff --git a/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp b/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp index 65310ff775..7005935266 100644 --- a/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp +++ b/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp @@ -6,6 +6,193 @@ #include "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityOptions.g.cpp" #include "AssemblyInfo.h" #include +#include + +namespace +{ + // Per-release groups of WinAppSDK contained change IDs. Each group's + // releaseVersion is the patch release in which the contained change first + // shipped. RuntimeCompatibilityOptions::Apply() walks the active catalog at + // startup and pre-prunes (adds to the disabled list) any group whose + // releaseVersion is greater than the runtime's effective patch level. + // + // Release engineering: at branch cut, add a new release group to + // s_catalogGroupsProd below for any new WINAPPSDK_CHANGE_* IDs that landed + // in os.2020 FrameworkUdk Containment.h since the previous branch. + // + // Servicing engineers do NOT edit this file. They only add the + // #define WINAPPSDK_CHANGE_FOO id macro in their component source. + // Release engineering performs the catalog roll-up. + // + // The WinAppSDK_Security pseudo-version is reserved for security fixes - + // entries in a security group are catalog-tracked but are never + // auto-disabled by Apply's pre-prune walk because their releaseVersion (0) + // is never greater than any effective patch level. + // + // WinAppSDKReleaseVersion is defined locally here (rather than alongside + // FrameworkUdk's Containment.h enum) to break the per-release maintenance + // coupling between FrUdk and Foundation. It is named WinAppSDKReleaseVersion + // rather than WinAppSDKPatchVersion to avoid colliding with the legacy + // unscoped enum type name still exposed by older Containment.h headers + // (renamed there to WinAppSDKPatchVersionDeprecated in newer FrUdk + // revisions). The scoped enum keeps all release-version constants + // (WinAppSDK_Latest, WinAppSDK_Security, and per-release WinAppSDK_M_m_p + // values added by release engineering as the catalog grows) confined to + // this translation unit; no other component should reference them. + // WinAppSDKReleaseVersionFromValues mirrors the historical + // WinAppSDKPatchVersionFromValues encoding (major*1000000 + minor*1000 + patch) + // so the WindowsAppRuntimeVersion -> WinAppSDKReleaseVersion conversion + // is consistent with the encoding release engineering uses when adding + // new per-release enumerators below. + constexpr UINT32 WinAppSDKReleaseVersionFromValues(UINT32 major, UINT32 minor, UINT32 patch) + { + return (major * 1000000) + (minor * 1000) + patch; + } + + enum class WinAppSDKReleaseVersion : UINT32 + { + WinAppSDK_2_1_0 = WinAppSDKReleaseVersionFromValues(2, 1, 0), + WinAppSDK_2_1_5 = WinAppSDKReleaseVersionFromValues(2, 1, 5), + WinAppSDK_2_3_0 = WinAppSDKReleaseVersionFromValues(2, 3, 0), + WinAppSDK_Latest = 999999999, + WinAppSDK_Security = 0, + }; + + struct CatalogGroup + { + const UINT32* changes; + UINT32 count; + WinAppSDKReleaseVersion releaseVersion; + }; + + template + constexpr CatalogGroup MakeGroup(const UINT32(&arr)[N], WinAppSDKReleaseVersion v) + { + return { arr, static_cast(N), v }; + } + + // Test-only catalog. Activated by ContainmentTestInitialize(true). Holds + // two groups whose releaseVersion straddles the runtime's effective + // patch level under the default WinAppSDKRuntimeConfiguration (Apply + // resolves an unspecified patch level to WinAppSDKReleaseVersion::WinAppSDK_Latest). + // Together they exercise both branches of Apply's pre-prune walk and + // span the changeId value range so that std::sort (Apply) and + // std::binary_search (FrUdk worker) are probed at both ends: + // + // * s_enabled_changes_test is pinned at WinAppSDK_Latest - 1, so + // its releaseVersion is NOT greater than the effective patch level. + // Apply prunes the group OUT of disabledChanges; these IDs remain + // ENABLED at runtime. {1, 2, 3} = small-end IDs that must not + // appear in the final sorted disabledChanges set. + // + // * s_disabled_changes_test is pinned at WinAppSDK_Latest + 1, so + // its releaseVersion IS greater than the effective patch level. + // Apply preserves the group IN disabledChanges; these IDs are + // DISABLED at runtime. {0, 99999999} = smallest representable ID + // and a high-value sentinel; they must appear in the final sorted + // disabledChanges set. + // + // Unit tests call IsChangeEnabled() (the 1-argument form) so the + // catalog pre-prune is the only mechanism that disables changes. + // Production callsites must not reference 0, 1, 2, 3, or 99999999. + constexpr UINT32 s_enabled_changes_test[] = { 1, 2, 3 }; + constexpr UINT32 s_disabled_changes_test[] = { 0, 99999999 }; + constexpr CatalogGroup s_catalogGroupsTest[] = { + MakeGroup(s_enabled_changes_test, + static_cast(static_cast(WinAppSDKReleaseVersion::WinAppSDK_Latest) - 1)), + MakeGroup(s_disabled_changes_test, + static_cast(static_cast(WinAppSDKReleaseVersion::WinAppSDK_Latest) + 1)), + }; + + // Production catalog for release/2.0-stable. Each per-release group + // collects the contained change IDs that first shipped in that patch + // release. Source of truth: os.2020 FrameworkUdk Containment.h + // (WINAPPSDK_CHANGEID_* macros) and WindowsAppSDK component callsites + // that #define WINAPPSDK_CHANGEID_* macros inline. + constexpr UINT32 s_changes_2_1_0[] = { + 61760863, // os.2020: weak ref in implicit animation completion callback + 62040515, // os.2020: see Containment.h for description + 62147120, // os.2020: UniformGridLayout::GetItemsPerLine floor at 1u + }; + constexpr UINT32 s_changes_2_1_5[] = { + 61684930, // WindowsAppSDK: ApplicationData.GetForUnpackaged() + 61854090, // os.2020: PopulateContactInFrame pen-overrides-touch crash + 62134997, // os.2020: lifted DesktopChildSiteBridge smooth resize + 62276145, // os.2020: ThemeSettings crash on shutdown off-thread + 62382643, // WindowsAppSDK: MRT sparse-packaged module-specific PRI discovery + }; + constexpr UINT32 s_changes_2_3_0[] = { + 62393567, // CPopupRoot_ReplayPointerUpdateCrash + 62406051, // XamlIslandRoot_UiaTeardownReentrancyCrash + 62434240, // ModernCollectionBasePanel_StaleViewportAnchorRecycle + 62434371, // Popup_RemoveChildIdempotentWhenClosing + 62434372, // UIAWindow_PauseNewDispatchOnDisconnectProviders + 62434373, // CascadingMenuHelper_DelayOpenTimerTickAfterUnload + 62471884, // AcrylicBrush_InitializePropertyInMarkup + 62542953, // Xaml_ReserveVectorSpace + 62639407, // XamlUICommand_LightweightBindings + 62644600, // Xaml_DefaultStyleOptimizations + 62645877, // Xaml_ThemeResourceUseResourceKeys + 62646974, // Xaml_FasterResourceDictionary + 62659855, // Xaml_CachedTypeChecks + 62673714, // Xaml_FasterXbfIntLoading + 62676756, // Xaml_ActivationFactoryFastPaths + 62676766, // XamlUICommand_SkipEmptyKeyboardAcceleratorBinding + 62676773, // Xaml_ReduceThemeResourceLookupHashing + 62688041, // RefreshRateInfo_RemovePowerNotification + 62698635, // ApplicationData_GetForUnpackaged_LocalSettings + 62724527, // CustomMetadataTypes_InvalidateUseAfterFree + 62724733, // CPopup_OpenSetFocusReentrancy + 62724906, // MediaPlayerPresenter_DeviceLostCrash + 62725196, // HWBuildGlyphRunTextures_DeviceGuardScope + 62725364, // FocusRectManager_FindFocusRectHostCrash + 62726703, // Xaml_EagerDeviceRemovedEventRegistration + 62738389, // XamlSettings_OptionalChangesApi + 62755661, // UniversalBGTask_RunCrash + 62759377, // Xaml_OptimizedCommandBarInitialization + 62771256, // Flyout_SidePlacementFlipUpAlignmentFix + 62774942, // LanguageModel_StructuredJsonOutput + 62776273, // Xaml_OptimizedCommandBarFlyoutUpdateCommands + 62779870, // XamlInit_GetMuxVersionCompileTime + 62784965, // Xaml_IconNoGridOptimization + 62786355, // UniformGridLayoutFlowLayout_OnItemsChangedNullLayoutStateCrash + 62789076, // Xaml_DeferStylePropertySetters + 62818033, // Xaml_LoadDeferredResourceOptimization + 62833838, // Xaml_DeferContextFlyoutInit + 62847209, // Xaml_DelayApplyStylesAfterCreationComplete + 62849414, // Xaml_ReserveTrackerCollectionSpace + 62865780, // WindowsML_ExecutionProviderEnumerationUpdate + 62917618, // CompositionEngine_API + 62927180, // WindowsServices_GetKeyboardModifiersStateRace + 62934326, // VideoSuperResolution_HardwareDetection + }; + constexpr CatalogGroup s_catalogGroupsProd[] = { + MakeGroup(s_changes_2_1_0, WinAppSDKReleaseVersion::WinAppSDK_2_1_0), + MakeGroup(s_changes_2_1_5, WinAppSDKReleaseVersion::WinAppSDK_2_1_5), + MakeGroup(s_changes_2_3_0, WinAppSDKReleaseVersion::WinAppSDK_2_3_0), + }; + constexpr size_t s_catalogGroupsProdCount{ std::size(s_catalogGroupsProd) }; + + // Active catalog. ContainmentTestInitialize(bool) swaps these pointers + // between the production and test catalogs. Apply() reads them at runtime. + const CatalogGroup* s_catalogGroup{ s_catalogGroupsProd }; + size_t s_catalogGroupCount{ s_catalogGroupsProdCount }; +} + +STDAPI ContainmentTestInitialize(bool enableTest) noexcept try +{ + if (enableTest) + { + s_catalogGroup = s_catalogGroupsTest; + s_catalogGroupCount = std::size(s_catalogGroupsTest); + } + else + { + s_catalogGroup = s_catalogGroupsProd; + s_catalogGroupCount = s_catalogGroupsProdCount; + } + return S_OK; +} CATCH_RETURN(); namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implementation { @@ -28,19 +215,46 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem } } - // Apply the patch level which applies to the major.minor version, if any. - if (m_patchLevel1.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel1.Minor == WINDOWSAPPSDK_RELEASE_MINOR) + // Resolve the effective patch level for catalog pre-prune. This is owned + // entirely by WinAppSDK now - when the 2.0 branch bumps to a FrUdk that + // exposes only WinAppSDKPatchVersionDeprecated, FrameworkUdk's + // Containment_GetChangeEnabled worker will no longer compare against any + // per-change patch version. The WASDK side is already prepared. + // A default-initialized WindowsAppRuntimeVersion is {0,0,0}; treat that as + // "not set" rather than as a request to pin to 0.0.0. (In production builds + // WINDOWSAPPSDK_RELEASE_MAJOR is > 0 so this case never arises; in dev builds + // the macro is 0/0 and the unset sentinel would otherwise spuriously match.) + WinAppSDKReleaseVersion runtimePatchLevel{ WinAppSDKReleaseVersion::WinAppSDK_Latest }; + if (m_patchLevel1.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel1.Minor == WINDOWSAPPSDK_RELEASE_MINOR + && (m_patchLevel1.Major != 0 || m_patchLevel1.Minor != 0 || m_patchLevel1.Patch != 0)) { // Apply patch level 1 - config.patchVersion = (WinAppSDKPatchVersion)WinAppSDKPatchVersionFromValues(m_patchLevel1.Major, m_patchLevel1.Minor, m_patchLevel1.Patch); + runtimePatchLevel = static_cast( + WinAppSDKReleaseVersionFromValues(m_patchLevel1.Major, m_patchLevel1.Minor, m_patchLevel1.Patch)); } - else if (m_patchLevel2.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel2.Minor == WINDOWSAPPSDK_RELEASE_MINOR) + else if (m_patchLevel2.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel2.Minor == WINDOWSAPPSDK_RELEASE_MINOR + && (m_patchLevel2.Major != 0 || m_patchLevel2.Minor != 0 || m_patchLevel2.Patch != 0)) { // Apply patch level 2 - config.patchVersion = (WinAppSDKPatchVersion)WinAppSDKPatchVersionFromValues(m_patchLevel2.Major, m_patchLevel2.Minor, m_patchLevel2.Patch); + runtimePatchLevel = static_cast( + WinAppSDKReleaseVersionFromValues(m_patchLevel2.Major, m_patchLevel2.Minor, m_patchLevel2.Patch)); } - // Add the set of disabled changes + // Mirror the resolved patch level into the ABI-locked + // WinAppSDKRuntimeConfiguration::patchVersion field as an opaque UINT32 + // cast. Containment_GetChangeEnabled does not read it for change + // filtering, but Containment_SetConfiguration uses it as part of the + // identity check that detects attempts to apply a divergent + // configuration twice from the same process. + config.patchVersion = static_cast(static_cast(runtimePatchLevel)); + + // Build the disabled-changes list from two sources: + // (1) The app's explicit DisabledChanges list (unchanged behavior). + // (2) Catalog pre-pruning: every change whose release is newer than the + // effective patch level is treated as disabled, so callsites see + // pre-change behavior on patch-pinned runtimes. + // Duplicates between (1) and (2) are harmless: the FrUdk worker treats + // disabledChanges as a sorted set and uses set-membership semantics. std::vector disabledChanges; for (auto changeId : m_disabledChanges) { @@ -48,6 +262,23 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem // UINT32 is used internally for the changeId, so cast from the enum's Int32 to that. disabledChanges.push_back(static_cast(changeId)); } + + for (size_t g = 0; g < s_catalogGroupCount; ++g) + { + auto const& group = s_catalogGroup[g]; + if (group.releaseVersion > runtimePatchLevel) + { + for (UINT32 i = 0; i < group.count; ++i) + { + disabledChanges.push_back(group.changes[i]); + } + } + } + + // FrameworkUdk's Containment_GetChangeEnabled assumes disabledChanges is + // sorted ascending so it can use std::binary_search for O(log N) lookups. + std::sort(disabledChanges.begin(), disabledChanges.end()); + config.disabledChanges = disabledChanges.data(); config.disabledChangesCount = static_cast(disabledChanges.size()); diff --git a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def index c487bfd388..9ad36f293f 100644 --- a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def +++ b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def @@ -28,4 +28,6 @@ EXPORTS WindowsAppRuntime_VersionInfo_MSIX_Main_PackageFamilyName_Get WindowsAppRuntime_VersionInfo_TestInitialize + ContainmentTestInitialize + WindowsAppRuntime_EnsureIsLoaded diff --git a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp index a93e53687b..0459e51f4e 100644 --- a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp +++ b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp @@ -7,6 +7,21 @@ #include #include +// Signature of the test-only DLL export from Microsoft.WindowsAppRuntime.dll. +// Switches the WinAppSDK Containment catalog used by RuntimeCompatibilityOptions::Apply() +// between the production catalog (default) and a test-only catalog whose two groups +// straddle WinAppSDK_Latest: an "enabled" group at WinAppSDK_Latest - 1 holding +// {1, 2, 3} that Apply prunes out of disabledChanges, and a "disabled" group at +// WinAppSDK_Latest + 1 holding {0, 99999999} that Apply preserves in disabledChanges. +// +// The export is resolved via GetModuleHandleW/GetProcAddress (not a static import) +// because RuntimeCompatibilityOptions::Apply runs in the framework-package copy of +// Microsoft.WindowsAppRuntime.dll loaded by the bootstrap. The catalog globals live +// in that same module instance, so the test must call ContainmentTestInitialize on +// that DLL handle - a static import would resolve to a test-folder copy with its +// own (production) catalog and the catalog swap would have no observable effect. +using PFN_ContainmentTestInitialize = HRESULT(STDAPICALLTYPE*)(bool) noexcept; + namespace TB = ::Test::Bootstrap; namespace TP = ::Test::Packages; @@ -14,6 +29,31 @@ namespace WAR = winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime; namespace Test::CompatibilityTests { + // Resolve ContainmentTestInitialize from the bootstrap-loaded framework copy + // of Microsoft.WindowsAppRuntime.dll. Must be called AFTER SetupBootstrap so + // the DLL is present in the process module list. + // + // NOTE: the wrapper is named CallContainmentTestInitialize (not + // ContainmentTestInitialize) so MSVC's linker does not pull in the + // Microsoft.WindowsAppRuntime.lib import stub for the same name -- doing so + // would introduce a static dependency on Microsoft.WindowsAppRuntime.dll, + // load a second copy in the test folder, and break the catalog swap. + static HRESULT CallContainmentTestInitialize(bool enableTest) noexcept + { + HMODULE const hmod{ ::GetModuleHandleW(L"Microsoft.WindowsAppRuntime.dll") }; + if (hmod == nullptr) + { + return HRESULT_FROM_WIN32(::GetLastError()); + } + auto const pfn{ reinterpret_cast( + ::GetProcAddress(hmod, "ContainmentTestInitialize")) }; + if (pfn == nullptr) + { + return HRESULT_FROM_WIN32(::GetLastError()); + } + return pfn(enableTest); + } + class CompatibilityTests { public: @@ -42,12 +82,24 @@ namespace Test::CompatibilityTests // The test method setup and execution is on a different thread than the class setup. // Initialize the framework for the test thread. ::Test::Bootstrap::SetupBootstrap(); + + // Swap in the test-only catalog so the catalog pre-prune tests + // observe the synthetic groups that straddle WinAppSDK_Latest. + // Must be done after SetupBootstrap so the framework copy of + // Microsoft.WindowsAppRuntime.dll is loaded and reachable via + // GetModuleHandleW; that copy is the one that hosts + // RuntimeCompatibilityOptions::Apply and owns the catalog globals. + VERIFY_ARE_EQUAL(S_OK, CallContainmentTestInitialize(true)); return true; } TEST_METHOD_CLEANUP(MethodUninit) { VERIFY_IS_TRUE(TP::IsPackageRegistered_WindowsAppRuntimeFramework()); + // Restore the production catalog before tearing down the bootstrap. + // IsolationLevel="Method" already guarantees a fresh process per test, + // but resetting keeps the contract clean. + VERIFY_ARE_EQUAL(S_OK, CallContainmentTestInitialize(false)); ::Test::Bootstrap::CleanupBootstrap(); return true; } @@ -138,5 +190,57 @@ namespace Test::CompatibilityTests // A different value not in DisabledChanges should remain enabled. VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999>())); } + + TEST_METHOD(VerifyCatalogPrePrunesByPatchLevel) + { + // The test catalog has two groups whose releaseVersion straddles + // the runtime's effective patch level (WinAppSDK_Latest by + // default): + // * s_enabled_changes_test at WinAppSDK_Latest - 1: the + // pre-prune walk SKIPS this group, so {1, 2, 3} remain + // enabled. + // * s_disabled_changes_test at WinAppSDK_Latest + 1: the + // pre-prune walk COPIES this group into disabledChanges, + // so {0, 99999999} are disabled. + // Together the two groups span the value range and exercise + // both branches of the catalog walk, both ends of std::sort, + // and both ends of the FrUdk worker's std::binary_search. + winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::RuntimeCompatibilityOptions options; + options.Apply(); + + // s_enabled_changes_test: catalog group released BEFORE the + // effective patch level. Apply prunes it out; IDs remain enabled. + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<1>())); + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<2>())); + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<3>())); + + // s_disabled_changes_test: catalog group released AFTER the + // effective patch level. Apply preserves it; IDs are disabled. + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<0>())); // smallest representable ID + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<99999999>())); // high-value sentinel + + // An ID not in the catalog and not explicitly disabled stays enabled. + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999>())); + } + + TEST_METHOD(VerifyCatalogAndExplicitDisabledChangesCombine) + { + // Catalog pre-prune contributes {0, 99999999} via + // s_disabled_changes_test (the catalog group released AFTER the + // effective patch level), and the app's explicit DisabledChanges + // also names 99999999 plus 55555. Duplicates between the two + // sources are harmless: the FrUdk worker treats disabledChanges + // as a sorted set and uses set-membership semantics, so the + // result is the union, not a tally. + winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::RuntimeCompatibilityOptions options; + options.DisabledChanges().Append((WAR::RuntimeCompatibilityChange)99999999); + options.DisabledChanges().Append((WAR::RuntimeCompatibilityChange)55555); + options.Apply(); + + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<0>())); // catalog only + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<99999999>())); // catalog + explicit + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<55555>())); // explicit only + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999>())); // neither + } }; } diff --git a/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj b/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj index 8edeb3908c..805e71ab5b 100644 --- a/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj +++ b/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj @@ -79,8 +79,18 @@ Windows - onecore.lib;onecoreuap.lib;Microsoft.WindowsAppRuntime.lib;wex.common.lib;wex.logger.lib;te.common.lib;%(AdditionalDependencies) + onecore.lib;onecoreuap.lib;Microsoft.WindowsAppRuntime.lib;wex.common.lib;wex.logger.lib;te.common.lib;delayimp.lib;%(AdditionalDependencies) $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories);$(OutDir)\..\WindowsAppRuntime_DLL + + Microsoft.WindowsAppRuntime.dll;%(DelayLoadDLLs)