main
cs 247 lines 10.8 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.Netfx
4 {
5 using System.IO;
6 using System.Linq;
7 using WixInternal.TestSupport;
8 using WixInternal.Core.TestPackage;
9 using WixToolset.Netfx;
10 using Xunit;
11
12 public class NetfxExtensionFixture
13 {
14 [Fact]
15 public void CanBuildUsingLatestDotNetCorePackages()
16 {
17 using (var fs = new DisposableFileSystem())
18 {
19 var baseFolder = fs.GetFolder();
20 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
21 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages");
22 var intermediateFolder = Path.Combine(baseFolder, "obj");
23
24 var extensionResult = WixRunner.Execute(new[]
25 {
26 "extension", "add",
27 "WixToolset.BootstrapperApplications.wixext"
28 });
29
30 var compileResult = WixRunner.Execute(new[]
31 {
32 "build",
33 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
34 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x86.wxs"),
35 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"),
36 "-ext", "WixToolset.BootstrapperApplications.wixext",
37 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
38 "-intermediateFolder", intermediateFolder,
39 "-o", bundleFile,
40 });
41 compileResult.AssertSuccess();
42
43 Assert.True(File.Exists(bundleFile));
44 }
45 }
46
47 [Fact]
48 public void CanBuildUsingLatestDotNetCorePackages_X64()
49 {
50 using (var fs = new DisposableFileSystem())
51 {
52 var baseFolder = fs.GetFolder();
53 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
54 var bundleSourceFolder = TestData.Get(@"TestData\UsingDotNetCorePackages");
55 var intermediateFolder = Path.Combine(baseFolder, "obj");
56
57 var extensionResult = WixRunner.Execute(new[]
58 {
59 "extension", "add",
60 "WixToolset.BootstrapperApplications.wixext"
61 });
62
63 var compileResult = WixRunner.Execute(new[]
64 {
65 "build",
66 Path.Combine(bundleSourceFolder, "BundleLatest_x64.wxs"),
67 Path.Combine(bundleSourceFolder, "NetCore3.1.12_x64.wxs"),
68 "-ext", "WixToolset.BootstrapperApplications.wixext",
69 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
70 "-intermediateFolder", intermediateFolder,
71 "-o", bundleFile,
72 });
73 compileResult.AssertSuccess();
74
75 Assert.True(File.Exists(bundleFile));
76 }
77 }
78
79 [Fact]
80 public void CanBuildUsingNetFx481Packages()
81 {
82 using (var fs = new DisposableFileSystem())
83 {
84 var baseFolder = fs.GetFolder();
85 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
86 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxPackages");
87 var intermediateFolder = Path.Combine(baseFolder, "obj");
88
89 var extensionResult = WixRunner.Execute(new[]
90 {
91 "extension", "add",
92 "WixToolset.BootstrapperApplications.wixext"
93 });
94
95 var compileResult = WixRunner.Execute(new[]
96 {
97 "build",
98 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
99 "-ext", "WixToolset.BootstrapperApplications.wixext",
100 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
101 "-intermediateFolder", intermediateFolder,
102 "-o", bundleFile,
103 "-arch", "x64",
104 });
105 compileResult.AssertSuccess();
106
107 Assert.True(File.Exists(bundleFile));
108 }
109 }
110
111 [Fact]
112 public void CanBuildUsingNetFxSearches()
113 {
114 using (var fs = new DisposableFileSystem())
115 {
116 var baseFolder = fs.GetFolder();
117 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
118 var bundleSourceFolder = TestData.Get(@"TestData\UsingNetFxSearches");
119 var intermediateFolder = Path.Combine(baseFolder, "obj");
120
121 var extensionResult = WixRunner.Execute(warningsAsErrors: true, new[]
122 {
123 "extension", "add",
124 "WixToolset.BootstrapperApplications.wixext",
125 "extension", "add",
126 "WixToolset.Util.wixext",
127 });
128
129 var compileResult = WixRunner.Execute(new[]
130 {
131 "build",
132 Path.Combine(bundleSourceFolder, "BundleLatest.wxs"),
133 "-ext", "WixToolset.BootstrapperApplications.wixext",
134 "-ext", "WixToolset.Util.wixext",
135 "-ext", TestData.Get(@"WixToolset.Netfx.wixext.dll"),
136 "-intermediateFolder", intermediateFolder,
137 "-o", bundleFile,
138 "-arch", "x64",
139 });
140 compileResult.AssertSuccess();
141
142 Assert.True(File.Exists(bundleFile));
143 }
144 }
145
146 [Fact]
147 public void CanBuildUsingNativeImage()
148 {
149 var folder = TestData.Get(@"TestData\UsingNativeImage");
150 var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder });
151
152 var results = build.BuildAndQuery(Build, "Binary", "CustomAction", "Wix4NetFxNativeImage");
153 WixAssert.CompareLineByLine(new[]
154 {
155 "Binary:Wix4NetFxCA_X86\t[Binary data]",
156 "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t",
157 "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t",
158 "CustomAction:Wix4NetFxExecuteNativeImageInstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t",
159 "CustomAction:Wix4NetFxExecuteNativeImageUninstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t",
160 "CustomAction:Wix4NetFxScheduleNativeImage_X86\t1\tWix4NetFxCA_X86\tSchedNetFx\t",
161 "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t",
162 }, results.OrderBy(s => s).ToArray());
163 }
164
165 [Fact]
166 public void CanBuildUsingNativeImageX64()
167 {
168 var folder = TestData.Get(@"TestData\UsingNativeImage");
169 var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder });
170
171 var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4NetFxNativeImage");
172 WixAssert.CompareLineByLine(new[]
173 {
174 "Binary:Wix4NetFxCA_X64\t[Binary data]",
175 "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t",
176 "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t",
177 "CustomAction:Wix4NetFxExecuteNativeImageInstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t",
178 "CustomAction:Wix4NetFxExecuteNativeImageUninstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t",
179 "CustomAction:Wix4NetFxScheduleNativeImage_X64\t1\tWix4NetFxCA_X64\tSchedNetFx\t",
180 "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t",
181 }, results.OrderBy(s => s).ToArray());
182 }
183
184 [Fact]
185 public void CanBuildUsingNativeImageARM64()
186 {
187 var folder = TestData.Get(@"TestData\UsingNativeImage");
188 var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder });
189
190 var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4NetFxNativeImage");
191 WixAssert.CompareLineByLine(new[]
192 {
193 "Binary:Wix4NetFxCA_A64\t[Binary data]",
194 "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t",
195 "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t",
196 "CustomAction:Wix4NetFxExecuteNativeImageInstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t",
197 "CustomAction:Wix4NetFxExecuteNativeImageUninstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t",
198 "CustomAction:Wix4NetFxScheduleNativeImage_A64\t1\tWix4NetFxCA_A64\tSchedNetFx\t",
199 "Wix4NetFxNativeImage:ExampleNgen\tfil6349_KNDJhqShNzVdHX3ihhvA6Y\t3\t8\t\t",
200 }, results.OrderBy(s => s).ToArray());
201 }
202
203 [Fact]
204 public void CanBuildUsingDotNetCompatibilityCheck()
205 {
206 var folder = TestData.Get(@"TestData\UsingDotNetCompatibilityCheck");
207 var build = new Builder(folder, typeof(NetfxExtensionFactory), new[] { folder });
208
209 var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4NetFxDotNetCheck");
210 WixAssert.CompareLineByLine(new[]
211 {
212 "Binary:Wix4NetCheck_arm64\t[Binary data]",
213 "Binary:Wix4NetCheck_x64\t[Binary data]",
214 "Binary:Wix4NetCheck_x86\t[Binary data]",
215 "Binary:Wix4NetFxCA_X64\t[Binary data]",
216 "CustomAction:Wix4NetFxDotNetCompatibilityCheck_X64\t1\tWix4NetFxCA_X64\tDotNetCompatibilityCheck\t",
217 "Wix4NetFxDotNetCheck:DotNetCoreCheckManualId\tMicrosoft.NETCore.App\tx64\t7.0.1\tLatestMajor\tDOTNETCORECHECKRESULT",
218 }, results.OrderBy(s => s).ToArray());
219 }
220
221 private static void Build(string[] args)
222 {
223 var result = WixRunner.Execute(args);
224 result.AssertSuccess();
225 }
226
227 private static void BuildX64(string[] args)
228 {
229 var newArgs = args.ToList();
230 newArgs.Add("-platform");
231 newArgs.Add("x64");
232
233 var result = WixRunner.Execute(newArgs.ToArray());
234 result.AssertSuccess();
235 }
236
237 private static void BuildARM64(string[] args)
238 {
239 var newArgs = args.ToList();
240 newArgs.Add("-platform");
241 newArgs.Add("arm64");
242
243 var result = WixRunner.Execute(newArgs.ToArray());
244 result.AssertSuccess();
245 }
246 }
247 }