From da1d1376953ef1c9afb32d5eee02b785e52e372e Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 14 Jan 2022 21:37:24 -0600 Subject: Remove orphan compatible MSI packages. Reimplements #3190 --- .../DependencyTests/BundleAv2/BundleAv2.wixproj | 16 ++++++ .../DependencyTests/BundleAv2/BundleAv2.wxs | 21 ++++++++ .../DependencyTests/PackageAv1/PackageA.props | 1 - .../DependencyTests/PackageAv1/PackageAv1.props | 7 +++ .../DependencyTests/PackageAv1/PackageAv1.wixproj | 2 +- .../PackageAv1_0_1/PackageAv1_0_1.wixproj | 2 +- .../PackageAv1_0_2/PackageAv1_0_2.wixproj | 2 +- .../DependencyTests/PackageAv2/PackageAv2.wixproj | 13 +++++ src/test/burn/WixTestTools/BundleVerifier.cs | 4 +- .../burn/WixToolsetTest.BurnE2E/DependencyTests.cs | 58 ++++++++++++++++++++++ 10 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wixproj create mode 100644 src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wxs create mode 100644 src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.props create mode 100644 src/test/burn/TestData/DependencyTests/PackageAv2/PackageAv2.wixproj (limited to 'src/test') diff --git a/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wixproj b/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wixproj new file mode 100644 index 00000000..eab737f8 --- /dev/null +++ b/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wixproj @@ -0,0 +1,16 @@ + + + + + 2.0.0.0 + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wxs b/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wxs new file mode 100644 index 00000000..570f633f --- /dev/null +++ b/src/test/burn/TestData/DependencyTests/BundleAv2/BundleAv2.wxs @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/src/test/burn/TestData/DependencyTests/PackageAv1/PackageA.props b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageA.props index 8cbe9aa9..d6778261 100644 --- a/src/test/burn/TestData/DependencyTests/PackageAv1/PackageA.props +++ b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageA.props @@ -3,7 +3,6 @@ PackageA true - {6F171EC9-0774-4974-A8D1-493EF53CAB74} {45E933B7-B56A-44D5-8EEC-625EC199085E} diff --git a/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.props b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.props new file mode 100644 index 00000000..e83247c0 --- /dev/null +++ b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.props @@ -0,0 +1,7 @@ + + + + + {6F171EC9-0774-4974-A8D1-493EF53CAB74} + + \ No newline at end of file diff --git a/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.wixproj b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.wixproj index 5ebce845..add55d60 100644 --- a/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.wixproj +++ b/src/test/burn/TestData/DependencyTests/PackageAv1/PackageAv1.wixproj @@ -1,6 +1,6 @@ - + diff --git a/src/test/burn/TestData/DependencyTests/PackageAv1_0_1/PackageAv1_0_1.wixproj b/src/test/burn/TestData/DependencyTests/PackageAv1_0_1/PackageAv1_0_1.wixproj index 73a7cb6f..e1081745 100644 --- a/src/test/burn/TestData/DependencyTests/PackageAv1_0_1/PackageAv1_0_1.wixproj +++ b/src/test/burn/TestData/DependencyTests/PackageAv1_0_1/PackageAv1_0_1.wixproj @@ -1,6 +1,6 @@ - + 1.0.1.0 diff --git a/src/test/burn/TestData/DependencyTests/PackageAv1_0_2/PackageAv1_0_2.wixproj b/src/test/burn/TestData/DependencyTests/PackageAv1_0_2/PackageAv1_0_2.wixproj index 37e88de9..60b64c9f 100644 --- a/src/test/burn/TestData/DependencyTests/PackageAv1_0_2/PackageAv1_0_2.wixproj +++ b/src/test/burn/TestData/DependencyTests/PackageAv1_0_2/PackageAv1_0_2.wixproj @@ -1,6 +1,6 @@ - + 1.0.2.0 diff --git a/src/test/burn/TestData/DependencyTests/PackageAv2/PackageAv2.wixproj b/src/test/burn/TestData/DependencyTests/PackageAv2/PackageAv2.wixproj new file mode 100644 index 00000000..b61d09f5 --- /dev/null +++ b/src/test/burn/TestData/DependencyTests/PackageAv2/PackageAv2.wixproj @@ -0,0 +1,13 @@ + + + + + 2.0.0.0 + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/WixTestTools/BundleVerifier.cs b/src/test/burn/WixTestTools/BundleVerifier.cs index 54f90870..db14c228 100644 --- a/src/test/burn/WixTestTools/BundleVerifier.cs +++ b/src/test/burn/WixTestTools/BundleVerifier.cs @@ -124,14 +124,14 @@ namespace WixTestTools } } - public void VerifyPackageIsCached(string packageId) + public void VerifyPackageIsCached(string packageId, bool cached = true) { using var wixOutput = WixOutput.Read(this.BundlePdb); var intermediate = Intermediate.Load(wixOutput); var section = intermediate.Sections.Single(); var packageSymbol = section.Symbols.OfType().Single(p => p.Id.Id == packageId); var cachePath = this.GetPackageCachePathForCacheId(packageSymbol.CacheId, packageSymbol.PerMachine == YesNoDefaultType.Yes); - Assert.True(Directory.Exists(cachePath)); + Assert.Equal(cached, Directory.Exists(cachePath)); } public void VerifyExeTestRegistryRootDeleted(string name, bool x64 = false) diff --git a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs index b08cd54f..825160c5 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs @@ -123,6 +123,64 @@ namespace WixToolsetTest.BurnE2E bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.1.0"); } + [Fact] + public void UninstallsOrphanCompatiblePackages() + { + var testRegistryValueExe = "ExeA"; + + var packageAv1 = this.CreatePackageInstaller("PackageAv1"); + var packageAv2 = this.CreatePackageInstaller("PackageAv2"); + var packageB = this.CreatePackageInstaller("PackageB"); + var bundleAv1 = this.CreateBundleInstaller("BundleAv1"); + var bundleAv2 = this.CreateBundleInstaller("BundleAv2"); + var bundleB = this.CreateBundleInstaller("BundleB"); + + packageAv1.VerifyInstalled(false); + packageAv2.VerifyInstalled(false); + packageB.VerifyInstalled(false); + + bundleAv1.Install(); + bundleAv1.VerifyRegisteredAndInPackageCache(); + + packageAv1.VerifyInstalled(true); + bundleAv1.VerifyPackageIsCached("PackageA"); + bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0"); + + bundleB.Install(); + bundleB.VerifyRegisteredAndInPackageCache(); + + packageAv1.VerifyInstalled(true); + bundleAv1.VerifyPackageIsCached("PackageA"); + bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0"); + packageB.VerifyInstalled(true); + + bundleAv2.Install(); + bundleAv2.VerifyRegisteredAndInPackageCache(); + bundleAv1.VerifyUnregisteredAndRemovedFromPackageCache(); + + packageAv1.VerifyInstalled(false); + bundleAv1.VerifyPackageIsCached("PackageA", false); + packageAv2.VerifyInstalled(true); + bundleAv2.VerifyPackageIsCached("PackageA"); + bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "2.0.0.0"); + + bundleAv2.Uninstall(); + bundleAv2.VerifyUnregisteredAndRemovedFromPackageCache(); + + packageAv2.VerifyInstalled(true); + bundleAv2.VerifyPackageIsCached("PackageA"); + bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "2.0.0.0"); + + // Verify https://github.com/wixtoolset/issues/issues/3190 + bundleB.Uninstall(); + + packageAv1.VerifyInstalled(false); + packageAv2.VerifyInstalled(false); + bundleAv2.VerifyPackageIsCached("PackageA", false); + packageB.VerifyInstalled(false); + bundleAv1.VerifyExeTestRegistryRootDeleted(testRegistryValueExe); + } + [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6401")] public void CanMinorUpgradeDependencyPackageFromPatchBundle() { -- cgit v1.2.3-55-g6feb