aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.Burn/Bundles/PackageFacade.cs
blob: 3f2e184da622bdd6965c97b746e9eadb2a41c031 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// 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.

namespace WixToolset.Core.Burn.Bundles
{
    using WixToolset.Data.Rows;

    internal class PackageFacade
    {
        private PackageFacade(WixBundlePackageRow package)
        {
            this.Package = package;
            this.Provides = new ProvidesDependencyCollection();
        }

        public PackageFacade(WixBundlePackageRow package, WixBundleExePackageRow exePackage)
            : this(package)
        {
            this.ExePackage = exePackage;
        }

        public PackageFacade(WixBundlePackageRow package, WixBundleMsiPackageRow msiPackage)
            : this(package)
        {
            this.MsiPackage = msiPackage;
        }

        public PackageFacade(WixBundlePackageRow package, WixBundleMspPackageRow mspPackage)
            : this(package)
        {
            this.MspPackage = mspPackage;
        }

        public PackageFacade(WixBundlePackageRow package, WixBundleMsuPackageRow msuPackage)
            : this(package)
        {
            this.MsuPackage = msuPackage;
        }

        public WixBundlePackageRow Package { get; private set; }

        public WixBundleExePackageRow ExePackage { get; private set; }

        public WixBundleMsiPackageRow MsiPackage { get; private set; }

        public WixBundleMspPackageRow MspPackage { get; private set; }

        public WixBundleMsuPackageRow MsuPackage { get; private set; }

        /// <summary>
        /// The provides dependencies authored and imported for this package.
        /// </summary>
        /// <remarks>
        /// TODO: Eventually this collection should turn into Rows so they are tracked in the PDB but
        /// the relationship with the extension makes it much trickier to pull off.
        /// </remarks>
        public ProvidesDependencyCollection Provides { get; private set; }
    }
}