aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs')
-rw-r--r--src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs78
1 files changed, 43 insertions, 35 deletions
diff --git a/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs b/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs
index 1ed37046..71e4cfea 100644
--- a/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs
@@ -3,61 +3,69 @@
3namespace WixToolset.Core.Burn.Bundles 3namespace WixToolset.Core.Burn.Bundles
4{ 4{
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Linq;
6 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Data.Tuples;
7 9
8 internal class GetPackageFacadesCommand 10 internal class GetPackageFacadesCommand
9 { 11 {
10#if TODO 12 public GetPackageFacadesCommand(IEnumerable<WixBundlePackageTuple> chainPackageTuples, IntermediateSection section)
11 public Table PackageTable { private get; set; } 13 {
12 14 this.ChainPackageTuples = chainPackageTuples;
13 public Table ExePackageTable { private get; set; } 15 this.Section = section;
14 16 }
15 public Table MsiPackageTable { private get; set; }
16 17
17 public Table MspPackageTable { private get; set; } 18 private IEnumerable<WixBundlePackageTuple> ChainPackageTuples { get; }
18 19
19 public Table MsuPackageTable { private get; set; } 20 private IntermediateSection Section { get; }
20 21
21 public IDictionary<string, PackageFacade> PackageFacades { get; private set; } 22 public IDictionary<string, PackageFacade> PackageFacades { get; private set; }
22 23
23 public void Execute() 24 public void Execute()
24 { 25 {
25 RowDictionary<WixBundleExePackageRow> exePackages = new RowDictionary<WixBundleExePackageRow>(this.ExePackageTable); 26 var exePackages = this.Section.Tuples.OfType<WixBundleExePackageTuple>().ToDictionary(t => t.Id.Id);
26 RowDictionary<WixBundleMsiPackageRow> msiPackages = new RowDictionary<WixBundleMsiPackageRow>(this.MsiPackageTable); 27 var msiPackages = this.Section.Tuples.OfType<WixBundleMsiPackageTuple>().ToDictionary(t => t.Id.Id);
27 RowDictionary<WixBundleMspPackageRow> mspPackages = new RowDictionary<WixBundleMspPackageRow>(this.MspPackageTable); 28 var mspPackages = this.Section.Tuples.OfType<WixBundleMspPackageTuple>().ToDictionary(t => t.Id.Id);
28 RowDictionary<WixBundleMsuPackageRow> msuPackages = new RowDictionary<WixBundleMsuPackageRow>(this.MsuPackageTable); 29 var msuPackages = this.Section.Tuples.OfType<WixBundleMsuPackageTuple>().ToDictionary(t => t.Id.Id);
29 30
30 Dictionary<string, PackageFacade> facades = new Dictionary<string, PackageFacade>(this.PackageTable.Rows.Count); 31 var facades = new Dictionary<string, PackageFacade>();
31 32
32 foreach (WixBundlePackageRow package in this.PackageTable.Rows) 33 foreach (var package in this.ChainPackageTuples)
33 { 34 {
34 string id = package.WixChainItemId; 35 var id = package.Id.Id;
35 PackageFacade facade = null;
36
37 switch (package.Type) 36 switch (package.Type)
38 { 37 {
39 case WixBundlePackageType.Exe: 38 case WixBundlePackageType.Exe:
40 facade = new PackageFacade(package, exePackages.Get(id)); 39 if (exePackages.TryGetValue(id, out var exePackage))
41 break; 40 {
42 41 facades.Add(id, new PackageFacade(package, exePackage));
43 case WixBundlePackageType.Msi: 42 }
44 facade = new PackageFacade(package, msiPackages.Get(id)); 43 break;
45 break; 44
46 45 case WixBundlePackageType.Msi:
47 case WixBundlePackageType.Msp: 46 if (msiPackages.TryGetValue(id, out var msiPackage))
48 facade = new PackageFacade(package, mspPackages.Get(id)); 47 {
49 break; 48 facades.Add(id, new PackageFacade(package, msiPackage));
50 49 }
51 case WixBundlePackageType.Msu: 50 break;
52 facade = new PackageFacade(package, msuPackages.Get(id)); 51
53 break; 52 case WixBundlePackageType.Msp:
53 if (mspPackages.TryGetValue(id, out var mspPackage))
54 {
55 facades.Add(id, new PackageFacade(package, mspPackage));
56 }
57 break;
58
59 case WixBundlePackageType.Msu:
60 if (msuPackages.TryGetValue(id, out var msuPackage))
61 {
62 facades.Add(id, new PackageFacade(package, msuPackage));
63 }
64 break;
54 } 65 }
55
56 facades.Add(id, facade);
57 } 66 }
58 67
59 this.PackageFacades = facades; 68 this.PackageFacades = facades;
60 } 69 }
61#endif
62 } 70 }
63} 71}