main
cs 120 lines 5.19 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.CoreIntegration
4 {
5 using System;
6 using System.IO;
7 using System.Linq;
8 using WixInternal.TestSupport;
9 using WixInternal.Core.TestPackage;
10 using WixToolset.Data;
11 using Xunit;
12
13 public class UpgradeFixture
14 {
15 [Fact]
16 public void FailsOnInvalidVersion()
17 {
18 var folder = TestData.Get(@"TestData");
19
20 using (var fs = new DisposableFileSystem())
21 {
22 var baseFolder = fs.GetFolder();
23 var intermediateFolder = Path.Combine(baseFolder, "obj");
24 var msiPath = Path.Combine(baseFolder, @"bin\test.msi");
25
26 var result = WixRunner.Execute(new[]
27 {
28 "build",
29 Path.Combine(folder, "Upgrade", "UpgradeInvalidMinVersion.wxs"),
30 Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"),
31 Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"),
32 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
33 "-intermediateFolder", intermediateFolder,
34 "-o", msiPath
35 });
36
37 var errorMessages = result.Messages.Where(m => m.Level == MessageLevel.Error)
38 .Select(m => m.ToString())
39 .ToArray();
40 Assert.StartsWith("Invalid MSI package version: '1.256.0'.", errorMessages.Single());
41 Assert.Equal(1148, result.ExitCode);
42 }
43 }
44
45 [Fact]
46 public void MajorUpgradeDowngradeMessagePopulatesRowsAsExpected()
47 {
48 var folder = TestData.Get("TestData", "Upgrade");
49 var build = new Builder(folder, new Type[] { }, new[] { folder });
50
51 var results = build.BuildAndQuery(Build, "Upgrade", "LaunchCondition");
52 WixAssert.CompareLineByLine(new[]
53 {
54 "LaunchCondition:NOT WIX_DOWNGRADE_DETECTED\tNo downgrades allowed!",
55 "LaunchCondition:NOT WIX_UPGRADE_DETECTED\tNo upgrades allowed!",
56 "Upgrade:{7AB24276-C628-43DB-9E65-A184D052909B}\t\t2.0.0\t1033\t1\t\tWIX_UPGRADE_DETECTED",
57 "Upgrade:{7AB24276-C628-43DB-9E65-A184D052909B}\t2.0.0\t\t1033\t2\t\tWIX_DOWNGRADE_DETECTED",
58 }, results);
59 }
60
61 [Fact]
62 public void DefaultMajorUpgradePopulatesUpgradeRowsAsExpected()
63 {
64 var folder = TestData.Get("TestData", "DefaultMajorUpgrade");
65 var build = new Builder(folder, new Type[] { }, new[] { folder });
66
67 var results = build.BuildAndQuery(Build, "Upgrade", "LaunchCondition");
68 WixAssert.CompareLineByLine(new[]
69 {
70 "LaunchCondition:NOT WIX_DOWNGRADE_DETECTED\tA newer version of [ProductName] is already installed.",
71 "Upgrade:{46649344-6CDF-4531-B91C-DCC088CBF6D3}\t1.0\t\t\t258\t\tPRODUCT",
72 "Upgrade:{7AB24276-C628-43DB-9E65-A184D052909B}\t\t2.0.0\t1033\t1\t\tWIX_UPGRADE_DETECTED",
73 "Upgrade:{7AB24276-C628-43DB-9E65-A184D052909B}\t2.0.0\t\t1033\t2\t\tWIX_DOWNGRADE_DETECTED",
74 }, results);
75 }
76
77 [Fact]
78 public void CanRescheduleRemoveExistingProductsWithDefaultMajorUpgrade()
79 {
80 var folder = TestData.Get("TestData", "DefaultMajorUpgradeReschedule");
81 var build = new Builder(folder, new Type[] { }, new[] { folder });
82
83 var results = build.BuildAndQuery(Build, "InstallExecuteSequence").Where(r => r.StartsWith("InstallExecuteSequence:RemoveExistingProducts") || r.StartsWith("InstallExecuteSequence:InstallFinalize")).ToArray();
84 WixAssert.CompareLineByLine(new[]
85 {
86 "InstallExecuteSequence:InstallFinalize\t\t6600",
87 "InstallExecuteSequence:RemoveExistingProducts\t\t6601",
88 }, results);
89 }
90
91 [Fact]
92 public void CanOverrideDefaultMajorUpgradeLaunchConditionMessage()
93 {
94 var folder = TestData.Get("TestData", "DefaultMajorUpgradeOverride");
95 var build = new Builder(folder, new Type[] { }, new[] { folder });
96
97 var results = build.BuildAndQuery(Build, "LaunchCondition");
98 WixAssert.CompareLineByLine(new[]
99 {
100 "LaunchCondition:NOT WIX_DOWNGRADE_DETECTED\t[ProductName] does not support downgrading.",
101 }, results);
102 }
103
104 [Fact]
105 public void UpgradeStrategyNoneDoesNotCreateDefaultMajorUpgrade()
106 {
107 var folder = TestData.Get("TestData", "DefaultMajorUpgradeNone");
108 var build = new Builder(folder, new Type[] { }, new[] { folder });
109
110 var results = build.BuildAndQuery(Build, "Upgrade", "LaunchCondition");
111 Assert.Empty(results);
112 }
113
114 private static void Build(string[] args)
115 {
116 var result = WixRunner.Execute(args);
117 result.AssertSuccess();
118 }
119 }
120 }