aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2018-07-19 00:58:00 -0700
committerRob Mensching <rob@firegiant.com>2018-07-21 07:36:59 -0700
commit2724cfee4c163f3297ee25edfd2372767cfd4945 (patch)
tree8cdda34c83bea014a586a491e3b4b187ad8f16da /src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
parent4d40bef9cf51b8cff7e1f6a73fdf68b9722eb8a0 (diff)
downloadwix-2724cfee4c163f3297ee25edfd2372767cfd4945.tar.gz
wix-2724cfee4c163f3297ee25edfd2372767cfd4945.tar.bz2
wix-2724cfee4c163f3297ee25edfd2372767cfd4945.zip
Move tool projects to Tools repo
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs442
1 files changed, 442 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
new file mode 100644
index 00000000..7a10f71e
--- /dev/null
+++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
@@ -0,0 +1,442 @@
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
3namespace WixToolsetTest.CoreIntegration
4{
5 using System.IO;
6 using System.Linq;
7 using WixBuildTools.TestSupport;
8 using WixToolset.Core.TestPackage;
9 using WixToolset.Data;
10 using WixToolset.Data.Tuples;
11 using WixToolset.Data.WindowsInstaller;
12 using Xunit;
13
14 public class MsiFixture
15 {
16 [Fact]
17 public void CanBuildSingleFile()
18 {
19 var folder = TestData.Get(@"TestData\SingleFile");
20
21 using (var fs = new DisposableFileSystem())
22 {
23 var baseFolder = fs.GetFolder();
24 var intermediateFolder = Path.Combine(baseFolder, "obj");
25
26 var result = WixRunner.Execute(new[]
27 {
28 "build",
29 Path.Combine(folder, "Package.wxs"),
30 Path.Combine(folder, "PackageComponents.wxs"),
31 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
32 "-bindpath", Path.Combine(folder, "data"),
33 "-intermediateFolder", intermediateFolder,
34 "-o", Path.Combine(baseFolder, @"bin\test.msi")
35 }, out var messages);
36 Assert.Equal(0, result);
37
38 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
39 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
40 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt")));
41
42 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir"));
43 var section = intermediate.Sections.Single();
44
45 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
46 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
47 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
48 }
49 }
50
51 [Fact]
52 public void CanBuildSingleFileCompressed()
53 {
54 var folder = TestData.Get(@"TestData\SingleFileCompressed");
55
56 using (var fs = new DisposableFileSystem())
57 {
58 var intermediateFolder = fs.GetFolder();
59
60 var result = WixRunner.Execute(new[]
61 {
62 "build",
63 Path.Combine(folder, "Package.wxs"),
64 Path.Combine(folder, "PackageComponents.wxs"),
65 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
66 "-bindpath", Path.Combine(folder, "data"),
67 "-intermediateFolder", intermediateFolder,
68 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
69 }, out var messages);
70
71 Assert.Equal(0, result);
72
73 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
74 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab")));
75 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
76
77 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
78 var section = intermediate.Sections.Single();
79
80 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
81 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
82 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
83 }
84 }
85
86 [Fact]
87 public void CanBuildSingleFileCompressedWithMediaTemplate()
88 {
89 var folder = TestData.Get(@"TestData\SingleFileCompressed");
90
91 using (var fs = new DisposableFileSystem())
92 {
93 var intermediateFolder = fs.GetFolder();
94
95 var result = WixRunner.Execute(new[]
96 {
97 "build",
98 Path.Combine(folder, "Package.wxs"),
99 Path.Combine(folder, "PackageComponents.wxs"),
100 "-d", "MediaTemplateCompressionLevel",
101 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
102 "-bindpath", Path.Combine(folder, "data"),
103 "-intermediateFolder", intermediateFolder,
104 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
105 }, out var messages);
106
107 Assert.Equal(0, result);
108
109 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
110 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab")));
111 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
112 }
113 }
114
115 [Fact]
116 public void CanBuildSingleFileCompressedWithMediaTemplateWithLowCompression()
117 {
118 var folder = TestData.Get(@"TestData\SingleFileCompressed");
119
120 using (var fs = new DisposableFileSystem())
121 {
122 var intermediateFolder = fs.GetFolder();
123
124 var result = WixRunner.Execute(new[]
125 {
126 "build",
127 Path.Combine(folder, "Package.wxs"),
128 Path.Combine(folder, "PackageComponents.wxs"),
129 "-d", "MediaTemplateCompressionLevel=low",
130 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
131 "-bindpath", Path.Combine(folder, "data"),
132 "-intermediateFolder", intermediateFolder,
133 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
134 }, out var messages);
135
136 Assert.Equal(0, result);
137
138 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
139 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\lowcab1.cab")));
140 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
141 }
142 }
143
144 [Fact]
145 public void CanBuildMultipleFilesCompressed()
146 {
147 var folder = TestData.Get(@"TestData\MultiFileCompressed");
148
149 using (var fs = new DisposableFileSystem())
150 {
151 var intermediateFolder = fs.GetFolder();
152
153 var result = WixRunner.Execute(new[]
154 {
155 "build",
156 Path.Combine(folder, "Package.wxs"),
157 Path.Combine(folder, "PackageComponents.wxs"),
158 "-d", "MediaTemplateCompressionLevel",
159 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
160 "-bindpath", Path.Combine(folder, "data"),
161 "-intermediateFolder", intermediateFolder,
162 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
163 }, out var messages);
164
165 Assert.Equal(0, result);
166
167 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
168 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab")));
169 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
170 }
171 }
172
173 [Fact]
174 public void CanLoadPdbGeneratedByBuild()
175 {
176 var folder = TestData.Get(@"TestData\MultiFileCompressed");
177
178 using (var fs = new DisposableFileSystem())
179 {
180 var intermediateFolder = fs.GetFolder();
181
182 var result = WixRunner.Execute(new[]
183 {
184 "build",
185 Path.Combine(folder, "Package.wxs"),
186 Path.Combine(folder, "PackageComponents.wxs"),
187 "-d", "MediaTemplateCompressionLevel",
188 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
189 "-bindpath", Path.Combine(folder, "data"),
190 "-intermediateFolder", intermediateFolder,
191 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
192 }, out var messages);
193
194 Assert.Equal(0, result);
195
196 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
197 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab")));
198
199 var pdbPath = Path.Combine(intermediateFolder, @"bin\test.wixpdb");
200 Assert.True(File.Exists(pdbPath));
201
202 var pdb = Pdb.Load(pdbPath, suppressVersionCheck: true);
203 Assert.NotNull(pdb);
204 Assert.NotNull(pdb.Output);
205 }
206 }
207
208 [Fact]
209 public void CanBuildSimpleModule()
210 {
211 var folder = TestData.Get(@"TestData\SimpleModule");
212
213 using (var fs = new DisposableFileSystem())
214 {
215 var intermediateFolder = fs.GetFolder();
216
217 var result = WixRunner.Execute(new[]
218 {
219 "build",
220 Path.Combine(folder, "Module.wxs"),
221 "-loc", Path.Combine(folder, "Module.en-us.wxl"),
222 "-bindpath", Path.Combine(folder, "data"),
223 "-intermediateFolder", intermediateFolder,
224 "-o", Path.Combine(intermediateFolder, @"bin\test.msm")
225 }, out var messages);
226
227 Assert.Equal(0, result);
228
229 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msm")));
230 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
231
232 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
233 var section = intermediate.Sections.Single();
234
235 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
236 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
237 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
238 }
239 }
240
241 [Fact]
242 public void CanBuildManualUpgrade()
243 {
244 var folder = TestData.Get(@"TestData\ManualUpgrade");
245
246 using (var fs = new DisposableFileSystem())
247 {
248 var intermediateFolder = fs.GetFolder();
249
250 var result = WixRunner.Execute(new[]
251 {
252 "build",
253 Path.Combine(folder, "Package.wxs"),
254 Path.Combine(folder, "PackageComponents.wxs"),
255 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
256 "-bindpath", Path.Combine(folder, "data"),
257 "-intermediateFolder", intermediateFolder,
258 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
259 }, out var messages);
260
261 Assert.Equal(0, result);
262
263 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
264 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb")));
265 Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\MsiPackage\test.txt")));
266
267 var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wir"));
268 var section = intermediate.Sections.Single();
269
270 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
271 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
272 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
273 }
274 }
275
276 [Fact]
277 public void CanBuildWixipl()
278 {
279 var folder = TestData.Get(@"TestData\SingleFile");
280
281 using (var fs = new DisposableFileSystem())
282 {
283 var baseFolder = fs.GetFolder();
284 var intermediateFolder = Path.Combine(baseFolder, "obj");
285
286 var result = WixRunner.Execute(new[]
287 {
288 "build",
289 Path.Combine(folder, "Package.wxs"),
290 Path.Combine(folder, "PackageComponents.wxs"),
291 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
292 "-bindpath", Path.Combine(folder, "data"),
293 "-intermediateFolder", intermediateFolder,
294 "-o", Path.Combine(baseFolder, @"bin\test.wixipl")
295 }, out var messages);
296
297 Assert.Equal(0, result);
298
299 var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin"));
300
301 Assert.Equal(new[]{
302 "test.wixipl"
303 }, builtFiles.Select(Path.GetFileName).ToArray());
304 }
305 }
306
307 [Fact]
308 public void CanBuildWixlib()
309 {
310 var folder = TestData.Get(@"TestData\SingleFile");
311
312 using (var fs = new DisposableFileSystem())
313 {
314 var baseFolder = fs.GetFolder();
315 var intermediateFolder = Path.Combine(baseFolder, "obj");
316
317 var result = WixRunner.Execute(new[]
318 {
319 "build",
320 Path.Combine(folder, "Package.wxs"),
321 Path.Combine(folder, "PackageComponents.wxs"),
322 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
323 "-bindpath", Path.Combine(folder, "data"),
324 "-intermediateFolder", intermediateFolder,
325 "-o", Path.Combine(baseFolder, @"bin\test.wixlib")
326 }, out var messages);
327
328 Assert.Equal(0, result);
329
330 var builtFiles = Directory.GetFiles(Path.Combine(baseFolder, @"bin"));
331
332 Assert.Equal(new[]{
333 "test.wixlib"
334 }, builtFiles.Select(Path.GetFileName).ToArray());
335 }
336 }
337
338 [Fact]
339 public void CanBuildWithIncludePath()
340 {
341 var folder = TestData.Get(@"TestData\IncludePath");
342 var bindpath = Path.Combine(folder, "data");
343
344 using (var fs = new DisposableFileSystem())
345 {
346 var baseFolder = fs.GetFolder();
347 var intermediateFolder = Path.Combine(baseFolder, "obj");
348
349 var result = WixRunner.Execute(new[]
350 {
351 "build",
352 Path.Combine(folder, "Package.wxs"),
353 Path.Combine(folder, "PackageComponents.wxs"),
354 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
355 "-bindpath", bindpath,
356 "-intermediateFolder", intermediateFolder,
357 "-o", Path.Combine(baseFolder, @"bin\test.msi"),
358 "-i", bindpath,
359 }, out var messages);
360
361 Assert.Equal(0, result);
362
363 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
364 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
365 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\MsiPackage\test.txt")));
366
367 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir"));
368 var section = intermediate.Sections.Single();
369
370 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
371 Assert.Equal(Path.Combine(folder, @"data\test.txt"), wixFile[WixFileTupleFields.Source].AsPath().Path);
372 Assert.Equal(@"test.txt", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
373 }
374 }
375
376 [Fact(Skip = "Assembly information not getting gathered yet.")]
377 public void CanBuildWithAssembly()
378 {
379 var folder = TestData.Get(@"TestData\Assembly");
380
381 using (var fs = new DisposableFileSystem())
382 {
383 var baseFolder = fs.GetFolder();
384 var intermediateFolder = Path.Combine(baseFolder, "obj");
385
386 var result = WixRunner.Execute(new[]
387 {
388 "build",
389 Path.Combine(folder, "Package.wxs"),
390 Path.Combine(folder, "PackageComponents.wxs"),
391 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
392 "-bindpath", Path.Combine(folder, "data"),
393 "-intermediateFolder", intermediateFolder,
394 "-o", Path.Combine(baseFolder, @"bin\test.msi")
395 }, out var messages);
396
397 Assert.Equal(0, result);
398
399 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
400 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
401 Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\AssemblyMsiPackage\candle.exe")));
402
403 var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wir"));
404 var section = intermediate.Sections.Single();
405
406 var wixFile = section.Tuples.OfType<WixFileTuple>().Single();
407 Assert.Equal(Path.Combine(folder, @"data\candle.exe"), wixFile[WixFileTupleFields.Source].AsPath().Path);
408 Assert.Equal(@"candle.exe", wixFile[WixFileTupleFields.Source].PreviousValue.AsPath().Path);
409
410 var msiAssemblyNameTuples = section.Tuples.OfType<MsiAssemblyNameTuple>();
411 Assert.NotEmpty(msiAssemblyNameTuples);
412 }
413 }
414
415 [Fact(Skip = "Not implemented yet.")]
416 public void CanBuildInstanceTransform()
417 {
418 var folder = TestData.Get(@"TestData\InstanceTransform");
419
420 using (var fs = new DisposableFileSystem())
421 {
422 var intermediateFolder = fs.GetFolder();
423
424 var result = WixRunner.Execute(new[]
425 {
426 "build",
427 Path.Combine(folder, "Package.wxs"),
428 Path.Combine(folder, "PackageComponents.wxs"),
429 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
430 "-bindpath", Path.Combine(folder, "data"),
431 "-intermediateFolder", intermediateFolder,
432 "-o", Path.Combine(intermediateFolder, @"bin\test.msi")
433 }, out var messages);
434
435 Assert.Equal(0, result);
436
437 var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false);
438 Assert.NotEmpty(pdb.Output.SubStorages);
439 }
440 }
441 }
442}