From 5658492062bf28ffb670ede15cbd1413bf1182d8 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Tue, 17 Feb 2026 19:41:03 -0500 Subject: Lock upgrade bundles to original bundle's scope. Fixes https://github.com/wixtoolset/issues/issues/9236 --- .../AllPuomBundle/AllPuomBundleTestBA.wixproj | 1 + .../AllPuomBundle/AllPuomBundleTestBAv2.wixproj | 8 ++++ .../AllPuomBundle/AllPuomBundleWixStdBA.wixproj | 1 + .../AllPuomBundle/Bundle.wxs | 2 +- .../ConfigurableScopeTests.cs | 48 ++++++++++++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBAv2.wixproj (limited to 'src/test') diff --git a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBA.wixproj b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBA.wixproj index 30d850d4..258d7b42 100644 --- a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBA.wixproj +++ b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBA.wixproj @@ -1,6 +1,7 @@  TestBA + $(DefineConstants);Version=1.0.0.0 diff --git a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBAv2.wixproj b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBAv2.wixproj new file mode 100644 index 00000000..0daacca8 --- /dev/null +++ b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleTestBAv2.wixproj @@ -0,0 +1,8 @@ + + + TestBA + $(DefineConstants);Version=2.0.0.0 + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleWixStdBA.wixproj b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleWixStdBA.wixproj index 56db1fdc..9ca5f8a3 100644 --- a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleWixStdBA.wixproj +++ b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/AllPuomBundleWixStdBA.wixproj @@ -1,6 +1,7 @@  WixStdBA + $(DefineConstants);Version=1.0.0.0 diff --git a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/Bundle.wxs b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/Bundle.wxs index 4cb11a98..8e1a881a 100644 --- a/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/Bundle.wxs +++ b/src/test/burn/TestData/ConfigurableScopeTests/AllPuomBundle/Bundle.wxs @@ -1,5 +1,5 @@  - + diff --git a/src/test/burn/WixToolsetTest.BurnE2E/ConfigurableScopeTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/ConfigurableScopeTests.cs index 8b31ac00..bb1381b3 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/ConfigurableScopeTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/ConfigurableScopeTests.cs @@ -95,6 +95,54 @@ namespace WixToolsetTest.BurnE2E pkg2.VerifyInstalled(false); } + [RuntimeFact] + public void BundleUpgradeIsLockedToFirstBundlesScope() + { + var testBAController = this.CreateTestBAController(); + testBAController.SetBundleScope(BundleScope.Default); + + var bundle = this.CreateBundleInstaller("AllPuomBundleTestBA"); + var log = bundle.Install(); + + bundle.VerifyRegisteredAndInPackageCache(plannedPerMachine: false); + + Assert.True(LogVerifier.MessageInLogFile(log, "Plan begin, 3 packages, action: Install, planned scope: Default")); + + log = bundle.Repair(); + Assert.True(LogVerifier.MessageInLogFile(log, "Bundle was already installed with scope: PerUser. Scope cannot change during maintenance.")); + + var bundleV2 = this.CreateBundleInstaller("AllPuomBundleTestBAv2"); + testBAController.SetBundleScope(BundleScope.PerMachine); + log = bundleV2.Install(); + Assert.True(LogVerifier.MessageInLogFileRegex(log, @"Upgraded bundle [{][0-9A-Fa-f\-]{36}[}] was already installed with scope: PerUser\. Scope cannot change during upgrade\.")); + + bundleV2.Uninstall(); + bundleV2.VerifyUnregisteredAndRemovedFromPackageCache(plannedPerMachine: false); + bundle.VerifyUnregisteredAndRemovedFromPackageCache(plannedPerMachine: false); + } + + [RuntimeFact] + public void BundleUpgradeWithSameScopeSucceeds() + { + var bundle = this.CreateBundleInstaller("AllPuomBundleTestBA"); + var log = bundle.Install(); + + bundle.VerifyRegisteredAndInPackageCache(plannedPerMachine: false); + + Assert.True(LogVerifier.MessageInLogFile(log, "Plan begin, 3 packages, action: Install, planned scope: Default")); + + log = bundle.Repair(); + Assert.True(LogVerifier.MessageInLogFile(log, "Bundle was already installed with scope: PerUser. Scope cannot change during maintenance.")); + + var bundleV2 = this.CreateBundleInstaller("AllPuomBundleTestBAv2"); + log = bundleV2.Install(); + Assert.True(LogVerifier.MessageInLogFileRegex(log, @"Upgraded bundle [{][0-9A-Fa-f\-]{36}[}] was already installed with scope: PerUser\. Scope cannot change during upgrade\.")); + + bundleV2.Uninstall(); + bundleV2.VerifyUnregisteredAndRemovedFromPackageCache(plannedPerMachine: false); + bundle.VerifyUnregisteredAndRemovedFromPackageCache(plannedPerMachine: false); + } + [RuntimeFact] public void PMOU_Bundle_Default_Plan_Installs_PerMachine() { -- cgit v1.2.3-55-g6feb