diff options
Diffstat (limited to 'src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs')
-rw-r--r-- | src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs b/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs new file mode 100644 index 00000000..7485758c --- /dev/null +++ b/src/WixToolset.Core.Burn/Bundles/GetPackageFacadesCommand.cs | |||
@@ -0,0 +1,62 @@ | |||
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 WixToolset.Core.Burn.Bundles | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | using WixToolset.Data; | ||
7 | using WixToolset.Data.Rows; | ||
8 | |||
9 | internal class GetPackageFacadesCommand | ||
10 | { | ||
11 | public Table PackageTable { private get; set; } | ||
12 | |||
13 | public Table ExePackageTable { private get; set; } | ||
14 | |||
15 | public Table MsiPackageTable { private get; set; } | ||
16 | |||
17 | public Table MspPackageTable { private get; set; } | ||
18 | |||
19 | public Table MsuPackageTable { private get; set; } | ||
20 | |||
21 | public IDictionary<string, PackageFacade> PackageFacades { get; private set; } | ||
22 | |||
23 | public void Execute() | ||
24 | { | ||
25 | RowDictionary<WixBundleExePackageRow> exePackages = new RowDictionary<WixBundleExePackageRow>(this.ExePackageTable); | ||
26 | RowDictionary<WixBundleMsiPackageRow> msiPackages = new RowDictionary<WixBundleMsiPackageRow>(this.MsiPackageTable); | ||
27 | RowDictionary<WixBundleMspPackageRow> mspPackages = new RowDictionary<WixBundleMspPackageRow>(this.MspPackageTable); | ||
28 | RowDictionary<WixBundleMsuPackageRow> msuPackages = new RowDictionary<WixBundleMsuPackageRow>(this.MsuPackageTable); | ||
29 | |||
30 | Dictionary<string, PackageFacade> facades = new Dictionary<string, PackageFacade>(this.PackageTable.Rows.Count); | ||
31 | |||
32 | foreach (WixBundlePackageRow package in this.PackageTable.Rows) | ||
33 | { | ||
34 | string id = package.WixChainItemId; | ||
35 | PackageFacade facade = null; | ||
36 | |||
37 | switch (package.Type) | ||
38 | { | ||
39 | case WixBundlePackageType.Exe: | ||
40 | facade = new PackageFacade(package, exePackages.Get(id)); | ||
41 | break; | ||
42 | |||
43 | case WixBundlePackageType.Msi: | ||
44 | facade = new PackageFacade(package, msiPackages.Get(id)); | ||
45 | break; | ||
46 | |||
47 | case WixBundlePackageType.Msp: | ||
48 | facade = new PackageFacade(package, mspPackages.Get(id)); | ||
49 | break; | ||
50 | |||
51 | case WixBundlePackageType.Msu: | ||
52 | facade = new PackageFacade(package, msuPackages.Get(id)); | ||
53 | break; | ||
54 | } | ||
55 | |||
56 | facades.Add(id, facade); | ||
57 | } | ||
58 | |||
59 | this.PackageFacades = facades; | ||
60 | } | ||
61 | } | ||
62 | } | ||