diff options
Diffstat (limited to '')
| -rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs new file mode 100644 index 00000000..dc6515b5 --- /dev/null +++ b/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs | |||
| @@ -0,0 +1,99 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolsetTest.BurnE2E | ||
| 4 | { | ||
| 5 | using WixTestTools; | ||
| 6 | using Xunit; | ||
| 7 | using Xunit.Abstractions; | ||
| 8 | |||
| 9 | public class ExePackageTests : BurnE2ETests | ||
| 10 | { | ||
| 11 | public ExePackageTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } | ||
| 12 | |||
| 13 | [RuntimeFact] | ||
| 14 | public void CanInstallAndUninstallPerMachineArpEntryExePackage() | ||
| 15 | { | ||
| 16 | const string arpId = "{4D9EC36A-1E63-4244-875C-3ECB0A2CAE30}"; | ||
| 17 | var perMachineArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackage"); | ||
| 18 | var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageBundle, "TestExe"); | ||
| 19 | |||
| 20 | arpEntryExePackage.VerifyRegistered(false); | ||
| 21 | |||
| 22 | var installLogPath = perMachineArpEntryExePackageBundle.Install(); | ||
| 23 | perMachineArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); | ||
| 24 | arpEntryExePackage.VerifyRegistered(true); | ||
| 25 | |||
| 26 | 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,\\\""); | ||
| 27 | |||
| 28 | var uninstallLogPath = perMachineArpEntryExePackageBundle.Uninstall(); | ||
| 29 | perMachineArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
| 30 | arpEntryExePackage.VerifyRegistered(false); | ||
| 31 | |||
| 32 | LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); | ||
| 33 | } | ||
| 34 | |||
| 35 | [RuntimeFact] | ||
| 36 | public void CanUninstallPerMachineArpEntryExePackageOnRollback() | ||
| 37 | { | ||
| 38 | const string arpId = "{80E90929-EEA5-48A7-A680-A0237A1CAD84}"; | ||
| 39 | var perMachineArpEntryExePackageFailureBundle = this.CreateBundleInstaller(@"PerMachineArpEntryExePackageFailure"); | ||
| 40 | var arpEntryExePackage = this.CreateArpEntryInstaller(perMachineArpEntryExePackageFailureBundle, "TestExe"); | ||
| 41 | |||
| 42 | arpEntryExePackage.VerifyRegistered(false); | ||
| 43 | |||
| 44 | var installLogPath = perMachineArpEntryExePackageFailureBundle.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE); | ||
| 45 | perMachineArpEntryExePackageFailureBundle.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
| 46 | arpEntryExePackage.VerifyRegistered(false); | ||
| 47 | |||
| 48 | 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,\\\""); | ||
| 49 | LogVerifier.MessageInLogFile(installLogPath, $"testexe.exe\" /regd HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); | ||
| 50 | } | ||
| 51 | |||
| 52 | [RuntimeFact] | ||
| 53 | public void CanInstallAndUninstallPerUserArpEntryExePackage() | ||
| 54 | { | ||
| 55 | const string arpId = "{9B5300C7-9B34-4670-9614-185B02AB87EF}"; | ||
| 56 | var perUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"PerUserArpEntryExePackage"); | ||
| 57 | var arpEntryExePackage = this.CreateArpEntryInstaller(perUserArpEntryExePackageBundle, "TestExe"); | ||
| 58 | |||
| 59 | arpEntryExePackage.VerifyRegistered(false); | ||
| 60 | |||
| 61 | var installLogPath = perUserArpEntryExePackageBundle.Install(); | ||
| 62 | perUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); | ||
| 63 | arpEntryExePackage.VerifyRegistered(true); | ||
| 64 | |||
| 65 | 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,\\\""); | ||
| 66 | |||
| 67 | var uninstallLogPath = perUserArpEntryExePackageBundle.Uninstall(); | ||
| 68 | perUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
| 69 | arpEntryExePackage.VerifyRegistered(false); | ||
| 70 | |||
| 71 | LogVerifier.MessageInLogFile(uninstallLogPath, $"testexe.exe\" /regd HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId}"); | ||
| 72 | } | ||
| 73 | |||
| 74 | [RuntimeFact] | ||
| 75 | public void FailsUninstallWhenPerUserArpEntryExePackageMissingQuietUninstallString() | ||
| 76 | { | ||
| 77 | const string arpId = "{DE9F8594-5856-4454-AB10-3C01ED246D7D}"; | ||
| 78 | var brokenPerUserArpEntryExePackageBundle = this.CreateBundleInstaller(@"BrokenPerUserArpEntryExePackage"); | ||
| 79 | var arpEntryExePackage = this.CreateArpEntryInstaller(brokenPerUserArpEntryExePackageBundle, "TestExe"); | ||
| 80 | |||
| 81 | arpEntryExePackage.VerifyRegistered(false); | ||
| 82 | brokenPerUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
| 83 | |||
| 84 | var installLogPath = brokenPerUserArpEntryExePackageBundle.Install(); | ||
| 85 | brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); | ||
| 86 | arpEntryExePackage.VerifyRegistered(true); | ||
| 87 | |||
| 88 | LogVerifier.MessageInLogFile(installLogPath, $"TestExe.exe\" /regw \"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{arpId},DisplayVersion,String,1.0.0.0\""); | ||
| 89 | |||
| 90 | brokenPerUserArpEntryExePackageBundle.Uninstall((int)MSIExec.MSIExecReturnCode.ERROR_INVALID_PARAMETER); | ||
| 91 | brokenPerUserArpEntryExePackageBundle.VerifyRegisteredAndInPackageCache(); | ||
| 92 | |||
| 93 | arpEntryExePackage.Unregister(); | ||
| 94 | |||
| 95 | brokenPerUserArpEntryExePackageBundle.Uninstall(); | ||
| 96 | brokenPerUserArpEntryExePackageBundle.VerifyUnregisteredAndRemovedFromPackageCache(); | ||
| 97 | } | ||
| 98 | } | ||
| 99 | } | ||
