summaryrefslogtreecommitdiff
path: root/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs')
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs611
1 files changed, 611 insertions, 0 deletions
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
new file mode 100644
index 00000000..d563bbe7
--- /dev/null
+++ b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs
@@ -0,0 +1,611 @@
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.BurnE2E
4{
5 using System;
6 using WixTestTools;
7 using WixToolset.Mba.Core;
8 using Xunit;
9 using Xunit.Abstractions;
10
11 public class DependencyTests : BurnE2ETests
12 {
13 public DependencyTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
14
15 [Fact]
16 public void CanKeepSameExactPackageAfterUpgradingBundle()
17 {
18 var packageF = this.CreatePackageInstaller("PackageF");
19 var bundleKv1 = this.CreateBundleInstaller("BundleKv1");
20 var bundleKv2 = this.CreateBundleInstaller("BundleKv2");
21
22 packageF.VerifyInstalled(false);
23
24 bundleKv1.Install();
25 bundleKv1.VerifyRegisteredAndInPackageCache();
26
27 packageF.VerifyInstalled(true);
28
29 bundleKv2.Install();
30 bundleKv2.VerifyRegisteredAndInPackageCache();
31 bundleKv1.VerifyUnregisteredAndRemovedFromPackageCache();
32
33 packageF.VerifyInstalled(true);
34
35 bundleKv2.VerifyPackageIsCached("PackageF");
36
37 bundleKv2.Uninstall();
38 bundleKv2.VerifyUnregisteredAndRemovedFromPackageCache();
39
40 packageF.VerifyInstalled(false);
41 }
42
43 [Fact (Skip = "https://github.com/wixtoolset/issues/issues/6387")]
44 public void CanKeepSameExactPackageAfterUpgradingBundleWithSlipstreamedPatch()
45 {
46 var originalVersion = "1.0.0.0";
47 var patchedVersion = "1.0.1.0";
48 var testRegistryValue = "PackageA";
49 var testRegistryValueExe = "ExeA";
50
51 var packageA = this.CreatePackageInstaller("PackageAv1");
52 var bundleA = this.CreateBundleInstaller("BundleAv1");
53 var bundleC = this.CreateBundleInstaller("BundleC");
54
55 packageA.VerifyInstalled(false);
56
57 bundleA.Install();
58 bundleA.VerifyRegisteredAndInPackageCache();
59
60 packageA.VerifyInstalled(true);
61 packageA.VerifyTestRegistryValue(testRegistryValue, originalVersion);
62 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, originalVersion);
63
64 // Verify https://github.com/wixtoolset/issues/issues/3294 - Uninstalling bundle registers a dependency on a package
65 bundleC.Install();
66 bundleC.VerifyRegisteredAndInPackageCache();
67 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
68
69 packageA.VerifyInstalled(true);
70 packageA.VerifyTestRegistryValue(testRegistryValue, patchedVersion);
71 bundleA.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
72
73 // Verify https://github.com/wixtoolset/issues/issues/2915 - Update bundle removes previously cached MSIs
74 bundleC.Repair();
75
76 bundleC.Uninstall();
77 bundleC.VerifyUnregisteredAndRemovedFromPackageCache();
78
79 packageA.VerifyInstalled(false);
80 }
81
82 [Fact(Skip = "https://github.com/wixtoolset/issues/issues/exea")]
83 public void CanKeepUpgradedPackageAfterUninstallUpgradedBundle()
84 {
85 var testRegistryValueExe = "ExeA";
86
87 var packageAv1 = this.CreatePackageInstaller("PackageAv1");
88 var packageAv101 = this.CreatePackageInstaller("PackageAv1_0_1");
89 var packageB = this.CreatePackageInstaller("PackageB");
90 var bundleAv1 = this.CreateBundleInstaller("BundleAv1");
91 var bundleAv101 = this.CreateBundleInstaller("BundleAv1_0_1");
92 var bundleB = this.CreateBundleInstaller("BundleB");
93
94 packageAv1.VerifyInstalledWithVersion(false);
95 packageAv101.VerifyInstalledWithVersion(false);
96 packageB.VerifyInstalled(false);
97
98 bundleAv1.Install();
99 bundleAv1.VerifyRegisteredAndInPackageCache();
100
101 packageAv1.VerifyInstalledWithVersion(true);
102 bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
103
104 bundleB.Install();
105 bundleB.VerifyRegisteredAndInPackageCache();
106
107 packageAv1.VerifyInstalledWithVersion(true);
108 bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
109 packageB.VerifyInstalled(true);
110
111 bundleAv101.Install();
112 bundleAv101.VerifyRegisteredAndInPackageCache();
113 bundleAv1.VerifyUnregisteredAndRemovedFromPackageCache();
114
115 packageAv1.VerifyInstalledWithVersion(false);
116 packageAv101.VerifyInstalledWithVersion(true);
117 bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.1.0");
118
119 bundleAv101.Uninstall();
120 bundleAv101.VerifyUnregisteredAndRemovedFromPackageCache();
121
122 packageAv101.VerifyInstalledWithVersion(true);
123 bundleAv1.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.1.0");
124 }
125
126#if SUPPORT_ADDON_AND_PATCH_RELATED_BUNDLES
127 [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6387")]
128#else
129 [Fact(Skip = "addon/patch related bundle")]
130#endif
131 public void CanMinorUpgradeDependencyPackageFromPatchBundle()
132 {
133 var originalVersion = "1.0.0.0";
134 var patchedVersion = "1.0.1.0";
135 var testRegistryValue = "PackageA";
136
137 var packageA = this.CreatePackageInstaller("PackageAv1");
138 var packageBv1 = this.CreatePackageInstaller("PackageBv1");
139 var packageBv101 = this.CreatePackageInstaller("PackageBv1_0_1");
140 var bundleJ = this.CreateBundleInstaller("BundleJ");
141 var bundleJ_Patch = this.CreateBundleInstaller("BundleJ_Patch");
142
143 packageA.VerifyInstalled(false);
144 packageBv1.VerifyInstalled(false);
145 packageBv101.VerifyInstalled(false);
146
147 bundleJ.Install();
148 bundleJ.VerifyRegisteredAndInPackageCache();
149
150 packageA.VerifyInstalled(true);
151 packageA.VerifyTestRegistryValue(testRegistryValue, originalVersion);
152 packageBv1.VerifyInstalled(true);
153
154 bundleJ_Patch.Install();
155 bundleJ_Patch.VerifyRegisteredAndInPackageCache();
156
157 packageA.VerifyInstalled(true);
158 packageA.VerifyTestRegistryValue(testRegistryValue, patchedVersion);
159 packageBv1.VerifyInstalled(false);
160 packageBv101.VerifyInstalled(true);
161
162 bundleJ.Uninstall();
163 bundleJ.VerifyUnregisteredAndRemovedFromPackageCache();
164 bundleJ_Patch.VerifyUnregisteredAndRemovedFromPackageCache();
165
166 packageA.VerifyInstalled(false);
167 packageBv1.VerifyInstalled(false);
168 packageBv101.VerifyInstalled(false);
169 }
170
171#if SUPPORT_ADDON_AND_PATCH_RELATED_BUNDLES
172 [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6387")]
173#else
174 [Fact(Skip = "addon/patch related bundle")]
175#endif
176 public void CanMinorUpgradeDependencyPackageFromPatchBundleThenUninstallToRestoreBase()
177 {
178 var originalVersion = "1.0.0.0";
179 var patchedVersion = "1.0.1.0";
180 var testRegistryValue = "PackageA";
181
182 var packageA = this.CreatePackageInstaller("PackageAv1");
183 var packageBv1 = this.CreatePackageInstaller("PackageBv1");
184 var packageBv101 = this.CreatePackageInstaller("PackageBv1_0_1");
185 var bundleJ = this.CreateBundleInstaller("BundleJ");
186 var bundleJ_Patch = this.CreateBundleInstaller("BundleJ_Patch");
187
188 packageA.VerifyInstalled(false);
189 packageBv1.VerifyInstalled(false);
190 packageBv101.VerifyInstalled(false);
191
192 bundleJ.Install();
193 bundleJ.VerifyRegisteredAndInPackageCache();
194
195 packageA.VerifyInstalled(true);
196 packageA.VerifyTestRegistryValue(testRegistryValue, originalVersion);
197 packageBv1.VerifyInstalled(true);
198
199 bundleJ_Patch.Install();
200 bundleJ_Patch.VerifyRegisteredAndInPackageCache();
201
202 packageA.VerifyInstalled(true);
203 packageA.VerifyTestRegistryValue(testRegistryValue, patchedVersion);
204 packageBv1.VerifyInstalled(false);
205 packageBv101.VerifyInstalled(true);
206
207 bundleJ_Patch.Uninstall();
208 bundleJ_Patch.VerifyUnregisteredAndRemovedFromPackageCache();
209
210 packageA.VerifyInstalled(true);
211 packageA.VerifyTestRegistryValue(testRegistryValue, originalVersion);
212 packageBv1.VerifyInstalled(true);
213 packageBv101.VerifyInstalled(false);
214
215 bundleJ.Uninstall();
216 bundleJ.VerifyUnregisteredAndRemovedFromPackageCache();
217
218 packageA.VerifyInstalled(false);
219 packageBv1.VerifyInstalled(false);
220 packageBv101.VerifyInstalled(false);
221 }
222
223#if SUPPORT_ADDON_AND_PATCH_RELATED_BUNDLES
224 [Fact]
225#else
226 [Fact(Skip = "addon/patch related bundle")]
227#endif
228 public void CanUninstallBaseWithAddOnsWhenAllSharePackages()
229 {
230 var testRegistryValueExe = "ExeA";
231
232 var packageA = this.CreatePackageInstaller("PackageAv1");
233 var packageB = this.CreatePackageInstaller("PackageB");
234 var bundleF = this.CreateBundleInstaller("BundleF");
235 var bundleF_AddOnA = this.CreateBundleInstaller("BundleF_AddOnA");
236 var bundleF_AddOnB = this.CreateBundleInstaller("BundleF_AddOnB");
237
238 packageA.VerifyInstalled(false);
239 packageB.VerifyInstalled(false);
240
241 bundleF.Install();
242 bundleF.VerifyRegisteredAndInPackageCache();
243
244 packageA.VerifyInstalled(true);
245 packageB.VerifyInstalled(true);
246
247 bundleF_AddOnA.Install();
248 bundleF_AddOnA.VerifyRegisteredAndInPackageCache();
249
250 packageA.VerifyInstalled(true);
251 bundleF.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
252 packageB.VerifyInstalled(true);
253
254 bundleF_AddOnB.Install();
255 bundleF_AddOnB.VerifyRegisteredAndInPackageCache();
256
257 packageA.VerifyInstalled(true);
258 bundleF.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
259 packageB.VerifyInstalled(true);
260
261 bundleF.Uninstall();
262 bundleF.VerifyUnregisteredAndRemovedFromPackageCache();
263 bundleF_AddOnA.VerifyUnregisteredAndRemovedFromPackageCache();
264 bundleF_AddOnB.VerifyUnregisteredAndRemovedFromPackageCache();
265
266 packageA.VerifyInstalled(false);
267 bundleF.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
268 packageB.VerifyInstalled(false);
269 }
270
271 [Fact]
272 public void CanUninstallDependencyPackagesWithBundlesUninstalledInFifoOrder()
273 {
274 var testRegistryValueExe = "ExeA";
275
276 var packageA = this.CreatePackageInstaller("PackageAv1");
277 var packageB = this.CreatePackageInstaller("PackageB");
278 var bundleA = this.CreateBundleInstaller("BundleAv1");
279 var bundleB = this.CreateBundleInstaller("BundleB");
280
281 packageA.VerifyInstalled(false);
282 packageB.VerifyInstalled(false);
283
284 bundleA.Install();
285 bundleA.VerifyRegisteredAndInPackageCache();
286
287 packageA.VerifyInstalled(true);
288 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
289
290 bundleB.Install();
291 bundleB.VerifyRegisteredAndInPackageCache();
292
293 packageA.VerifyInstalled(true);
294 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
295 packageB.VerifyInstalled(true);
296
297 bundleA.Uninstall();
298 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
299
300 packageA.VerifyInstalled(true);
301 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
302 packageB.VerifyInstalled(true);
303
304 bundleB.Uninstall();
305 bundleB.VerifyUnregisteredAndRemovedFromPackageCache();
306
307 packageA.VerifyInstalled(false);
308 bundleA.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
309 packageB.VerifyInstalled(false);
310 }
311
312 [Fact]
313 public void CanUninstallDependencyPackagesWithBundlesUninstalledInReverseOrder()
314 {
315 var packageA = this.CreatePackageInstaller("PackageAv1");
316 var packageB = this.CreatePackageInstaller("PackageB");
317 var bundleA = this.CreateBundleInstaller("BundleAv1");
318 var bundleB = this.CreateBundleInstaller("BundleB");
319
320 packageA.VerifyInstalled(false);
321 packageB.VerifyInstalled(false);
322
323 bundleA.Install();
324 bundleA.VerifyRegisteredAndInPackageCache();
325
326 packageA.VerifyInstalled(true);
327
328 bundleB.Install();
329 bundleB.VerifyRegisteredAndInPackageCache();
330
331 packageA.VerifyInstalled(true);
332 packageB.VerifyInstalled(true);
333
334 bundleB.Uninstall();
335 bundleB.VerifyUnregisteredAndRemovedFromPackageCache();
336
337 packageA.VerifyInstalled(true);
338
339 bundleA.Uninstall();
340 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
341
342 packageA.VerifyInstalled(false);
343 packageB.VerifyInstalled(false);
344 }
345
346#if SUPPORT_ADDON_AND_PATCH_RELATED_BUNDLES
347 [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6387")]
348#else
349 [Fact(Skip = "addon/patch related bundle")]
350#endif
351 public void CanUpgradePatchBundleWithAdditionalPatch()
352 {
353 var originalVersion = "1.0.0.0";
354 var patchedVersion = "1.0.1.0";
355 var patchedVersion2 = "1.0.2.0";
356 var testRegistryValue = "PackageA";
357
358 var packageA = this.CreatePackageInstaller("PackageAv1");
359 var packageB = this.CreatePackageInstaller("PackageBv1");
360 var bundleF = this.CreateBundleInstaller("BundleJ");
361 var bundleF_PatchAv101 = this.CreateBundleInstaller("BundleF_PatchAv1_0_1");
362 var bundleF_PatchAv102 = this.CreateBundleInstaller("BundleF_PatchAv1_0_2");
363
364 packageA.VerifyInstalled(false);
365 packageB.VerifyInstalled(false);
366
367 bundleF.Install();
368 bundleF.VerifyRegisteredAndInPackageCache();
369
370 packageA.VerifyInstalled(true);
371 packageA.VerifyTestRegistryValue(testRegistryValue, originalVersion);
372 packageB.VerifyInstalled(true);
373
374 bundleF_PatchAv101.Install();
375 bundleF_PatchAv101.VerifyRegisteredAndInPackageCache();
376
377 packageA.VerifyInstalled(true);
378 packageA.VerifyTestRegistryValue(testRegistryValue, patchedVersion);
379 packageB.VerifyInstalled(false);
380
381 bundleF_PatchAv102.Install();
382 bundleF_PatchAv102.VerifyRegisteredAndInPackageCache();
383
384 packageA.VerifyInstalled(true);
385 packageA.VerifyTestRegistryValue(testRegistryValue, patchedVersion2);
386 packageB.VerifyInstalled(false);
387
388 bundleF.Uninstall();
389 bundleF.VerifyUnregisteredAndRemovedFromPackageCache();
390 bundleF_PatchAv101.VerifyUnregisteredAndRemovedFromPackageCache();
391 bundleF_PatchAv102.VerifyUnregisteredAndRemovedFromPackageCache();
392
393 packageA.VerifyInstalled(false);
394 packageB.VerifyInstalled(false);
395 }
396
397 [Fact]
398 public void DoesntRegisterDependencyOnPackageNotSelectedForInstall()
399 {
400 var testRegistryValueExe = "ExeA";
401
402 var packageA = this.CreatePackageInstaller("PackageAv1");
403 var packageB = this.CreatePackageInstaller("PackageB");
404 var bundleA = this.CreateBundleInstaller("BundleAv1");
405 var bundleB = this.CreateBundleInstaller("BundleB");
406 var testBAController = this.CreateTestBAController();
407
408 packageA.VerifyInstalled(false);
409 packageB.VerifyInstalled(false);
410
411 bundleA.Install();
412 bundleA.VerifyRegisteredAndInPackageCache();
413
414 packageA.VerifyInstalled(true);
415 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
416
417 // Verify https://github.com/wixtoolset/issues/issues/3456 - Dependency registered on package though unselected to instal
418 testBAController.SetPackageRequestedState("PackageA", RequestState.None);
419 testBAController.SetPackageRequestedState("PackageB", RequestState.None);
420
421 bundleB.Install();
422 bundleB.VerifyRegisteredAndInPackageCache();
423
424 packageA.VerifyInstalled(true);
425 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
426 packageB.VerifyInstalled(false);
427
428 testBAController.ResetPackageStates("PackageA");
429 testBAController.ResetPackageStates("PackageB");
430
431 bundleA.Uninstall();
432 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
433
434 packageA.VerifyInstalled(false);
435 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
436 packageB.VerifyInstalled(false);
437
438 bundleB.Uninstall();
439 bundleB.VerifyUnregisteredAndRemovedFromPackageCache();
440
441 packageA.VerifyInstalled(false);
442 bundleA.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
443 packageB.VerifyInstalled(false);
444 }
445
446 [Fact(Skip = "https://github.com/wixtoolset/issues/issues/3516")]
447 public void DoesntRollbackPackageInstallIfPreexistingDependents()
448 {
449 var packageA = this.CreatePackageInstaller("PackageAv1");
450 var packageC = this.CreatePackageInstaller("PackageC");
451 var bundleE = this.CreateBundleInstaller("BundleE");
452 var bundleL = this.CreateBundleInstaller("BundleL");
453 var testBAController = this.CreateTestBAController();
454
455 packageA.VerifyInstalled(false);
456 packageC.VerifyInstalled(false);
457
458 // Make PackageC fail.
459 testBAController.SetPackageCancelExecuteAtProgress("PackageC", 10);
460
461 bundleE.Install();
462 bundleE.VerifyRegisteredAndInPackageCache();
463
464 packageA.VerifyInstalled(true);
465 packageC.VerifyInstalled(false);
466
467 // Make PackageC install then rollback.
468 testBAController.SetPackageCancelExecuteAtProgress("PackageC", null);
469 testBAController.SetPackageCancelOnProgressAtProgress("PackageC", 10);
470
471 bundleL.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_USEREXIT);
472 bundleL.VerifyUnregisteredAndRemovedFromPackageCache();
473
474 packageA.VerifyInstalled(true);
475 packageC.VerifyInstalled(true);
476
477 testBAController.SetPackageCancelOnProgressAtProgress("PackageC", null);
478
479 bundleE.Uninstall();
480 bundleE.VerifyUnregisteredAndRemovedFromPackageCache();
481
482 packageA.VerifyInstalled(false);
483 packageC.VerifyInstalled(false);
484 }
485
486 [Fact]
487 public void RegistersDependencyOnFailedNonVitalPackages()
488 {
489 var packageA = this.CreatePackageInstaller("PackageAv1");
490 var packageC = this.CreatePackageInstaller("PackageC");
491 var bundleE = this.CreateBundleInstaller("BundleE");
492 var bundleL = this.CreateBundleInstaller("BundleL");
493 var testBAController = this.CreateTestBAController();
494
495 packageA.VerifyInstalled(false);
496 packageC.VerifyInstalled(false);
497
498 // Make PackageC fail.
499 testBAController.SetPackageCancelExecuteAtProgress("PackageC", 10);
500
501 // Verify https://github.com/wixtoolset/issues/issues/3406 - Non-vital failure result in bundle failure (install)
502 bundleE.Install();
503 bundleE.VerifyRegisteredAndInPackageCache();
504
505 packageA.VerifyInstalled(true);
506 packageC.VerifyInstalled(false);
507
508 // Verify https://github.com/wixtoolset/issues/issues/3406 - Non-vital failure result in bundle failure (repair)
509 bundleE.Repair();
510 bundleE.VerifyRegisteredAndInPackageCache();
511
512 packageA.VerifyInstalled(true);
513 packageC.VerifyInstalled(false);
514
515 testBAController.SetPackageCancelExecuteAtProgress("PackageC", null);
516
517 bundleL.Install();
518 bundleL.VerifyRegisteredAndInPackageCache();
519
520 packageA.VerifyInstalled(true);
521 packageC.VerifyInstalled(true);
522
523 // Verify https://github.com/wixtoolset/issues/issues/3516 - Burn registers dependency on failed packages
524 bundleL.Uninstall();
525 bundleL.VerifyUnregisteredAndRemovedFromPackageCache();
526
527 packageA.VerifyInstalled(true);
528 packageC.VerifyInstalled(true);
529
530 bundleE.Uninstall();
531 bundleE.VerifyUnregisteredAndRemovedFromPackageCache();
532
533 packageA.VerifyInstalled(false);
534 packageC.VerifyInstalled(false);
535 }
536
537 [Fact]
538 public void RemovesDependencyDuringUpgradeRollback()
539 {
540 var testRegistryValueExe = "ExeA";
541
542 var packageA = this.CreatePackageInstaller("PackageAv1");
543 var bundleA = this.CreateBundleInstaller("BundleAv1");
544 var bundleD = this.CreateBundleInstaller("BundleD");
545
546 packageA.VerifyInstalled(false);
547 bundleA.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
548
549 bundleA.Install();
550 bundleA.VerifyRegisteredAndInPackageCache();
551
552 packageA.VerifyInstalled(true);
553 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
554
555 // Verify https://github.com/wixtoolset/issues/issues/3341 - pkg dependecy not removed in rollback if pkg already present
556 bundleD.Install((int)MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
557 bundleD.VerifyUnregisteredAndRemovedFromPackageCache();
558
559 packageA.VerifyInstalled(true);
560 bundleA.VerifyExeTestRegistryValue(testRegistryValueExe, "1.0.0.0");
561
562 bundleA.Uninstall();
563 bundleA.VerifyUnregisteredAndRemovedFromPackageCache();
564
565 packageA.VerifyInstalled(false);
566 bundleA.VerifyExeTestRegistryRootDeleted(testRegistryValueExe);
567 }
568
569 [Fact]
570 public void SkipsCrossScopeDependencyRegistration()
571 {
572 var packageA = this.CreatePackageInstaller("PackageAv1");
573 var packageDv1 = this.CreatePackageInstaller("PackageDv1");
574 var packageDv2 = this.CreatePackageInstaller("PackageDv2");
575 var bundleHv1 = this.CreateBundleInstaller("BundleHv1");
576 var bundleHv2 = this.CreateBundleInstaller("BundleHv2");
577
578 packageA.VerifyInstalled(false);
579 packageDv1.VerifyInstalled(false);
580 packageDv2.VerifyInstalled(false);
581
582 var bundleHv1InstallLogFilePath = bundleHv1.Install();
583 bundleHv1.VerifyRegisteredAndInPackageCache();
584
585 packageA.VerifyInstalled(true);
586 packageDv1.VerifyInstalled(true);
587
588 Assert.True(LogVerifier.MessageInLogFileRegex(bundleHv1InstallLogFilePath, @"Skipping cross-scope dependency registration on package: PackageA, bundle scope: PerUser, package scope: PerMachine"));
589
590 var bundleHv2InstallLogFilePath = bundleHv2.Install();
591 bundleHv2.VerifyRegisteredAndInPackageCache();
592 bundleHv1.VerifyUnregisteredAndRemovedFromPackageCache();
593
594 packageA.VerifyInstalled(true);
595 packageDv1.VerifyInstalled(false);
596 packageDv2.VerifyInstalled(true);
597
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"));
600
601 bundleHv2.Uninstall();
602 bundleHv2.VerifyUnregisteredAndRemovedFromPackageCache();
603
604 // Verify that permanent packageA is still installed and then remove.
605 packageA.VerifyInstalled(true);
606 packageDv2.VerifyInstalled(false);
607 packageA.UninstallProduct();
608 packageA.VerifyInstalled(false);
609 }
610 }
611}