From dea657295df261bb0e3e4d620eeae321531e3a11 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Tue, 14 Jun 2022 15:09:49 -0500 Subject: Add ability for non-vital cache package action. --- src/test/burn/TestBA/TestBA.cs | 32 +++++- .../PackageTestExe/PackageTestExe.wixproj | 16 +++ .../PackageTestExe/ProductComponents.wxs | 12 +++ ...chineArpEntryExePackageUninstallFailure.wixproj | 18 ++++ ...erMachineArpEntryExePackageUninstallFailure.wxs | 24 +++++ .../burn/TestData/TestBA/TestBAWixlib/TestExe.wxs | 7 ++ .../burn/WixToolsetTest.BurnE2E/ExePackageTests.cs | 117 ++++++++++++++++++--- .../Utilities/TestBAController.cs | 15 +++ 8 files changed, 228 insertions(+), 13 deletions(-) create mode 100644 src/test/burn/TestData/ExePackageTests/PackageTestExe/PackageTestExe.wixproj create mode 100644 src/test/burn/TestData/ExePackageTests/PackageTestExe/ProductComponents.wxs create mode 100644 src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wixproj create mode 100644 src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wxs (limited to 'src/test') diff --git a/src/test/burn/TestBA/TestBA.cs b/src/test/burn/TestBA/TestBA.cs index 9ca82377..7e3d2623 100644 --- a/src/test/burn/TestBA/TestBA.cs +++ b/src/test/burn/TestBA/TestBA.cs @@ -27,6 +27,7 @@ namespace WixToolset.Test.BA private string updateBundlePath; + private bool allowAcquireAfterValidationFailure; private bool forceKeepRegistration; private bool immediatelyQuit; private bool quitAfterDetect; @@ -85,7 +86,11 @@ namespace WixToolset.Test.BA List verifyArguments = this.ReadVerifyArguments(); - foreach (string arg in BootstrapperCommand.ParseCommandLineToArgs(this.Command.CommandLine)) + IBootstrapperApplicationData baManifest = new BootstrapperApplicationData(); + IMbaCommand mbaCommand = this.Command.ParseCommandLine(); + mbaCommand.SetOverridableVariables(baManifest.Bundle.OverridableVariables, this.engine); + + foreach (string arg in mbaCommand.UnknownCommandLineArgs) { // If we're not in the update already, process the updatebundle. if (this.Command.Relation != RelationType.Update && arg.StartsWith("-updatebundle:", StringComparison.OrdinalIgnoreCase)) @@ -126,6 +131,12 @@ namespace WixToolset.Test.BA redetectCount = 0; } + string allowAcquireAfterValidationFailure = this.ReadPackageAction(null, "AllowAcquireAfterValidationFailure"); + if (String.IsNullOrEmpty(allowAcquireAfterValidationFailure) || !Boolean.TryParse(allowAcquireAfterValidationFailure, out this.allowAcquireAfterValidationFailure)) + { + this.allowAcquireAfterValidationFailure = false; + } + string explicitlyElevateAndPlanFromOnElevateBegin = this.ReadPackageAction(null, "ExplicitlyElevateAndPlanFromOnElevateBegin"); if (String.IsNullOrEmpty(explicitlyElevateAndPlanFromOnElevateBegin) || !Boolean.TryParse(explicitlyElevateAndPlanFromOnElevateBegin, out this.explicitlyElevateAndPlanFromOnElevateBegin)) { @@ -277,6 +288,15 @@ namespace WixToolset.Test.BA { args.State = state; } + + BOOTSTRAPPER_CACHE_TYPE cacheType; + string cacheAction = this.ReadPackageAction(args.PackageId, "CacheRequested"); + if (TryParseEnum(cacheAction, out cacheType)) + { + args.CacheType = cacheType; + } + + this.Log("OnPlanPackageBegin() - id: {0}, defaultState: {1}, requestedState: {2}, defaultCache: {3}, requestedCache: {4}", args.PackageId, args.RecommendedState, args.State, args.RecommendedCacheType, args.CacheType); } protected override void OnPlanPatchTarget(PlanPatchTargetEventArgs args) @@ -337,6 +357,16 @@ namespace WixToolset.Test.BA } } + protected override void OnCachePackageNonVitalValidationFailure(CachePackageNonVitalValidationFailureEventArgs args) + { + if (this.allowAcquireAfterValidationFailure) + { + args.Action = BOOTSTRAPPER_CACHEPACKAGENONVITALVALIDATIONFAILURE_ACTION.Acquire; + } + + this.Log("OnCachePackageNonVitalValidationFailure() - id: {0}, default: {1}, requested: {2}", args.PackageId, args.Recommendation, args.Action); + } + protected override void OnCacheAcquireProgress(CacheAcquireProgressEventArgs args) { this.Log("OnCacheAcquireProgress() - container/package: {0}, payload: {1}, progress: {2}, total: {3}, overall progress: {4}%", args.PackageOrContainerId, args.PayloadId, args.Progress, args.Total, args.OverallPercentage); diff --git a/src/test/burn/TestData/ExePackageTests/PackageTestExe/PackageTestExe.wixproj b/src/test/burn/TestData/ExePackageTests/PackageTestExe/PackageTestExe.wixproj new file mode 100644 index 00000000..57e99a1b --- /dev/null +++ b/src/test/burn/TestData/ExePackageTests/PackageTestExe/PackageTestExe.wixproj @@ -0,0 +1,16 @@ + + + + true + {9281948B-9C8D-4914-A00E-3EF0F98D17EB} + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/ExePackageTests/PackageTestExe/ProductComponents.wxs b/src/test/burn/TestData/ExePackageTests/PackageTestExe/ProductComponents.wxs new file mode 100644 index 00000000..b42c5c5a --- /dev/null +++ b/src/test/burn/TestData/ExePackageTests/PackageTestExe/ProductComponents.wxs @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wixproj b/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wixproj new file mode 100644 index 00000000..bbab2b75 --- /dev/null +++ b/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wixproj @@ -0,0 +1,18 @@ + + + + Bundle + {799DF604-49CB-4B2C-9FD9-A1C4F93A2FDE} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wxs b/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wxs new file mode 100644 index 00000000..ffa98d4e --- /dev/null +++ b/src/test/burn/TestData/ExePackageTests/PerMachineArpEntryExePackageUninstallFailure/PerMachineArpEntryExePackageUninstallFailure.wxs @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib/TestExe.wxs b/src/test/burn/TestData/TestBA/TestBAWixlib/TestExe.wxs index f27275b0..84da0983 100644 --- a/src/test/burn/TestData/TestBA/TestBAWixlib/TestExe.wxs +++ b/src/test/burn/TestData/TestBA/TestBAWixlib/TestExe.wxs @@ -6,4 +6,11 @@ + + + + + + + diff --git a/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs index dc6515b5..e76461f3 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs @@ -3,6 +3,7 @@ namespace WixToolsetTest.BurnE2E { using WixTestTools; + using WixToolset.Mba.Core; using Xunit; using Xunit.Abstractions; @@ -13,9 +14,9 @@ namespace WixToolsetTest.BurnE2E [RuntimeFact] public void CanInstallAndUninstallPerMachineArpEntryExePackage() { - const string arpId = "{4D9EC36A-1E63-4244-875C-3ECB0A2CAE30}"; var perMachineArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackage"); var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; arpEntryExePackage.VerifyRegistered(false); @@ -23,21 +24,113 @@ namespace WixToolsetTest.BurnE2E perMachineArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); arpEntryExePackage.VerifyRegistered(true); - LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\""); + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); var uninstallLogPath = perMachineArpEntryExePackageBundle.Uninstall(); perMachineArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); arpEntryExePackage.VerifyRegistered(false); - LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); } [RuntimeFact] - public void CanUninstallPerMachineArpEntryExePackageOnRollback() + public void CanRecacheAndReinstallPerMachineArpEntryExePackageOnUninstallRollback() + { + var packageTestExe = this.CreatePackageInstaller("PackageTestExe"); + var perMachineArpEntryExePackageUninstallFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageUninstallFailure"); + var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageUninstallFailureBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; + var testBAController = this.CreateTestBAController(); + + arpEntryExePackage.VerifyRegistered(false); + packageTestExe.VerifyInstalled(false); + + testBAController.SetPackageRequestedCacheType("TestExe", BOOTSTRAPPER_CACHE_TYPE.Remove); + + var installLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Install(); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(true); + packageTestExe.VerifyInstalled(true); + + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + + testBAController.ResetPackageStates("TestExe"); + testBAController.SetAllowAcquireAfterValidationFailure(); + + var uninstallLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "FAILWHENDEFERRED=1"); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(true); + packageTestExe.VerifyInstalled(true); + + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, "TESTBA: OnCachePackageNonVitalValidationFailure() - id: TestExe, default: None, requested: Acquire")); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + } + + [RuntimeFact] + public void CanReinstallPerMachineArpEntryExePackageOnUninstallRollback() + { + var packageTestExe = this.CreatePackageInstaller("PackageTestExe"); + var perMachineArpEntryExePackageUninstallFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageUninstallFailure"); + var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageUninstallFailureBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; + + arpEntryExePackage.VerifyRegistered(false); + packageTestExe.VerifyInstalled(false); + + var installLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Install(); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(true); + packageTestExe.VerifyInstalled(true); + + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + + var uninstallLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "FAILWHENDEFERRED=1"); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(true); + packageTestExe.VerifyInstalled(true); + + Assert.False(LogVerifier.MessageInLogFile(uninstallLogPath, "TESTBA: OnCachePackageNonVitalValidationFailure() - id: TestExe")); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + } + + [RuntimeFact] + public void CanSkipReinstallPerMachineArpEntryExePackageOnUninstallRollback() + { + var packageTestExe = this.CreatePackageInstaller("PackageTestExe"); + var perMachineArpEntryExePackageUninstallFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageUninstallFailure"); + var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageUninstallFailureBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; + var testBAController = this.CreateTestBAController(); + + arpEntryExePackage.VerifyRegistered(false); + packageTestExe.VerifyInstalled(false); + + testBAController.SetPackageRequestedCacheType("TestExe", BOOTSTRAPPER_CACHE_TYPE.Remove); + + var installLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Install(); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(true); + packageTestExe.VerifyInstalled(true); + + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + + var uninstallLogPath = perMachineArpEntryExePackageUninstallFailureBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "FAILWHENDEFERRED=1"); + perMachineArpEntryExePackageUninstallFailureBundle.VerifyRegisteredAndInPackageCache(); + arpEntryExePackage.VerifyRegistered(false); + packageTestExe.VerifyInstalled(true); + + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, "TESTBA: OnCachePackageNonVitalValidationFailure() - id: TestExe, default: None, requested: None")); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); + } + + [RuntimeFact] + public void CanUninstallPerMachineArpEntryExePackageOnInstallRollback() { - const string arpId = "{80E90929-EEA5-48A7-A680-A0237A1CAD84}"; var perMachineArpEntryExePackageFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageFailure"); var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageFailureBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; arpEntryExePackage.VerifyRegistered(false); @@ -45,16 +138,16 @@ namespace WixToolsetTest.BurnE2E perMachineArpEntryExePackageFailureBundle.VerifyUnregisteredAndRemovedFromPackageCache(); arpEntryExePackage.VerifyRegistered(false); - LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\""); - LogVerifier.MessageInLogFile(installLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); } [RuntimeFact] public void CanInstallAndUninstallPerUserArpEntryExePackage() { - const string arpId = "{9B5300C7-9B34-4670-9614-185B02AB87EF}"; var perUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerUserArpEntryExePackage"); var arpEntryExePackage = this.CreateArpEntryInstaller(perUserArpEntryExePackageBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; arpEntryExePackage.VerifyRegistered(false); @@ -62,21 +155,21 @@ namespace WixToolsetTest.BurnE2E perUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); arpEntryExePackage.VerifyRegistered(true); - LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\""); + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},QuietUninstallString,String,\\\"")); var uninstallLogPath = perUserArpEntryExePackageBundle.Uninstall(); perUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); arpEntryExePackage.VerifyRegistered(false); - LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); + Assert.True(LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}")); } [RuntimeFact] public void FailsUninstallWhenPerUserArpEntryExePackageMissingQuietUninstallString() { - const string arpId = "{DE9F8594-5856-4454-AB10-3C01ED246D7D}"; var brokenPerUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"BrokenPerUserArpEntryExePackage"); var arpEntryExePackage = this.CreateArpEntryInstaller(brokenPerUserArpEntryExePackageBundle, "TestExe"); + var arpId = arpEntryExePackage.ArpId; arpEntryExePackage.VerifyRegistered(false); brokenPerUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); @@ -85,7 +178,7 @@ namespace WixToolsetTest.BurnE2E brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); arpEntryExePackage.VerifyRegistered(true); - LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\""); + Assert.True(LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\"")); brokenPerUserArpEntryExePackageBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INVALID_PARAMETER); brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); diff --git a/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs index 8e6611a2..3f9d76b8 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/Utilities/TestBAController.cs @@ -42,6 +42,11 @@ namespace WixToolsetTest.BurnE2E } } + public void SetAllowAcquireAfterValidationFailure(string value = "true") + { + this.SetBurnTestValue("AllowAcquireAfterValidationFailure", value); + } + public void SetExplicitlyElevateAndPlanFromOnElevateBegin(string value = "true") { this.SetBurnTestValue("ExplicitlyElevateAndPlanFromOnElevateBegin", value); @@ -132,6 +137,16 @@ namespace WixToolsetTest.BurnE2E this.SetPackageState(packageId, "RetryExecuteFilesInUse", retryCount.HasValue ? retryCount.ToString() : null); } + /// + /// Sets the requested cache type for a package that the TestBA will return to the engine during plan. + /// + /// Package identity. + /// Cache type to request. + public void SetPackageRequestedCacheType(string packageId, BOOTSTRAPPER_CACHE_TYPE type) + { + this.SetPackageState(packageId, "CacheRequested", type.ToString()); + } + /// /// Sets the requested state for a package that the TestBA will return to the engine during plan. /// -- cgit v1.2.3-55-g6feb