aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Extensibility/Data/IFileFacade.cs
blob: fea00d4ed8f7aebffa4d16b6c92c6d87b15a404e (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// 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.Extensibility.Data
{
    using System.Collections.Generic;
    using WixToolset.Data;
    using WixToolset.Data.Symbols;
    using WixToolset.Data.WindowsInstaller.Rows;

    /// <summary>
    /// Interface that provides a common facade over <c>FileSymbol</c> and <c>FileRow</c>.
    /// </summary>
    public interface IFileFacade
    {
        /// <summary>
        /// Reference to assembly application for this file.
        /// </summary>
        string AssemblyApplicationFileRef { get; }

        /// <summary>
        /// Reference to assembly manifest for this file.
        /// </summary>
        string AssemblyManifestFileRef { get; }

        /// <summary>
        /// List of assembly name values in the file.
        /// </summary>
        List<MsiAssemblyNameSymbol> AssemblyNames { get; set; }

        /// <summary>
        /// Optionally indicates what sort of assembly the file is.
        /// </summary>
        AssemblyType? AssemblyType { get; }

        /// <summary>
        /// Component containing the file.
        /// </summary>
        string ComponentRef { get; }

        /// <summary>
        /// Indicates whether the file is compressed.
        /// </summary>
        bool Compressed { get; }

        /// <summary>
        /// Disk Id for the file.
        /// </summary>
        int DiskId { get; set; }

        /// <summary>
        /// Name of the file.
        /// </summary>
        string FileName { get; }

        /// <summary>
        /// Size of the file.
        /// </summary>
        int FileSize { get; set; }

        /// <summary>
        /// Indicates whether the file came from a merge module.
        /// </summary>
        bool FromModule { get; }

        /// <summary>
        /// Indicates whether the file came from a transform.
        /// </summary>
        bool FromTransform { get; }

        /// <summary>
        /// Hash symbol of the file.
        /// </summary>
        MsiFileHashSymbol Hash { get; set; }

        /// <summary>
        /// Underlying identifier of the file.
        /// </summary>
        Identifier Identifier { get; }

        /// <summary>
        /// Helper accessor for the Id of the Identifier.
        /// </summary>
        string Id { get; }

        /// <summary>
        /// Language of the file.
        /// </summary>
        string Language { get; set; }

        /// <summary>
        /// Optional patch group for the file.
        /// </summary>
        int? PatchGroup { get; }

        /// <summary>
        /// Sequence of the file.
        /// </summary>
        int Sequence { get; set; }

        /// <summary>
        /// Source line number that define the file.
        /// </summary>
        SourceLineNumber SourceLineNumber { get; }

        /// <summary>
        /// Source to the file.
        /// </summary>
        string SourcePath { get; }

        /// <summary>
        /// Indicates whether the file is to be uncompressed.
        /// </summary>
        bool Uncompressed { get; }

        /// <summary>
        /// Version of the file.
        /// </summary>
        string Version { get; set; }

        /// <summary>
        /// Gets the underlying <c>FileRow</c> if one is present.
        /// </summary>
        /// <returns><c>FileRow</c> if one is present, otherwise throws.</returns>
        FileRow GetFileRow();
    }
}