summaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs')
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/ExePackageTests.cs99
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
3namespace 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}