aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-12-30 15:32:57 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-12-30 18:40:49 -0600
commit8dfadd0c9068965af138949b630ef8496b4f7bbb (patch)
tree58bc40d5306d80a39712470aab0d5bf325eb3a45 /src/test
parent84a1b0f8ffe40a26916b1dfb3e1b59b6b0c31ad4 (diff)
downloadwix-8dfadd0c9068965af138949b630ef8496b4f7bbb.tar.gz
wix-8dfadd0c9068965af138949b630ef8496b4f7bbb.tar.bz2
wix-8dfadd0c9068965af138949b630ef8496b4f7bbb.zip
Don't report related operation in OnDetectRelatedBundle.
#5796
Diffstat (limited to 'src/test')
-rw-r--r--src/test/burn/TestData/WixStdBaTests/BundleA_v10/BundleA_v10.wixproj20
-rw-r--r--src/test/burn/WixToolset.WixBA/InstallationViewModel.cs47
-rw-r--r--src/test/burn/WixToolset.WixBA/RootViewModel.cs23
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs2
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs2
5 files changed, 76 insertions, 18 deletions
diff --git a/src/test/burn/TestData/WixStdBaTests/BundleA_v10/BundleA_v10.wixproj b/src/test/burn/TestData/WixStdBaTests/BundleA_v10/BundleA_v10.wixproj
new file mode 100644
index 00000000..602dc4bc
--- /dev/null
+++ b/src/test/burn/TestData/WixStdBaTests/BundleA_v10/BundleA_v10.wixproj
@@ -0,0 +1,20 @@
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<Project Sdk="WixToolset.Sdk">
3 <PropertyGroup>
4 <OutputType>Bundle</OutputType>
5 <BA>hyperlinkLicense</BA>
6 <UpgradeCode>{7D977157-06C9-4176-A931-AC16E18AAB51}</UpgradeCode>
7 <DefineConstants>$(DefineConstants);Version=1.0</DefineConstants>
8 <OutputName>WixStdBaTest1_v10</OutputName>
9 </PropertyGroup>
10 <ItemGroup>
11 <Compile Include="..\..\Templates\Bundle.wxs" Link="Bundle.wxs" />
12 <Compile Include="..\BundleA\BundleA.wxs" Link="BundleA.wxs" />
13 </ItemGroup>
14 <ItemGroup>
15 <ProjectReference Include="..\PackageA\PackageA.wixproj" />
16 </ItemGroup>
17 <ItemGroup>
18 <PackageReference Include="WixToolset.Bal.wixext" />
19 </ItemGroup>
20</Project> \ No newline at end of file
diff --git a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
index 1846d51b..e056b943 100644
--- a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
+++ b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs
@@ -19,6 +19,18 @@ namespace WixToolset.WixBA
19 { 19 {
20 Absent, 20 Absent,
21 Present, 21 Present,
22 }
23
24 /// <summary>
25 /// The states of upgrade detection.
26 /// </summary>
27 public enum UpgradeDetectionState
28 {
29 // There are no Upgrade related bundles installed.
30 None,
31 // All Upgrade related bundles that are installed are older than or the same version as this bundle.
32 Older,
33 // At least one Upgrade related bundle is installed that is newer than this bundle.
22 Newer, 34 Newer,
23 } 35 }
24 36
@@ -90,7 +102,7 @@ namespace WixToolset.WixBA
90 102
91 void RootPropertyChanged(object sender, PropertyChangedEventArgs e) 103 void RootPropertyChanged(object sender, PropertyChangedEventArgs e)
92 { 104 {
93 if (("DetectState" == e.PropertyName) || ("InstallState" == e.PropertyName)) 105 if (("DetectState" == e.PropertyName) || ("UpgradeDetectState" == e.PropertyName) || ("InstallState" == e.PropertyName))
94 { 106 {
95 base.OnPropertyChanged("RepairEnabled"); 107 base.OnPropertyChanged("RepairEnabled");
96 base.OnPropertyChanged("InstallEnabled"); 108 base.OnPropertyChanged("InstallEnabled");
@@ -276,7 +288,9 @@ namespace WixToolset.WixBA
276 { 288 {
277 if (this.installCommand == null) 289 if (this.installCommand == null)
278 { 290 {
279 this.installCommand = new RelayCommand(param => WixBA.Plan(LaunchAction.Install), param => this.root.DetectState == DetectionState.Absent && this.root.InstallState == InstallationState.Waiting); 291 this.installCommand = new RelayCommand(
292 param => WixBA.Plan(LaunchAction.Install),
293 param => this.root.DetectState == DetectionState.Absent && this.root.UpgradeDetectState != UpgradeDetectionState.Newer && this.root.InstallState == InstallationState.Waiting);
280 } 294 }
281 295
282 return this.installCommand; 296 return this.installCommand;
@@ -399,9 +413,19 @@ namespace WixToolset.WixBA
399 413
400 private void DetectedRelatedBundle(object sender, DetectRelatedBundleEventArgs e) 414 private void DetectedRelatedBundle(object sender, DetectRelatedBundleEventArgs e)
401 { 415 {
402 if (e.Operation == RelatedOperation.Downgrade) 416 if (e.RelationType == RelationType.Upgrade)
403 { 417 {
404 this.Downgrade = true; 418 if (WixBA.Model.Engine.CompareVersions(this.Version, e.Version) > 0)
419 {
420 if (this.root.UpgradeDetectState == UpgradeDetectionState.None)
421 {
422 this.root.UpgradeDetectState = UpgradeDetectionState.Older;
423 }
424 }
425 else
426 {
427 this.root.UpgradeDetectState = UpgradeDetectionState.Newer;
428 }
405 } 429 }
406 430
407 if (!WixBA.Model.BAManifest.Bundle.Packages.ContainsKey(e.ProductCode)) 431 if (!WixBA.Model.BAManifest.Bundle.Packages.ContainsKey(e.ProductCode))
@@ -432,19 +456,10 @@ namespace WixToolset.WixBA
432 } 456 }
433 else if (Hresult.Succeeded(e.Status)) 457 else if (Hresult.Succeeded(e.Status))
434 { 458 {
435 if (this.Downgrade) 459 if (this.root.UpgradeDetectState == UpgradeDetectionState.Newer)
436 { 460 {
437 this.root.DetectState = DetectionState.Newer; 461 this.Downgrade = true;
438 var relatedPackages = WixBA.Model.BAManifest.Bundle.Packages.Values.Where(p => p.Type == PackageType.UpgradeBundle); 462 this.DowngradeMessage = "There is already a newer version of WiX installed on this machine.";
439 var installedVersion = relatedPackages.Any() ? new Version(relatedPackages.Max(p => p.Version)) : null;
440 if (installedVersion != null && installedVersion < new Version(4, 1) && installedVersion.Build > 10)
441 {
442 this.DowngradeMessage = "You must uninstall WiX v" + installedVersion + " before you can install this.";
443 }
444 else
445 {
446 this.DowngradeMessage = "There is already a newer version of WiX installed on this machine.";
447 }
448 } 463 }
449 464
450 if (LaunchAction.Layout == WixBA.Model.Command.Action) 465 if (LaunchAction.Layout == WixBA.Model.Command.Action)
diff --git a/src/test/burn/WixToolset.WixBA/RootViewModel.cs b/src/test/burn/WixToolset.WixBA/RootViewModel.cs
index 8cff7274..2dfd214e 100644
--- a/src/test/burn/WixToolset.WixBA/RootViewModel.cs
+++ b/src/test/burn/WixToolset.WixBA/RootViewModel.cs
@@ -27,6 +27,7 @@ namespace WixToolset.WixBA
27 private bool canceled; 27 private bool canceled;
28 private InstallationState installState; 28 private InstallationState installState;
29 private DetectionState detectState; 29 private DetectionState detectState;
30 private UpgradeDetectionState upgradeDetectState;
30 31
31 /// <summary> 32 /// <summary>
32 /// Creates a new model of the root view. 33 /// Creates a new model of the root view.
@@ -120,6 +121,28 @@ namespace WixToolset.WixBA
120 } 121 }
121 122
122 /// <summary> 123 /// <summary>
124 /// Gets and sets the upgrade detect state of the view's model.
125 /// </summary>
126 public UpgradeDetectionState UpgradeDetectState
127 {
128 get
129 {
130 return this.upgradeDetectState;
131 }
132
133 set
134 {
135 if (this.upgradeDetectState != value)
136 {
137 this.upgradeDetectState = value;
138
139 // Notify all the properties derived from the state that the state changed.
140 base.OnPropertyChanged("UpgradeDetectState");
141 }
142 }
143 }
144
145 /// <summary>
123 /// Gets and sets the installation state of the view's model. 146 /// Gets and sets the installation state of the view's model.
124 /// </summary> 147 /// </summary>
125 public InstallationState InstallState 148 public InstallationState InstallState
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
index e2975fc9..309241d9 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
@@ -596,7 +596,7 @@ namespace WixToolsetTest.BurnE2E
596 packageDv2.VerifyInstalled(true); 596 packageDv2.VerifyInstalled(true);
597 597
598 Assert.True(LogVerifier.MessageInLogFileRegex(bundleHv2InstallLogFilePath, @"Skipping cross-scope dependency registration on package: PackageA, bundle scope: PerUser, package scope: PerMachine")); 598 Assert.True(LogVerifier.MessageInLogFileRegex(bundleHv2InstallLogFilePath, @"Skipping cross-scope dependency registration on package: PackageA, bundle scope: PerUser, package scope: PerMachine"));
599 Assert.True(LogVerifier.MessageInLogFileRegex(bundleHv2InstallLogFilePath, @"Detected related bundle: \{[0-9A-Za-z\-]{36}\}, type: Upgrade, scope: PerUser, version: 1\.0\.0\.0, operation: MajorUpgrade, cached: Yes")); 599 Assert.True(LogVerifier.MessageInLogFileRegex(bundleHv2InstallLogFilePath, @"Detected related bundle: \{[0-9A-Za-z\-]{36}\}, type: Upgrade, scope: PerUser, version: 1\.0\.0\.0, cached: Yes"));
600 600
601 bundleHv2.Uninstall(); 601 bundleHv2.Uninstall();
602 bundleHv2.VerifyUnregisteredAndRemovedFromPackageCache(); 602 bundleHv2.VerifyUnregisteredAndRemovedFromPackageCache();
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs
index 70c0c474..35cc64f0 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/UpgradeRelatedBundleTests.cs
@@ -30,7 +30,7 @@ namespace WixToolsetTest.BurnE2E
30 bundleAv2.VerifyRegisteredAndInPackageCache(); 30 bundleAv2.VerifyRegisteredAndInPackageCache();
31 31
32 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"OnDetectRelatedBundle\(\) - id: \{[0-9A-Za-z\-]{36}\}, missing from cache: True")); 32 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"OnDetectRelatedBundle\(\) - id: \{[0-9A-Za-z\-]{36}\}, missing from cache: True"));
33 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"Detected related bundle: \{[0-9A-Za-z\-]{36}\}, type: Upgrade, scope: PerMachine, version: 1\.0\.0\.0, operation: MajorUpgrade, cached: No")); 33 Assert.True(LogVerifier.MessageInLogFileRegex(bundleAv2InstallLogFilePath, @"Detected related bundle: \{[0-9A-Za-z\-]{36}\}, type: Upgrade, scope: PerMachine, version: 1\.0\.0\.0, cached: No"));
34 } 34 }
35 } 35 }
36} 36}