From 27a0db4070a2b5756282bf15b957dd7f0021417f Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 10 Feb 2022 18:09:34 -0600 Subject: When rolling back a bundle failure, reinstall all upgrade related bundles. Fixes #3421 --- .../BundleAv3/BundleAv3.wixproj | 16 +++++++++++++ .../BundleAv3/BundleAv3.wxs | 11 +++++++++ .../PackageAv3/PackageAv3.wixproj | 7 ++++++ .../PackageF/PackageF.wixproj | 12 ++++++++++ .../burn/WixToolsetTest.BurnE2E/DependencyTests.cs | 4 ++-- .../UpgradeRelatedBundleTests.cs | 27 ++++++++++++++++++++++ 6 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wixproj create mode 100644 src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wxs create mode 100644 src/test/burn/TestData/UpgradeRelatedBundleTests/PackageAv3/PackageAv3.wixproj create mode 100644 src/test/burn/TestData/UpgradeRelatedBundleTests/PackageF/PackageF.wixproj (limited to 'src/test') diff --git a/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wixproj b/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wixproj new file mode 100644 index 00000000..958ceb47 --- /dev/null +++ b/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wixproj @@ -0,0 +1,16 @@ + + + + + 3.0.0.0 + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wxs b/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wxs new file mode 100644 index 00000000..b969b504 --- /dev/null +++ b/src/test/burn/TestData/UpgradeRelatedBundleTests/BundleAv3/BundleAv3.wxs @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageAv3/PackageAv3.wixproj b/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageAv3/PackageAv3.wixproj new file mode 100644 index 00000000..f3c121af --- /dev/null +++ b/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageAv3/PackageAv3.wixproj @@ -0,0 +1,7 @@ + + + + + 3.0.0.0 + + \ No newline at end of file diff --git a/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageF/PackageF.wixproj b/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageF/PackageF.wixproj new file mode 100644 index 00000000..63d32e28 --- /dev/null +++ b/src/test/burn/TestData/UpgradeRelatedBundleTests/PackageF/PackageF.wixproj @@ -0,0 +1,12 @@ + + + + {8F6C8C4B-573C-416B-B1B0-467273256BD9} + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs index 69a1fa68..ba02d8ee 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs @@ -539,7 +539,7 @@ namespace WixToolsetTest.BurnE2E } } - [Fact(Skip = "https://github.com/wixtoolset/issues/issues/3421")] + [Fact] public void DoesntLoseDependenciesOnFailedMajorUpgradeBundleFromMajorUpdateMsiFifo() { var packageAv1 = this.CreatePackageInstaller("PackageAv1"); @@ -611,7 +611,7 @@ namespace WixToolsetTest.BurnE2E packageGv2.VerifyInstalled(false); } - [Fact(Skip = "https://github.com/wixtoolset/issues/issues/3421")] + [Fact] public void DoesntLoseDependenciesOnFailedMajorUpgradeBundleFromMajorUpdateMsiLifo() { var packageAv1 = this.CreatePackageInstaller("PackageAv1"); diff --git a/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs index 9eb5081e..32a04e5c 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs @@ -12,6 +12,33 @@ namespace WixToolsetTest.BurnE2E { public UpgradeRelatedBundleTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } + [Fact] + public void ReinstallsOlderBundleAfterFailure() + { + var packageAv2 = this.CreatePackageInstaller("PackageAv2"); + var packageAv3 = this.CreatePackageInstaller("PackageAv3"); + var bundleAv2 = this.CreateBundleInstaller("BundleAv2"); + var bundleAv3 = this.CreateBundleInstaller("BundleAv3"); + + packageAv2.VerifyInstalled(false); + packageAv3.VerifyInstalled(false); + + bundleAv2.Install(); + bundleAv2.VerifyRegisteredAndInPackageCache(); + + packageAv2.VerifyInstalled(true); + packageAv3.VerifyInstalled(false); + + // Verify https://github.com/wixtoolset/issues/issues/3421 + var bundleAv3InstallLogFilePath = bundleAv3.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE); + bundleAv3.VerifyUnregisteredAndRemovedFromPackageCache(); + + Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv3InstallLogFilePath, @"Applied execute package: PackageA, result: 0x0, restart: None")); + + packageAv2.VerifyInstalled(true); + packageAv3.VerifyInstalled(false); + } + [Fact] public void ReportsRelatedBundleMissingFromCache() { -- cgit v1.2.3-55-g6feb