main
cs 124 lines 5.67 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.IO;
6 using System.Linq;
7 using WixInternal.Core.TestPackage;
8 using WixInternal.TestSupport;
9 using Xunit;
10
11 public class StandardActionFixture
12 {
13 [Fact]
14 public void CanCompileSpecialActionWithOverride()
15 {
16 using var fs = new DisposableFileSystem();
17
18 var results = BuildAndQueryMsi(fs, "SpecialActionOverride.wxs");
19
20 WixAssert.CompareLineByLine(new[]
21 {
22 "InstallExecuteSequence:AppSearch\t\t99",
23 "InstallExecuteSequence:CostFinalize\t\t1000",
24 "InstallExecuteSequence:CostInitialize\t\t800",
25 "InstallExecuteSequence:CreateFolders\t\t3700",
26 "InstallExecuteSequence:FileCost\t\t900",
27 "InstallExecuteSequence:FindRelatedProducts\t\t98",
28 "InstallExecuteSequence:InstallFiles\t\t4000",
29 "InstallExecuteSequence:InstallFinalize\t\t6600",
30 "InstallExecuteSequence:InstallInitialize\t\t1500",
31 "InstallExecuteSequence:InstallValidate\t\t1400",
32 "InstallExecuteSequence:LaunchConditions\t\t100",
33 "InstallExecuteSequence:MigrateFeatureStates\t\t1200",
34 "InstallExecuteSequence:ProcessComponents\t\t1600",
35 "InstallExecuteSequence:PublishFeatures\t\t6300",
36 "InstallExecuteSequence:PublishProduct\t\t6400",
37 "InstallExecuteSequence:RegisterProduct\t\t6100",
38 "InstallExecuteSequence:RegisterUser\t\t6000",
39 "InstallExecuteSequence:RemoveExistingProducts\t\t1401",
40 "InstallExecuteSequence:RemoveFiles\t\t3500",
41 "InstallExecuteSequence:RemoveFolders\t\t3600",
42 "InstallExecuteSequence:UnpublishFeatures\t\t1800",
43 "InstallExecuteSequence:ValidateProductID\t\t700",
44 "InstallUISequence:CostFinalize\t\t1000",
45 "InstallUISequence:CostInitialize\t\t800",
46 "InstallUISequence:ExecuteAction\t\t1300",
47 "InstallUISequence:FileCost\t\t900",
48 "InstallUISequence:FindRelatedProducts\t\t25",
49 "InstallUISequence:LaunchConditions\t\t100",
50 "InstallUISequence:MigrateFeatureStates\t\t1200",
51 "InstallUISequence:ValidateProductID\t\t700",
52 }, results);
53 }
54
55 [Fact]
56 public void CanCompileStandardActionWithOverride()
57 {
58 using var fs = new DisposableFileSystem();
59
60 var results = BuildAndQueryMsi(fs, "StandardActionOverride.wxs");
61
62 WixAssert.CompareLineByLine(new[]
63 {
64 "InstallExecuteSequence:CostFinalize\t\t1000",
65 "InstallExecuteSequence:CostInitialize\t\t800",
66 "InstallExecuteSequence:CreateFolders\t\t3700",
67 "InstallExecuteSequence:FileCost\t\t900",
68 "InstallExecuteSequence:FindRelatedProducts\t\t25",
69 "InstallExecuteSequence:InstallFiles\tTEST_CONDITION\t4000",
70 "InstallExecuteSequence:InstallFinalize\t\t6600",
71 "InstallExecuteSequence:InstallInitialize\t\t1500",
72 "InstallExecuteSequence:InstallValidate\t\t1400",
73 "InstallExecuteSequence:LaunchConditions\t\t100",
74 "InstallExecuteSequence:MigrateFeatureStates\t\t1200",
75 "InstallExecuteSequence:ProcessComponents\t\t1600",
76 "InstallExecuteSequence:PublishFeatures\t\t6300",
77 "InstallExecuteSequence:PublishProduct\t\t6400",
78 "InstallExecuteSequence:RegisterProduct\t\t6100",
79 "InstallExecuteSequence:RegisterUser\t\t6000",
80 "InstallExecuteSequence:RemoveExistingProducts\t\t1401",
81 "InstallExecuteSequence:RemoveFiles\t\t3500",
82 "InstallExecuteSequence:RemoveFolders\t\t3600",
83 "InstallExecuteSequence:UnpublishFeatures\t\t1800",
84 "InstallExecuteSequence:ValidateProductID\t\t700",
85 "InstallUISequence:CostFinalize\t\t1000",
86 "InstallUISequence:CostInitialize\t\t800",
87 "InstallUISequence:ExecuteAction\t\t1300",
88 "InstallUISequence:FileCost\t\t900",
89 "InstallUISequence:FindRelatedProducts\t\t25",
90 "InstallUISequence:LaunchConditions\t\t100",
91 "InstallUISequence:MigrateFeatureStates\t\t1200",
92 "InstallUISequence:ValidateProductID\t\t700",
93 }, results);
94 }
95
96 private static string[] BuildAndQueryMsi(DisposableFileSystem fs, string sourceFile)
97 {
98 var folder = TestData.Get(@"TestData");
99
100 var baseFolder = fs.GetFolder();
101 var intermediateFolder = Path.Combine(baseFolder, "obj");
102 var msiPath = Path.Combine(baseFolder, "bin", "test.msi");
103
104 var result = WixRunner.Execute(new[]
105 {
106 "build",
107 Path.Combine(folder, "StandardAction", sourceFile),
108 "-bindpath", Path.Combine(folder, "SingleFile", "data"),
109 "-intermediateFolder", intermediateFolder,
110 "-o", msiPath
111 });
112
113 result.AssertSuccess();
114
115 var results = Query.QueryDatabase(msiPath, new[]
116 {
117 "InstallExecuteSequence",
118 "InstallUISequence"
119 }).ToArray();
120
121 return results;
122 }
123 }
124 }