main
cs 141 lines 5.89 KB
Raw
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 System;
6 using System.IO;
7 using WixTestTools;
8 using Xunit;
9 using Xunit.Abstractions;
10
11 public class UpgradeRelatedBundleTests : BurnE2ETests
12 {
13 public UpgradeRelatedBundleTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
14
15 [RuntimeFact]
16 public void ReinstallsOlderBundleAfterFailure()
17 {
18 var packageAv2 = this.CreatePackageInstaller("PackageAv2");
19 var packageAv3 = this.CreatePackageInstaller("PackageAv3");
20 var bundleAv2 = this.CreateBundleInstaller("BundleAv2");
21 var bundleAv3 = this.CreateBundleInstaller("BundleAv3");
22
23 packageAv2.VerifyInstalled(false);
24 packageAv3.VerifyInstalled(false);
25
26 bundleAv2.Install();
27 bundleAv2.VerifyRegisteredAndInPackageCache();
28
29 packageAv2.VerifyInstalled(true);
30 packageAv3.VerifyInstalled(false);
31
32 // Verify https://github.com/wixtoolset/issues/issues/3421
33 var bundleAv3InstallLogFilePath = bundleAv3.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
34 bundleAv3.VerifyUnregisteredAndRemovedFromPackageCache();
35
36 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv3InstallLogFilePath, @"Applied execute package: PackageA, result: 0x0, restart: None"));
37
38 packageAv2.VerifyInstalled(true);
39 packageAv3.VerifyInstalled(false);
40 }
41
42 [RuntimeFact]
43 public void ReinstallsOlderBundleAfterFailureWixstdba()
44 {
45 var packageAv2 = this.CreatePackageInstaller("PackageAv2");
46 var packageAv3 = this.CreatePackageInstaller("PackageAv3");
47 var bundleAv2 = this.CreateBundleInstaller("BundleAv2wixstdba");
48 var bundleAv3 = this.CreateBundleInstaller("BundleAv3wixstdba");
49
50 packageAv2.VerifyInstalled(false);
51 packageAv3.VerifyInstalled(false);
52
53 bundleAv2.Install();
54 bundleAv2.VerifyRegisteredAndInPackageCache();
55
56 packageAv2.VerifyInstalled(true);
57 packageAv3.VerifyInstalled(false);
58
59 // Verify https://github.com/wixtoolset/issues/issues/3421
60 var bundleAv3InstallLogFilePath = bundleAv3.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
61 bundleAv3.VerifyUnregisteredAndRemovedFromPackageCache();
62
63 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv3InstallLogFilePath, @"Applied execute package: PackageA, result: 0x0, restart: None"));
64
65 packageAv2.VerifyInstalled(true);
66 packageAv3.VerifyInstalled(false);
67 }
68
69 [RuntimeFact]
70 public void ReportsRelatedBundleMissingFromCache()
71 {
72 var packageAv1 = this.CreatePackageInstaller("PackageAv1");
73 var packageAv2 = this.CreatePackageInstaller("PackageAv2");
74 var bundleAv1 = this.CreateBundleInstaller("BundleAv1");
75 var bundleAv2 = this.CreateBundleInstaller("BundleAv2");
76
77 bundleAv1.Install();
78 bundleAv1.VerifyRegisteredAndInPackageCache();
79
80 bundleAv1.ManuallyUncache();
81
82 // Verify https://github.com/wixtoolset/issues/issues/4991
83 var bundleAv2InstallLogFilePath = bundleAv2.Install();
84 bundleAv2.VerifyRegisteredAndInPackageCache();
85
86 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"OnDetectRelatedBundle\(\) - id: \{[0-9A-Za-z\-]{36}\}, missing from cache: True"));
87 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"Detected related bundle: \{[0-9A-Za-z\-]{36}\}, type: Upgrade, scope: PerMachine, version: 1\.0\.0\.0, cached: No"));
88 }
89
90 [RuntimeFact]
91 public void Bundle64UpgradesBundle32()
92 {
93 var packageAv1 = this.CreatePackageInstaller("PackageAv1");
94 var packageAv2 = this.CreatePackageInstaller("PackageAv2");
95 var bundleAv1 = this.CreateBundleInstaller("BundleAv1");
96 var bundleAv2x64 = this.CreateBundleInstaller("BundleAv2x64");
97
98 bundleAv1.Install();
99 bundleAv1.VerifyRegisteredAndInPackageCache();
100
101 var bundleAv2x64InstallLogFilePath = bundleAv2x64.Install();
102 bundleAv2x64.VerifyRegisteredAndInPackageCache();
103
104 bundleAv1.VerifyUnregisteredAndRemovedFromPackageCache();
105
106 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2x64InstallLogFilePath, @"Detected related package: \{[0-9A-Za-z\-]{36}\}, scope: PerMachine, version: 1.0.0.0, language: 1033 operation: MajorUpgrade"));
107 }
108
109 [RuntimeFact]
110 public void Bundle32UpgradesBundle64()
111 {
112 var packageAv1 = this.CreatePackageInstaller("PackageAv1");
113 var packageAv2 = this.CreatePackageInstaller("PackageAv2");
114 var bundleAv1x64 = this.CreateBundleInstaller("BundleAv1x64");
115 var bundleAv2 = this.CreateBundleInstaller("BundleAv2");
116
117 bundleAv1x64.Install();
118 bundleAv1x64.VerifyRegisteredAndInPackageCache();
119
120 bundleAv2.Install();
121 bundleAv2.VerifyRegisteredAndInPackageCache();
122
123 bundleAv1x64.VerifyUnregisteredAndRemovedFromPackageCache();
124 }
125
126 [RuntimeFact]
127 public void DncBABundleUpgradesDncBABundle()
128 {
129 var bundleDv2 = this.CreateBundleInstaller("BundleD_x64_v2");
130 var bundleDv3 = this.CreateBundleInstaller("BundleD_x64_v3");
131
132 bundleDv2.Install();
133 bundleDv2.VerifyRegisteredAndInPackageCache();
134
135 bundleDv3.Install();
136 bundleDv3.VerifyRegisteredAndInPackageCache();
137
138 bundleDv2.VerifyUnregisteredAndRemovedFromPackageCache();
139 }
140 }
141 }