diff options
Diffstat (limited to 'src/WixToolset.Data.WindowsInstaller/Rows')
47 files changed, 5346 insertions, 0 deletions
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/BBControlRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/BBControlRow.cs new file mode 100644 index 00000000..d0f08662 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/BBControlRow.cs | |||
@@ -0,0 +1,113 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System.Diagnostics.CodeAnalysis; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the Control table. | ||
9 | /// </summary> | ||
10 | public sealed class BBControlRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a Control row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Control row belongs to and should get its column definitions from.</param> | ||
17 | public BBControlRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Gets or sets the dialog of the Control row. | ||
24 | /// </summary> | ||
25 | /// <value>Primary key of the Control row.</value> | ||
26 | public string Billboard | ||
27 | { | ||
28 | get { return (string)this.Fields[0].Data; } | ||
29 | set { this.Fields[0].Data = value; } | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the identifier for this Control row. | ||
34 | /// </summary> | ||
35 | /// <value>Identifier for this Control row.</value> | ||
36 | public string BBControl | ||
37 | { | ||
38 | get { return (string)this.Fields[1].Data; } | ||
39 | set { this.Fields[1].Data = value; } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the type of the BBControl. | ||
44 | /// </summary> | ||
45 | /// <value>Name of the BBControl.</value> | ||
46 | [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")] | ||
47 | public string Type | ||
48 | { | ||
49 | get { return this.Fields[2].AsString(); } | ||
50 | set { this.Fields[2].Data = value; } | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Gets or sets the X location of the BBControl. | ||
55 | /// </summary> | ||
56 | /// <value>X location of the BBControl.</value> | ||
57 | public string X | ||
58 | { | ||
59 | get { return this.Fields[3].AsString(); } | ||
60 | set { this.Fields[3].Data = value; } | ||
61 | } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Gets or sets the Y location of the BBControl. | ||
65 | /// </summary> | ||
66 | /// <value>Y location of the BBControl.</value> | ||
67 | public string Y | ||
68 | { | ||
69 | get { return this.Fields[4].AsString(); } | ||
70 | set { this.Fields[4].Data = value; } | ||
71 | } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Gets or sets the width of the BBControl. | ||
75 | /// </summary> | ||
76 | /// <value>Width of the BBControl.</value> | ||
77 | public string Width | ||
78 | { | ||
79 | get { return this.Fields[5].AsString(); } | ||
80 | set { this.Fields[5].Data = value; } | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Gets or sets the height of the BBControl. | ||
85 | /// </summary> | ||
86 | /// <value>Height of the BBControl.</value> | ||
87 | public string Height | ||
88 | { | ||
89 | get { return this.Fields[6].AsString(); } | ||
90 | set { this.Fields[6].Data = value; } | ||
91 | } | ||
92 | |||
93 | /// <summary> | ||
94 | /// Gets or sets the attributes for the BBControl. | ||
95 | /// </summary> | ||
96 | /// <value>Attributes for the BBControl.</value> | ||
97 | public int Attributes | ||
98 | { | ||
99 | get { return (int)this.Fields[7].Data; } | ||
100 | set { this.Fields[7].Data = value; } | ||
101 | } | ||
102 | |||
103 | /// <summary> | ||
104 | /// Gets or sets the text of the BBControl. | ||
105 | /// </summary> | ||
106 | /// <value>Text of the BBControl.</value> | ||
107 | public string Text | ||
108 | { | ||
109 | get { return (string)this.Fields[8].Data; } | ||
110 | set { this.Fields[8].Data = value; } | ||
111 | } | ||
112 | } | ||
113 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/ComponentRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/ComponentRow.cs new file mode 100644 index 00000000..3ff10175 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/ComponentRow.cs | |||
@@ -0,0 +1,245 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using WixToolset.Data.Msi; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Specialization of a row for the Component table. | ||
10 | /// </summary> | ||
11 | public sealed class ComponentRow : Row | ||
12 | { | ||
13 | private string sourceFile; | ||
14 | |||
15 | /// <summary> | ||
16 | /// Creates a Control row that belongs to a table. | ||
17 | /// </summary> | ||
18 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
19 | /// <param name="table">Table this Component row belongs to and should get its column definitions from.</param> | ||
20 | public ComponentRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
21 | base(sourceLineNumbers, table) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets or sets the identifier for this Component row. | ||
27 | /// </summary> | ||
28 | /// <value>Identifier for this Component row.</value> | ||
29 | public string Component | ||
30 | { | ||
31 | get { return (string)this.Fields[0].Data; } | ||
32 | set { this.Fields[0].Data = value; } | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Gets or sets the ComponentId for this Component row. | ||
37 | /// </summary> | ||
38 | /// <value>guid for this Component row.</value> | ||
39 | public string Guid | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Gets or sets the Directory_ of the Component. | ||
47 | /// </summary> | ||
48 | /// <value>Directory of the Component.</value> | ||
49 | public string Directory | ||
50 | { | ||
51 | get { return (string)this.Fields[2].Data; } | ||
52 | set { this.Fields[2].Data = value; } | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets or sets the local only attribute of the Component. | ||
57 | /// </summary> | ||
58 | /// <value>Local only attribute of the component.</value> | ||
59 | public bool IsLocalOnly | ||
60 | { | ||
61 | get { return MsiInterop.MsidbComponentAttributesLocalOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesLocalOnly); } | ||
62 | set | ||
63 | { | ||
64 | if (value) | ||
65 | { | ||
66 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesLocalOnly; | ||
67 | } | ||
68 | else | ||
69 | { | ||
70 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesLocalOnly; | ||
71 | } | ||
72 | } | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets or sets the source only attribute of the Component. | ||
77 | /// </summary> | ||
78 | /// <value>Source only attribute of the component.</value> | ||
79 | public bool IsSourceOnly | ||
80 | { | ||
81 | get { return MsiInterop.MsidbComponentAttributesSourceOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSourceOnly); } | ||
82 | set | ||
83 | { | ||
84 | if (value) | ||
85 | { | ||
86 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSourceOnly; | ||
87 | } | ||
88 | else | ||
89 | { | ||
90 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSourceOnly; | ||
91 | } | ||
92 | } | ||
93 | } | ||
94 | |||
95 | /// <summary> | ||
96 | /// Gets or sets the optional attribute of the Component. | ||
97 | /// </summary> | ||
98 | /// <value>Optional attribute of the component.</value> | ||
99 | public bool IsOptional | ||
100 | { | ||
101 | get { return MsiInterop.MsidbComponentAttributesOptional == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesOptional); } | ||
102 | set | ||
103 | { | ||
104 | if (value) | ||
105 | { | ||
106 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesOptional; | ||
107 | } | ||
108 | else | ||
109 | { | ||
110 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesOptional; | ||
111 | } | ||
112 | } | ||
113 | } | ||
114 | |||
115 | /// <summary> | ||
116 | /// Gets or sets the registry key path attribute of the Component. | ||
117 | /// </summary> | ||
118 | /// <value>Registry key path attribute of the component.</value> | ||
119 | public bool IsRegistryKeyPath | ||
120 | { | ||
121 | get { return MsiInterop.MsidbComponentAttributesRegistryKeyPath == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesRegistryKeyPath); } | ||
122 | set | ||
123 | { | ||
124 | if (value) | ||
125 | { | ||
126 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesRegistryKeyPath; | ||
127 | } | ||
128 | else | ||
129 | { | ||
130 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesRegistryKeyPath; | ||
131 | } | ||
132 | } | ||
133 | } | ||
134 | |||
135 | /// <summary> | ||
136 | /// Gets or sets the shared dll ref count attribute of the Component. | ||
137 | /// </summary> | ||
138 | /// <value>Shared dll ref countattribute of the component.</value> | ||
139 | public bool IsSharedDll | ||
140 | { | ||
141 | get { return MsiInterop.MsidbComponentAttributesSharedDllRefCount == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSharedDllRefCount); } | ||
142 | set | ||
143 | { | ||
144 | if (value) | ||
145 | { | ||
146 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSharedDllRefCount; | ||
147 | } | ||
148 | else | ||
149 | { | ||
150 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSharedDllRefCount; | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | |||
155 | /// <summary> | ||
156 | /// Gets or sets the permanent attribute of the Component. | ||
157 | /// </summary> | ||
158 | /// <value>Permanent attribute of the component.</value> | ||
159 | public bool IsPermanent | ||
160 | { | ||
161 | get { return MsiInterop.MsidbComponentAttributesPermanent == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesPermanent); } | ||
162 | set | ||
163 | { | ||
164 | if (value) | ||
165 | { | ||
166 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesPermanent; | ||
167 | } | ||
168 | else | ||
169 | { | ||
170 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesPermanent; | ||
171 | } | ||
172 | } | ||
173 | } | ||
174 | |||
175 | /// <summary> | ||
176 | /// Gets or sets the ODBC data source key path attribute of the Component. | ||
177 | /// </summary> | ||
178 | /// <value>ODBC data source key path attribute of the component.</value> | ||
179 | public bool IsOdbcDataSourceKeyPath | ||
180 | { | ||
181 | get { return MsiInterop.MsidbComponentAttributesODBCDataSource == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesODBCDataSource); } | ||
182 | set | ||
183 | { | ||
184 | if (value) | ||
185 | { | ||
186 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesODBCDataSource; | ||
187 | } | ||
188 | else | ||
189 | { | ||
190 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesODBCDataSource; | ||
191 | } | ||
192 | } | ||
193 | } | ||
194 | |||
195 | /// <summary> | ||
196 | /// Gets or sets the 64 bit attribute of the Component. | ||
197 | /// </summary> | ||
198 | /// <value>64-bitness of the component.</value> | ||
199 | public bool Is64Bit | ||
200 | { | ||
201 | get { return MsiInterop.MsidbComponentAttributes64bit == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributes64bit); } | ||
202 | set | ||
203 | { | ||
204 | if (value) | ||
205 | { | ||
206 | this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributes64bit; | ||
207 | } | ||
208 | else | ||
209 | { | ||
210 | this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributes64bit; | ||
211 | } | ||
212 | } | ||
213 | } | ||
214 | |||
215 | /// <summary> | ||
216 | /// Gets or sets the condition of the Component. | ||
217 | /// </summary> | ||
218 | /// <value>Condition of the Component.</value> | ||
219 | public string Condition | ||
220 | { | ||
221 | get { return (string)this.Fields[4].Data; } | ||
222 | set { this.Fields[4].Data = value; } | ||
223 | } | ||
224 | |||
225 | /// <summary> | ||
226 | /// Gets or sets the key path of the Component. | ||
227 | /// </summary> | ||
228 | /// <value>Key path of the Component.</value> | ||
229 | public string KeyPath | ||
230 | { | ||
231 | get { return (string)this.Fields[5].Data; } | ||
232 | set { this.Fields[5].Data = value; } | ||
233 | } | ||
234 | |||
235 | /// <summary> | ||
236 | /// Gets or sets the source location to the file to fill in the Text of the control. | ||
237 | /// </summary> | ||
238 | /// <value>Source location to the file to fill in the Text of the control.</value> | ||
239 | public string SourceFile | ||
240 | { | ||
241 | get { return this.sourceFile; } | ||
242 | set { this.sourceFile = value; } | ||
243 | } | ||
244 | } | ||
245 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/ContainerType.cs b/src/WixToolset.Data.WindowsInstaller/Rows/ContainerType.cs new file mode 100644 index 00000000..55a74235 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/ContainerType.cs | |||
@@ -0,0 +1,13 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Types of bundle packages. | ||
7 | /// </summary> | ||
8 | public enum ContainerType | ||
9 | { | ||
10 | Attached, | ||
11 | Detached, | ||
12 | } | ||
13 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/ControlRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/ControlRow.cs new file mode 100644 index 00000000..8fa3f633 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/ControlRow.cs | |||
@@ -0,0 +1,143 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System.Diagnostics.CodeAnalysis; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the Control table. | ||
9 | /// </summary> | ||
10 | public sealed class ControlRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a Control row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Control row belongs to and should get its column definitions from.</param> | ||
17 | public ControlRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Gets or sets the dialog of the Control row. | ||
24 | /// </summary> | ||
25 | /// <value>Primary key of the Control row.</value> | ||
26 | public string Dialog | ||
27 | { | ||
28 | get { return (string)this.Fields[0].Data; } | ||
29 | set { this.Fields[0].Data = value; } | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the identifier for this Control row. | ||
34 | /// </summary> | ||
35 | /// <value>Identifier for this Control row.</value> | ||
36 | public string Control | ||
37 | { | ||
38 | get { return (string)this.Fields[1].Data; } | ||
39 | set { this.Fields[1].Data = value; } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the type of the control. | ||
44 | /// </summary> | ||
45 | /// <value>Name of the control.</value> | ||
46 | [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")] | ||
47 | public string Type | ||
48 | { | ||
49 | get { return (string)this.Fields[2].Data; } | ||
50 | set { this.Fields[2].Data = value; } | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Gets or sets the X location of the control. | ||
55 | /// </summary> | ||
56 | /// <value>X location of the control.</value> | ||
57 | public string X | ||
58 | { | ||
59 | get { return this.Fields[3].AsString(); } | ||
60 | set { this.Fields[3].Data = value; } | ||
61 | } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Gets or sets the Y location of the control. | ||
65 | /// </summary> | ||
66 | /// <value>Y location of the control.</value> | ||
67 | public string Y | ||
68 | { | ||
69 | get { return this.Fields[4].AsString(); } | ||
70 | set { this.Fields[4].Data = value; } | ||
71 | } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Gets or sets the width of the control. | ||
75 | /// </summary> | ||
76 | /// <value>Width of the control.</value> | ||
77 | public string Width | ||
78 | { | ||
79 | get { return this.Fields[5].AsString(); } | ||
80 | set { this.Fields[5].Data = value; } | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Gets or sets the height of the control. | ||
85 | /// </summary> | ||
86 | /// <value>Height of the control.</value> | ||
87 | public string Height | ||
88 | { | ||
89 | get { return this.Fields[6].AsString(); } | ||
90 | set { this.Fields[6].Data = value; } | ||
91 | } | ||
92 | |||
93 | /// <summary> | ||
94 | /// Gets or sets the attributes for the control. | ||
95 | /// </summary> | ||
96 | /// <value>Attributes for the control.</value> | ||
97 | public int Attributes | ||
98 | { | ||
99 | get { return (int)this.Fields[7].Data; } | ||
100 | set { this.Fields[7].Data = value; } | ||
101 | } | ||
102 | |||
103 | /// <summary> | ||
104 | /// Gets or sets the Property associated with the control. | ||
105 | /// </summary> | ||
106 | /// <value>Property associated with the control.</value> | ||
107 | public string Property | ||
108 | { | ||
109 | get { return (string)this.Fields[8].Data; } | ||
110 | set { this.Fields[8].Data = value; } | ||
111 | } | ||
112 | |||
113 | /// <summary> | ||
114 | /// Gets or sets the text of the control. | ||
115 | /// </summary> | ||
116 | /// <value>Text of the control.</value> | ||
117 | public string Text | ||
118 | { | ||
119 | get { return (string)this.Fields[9].Data; } | ||
120 | set { this.Fields[9].Data = value; } | ||
121 | } | ||
122 | |||
123 | /// <summary> | ||
124 | /// Gets or sets the next control. | ||
125 | /// </summary> | ||
126 | /// <value>Next control.</value> | ||
127 | public string Next | ||
128 | { | ||
129 | get { return (string)this.Fields[10].Data; } | ||
130 | set { this.Fields[10].Data = value; } | ||
131 | } | ||
132 | |||
133 | /// <summary> | ||
134 | /// Gets or sets the help for the control. | ||
135 | /// </summary> | ||
136 | /// <value>Help for the control.</value> | ||
137 | public string Help | ||
138 | { | ||
139 | get { return (string)this.Fields[11].Data; } | ||
140 | set { this.Fields[11].Data = value; } | ||
141 | } | ||
142 | } | ||
143 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/FileRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/FileRow.cs new file mode 100644 index 00000000..de5d5652 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/FileRow.cs | |||
@@ -0,0 +1,640 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Globalization; | ||
8 | using WixToolset.Data.Msi; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Specialization of a row for the file table. | ||
12 | /// </summary> | ||
13 | public sealed class FileRow : Row //, IComparable | ||
14 | { | ||
15 | //private string assemblyApplication; | ||
16 | //private string assemblyManifest; | ||
17 | //private FileAssemblyType assemblyType; | ||
18 | //private string directory; | ||
19 | //private int diskId; | ||
20 | //private bool fromModule; | ||
21 | //private bool isGeneratedShortFileName; | ||
22 | //private int patchGroup; | ||
23 | //private string processorArchitecture; | ||
24 | //private string source; | ||
25 | //private Row hashRow; | ||
26 | //private List<Row> assemblyNameRows; | ||
27 | //private string[] previousSource; | ||
28 | //private string symbols; | ||
29 | //private string[] previousSymbols; | ||
30 | //private PatchAttributeType patchAttributes; | ||
31 | //private string retainOffsets; | ||
32 | //private string retainLengths; | ||
33 | //private string ignoreOffsets; | ||
34 | //private string ignoreLengths; | ||
35 | //private string[] previousRetainOffsets; | ||
36 | //private string[] previousRetainLengths; | ||
37 | //private string[] previousIgnoreOffsets; | ||
38 | //private string[] previousIgnoreLengths; | ||
39 | //private string patch; | ||
40 | |||
41 | /// <summary> | ||
42 | /// Creates a File row that belongs to a table. | ||
43 | /// </summary> | ||
44 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
45 | /// <param name="table">Table this File row belongs to and should get its column definitions from.</param> | ||
46 | public FileRow(SourceLineNumber sourceLineNumbers, Table table) | ||
47 | : base(sourceLineNumbers, table) | ||
48 | { | ||
49 | //this.assemblyType = FileAssemblyType.NotAnAssembly; | ||
50 | //this.previousSource = new string[1]; | ||
51 | //this.previousSymbols = new string[1]; | ||
52 | //this.previousRetainOffsets = new string[1]; | ||
53 | //this.previousRetainLengths = new string[1]; | ||
54 | //this.previousIgnoreOffsets = new string[1]; | ||
55 | //this.previousIgnoreLengths = new string[1]; | ||
56 | } | ||
57 | |||
58 | /// <summary> | ||
59 | /// Creates a File row that does not belong to a table. | ||
60 | /// </summary> | ||
61 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
62 | /// <param name="tableDefinition">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
63 | public FileRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) | ||
64 | : base(sourceLineNumbers, tableDefinition) | ||
65 | { | ||
66 | //this.assemblyType = FileAssemblyType.NotAnAssembly; | ||
67 | //this.previousSource = new string[1]; | ||
68 | //this.previousSymbols = new string[1]; | ||
69 | //this.previousRetainOffsets = new string[1]; | ||
70 | //this.previousRetainLengths = new string[1]; | ||
71 | //this.previousIgnoreOffsets = new string[1]; | ||
72 | //this.previousIgnoreLengths = new string[1]; | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets or sets the primary key of the file row. | ||
77 | /// </summary> | ||
78 | /// <value>Primary key of the file row.</value> | ||
79 | public string File | ||
80 | { | ||
81 | get { return (string)this.Fields[0].Data; } | ||
82 | set { this.Fields[0].Data = value; } | ||
83 | } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Gets or sets the component this file row belongs to. | ||
87 | /// </summary> | ||
88 | /// <value>Component this file row belongs to.</value> | ||
89 | public string Component | ||
90 | { | ||
91 | get { return (string)this.Fields[1].Data; } | ||
92 | set { this.Fields[1].Data = value; } | ||
93 | } | ||
94 | |||
95 | /// <summary> | ||
96 | /// Gets or sets the name of the file. | ||
97 | /// </summary> | ||
98 | /// <value>Name of the file.</value> | ||
99 | public string FileName | ||
100 | { | ||
101 | get { return (string)this.Fields[2].Data; } | ||
102 | set { this.Fields[2].Data = value; } | ||
103 | } | ||
104 | |||
105 | /// <summary> | ||
106 | /// Gets or sets the real filesystem name of the file (without a pipe). This is typically the long name of the file. | ||
107 | /// However, if no long name is available, falls back to the short name. | ||
108 | /// </summary> | ||
109 | /// <value>Long Name of the file - or if no long name is available, falls back to the short name.</value> | ||
110 | public string LongFileName | ||
111 | { | ||
112 | get | ||
113 | { | ||
114 | string fileName = this.FileName; | ||
115 | int index = fileName.IndexOf('|'); | ||
116 | |||
117 | // If it doesn't contain a pipe, just return the whole string | ||
118 | if (-1 == index) | ||
119 | { | ||
120 | return fileName; | ||
121 | } | ||
122 | else // otherwise, extract the part of the string after the pipe | ||
123 | { | ||
124 | return fileName.Substring(index + 1); | ||
125 | } | ||
126 | } | ||
127 | } | ||
128 | |||
129 | /// <summary> | ||
130 | /// Gets or sets the size of the file. | ||
131 | /// </summary> | ||
132 | /// <value>Size of the file.</value> | ||
133 | public int FileSize | ||
134 | { | ||
135 | get { return (int)this.Fields[3].Data; } | ||
136 | set { this.Fields[3].Data = value; } | ||
137 | } | ||
138 | |||
139 | /// <summary> | ||
140 | /// Gets or sets the version of the file. | ||
141 | /// </summary> | ||
142 | /// <value>Version of the file.</value> | ||
143 | public string Version | ||
144 | { | ||
145 | get { return (string)this.Fields[4].Data; } | ||
146 | set { this.Fields[4].Data = value; } | ||
147 | } | ||
148 | |||
149 | /// <summary> | ||
150 | /// Gets or sets the LCID of the file. | ||
151 | /// </summary> | ||
152 | /// <value>LCID of the file.</value> | ||
153 | public string Language | ||
154 | { | ||
155 | get { return (string)this.Fields[5].Data; } | ||
156 | set { this.Fields[5].Data = value; } | ||
157 | } | ||
158 | |||
159 | /// <summary> | ||
160 | /// Gets or sets the attributes on a file. | ||
161 | /// </summary> | ||
162 | /// <value>Attributes on a file.</value> | ||
163 | public int Attributes | ||
164 | { | ||
165 | get { return Convert.ToInt32(this.Fields[6].Data, CultureInfo.InvariantCulture); } | ||
166 | set { this.Fields[6].Data = value; } | ||
167 | } | ||
168 | |||
169 | /// <summary> | ||
170 | /// Gets or sets whether this file should be compressed. | ||
171 | /// </summary> | ||
172 | /// <value>Whether this file should be compressed.</value> | ||
173 | public YesNoType Compressed | ||
174 | { | ||
175 | get | ||
176 | { | ||
177 | bool compressedFlag = (0 < (this.Attributes & MsiInterop.MsidbFileAttributesCompressed)); | ||
178 | bool noncompressedFlag = (0 < (this.Attributes & MsiInterop.MsidbFileAttributesNoncompressed)); | ||
179 | |||
180 | if (compressedFlag && noncompressedFlag) | ||
181 | { | ||
182 | throw new WixException(WixDataErrors.IllegalFileCompressionAttributes(this.SourceLineNumbers)); | ||
183 | } | ||
184 | else if (compressedFlag) | ||
185 | { | ||
186 | return YesNoType.Yes; | ||
187 | } | ||
188 | else if (noncompressedFlag) | ||
189 | { | ||
190 | return YesNoType.No; | ||
191 | } | ||
192 | else | ||
193 | { | ||
194 | return YesNoType.NotSet; | ||
195 | } | ||
196 | } | ||
197 | |||
198 | set | ||
199 | { | ||
200 | if (YesNoType.Yes == value) | ||
201 | { | ||
202 | // these are mutually exclusive | ||
203 | this.Attributes |= MsiInterop.MsidbFileAttributesCompressed; | ||
204 | this.Attributes &= ~MsiInterop.MsidbFileAttributesNoncompressed; | ||
205 | } | ||
206 | else if (YesNoType.No == value) | ||
207 | { | ||
208 | // these are mutually exclusive | ||
209 | this.Attributes |= MsiInterop.MsidbFileAttributesNoncompressed; | ||
210 | this.Attributes &= ~MsiInterop.MsidbFileAttributesCompressed; | ||
211 | } | ||
212 | else // not specified | ||
213 | { | ||
214 | Debug.Assert(YesNoType.NotSet == value); | ||
215 | |||
216 | // clear any compression bits | ||
217 | this.Attributes &= ~MsiInterop.MsidbFileAttributesCompressed; | ||
218 | this.Attributes &= ~MsiInterop.MsidbFileAttributesNoncompressed; | ||
219 | } | ||
220 | } | ||
221 | } | ||
222 | |||
223 | /// <summary> | ||
224 | /// Gets or sets the sequence of the file row. | ||
225 | /// </summary> | ||
226 | /// <value>Sequence of the file row.</value> | ||
227 | public int Sequence | ||
228 | { | ||
229 | get { return (int)this.Fields[7].Data; } | ||
230 | set { this.Fields[7].Data = value; } | ||
231 | } | ||
232 | |||
233 | /////// <summary> | ||
234 | /////// Gets or sets the type of assembly of file row. | ||
235 | /////// </summary> | ||
236 | /////// <value>Assembly type for file row.</value> | ||
237 | ////public FileAssemblyType AssemblyType | ||
238 | ////{ | ||
239 | //// get { return this.assemblyType; } | ||
240 | //// set { this.assemblyType = value; } | ||
241 | ////} | ||
242 | |||
243 | /////// <summary> | ||
244 | /////// Gets or sets the identifier for the assembly application. | ||
245 | /////// </summary> | ||
246 | /////// <value>Identifier for the assembly application.</value> | ||
247 | ////public string AssemblyApplication | ||
248 | ////{ | ||
249 | //// get { return this.assemblyApplication; } | ||
250 | //// set { this.assemblyApplication = value; } | ||
251 | ////} | ||
252 | |||
253 | /////// <summary> | ||
254 | /////// Gets or sets the identifier for the assembly manifest. | ||
255 | /////// </summary> | ||
256 | /////// <value>Identifier for the assembly manifest.</value> | ||
257 | ////public string AssemblyManifest | ||
258 | ////{ | ||
259 | //// get { return this.assemblyManifest; } | ||
260 | //// set { this.assemblyManifest = value; } | ||
261 | ////} | ||
262 | |||
263 | /////// <summary> | ||
264 | /////// Gets or sets the directory of the file. | ||
265 | /////// </summary> | ||
266 | /////// <value>Directory of the file.</value> | ||
267 | ////public string Directory | ||
268 | ////{ | ||
269 | //// get { return this.directory; } | ||
270 | //// set { this.directory = value; } | ||
271 | ////} | ||
272 | |||
273 | /////// <summary> | ||
274 | /////// Gets or sets the disk id for this file. | ||
275 | /////// </summary> | ||
276 | /////// <value>Disk id for the file.</value> | ||
277 | ////public int DiskId | ||
278 | ////{ | ||
279 | //// get { return this.diskId; } | ||
280 | //// set { this.diskId = value; } | ||
281 | ////} | ||
282 | |||
283 | /////// <summary> | ||
284 | /////// Gets or sets the source location to the file. | ||
285 | /////// </summary> | ||
286 | /////// <value>Source location to the file.</value> | ||
287 | ////public string Source | ||
288 | ////{ | ||
289 | //// get { return this.source; } | ||
290 | //// set { this.source = value; } | ||
291 | ////} | ||
292 | |||
293 | /////// <summary> | ||
294 | /////// Gets or sets the source location to the previous file. | ||
295 | /////// </summary> | ||
296 | /////// <value>Source location to the previous file.</value> | ||
297 | ////public string PreviousSource | ||
298 | ////{ | ||
299 | //// get { return this.previousSource[0]; } | ||
300 | //// set { this.previousSource[0] = value; } | ||
301 | ////} | ||
302 | |||
303 | /////// <summary> | ||
304 | /////// Gets the source location to the previous files. | ||
305 | /////// </summary> | ||
306 | /////// <value>Source location to the previous files.</value> | ||
307 | ////[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
308 | ////public string[] PreviousSourceArray | ||
309 | ////{ | ||
310 | //// get { return this.previousSource; } | ||
311 | ////} | ||
312 | |||
313 | /////// <summary> | ||
314 | /////// Gets or sets the architecture the file executes on. | ||
315 | /////// </summary> | ||
316 | /////// <value>Architecture the file executes on.</value> | ||
317 | ////public string ProcessorArchitecture | ||
318 | ////{ | ||
319 | //// get { return this.processorArchitecture; } | ||
320 | //// set { this.processorArchitecture = value; } | ||
321 | ////} | ||
322 | |||
323 | /////// <summary> | ||
324 | /////// Gets of sets the patch group of a patch-added file. | ||
325 | /////// </summary> | ||
326 | /////// <value>The patch group of a patch-added file.</value> | ||
327 | ////public int PatchGroup | ||
328 | ////{ | ||
329 | //// get { return this.patchGroup; } | ||
330 | //// set { this.patchGroup = value; } | ||
331 | ////} | ||
332 | |||
333 | /////// <summary> | ||
334 | /////// Gets or sets the patch header of the file. | ||
335 | /////// </summary> | ||
336 | /////// <value>Patch header of the file.</value> | ||
337 | ////public string Patch | ||
338 | ////{ | ||
339 | //// get { return this.patch; } | ||
340 | //// set { this.patch = value; } | ||
341 | ////} | ||
342 | |||
343 | /////// <summary> | ||
344 | /////// Gets or sets the locations to find the file's symbols. | ||
345 | /////// </summary> | ||
346 | /////// <value>Symbol paths for the file.</value> | ||
347 | ////public string Symbols | ||
348 | ////{ | ||
349 | //// get { return this.symbols; } | ||
350 | //// set { this.symbols = value; } | ||
351 | ////} | ||
352 | |||
353 | /////// <summary> | ||
354 | /////// Gets or sets the locations to find the file's previous symbols. | ||
355 | /////// </summary> | ||
356 | /////// <value>Symbol paths for the previous file.</value> | ||
357 | ////public string PreviousSymbols | ||
358 | ////{ | ||
359 | //// get { return this.previousSymbols[0]; } | ||
360 | //// set { this.previousSymbols[0] = value; } | ||
361 | ////} | ||
362 | |||
363 | /////// <summary> | ||
364 | /////// Gets the locations to find the files' previous symbols. | ||
365 | /////// </summary> | ||
366 | /////// <value>Symbol paths for the previous files.</value> | ||
367 | ////[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
368 | ////public string[] PreviousSymbolsArray | ||
369 | ////{ | ||
370 | //// get { return this.previousSymbols; } | ||
371 | ////} | ||
372 | |||
373 | /////// <summary> | ||
374 | /////// Gets or sets the generated short file name attribute. | ||
375 | /////// </summary> | ||
376 | /////// <value>The generated short file name attribute.</value> | ||
377 | ////public bool IsGeneratedShortFileName | ||
378 | ////{ | ||
379 | //// get { return this.isGeneratedShortFileName; } | ||
380 | |||
381 | //// set { this.isGeneratedShortFileName = value; } | ||
382 | ////} | ||
383 | |||
384 | /////// <summary> | ||
385 | /////// Gets or sets whether this row came from a merge module. | ||
386 | /////// </summary> | ||
387 | /////// <value>Whether this row came from a merge module.</value> | ||
388 | ////public bool FromModule | ||
389 | ////{ | ||
390 | //// get { return this.fromModule; } | ||
391 | //// set { this.fromModule = value; } | ||
392 | ////} | ||
393 | |||
394 | /////// <summary> | ||
395 | /////// Gets or sets the MsiFileHash row created for this FileRow. | ||
396 | /////// </summary> | ||
397 | /////// <value>Row for MsiFileHash table.</value> | ||
398 | ////public Row HashRow | ||
399 | ////{ | ||
400 | //// get { return this.hashRow; } | ||
401 | //// set { this.hashRow = value; } | ||
402 | ////} | ||
403 | |||
404 | /////// <summary> | ||
405 | /////// Gets or sets the set of MsiAssemblyName rows created for this FileRow. | ||
406 | /////// </summary> | ||
407 | /////// <value>RowCollection of MsiAssemblyName table.</value> | ||
408 | ////[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] | ||
409 | ////public List<Row> AssemblyNameRows | ||
410 | ////{ | ||
411 | //// get { return this.assemblyNameRows; } | ||
412 | //// set { this.assemblyNameRows = value; } | ||
413 | ////} | ||
414 | |||
415 | /////// <summary> | ||
416 | /////// Gets or sets the patching attributes to the file. | ||
417 | /////// </summary> | ||
418 | /////// <value>Patching attributes of the file.</value> | ||
419 | ////public PatchAttributeType PatchAttributes | ||
420 | ////{ | ||
421 | //// get { return this.patchAttributes; } | ||
422 | //// set { this.patchAttributes = value; } | ||
423 | ////} | ||
424 | |||
425 | /////// <summary> | ||
426 | /////// Gets or sets the delta patch retain-length list for the file. | ||
427 | /////// </summary> | ||
428 | /////// <value>RetainLength list for the file.</value> | ||
429 | ////public string RetainLengths | ||
430 | ////{ | ||
431 | //// get { return this.retainLengths; } | ||
432 | //// set { this.retainLengths = value; } | ||
433 | ////} | ||
434 | |||
435 | /////// <summary> | ||
436 | /////// Gets or sets the delta patch ignore-offset list for the file. | ||
437 | /////// </summary> | ||
438 | /////// <value>IgnoreOffset list for the file.</value> | ||
439 | ////public string IgnoreOffsets | ||
440 | ////{ | ||
441 | //// get { return this.ignoreOffsets; } | ||
442 | //// set { this.ignoreOffsets = value; } | ||
443 | ////} | ||
444 | |||
445 | /////// <summary> | ||
446 | /////// Gets or sets the delta patch ignore-length list for the file. | ||
447 | /////// </summary> | ||
448 | /////// <value>IgnoreLength list for the file.</value> | ||
449 | ////public string IgnoreLengths | ||
450 | ////{ | ||
451 | //// get { return this.ignoreLengths; } | ||
452 | //// set { this.ignoreLengths = value; } | ||
453 | ////} | ||
454 | |||
455 | /////// <summary> | ||
456 | /////// Gets or sets the delta patch retain-offset list for the file. | ||
457 | /////// </summary> | ||
458 | /////// <value>RetainOffset list for the file.</value> | ||
459 | ////public string RetainOffsets | ||
460 | ////{ | ||
461 | //// get { return this.retainOffsets; } | ||
462 | //// set { this.retainOffsets = value; } | ||
463 | ////} | ||
464 | |||
465 | /////// <summary> | ||
466 | /////// Gets or sets the delta patch retain-length list for the previous file. | ||
467 | /////// </summary> | ||
468 | /////// <value>RetainLength list for the previous file.</value> | ||
469 | ////public string PreviousRetainLengths | ||
470 | ////{ | ||
471 | //// get { return this.previousRetainLengths[0]; } | ||
472 | //// set { this.previousRetainLengths[0] = value; } | ||
473 | ////} | ||
474 | |||
475 | /////// <summary> | ||
476 | /////// Gets the delta patch retain-length list for the previous files. | ||
477 | /////// </summary> | ||
478 | /////// <value>RetainLength list for the previous files.</value> | ||
479 | ////[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
480 | ////public string[] PreviousRetainLengthsArray | ||
481 | ////{ | ||
482 | //// get { return this.previousRetainLengths; } | ||
483 | ////} | ||
484 | |||
485 | /////// <summary> | ||
486 | /////// Gets or sets the delta patch ignore-offset list for the previous file. | ||
487 | /////// </summary> | ||
488 | /////// <value>IgnoreOffset list for the previous file.</value> | ||
489 | ////public string PreviousIgnoreOffsets | ||
490 | ////{ | ||
491 | //// get { return this.previousIgnoreOffsets[0]; } | ||
492 | //// set { this.previousIgnoreOffsets[0] = value; } | ||
493 | ////} | ||
494 | |||
495 | /////// <summary> | ||
496 | /////// Gets the delta patch ignore-offset list for the previous files. | ||
497 | /////// </summary> | ||
498 | /////// <value>IgnoreOffset list for the previous files.</value> | ||
499 | ////[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
500 | ////public string[] PreviousIgnoreOffsetsArray | ||
501 | ////{ | ||
502 | //// get { return this.previousIgnoreOffsets; } | ||
503 | ////} | ||
504 | |||
505 | /////// <summary> | ||
506 | /////// Gets or sets the delta patch ignore-length list for the previous file. | ||
507 | /////// </summary> | ||
508 | /////// <value>IgnoreLength list for the previous file.</value> | ||
509 | ////public string PreviousIgnoreLengths | ||
510 | ////{ | ||
511 | //// get { return this.previousIgnoreLengths[0]; } | ||
512 | //// set { this.previousIgnoreLengths[0] = value; } | ||
513 | ////} | ||
514 | |||
515 | /////// <summary> | ||
516 | /////// Gets the delta patch ignore-length list for the previous files. | ||
517 | /////// </summary> | ||
518 | /////// <value>IgnoreLength list for the previous files.</value> | ||
519 | ////[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
520 | ////public string[] PreviousIgnoreLengthsArray | ||
521 | ////{ | ||
522 | //// get { return this.previousIgnoreLengths; } | ||
523 | ////} | ||
524 | |||
525 | /////// <summary> | ||
526 | /////// Gets or sets the delta patch retain-offset list for the previous file. | ||
527 | /////// </summary> | ||
528 | /////// <value>RetainOffset list for the previous file.</value> | ||
529 | ////public string PreviousRetainOffsets | ||
530 | ////{ | ||
531 | //// get { return this.previousRetainOffsets[0]; } | ||
532 | //// set { this.previousRetainOffsets[0] = value; } | ||
533 | ////} | ||
534 | |||
535 | /////// <summary> | ||
536 | /////// Gets the delta patch retain-offset list for the previous files. | ||
537 | /////// </summary> | ||
538 | /////// <value>RetainOffset list for the previous files.</value> | ||
539 | ////[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] | ||
540 | ////public string[] PreviousRetainOffsetsArray | ||
541 | ////{ | ||
542 | //// get { return this.previousRetainOffsets; } | ||
543 | ////} | ||
544 | |||
545 | /////// <summary> | ||
546 | /////// Compares the current FileRow with another object of the same type. | ||
547 | /////// </summary> | ||
548 | /////// <param name="obj">An object to compare with this instance.</param> | ||
549 | /////// <returns>An integer that indicates the relative order of the comparands.</returns> | ||
550 | ////[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String)")] | ||
551 | ////[SuppressMessage("Microsoft.Globalization", "CA1309:UseOrdinalStringComparison")] | ||
552 | ////public int CompareTo(object obj) | ||
553 | ////{ | ||
554 | //// if (this == obj) | ||
555 | //// { | ||
556 | //// return 0; | ||
557 | //// } | ||
558 | |||
559 | //// FileRow fileRow = obj as FileRow; | ||
560 | //// if (null == fileRow) | ||
561 | //// { | ||
562 | //// throw new ArgumentException(WixDataStrings.EXP_OtherObjectIsNotFileRow); | ||
563 | //// } | ||
564 | |||
565 | //// int compared = this.DiskId - fileRow.DiskId; | ||
566 | //// if (0 == compared) | ||
567 | //// { | ||
568 | //// compared = this.patchGroup - fileRow.patchGroup; | ||
569 | |||
570 | //// if (0 == compared) | ||
571 | //// { | ||
572 | //// compared = String.Compare(this.File, fileRow.File, StringComparison.InvariantCulture); | ||
573 | //// } | ||
574 | //// } | ||
575 | |||
576 | //// return compared; | ||
577 | ////} | ||
578 | |||
579 | /////// <summary> | ||
580 | /////// Copies data from another FileRow object. | ||
581 | /////// </summary> | ||
582 | /////// <param name="src">An row to get data from.</param> | ||
583 | ////public void CopyFrom(FileRow src) | ||
584 | ////{ | ||
585 | //// for (int i = 0; i < src.Fields.Length; i++) | ||
586 | //// { | ||
587 | //// this[i] = src[i]; | ||
588 | //// } | ||
589 | //// this.assemblyManifest = src.assemblyManifest; | ||
590 | //// this.assemblyType = src.assemblyType; | ||
591 | //// this.directory = src.directory; | ||
592 | //// this.diskId = src.diskId; | ||
593 | //// this.fromModule = src.fromModule; | ||
594 | //// this.isGeneratedShortFileName = src.isGeneratedShortFileName; | ||
595 | //// this.patchGroup = src.patchGroup; | ||
596 | //// this.processorArchitecture = src.processorArchitecture; | ||
597 | //// this.source = src.source; | ||
598 | //// this.PreviousSource = src.PreviousSource; | ||
599 | //// this.Operation = src.Operation; | ||
600 | //// this.symbols = src.symbols; | ||
601 | //// this.PreviousSymbols = src.PreviousSymbols; | ||
602 | //// this.patchAttributes = src.patchAttributes; | ||
603 | //// this.retainOffsets = src.retainOffsets; | ||
604 | //// this.retainLengths = src.retainLengths; | ||
605 | //// this.ignoreOffsets = src.ignoreOffsets; | ||
606 | //// this.ignoreLengths = src.ignoreLengths; | ||
607 | //// this.PreviousRetainOffsets = src.PreviousRetainOffsets; | ||
608 | //// this.PreviousRetainLengths = src.PreviousRetainLengths; | ||
609 | //// this.PreviousIgnoreOffsets = src.PreviousIgnoreOffsets; | ||
610 | //// this.PreviousIgnoreLengths = src.PreviousIgnoreLengths; | ||
611 | ////} | ||
612 | |||
613 | /////// <summary> | ||
614 | /////// Appends previous data from another FileRow object. | ||
615 | /////// </summary> | ||
616 | /////// <param name="src">An row to get data from.</param> | ||
617 | ////public void AppendPreviousDataFrom(FileRow src) | ||
618 | ////{ | ||
619 | //// AppendStringToArray(ref this.previousSource, src.previousSource[0]); | ||
620 | //// AppendStringToArray(ref this.previousSymbols, src.previousSymbols[0]); | ||
621 | //// AppendStringToArray(ref this.previousRetainOffsets, src.previousRetainOffsets[0]); | ||
622 | //// AppendStringToArray(ref this.previousRetainLengths, src.previousRetainLengths[0]); | ||
623 | //// AppendStringToArray(ref this.previousIgnoreOffsets, src.previousIgnoreOffsets[0]); | ||
624 | //// AppendStringToArray(ref this.previousIgnoreLengths, src.previousIgnoreLengths[0]); | ||
625 | ////} | ||
626 | |||
627 | /////// <summary> | ||
628 | /////// Helper method for AppendPreviousDataFrom. | ||
629 | /////// </summary> | ||
630 | /////// <param name="source">Destination array.</param> | ||
631 | /////// <param name="destination">Source string.</param> | ||
632 | ////private static void AppendStringToArray(ref string[] destination, string source) | ||
633 | ////{ | ||
634 | //// string[] result = new string[destination.Length + 1]; | ||
635 | //// destination.CopyTo(result, 0); | ||
636 | //// result[destination.Length] = source; | ||
637 | //// destination = result; | ||
638 | ////} | ||
639 | } | ||
640 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/MediaRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/MediaRow.cs new file mode 100644 index 00000000..f387a8d2 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/MediaRow.cs | |||
@@ -0,0 +1,80 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Media table. | ||
7 | /// </summary> | ||
8 | public sealed class MediaRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a Media row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
15 | public MediaRow(SourceLineNumber sourceLineNumbers, Table table) | ||
16 | : base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets or sets the disk id for this media row. | ||
22 | /// </summary> | ||
23 | /// <value>Disk id.</value> | ||
24 | public int DiskId | ||
25 | { | ||
26 | get { return (int)this.Fields[0].Data; } | ||
27 | set { this.Fields[0].Data = value; } | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the last sequence number for this media row. | ||
32 | /// </summary> | ||
33 | /// <value>Last sequence number.</value> | ||
34 | public int LastSequence | ||
35 | { | ||
36 | get { return (int)this.Fields[1].Data; } | ||
37 | set { this.Fields[1].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the disk prompt for this media row. | ||
42 | /// </summary> | ||
43 | /// <value>Disk prompt.</value> | ||
44 | public string DiskPrompt | ||
45 | { | ||
46 | get { return (string)this.Fields[2].Data; } | ||
47 | set { this.Fields[2].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the cabinet name for this media row. | ||
52 | /// </summary> | ||
53 | /// <value>Cabinet name.</value> | ||
54 | public string Cabinet | ||
55 | { | ||
56 | get { return (string)this.Fields[3].Data; } | ||
57 | set { this.Fields[3].Data = value; } | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets or sets the volume label for this media row. | ||
62 | /// </summary> | ||
63 | /// <value>Volume label.</value> | ||
64 | public string VolumeLabel | ||
65 | { | ||
66 | get { return (string)this.Fields[4].Data; } | ||
67 | set { this.Fields[4].Data = value; } | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Gets or sets the source for this media row. | ||
72 | /// </summary> | ||
73 | /// <value>Source.</value> | ||
74 | public string Source | ||
75 | { | ||
76 | get { return (string)this.Fields[5].Data; } | ||
77 | set { this.Fields[5].Data = value; } | ||
78 | } | ||
79 | } | ||
80 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/PropertyRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/PropertyRow.cs new file mode 100644 index 00000000..558df760 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/PropertyRow.cs | |||
@@ -0,0 +1,42 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the upgrade table. | ||
9 | /// </summary> | ||
10 | public sealed class PropertyRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates an Upgrade row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Upgrade row belongs to and should get its column definitions from.</param> | ||
17 | public PropertyRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Gets and sets the upgrade code for the row. | ||
24 | /// </summary> | ||
25 | /// <value>Property identifier for the row.</value> | ||
26 | public string Property | ||
27 | { | ||
28 | get { return (string)this.Fields[0].Data; } | ||
29 | set { this.Fields[0].Data = value; } | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets and sets the value for the row. | ||
34 | /// </summary> | ||
35 | /// <value>Property value for the row.</value> | ||
36 | public string Value | ||
37 | { | ||
38 | get { return (string)this.Fields[1].Data; } | ||
39 | set { this.Fields[1].Data = value; } | ||
40 | } | ||
41 | } | ||
42 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/SummaryInfoRowCollection.cs b/src/WixToolset.Data.WindowsInstaller/Rows/SummaryInfoRowCollection.cs new file mode 100644 index 00000000..bc931f15 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/SummaryInfoRowCollection.cs | |||
@@ -0,0 +1,42 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections; | ||
7 | using System.Collections.ObjectModel; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Indexed container class for summary information rows. | ||
11 | /// </summary> | ||
12 | public sealed class SummaryInfoRowCollection : KeyedCollection<int, Row> | ||
13 | { | ||
14 | /// <summary> | ||
15 | /// Creates the keyed collection from existing rows in a table. | ||
16 | /// </summary> | ||
17 | /// <param name="table">The summary information table to index.</param> | ||
18 | public SummaryInfoRowCollection(Table table) | ||
19 | { | ||
20 | if (0 != String.CompareOrdinal("_SummaryInformation", table.Name)) | ||
21 | { | ||
22 | string message = string.Format(WixDataStrings.EXP_UnsupportedTable, table.Name); | ||
23 | throw new ArgumentException(message, "table"); | ||
24 | } | ||
25 | |||
26 | foreach (Row row in table.Rows) | ||
27 | { | ||
28 | this.Add(row); | ||
29 | } | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets the summary property ID for the <paramref name="row"/>. | ||
34 | /// </summary> | ||
35 | /// <param name="row">The row to index.</param> | ||
36 | /// <returns>The summary property ID for the <paramref name="row"/>. | ||
37 | protected override int GetKeyForItem(Row row) | ||
38 | { | ||
39 | return (int)row[0]; | ||
40 | } | ||
41 | } | ||
42 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/SymbolPathType.cs b/src/WixToolset.Data.WindowsInstaller/Rows/SymbolPathType.cs new file mode 100644 index 00000000..964e1caa --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/SymbolPathType.cs | |||
@@ -0,0 +1,17 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// The types that the WixDeltaPatchSymbolPaths table can hold. | ||
7 | /// </summary> | ||
8 | /// <remarks>The order of these values is important since WixDeltaPatchSymbolPaths are sorted by this type.</remarks> | ||
9 | public enum SymbolPathType | ||
10 | { | ||
11 | File, | ||
12 | Component, | ||
13 | Directory, | ||
14 | Media, | ||
15 | Product | ||
16 | }; | ||
17 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/UpgradeRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/UpgradeRow.cs new file mode 100644 index 00000000..807a9f93 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/UpgradeRow.cs | |||
@@ -0,0 +1,90 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the upgrade table. | ||
7 | /// </summary> | ||
8 | public sealed class UpgradeRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates an Upgrade row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this Upgrade row belongs to and should get its column definitions from.</param> | ||
15 | public UpgradeRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
16 | base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets and sets the upgrade code for the row. | ||
22 | /// </summary> | ||
23 | /// <value>Upgrade code for the row.</value> | ||
24 | public string UpgradeCode | ||
25 | { | ||
26 | get { return (string)this.Fields[0].Data; } | ||
27 | set { this.Fields[0].Data = value; } | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets and sets the version minimum for the row. | ||
32 | /// </summary> | ||
33 | /// <value>Version minimum for the row.</value> | ||
34 | public string VersionMin | ||
35 | { | ||
36 | get { return (string)this.Fields[1].Data; } | ||
37 | set { this.Fields[1].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets and sets the version maximum for the row. | ||
42 | /// </summary> | ||
43 | /// <value>Version maximum for the row.</value> | ||
44 | public string VersionMax | ||
45 | { | ||
46 | get { return (string)this.Fields[2].Data; } | ||
47 | set { this.Fields[2].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets and sets the language for the row. | ||
52 | /// </summary> | ||
53 | /// <value>Language for the row.</value> | ||
54 | public string Language | ||
55 | { | ||
56 | get { return (string)this.Fields[3].Data; } | ||
57 | set { this.Fields[3].Data = value; } | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets and sets the attributes for the row. | ||
62 | /// </summary> | ||
63 | /// <value>Attributes for the row.</value> | ||
64 | public int Attributes | ||
65 | { | ||
66 | get { return (int)this.Fields[4].Data; } | ||
67 | set { this.Fields[4].Data = value; } | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Gets and sets the remove code for the row. | ||
72 | /// </summary> | ||
73 | /// <value>Remove code for the row.</value> | ||
74 | public string Remove | ||
75 | { | ||
76 | get { return (string)this.Fields[5].Data; } | ||
77 | set { this.Fields[5].Data = value; } | ||
78 | } | ||
79 | |||
80 | /// <summary> | ||
81 | /// Gets and sets the action property for the row. | ||
82 | /// </summary> | ||
83 | /// <value>Action property for the row.</value> | ||
84 | public string ActionProperty | ||
85 | { | ||
86 | get { return (string)this.Fields[6].Data; } | ||
87 | set { this.Fields[6].Data = value; } | ||
88 | } | ||
89 | } | ||
90 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRow.cs new file mode 100644 index 00000000..3009e59d --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRow.cs | |||
@@ -0,0 +1,374 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Diagnostics; | ||
8 | using System.Globalization; | ||
9 | using System.Xml; | ||
10 | using System.Xml.Schema; | ||
11 | |||
12 | /// <summary> | ||
13 | /// The Sequence tables that actions may belong to. | ||
14 | /// </summary> | ||
15 | public enum SequenceTable | ||
16 | { | ||
17 | /// <summary>AdminUISequence</summary> | ||
18 | AdminUISequence, | ||
19 | |||
20 | /// <summary>AdminExecuteSequence</summary> | ||
21 | AdminExecuteSequence, | ||
22 | |||
23 | /// <summary>AdvtExecuteSequence</summary> | ||
24 | AdvtExecuteSequence, | ||
25 | |||
26 | /// <summary>InstallUISequence</summary> | ||
27 | InstallUISequence, | ||
28 | |||
29 | /// <summary>InstallExecuteSequence</summary> | ||
30 | InstallExecuteSequence | ||
31 | } | ||
32 | |||
33 | /// <summary> | ||
34 | /// Specialization of a row for the sequence tables. | ||
35 | /// </summary> | ||
36 | public sealed class WixActionRow : Row, IComparable | ||
37 | { | ||
38 | private WixActionRowCollection previousActionRows; | ||
39 | private WixActionRowCollection nextActionRows; | ||
40 | |||
41 | /// <summary> | ||
42 | /// Instantiates an ActionRow that belongs to a table. | ||
43 | /// </summary> | ||
44 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
45 | /// <param name="table">Table this Action row belongs to and should get its column definitions from.</param> | ||
46 | public WixActionRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
47 | base(sourceLineNumbers, table) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | /// <summary> | ||
52 | /// Instantiates a standard ActionRow. | ||
53 | /// </summary> | ||
54 | /// <param name="sequenceTable">The sequence table of the standard action.</param> | ||
55 | /// <param name="action">The name of the standard action.</param> | ||
56 | /// <param name="condition">The condition of the standard action.</param> | ||
57 | /// <param name="sequence">The suggested sequence number of the standard action.</param> | ||
58 | private WixActionRow(SequenceTable sequenceTable, string action, string condition, int sequence) : | ||
59 | base(null, WindowsInstallerStandard.GetTableDefinitions()["WixAction"]) | ||
60 | { | ||
61 | this.SequenceTable = sequenceTable; | ||
62 | this.Action = action; | ||
63 | this.Condition = condition; | ||
64 | this.Sequence = sequence; | ||
65 | this.Overridable = true; // all standard actions are overridable by default | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Instantiates an ActionRow by copying data from another ActionRow. | ||
70 | /// </summary> | ||
71 | /// <param name="source">The row the data is copied from.</param> | ||
72 | /// <remarks>The previous and next action collections are not copied.</remarks> | ||
73 | private WixActionRow(WixActionRow source) | ||
74 | : base(source) | ||
75 | { | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Gets or sets the name of the action. | ||
80 | /// </summary> | ||
81 | /// <value>The name of the action.</value> | ||
82 | public string Action | ||
83 | { | ||
84 | get { return (string)this.Fields[1].Data; } | ||
85 | set { this.Fields[1].Data = value; } | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Gets the name of the action this action should be scheduled after. | ||
90 | /// </summary> | ||
91 | /// <value>The name of the action this action should be scheduled after.</value> | ||
92 | public string After | ||
93 | { | ||
94 | get { return (string)this.Fields[5].Data; } | ||
95 | set { this.Fields[5].Data = value; } | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Gets the name of the action this action should be scheduled before. | ||
100 | /// </summary> | ||
101 | /// <value>The name of the action this action should be scheduled before.</value> | ||
102 | public string Before | ||
103 | { | ||
104 | get { return (string)this.Fields[4].Data; } | ||
105 | set { this.Fields[4].Data = value; } | ||
106 | } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets or sets the condition of the action. | ||
110 | /// </summary> | ||
111 | /// <value>The condition of the action.</value> | ||
112 | public string Condition | ||
113 | { | ||
114 | get { return (string)this.Fields[2].Data; } | ||
115 | set { this.Fields[2].Data = value; } | ||
116 | } | ||
117 | |||
118 | /// <summary> | ||
119 | /// Gets or sets whether this action is overridable. | ||
120 | /// </summary> | ||
121 | /// <value>Whether this action is overridable.</value> | ||
122 | public bool Overridable | ||
123 | { | ||
124 | get { return (1 == Convert.ToInt32(this.Fields[6].Data, CultureInfo.InvariantCulture)); } | ||
125 | set { this.Fields[6].Data = (value ? 1 : 0); } | ||
126 | } | ||
127 | |||
128 | /// <summary> | ||
129 | /// Gets or sets the sequence number of this action. | ||
130 | /// </summary> | ||
131 | /// <value>The sequence number of this action.</value> | ||
132 | public int Sequence | ||
133 | { | ||
134 | get { return Convert.ToInt32(this.Fields[3].Data, CultureInfo.InvariantCulture); } | ||
135 | set { this.Fields[3].Data = value; } | ||
136 | } | ||
137 | |||
138 | /// <summary> | ||
139 | /// Gets of sets the sequence table of this action. | ||
140 | /// </summary> | ||
141 | /// <value>The sequence table of this action.</value> | ||
142 | public SequenceTable SequenceTable | ||
143 | { | ||
144 | get { return (SequenceTable)Enum.Parse(typeof(SequenceTable), (string)this.Fields[0].Data); } | ||
145 | set { this.Fields[0].Data = value.ToString(); } | ||
146 | } | ||
147 | |||
148 | /// <summary> | ||
149 | /// Gets the actions that should be scheduled after this action. | ||
150 | /// </summary> | ||
151 | /// <value>The actions that should be scheduled after this action.</value> | ||
152 | public WixActionRowCollection NextActionRows | ||
153 | { | ||
154 | get | ||
155 | { | ||
156 | if (null == this.nextActionRows) | ||
157 | { | ||
158 | this.nextActionRows = new WixActionRowCollection(); | ||
159 | } | ||
160 | |||
161 | return this.nextActionRows; | ||
162 | } | ||
163 | } | ||
164 | |||
165 | /// <summary> | ||
166 | /// Gets the actions that should be scheduled before this action. | ||
167 | /// </summary> | ||
168 | /// <value>The actions that should be scheduled before this action.</value> | ||
169 | public WixActionRowCollection PreviousActionRows | ||
170 | { | ||
171 | get | ||
172 | { | ||
173 | if (null == this.previousActionRows) | ||
174 | { | ||
175 | this.previousActionRows = new WixActionRowCollection(); | ||
176 | } | ||
177 | |||
178 | return this.previousActionRows; | ||
179 | } | ||
180 | } | ||
181 | |||
182 | /// <summary> | ||
183 | /// Creates a clone of the action row. | ||
184 | /// </summary> | ||
185 | /// <returns>A shallow copy of the source object.</returns> | ||
186 | /// <remarks>The previous and next action collections are not copied.</remarks> | ||
187 | public WixActionRow Clone() | ||
188 | { | ||
189 | return new WixActionRow(this); | ||
190 | } | ||
191 | |||
192 | /// <summary> | ||
193 | /// Compares the current instance with another object of the same type. | ||
194 | /// </summary> | ||
195 | /// <param name="obj">Other reference to compare this one to.</param> | ||
196 | /// <returns>Returns less than 0 for less than, 0 for equals, and greater than 0 for greater.</returns> | ||
197 | public int CompareTo(object obj) | ||
198 | { | ||
199 | WixActionRow otherActionRow = (WixActionRow)obj; | ||
200 | |||
201 | return this.Sequence.CompareTo(otherActionRow.Sequence); | ||
202 | } | ||
203 | |||
204 | /// <summary> | ||
205 | /// Parses ActionRows from the Xml reader. | ||
206 | /// </summary> | ||
207 | /// <param name="reader">Xml reader that contains serialized ActionRows.</param> | ||
208 | /// <returns>The parsed ActionRows.</returns> | ||
209 | internal static WixActionRow[] Parse(XmlReader reader) | ||
210 | { | ||
211 | Debug.Assert("action" == reader.LocalName); | ||
212 | |||
213 | string id = null; | ||
214 | string condition = null; | ||
215 | bool empty = reader.IsEmptyElement; | ||
216 | int sequence = int.MinValue; | ||
217 | int sequenceCount = 0; | ||
218 | SequenceTable[] sequenceTables = new SequenceTable[Enum.GetValues(typeof(SequenceTable)).Length]; | ||
219 | |||
220 | while (reader.MoveToNextAttribute()) | ||
221 | { | ||
222 | switch (reader.Name) | ||
223 | { | ||
224 | case "name": | ||
225 | id = reader.Value; | ||
226 | break; | ||
227 | case "AdminExecuteSequence": | ||
228 | if (reader.Value.Equals("yes")) | ||
229 | { | ||
230 | sequenceTables[sequenceCount] = SequenceTable.AdminExecuteSequence; | ||
231 | ++sequenceCount; | ||
232 | } | ||
233 | break; | ||
234 | case "AdminUISequence": | ||
235 | if (reader.Value.Equals("yes")) | ||
236 | { | ||
237 | sequenceTables[sequenceCount] = SequenceTable.AdminUISequence; | ||
238 | ++sequenceCount; | ||
239 | } | ||
240 | break; | ||
241 | case "AdvtExecuteSequence": | ||
242 | if (reader.Value.Equals("yes")) | ||
243 | { | ||
244 | sequenceTables[sequenceCount] = SequenceTable.AdvtExecuteSequence; | ||
245 | ++sequenceCount; | ||
246 | } | ||
247 | break; | ||
248 | case "condition": | ||
249 | condition = reader.Value; | ||
250 | break; | ||
251 | case "InstallExecuteSequence": | ||
252 | if (reader.Value.Equals("yes")) | ||
253 | { | ||
254 | sequenceTables[sequenceCount] = SequenceTable.InstallExecuteSequence; | ||
255 | ++sequenceCount; | ||
256 | } | ||
257 | break; | ||
258 | case "InstallUISequence": | ||
259 | if (reader.Value.Equals("yes")) | ||
260 | { | ||
261 | sequenceTables[sequenceCount] = SequenceTable.InstallUISequence; | ||
262 | ++sequenceCount; | ||
263 | } | ||
264 | break; | ||
265 | case "sequence": | ||
266 | sequence = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture); | ||
267 | break; | ||
268 | } | ||
269 | } | ||
270 | |||
271 | if (null == id) | ||
272 | { | ||
273 | throw new XmlException(); | ||
274 | } | ||
275 | |||
276 | if (int.MinValue == sequence) | ||
277 | { | ||
278 | throw new XmlException(); | ||
279 | } | ||
280 | else if (1 > sequence) | ||
281 | { | ||
282 | throw new XmlException(); | ||
283 | } | ||
284 | |||
285 | if (0 == sequenceCount) | ||
286 | { | ||
287 | throw new XmlException(); | ||
288 | } | ||
289 | |||
290 | if (!empty && reader.Read() && XmlNodeType.EndElement != reader.MoveToContent()) | ||
291 | { | ||
292 | throw new XmlException(); | ||
293 | } | ||
294 | |||
295 | // create the actions | ||
296 | WixActionRow[] actionRows = new WixActionRow[sequenceCount]; | ||
297 | for (int i = 0; i < sequenceCount; i++) | ||
298 | { | ||
299 | WixActionRow actionRow = new WixActionRow(sequenceTables[i], id, condition, sequence); | ||
300 | actionRows[i] = actionRow; | ||
301 | } | ||
302 | |||
303 | return actionRows; | ||
304 | } | ||
305 | |||
306 | /// <summary> | ||
307 | /// Determines whether this ActionRow contains the specified ActionRow as a child in its dependency tree. | ||
308 | /// </summary> | ||
309 | /// <param name="actionRow">The possible child ActionRow.</param> | ||
310 | /// <returns>true if the ActionRow is a child of this ActionRow; false otherwise.</returns> | ||
311 | public bool ContainsChildActionRow(WixActionRow actionRow) | ||
312 | { | ||
313 | if (null != this.previousActionRows) | ||
314 | { | ||
315 | if (this.previousActionRows.Contains(actionRow.SequenceTable, actionRow.Action)) | ||
316 | { | ||
317 | return true; | ||
318 | } | ||
319 | } | ||
320 | |||
321 | if (null != this.nextActionRows) | ||
322 | { | ||
323 | if (this.nextActionRows.Contains(actionRow.SequenceTable, actionRow.Action)) | ||
324 | { | ||
325 | return true; | ||
326 | } | ||
327 | } | ||
328 | |||
329 | return false; | ||
330 | } | ||
331 | |||
332 | /// <summary> | ||
333 | /// Get all the actions scheduled before this one in a particular sequence table. | ||
334 | /// </summary> | ||
335 | /// <param name="sequenceTable">The sequence table.</param> | ||
336 | /// <param name="allPreviousActionRows">A RowCollection which will contain all the previous actions.</param> | ||
337 | public void GetAllPreviousActionRows(SequenceTable sequenceTable, IList<WixActionRow> allPreviousActionRows) | ||
338 | { | ||
339 | if (null != this.previousActionRows) | ||
340 | { | ||
341 | foreach (WixActionRow actionRow in this.previousActionRows) | ||
342 | { | ||
343 | if (sequenceTable == actionRow.SequenceTable) | ||
344 | { | ||
345 | actionRow.GetAllPreviousActionRows(sequenceTable, allPreviousActionRows); | ||
346 | allPreviousActionRows.Add(actionRow); | ||
347 | actionRow.GetAllNextActionRows(sequenceTable, allPreviousActionRows); | ||
348 | } | ||
349 | } | ||
350 | } | ||
351 | } | ||
352 | |||
353 | /// <summary> | ||
354 | /// Get all the actions scheduled after this one in a particular sequence table. | ||
355 | /// </summary> | ||
356 | /// <param name="sequenceTable">The sequence table.</param> | ||
357 | /// <param name="allNextActionRows">A RowCollection which will contain all the next actions.</param> | ||
358 | public void GetAllNextActionRows(SequenceTable sequenceTable, IList<WixActionRow> allNextActionRows) | ||
359 | { | ||
360 | if (null != this.nextActionRows) | ||
361 | { | ||
362 | foreach (WixActionRow actionRow in this.nextActionRows) | ||
363 | { | ||
364 | if (sequenceTable == actionRow.SequenceTable) | ||
365 | { | ||
366 | actionRow.GetAllPreviousActionRows(sequenceTable, allNextActionRows); | ||
367 | allNextActionRows.Add(actionRow); | ||
368 | actionRow.GetAllNextActionRows(sequenceTable, allNextActionRows); | ||
369 | } | ||
370 | } | ||
371 | } | ||
372 | } | ||
373 | } | ||
374 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRowCollection.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRowCollection.cs new file mode 100644 index 00000000..513a104f --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixActionRowCollection.cs | |||
@@ -0,0 +1,222 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections; | ||
7 | using System.Diagnostics; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// A collection of action rows sorted by their sequence table and action name. | ||
12 | /// </summary> | ||
13 | public sealed class WixActionRowCollection : ICollection | ||
14 | { | ||
15 | private SortedList collection; | ||
16 | |||
17 | /// <summary> | ||
18 | /// Creates a new action table object. | ||
19 | /// </summary> | ||
20 | public WixActionRowCollection() | ||
21 | { | ||
22 | this.collection = new SortedList(); | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets the number of items in the collection. | ||
27 | /// </summary> | ||
28 | /// <value>Number of items in collection.</value> | ||
29 | public int Count | ||
30 | { | ||
31 | get { return this.collection.Count; } | ||
32 | } | ||
33 | |||
34 | /// <summary> | ||
35 | /// Gets if the collection has been synchronized. | ||
36 | /// </summary> | ||
37 | /// <value>True if the collection has been synchronized.</value> | ||
38 | public bool IsSynchronized | ||
39 | { | ||
40 | get { return this.collection.IsSynchronized; } | ||
41 | } | ||
42 | |||
43 | /// <summary> | ||
44 | /// Gets the object used to synchronize the collection. | ||
45 | /// </summary> | ||
46 | /// <value>Oject used the synchronize the collection.</value> | ||
47 | public object SyncRoot | ||
48 | { | ||
49 | get { return this; } | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Get an ActionRow by its sequence table and action name. | ||
54 | /// </summary> | ||
55 | /// <param name="sequenceTable">The sequence table of the ActionRow.</param> | ||
56 | /// <param name="action">The action name of the ActionRow.</param> | ||
57 | public WixActionRow this[SequenceTable sequenceTable, string action] | ||
58 | { | ||
59 | get { return (WixActionRow)this.collection[GetKey(sequenceTable, action)]; } | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Add an ActionRow to the collection. | ||
64 | /// </summary> | ||
65 | /// <param name="actionRow">The ActionRow to add.</param> | ||
66 | /// <param name="overwrite">true to overwrite an existing ActionRow; false otherwise.</param> | ||
67 | public void Add(WixActionRow actionRow, bool overwrite) | ||
68 | { | ||
69 | string key = GetKey(actionRow.SequenceTable, actionRow.Action); | ||
70 | |||
71 | if (overwrite) | ||
72 | { | ||
73 | this.collection[key] = actionRow; | ||
74 | } | ||
75 | else | ||
76 | { | ||
77 | this.collection.Add(key, actionRow); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | /// <summary> | ||
82 | /// Add an ActionRow to the collection. | ||
83 | /// </summary> | ||
84 | /// <param name="actionRow">The ActionRow to add.</param> | ||
85 | public void Add(WixActionRow actionRow) | ||
86 | { | ||
87 | this.Add(actionRow, false); | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Determines if the collection contains an ActionRow with a specific sequence table and name. | ||
92 | /// </summary> | ||
93 | /// <param name="sequenceTable">The sequence table of the ActionRow.</param> | ||
94 | /// <param name="action">The action name of the ActionRow.</param> | ||
95 | /// <returns>true if the ActionRow was found; false otherwise.</returns> | ||
96 | public bool Contains(SequenceTable sequenceTable, string action) | ||
97 | { | ||
98 | return this.collection.Contains(GetKey(sequenceTable, action)); | ||
99 | } | ||
100 | |||
101 | /// <summary> | ||
102 | /// Copies the collection into an array. | ||
103 | /// </summary> | ||
104 | /// <param name="array">Array to copy the collection into.</param> | ||
105 | /// <param name="index">Index to start copying from.</param> | ||
106 | public void CopyTo(System.Array array, int index) | ||
107 | { | ||
108 | this.collection.Values.CopyTo(array, index); | ||
109 | } | ||
110 | |||
111 | /// <summary> | ||
112 | /// Gets the enumerator for the collection. | ||
113 | /// </summary> | ||
114 | /// <returns>The enumerator for the collection.</returns> | ||
115 | public IEnumerator GetEnumerator() | ||
116 | { | ||
117 | return this.collection.Values.GetEnumerator(); | ||
118 | } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Remove an ActionRow from the collection. | ||
122 | /// </summary> | ||
123 | /// <param name="sequenceTable">The sequence table of the ActionRow.</param> | ||
124 | /// <param name="action">The action name of the ActionRow.</param> | ||
125 | public void Remove(SequenceTable sequenceTable, string action) | ||
126 | { | ||
127 | this.collection.Remove(GetKey(sequenceTable, action)); | ||
128 | } | ||
129 | |||
130 | /// <summary> | ||
131 | /// Load an action table from an XmlReader. | ||
132 | /// </summary> | ||
133 | /// <param name="reader">Reader to get data from.</param> | ||
134 | /// <returns>The ActionRowCollection represented by the xml.</returns> | ||
135 | internal static WixActionRowCollection Load(XmlReader reader) | ||
136 | { | ||
137 | reader.MoveToContent(); | ||
138 | |||
139 | return Parse(reader); | ||
140 | } | ||
141 | |||
142 | /// <summary> | ||
143 | /// Creates a new action table object and populates it from an Xml reader. | ||
144 | /// </summary> | ||
145 | /// <param name="reader">Reader to get data from.</param> | ||
146 | /// <returns>The parsed ActionTable.</returns> | ||
147 | private static WixActionRowCollection Parse(XmlReader reader) | ||
148 | { | ||
149 | if (!reader.LocalName.Equals("actions")) | ||
150 | { | ||
151 | throw new XmlException(); | ||
152 | } | ||
153 | |||
154 | WixActionRowCollection actionRows = new WixActionRowCollection(); | ||
155 | bool empty = reader.IsEmptyElement; | ||
156 | |||
157 | while (reader.MoveToNextAttribute()) | ||
158 | { | ||
159 | } | ||
160 | |||
161 | if (!empty) | ||
162 | { | ||
163 | bool done = false; | ||
164 | |||
165 | // loop through all the fields in a row | ||
166 | while (!done && reader.Read()) | ||
167 | { | ||
168 | switch (reader.NodeType) | ||
169 | { | ||
170 | case XmlNodeType.Element: | ||
171 | switch (reader.LocalName) | ||
172 | { | ||
173 | case "action": | ||
174 | WixActionRow[] parsedActionRows = WixActionRow.Parse(reader); | ||
175 | |||
176 | foreach (WixActionRow actionRow in parsedActionRows) | ||
177 | { | ||
178 | actionRows.Add(actionRow); | ||
179 | } | ||
180 | break; | ||
181 | default: | ||
182 | throw new XmlException(); | ||
183 | } | ||
184 | break; | ||
185 | case XmlNodeType.EndElement: | ||
186 | done = true; | ||
187 | break; | ||
188 | } | ||
189 | } | ||
190 | |||
191 | if (!done) | ||
192 | { | ||
193 | throw new XmlException(); | ||
194 | } | ||
195 | } | ||
196 | |||
197 | return actionRows; | ||
198 | } | ||
199 | |||
200 | /// <summary> | ||
201 | /// Get the key for storing an ActionRow. | ||
202 | /// </summary> | ||
203 | /// <param name="sequenceTable">The sequence table of the ActionRow.</param> | ||
204 | /// <param name="action">The action name of the ActionRow.</param> | ||
205 | /// <returns>The string key.</returns> | ||
206 | private static string GetKey(SequenceTable sequenceTable, string action) | ||
207 | { | ||
208 | return GetKey(sequenceTable.ToString(), action); | ||
209 | } | ||
210 | |||
211 | /// <summary> | ||
212 | /// Get the key for storing an ActionRow. | ||
213 | /// </summary> | ||
214 | /// <param name="sequenceTable">The sequence table of the ActionRow.</param> | ||
215 | /// <param name="action">The action name of the ActionRow.</param> | ||
216 | /// <returns>The string key.</returns> | ||
217 | private static string GetKey(string sequenceTable, string action) | ||
218 | { | ||
219 | return String.Concat(sequenceTable, '/', action); | ||
220 | } | ||
221 | } | ||
222 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs new file mode 100644 index 00000000..c10a39ab --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs | |||
@@ -0,0 +1,79 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | |||
6 | /// <summary> | ||
7 | /// Specialization of a row for the WixApprovedExeForElevation table. | ||
8 | /// </summary> | ||
9 | public class WixApprovedExeForElevationRow : Row | ||
10 | { | ||
11 | /// <summary> | ||
12 | /// Creates an ApprovedExeForElevation row that does not belong to a table. | ||
13 | /// </summary> | ||
14 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
15 | /// <param name="tableDef">TableDefinition this ApprovedExeForElevation row belongs to and should get its column definitions from.</param> | ||
16 | public WixApprovedExeForElevationRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
17 | base(sourceLineNumbers, tableDef) | ||
18 | { | ||
19 | } | ||
20 | |||
21 | /// <summary> | ||
22 | /// Creates an ApprovedExeForElevation row that belongs to a table. | ||
23 | /// </summary> | ||
24 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
25 | /// <param name="table">Table this ApprovedExeForElevation row belongs to and should get its column definitions from.</param> | ||
26 | public WixApprovedExeForElevationRow(SourceLineNumber sourceLineNumbers, Table table) | ||
27 | : base(sourceLineNumbers, table) | ||
28 | { | ||
29 | } | ||
30 | |||
31 | /// <summary> | ||
32 | /// Gets or sets the ApprovedExeForElevation identifier. | ||
33 | /// </summary> | ||
34 | /// <value>The ApprovedExeForElevation identifier.</value> | ||
35 | public string Id | ||
36 | { | ||
37 | get { return (string)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | /// <summary> | ||
42 | /// Gets or sets the Key path. | ||
43 | /// </summary> | ||
44 | /// <value>The Key path.</value> | ||
45 | public string Key | ||
46 | { | ||
47 | get { return (string)this.Fields[1].Data; } | ||
48 | set { this.Fields[1].Data = value; } | ||
49 | } | ||
50 | |||
51 | /// <summary> | ||
52 | /// Gets or sets the Value name. | ||
53 | /// </summary> | ||
54 | /// <value>The Value name.</value> | ||
55 | public string ValueName | ||
56 | { | ||
57 | get { return (string)this.Fields[2].Data; } | ||
58 | set { this.Fields[2].Data = value; } | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Gets or sets the attibutes. | ||
63 | /// </summary> | ||
64 | /// <value>The BundleApprovedExeForElevationAttributes.</value> | ||
65 | public BundleApprovedExeForElevationAttributes Attributes | ||
66 | { | ||
67 | get { return (BundleApprovedExeForElevationAttributes)this.Fields[3].Data; } | ||
68 | set { this.Fields[3].Data = (int)value; } | ||
69 | } | ||
70 | |||
71 | /// <summary> | ||
72 | /// Gets whether this row is 64-bit. | ||
73 | /// </summary> | ||
74 | public bool Win64 | ||
75 | { | ||
76 | get { return BundleApprovedExeForElevationAttributes.Win64 == (this.Attributes & BundleApprovedExeForElevationAttributes.Win64); } | ||
77 | } | ||
78 | } | ||
79 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleCatalogRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleCatalogRow.cs new file mode 100644 index 00000000..05c1e597 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleCatalogRow.cs | |||
@@ -0,0 +1,50 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixCatalog table. | ||
7 | /// </summary> | ||
8 | public sealed class WixBundleCatalogRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a Catalog row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Catalog row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleCatalogRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a Catalog row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Catalog row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleCatalogRow(SourceLineNumber sourceLineNumbers, Table table) | ||
26 | : base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the catalog identifier. | ||
32 | /// </summary> | ||
33 | /// <value>The catalog identifier.</value> | ||
34 | public string Id | ||
35 | { | ||
36 | get { return (string)this.Fields[0].Data; } | ||
37 | set { this.Fields[0].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the payload identifier. | ||
42 | /// </summary> | ||
43 | /// <value>The payload identifier.</value> | ||
44 | public string Payload | ||
45 | { | ||
46 | get { return (string)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | } | ||
50 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleContainerRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleContainerRow.cs new file mode 100644 index 00000000..7b03dcc5 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleContainerRow.cs | |||
@@ -0,0 +1,78 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Container table. | ||
7 | /// </summary> | ||
8 | public class WixBundleContainerRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a ContainerRow row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleContainerRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a ContainerRow row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleContainerRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public string Id | ||
31 | { | ||
32 | get { return (string)this.Fields[0].Data; } | ||
33 | set { this.Fields[0].Data = value; } | ||
34 | } | ||
35 | |||
36 | public string Name | ||
37 | { | ||
38 | get { return (string)this.Fields[1].Data; } | ||
39 | set { this.Fields[1].Data = value; } | ||
40 | } | ||
41 | |||
42 | public ContainerType Type | ||
43 | { | ||
44 | get { return (ContainerType)this.Fields[2].Data; } | ||
45 | set { this.Fields[2].Data = (int)value; } | ||
46 | } | ||
47 | |||
48 | public string DownloadUrl | ||
49 | { | ||
50 | get { return (string)this.Fields[3].Data; } | ||
51 | set { this.Fields[3].Data = value; } | ||
52 | } | ||
53 | |||
54 | public long Size | ||
55 | { | ||
56 | get { return (long)this.Fields[4].Data; } | ||
57 | set { this.Fields[4].Data = value; } | ||
58 | } | ||
59 | |||
60 | public string Hash | ||
61 | { | ||
62 | get { return (string)this.Fields[5].Data; } | ||
63 | set { this.Fields[5].Data = value; } | ||
64 | } | ||
65 | |||
66 | public int AttachedContainerIndex | ||
67 | { | ||
68 | get { return (null == this.Fields[6].Data) ? -1 : (int)this.Fields[6].Data; } | ||
69 | set { this.Fields[6].Data = value; } | ||
70 | } | ||
71 | |||
72 | public string WorkingPath | ||
73 | { | ||
74 | get { return (string)this.Fields[7].Data; } | ||
75 | set { this.Fields[7].Data = value; } | ||
76 | } | ||
77 | } | ||
78 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleExePackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleExePackageRow.cs new file mode 100644 index 00000000..3bf06d49 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleExePackageRow.cs | |||
@@ -0,0 +1,103 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixBundleExePackage table. | ||
9 | /// </summary> | ||
10 | public sealed class WixBundleExePackageRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixBundleExePackage row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundleExePackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixBundleExePackageRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundleExePackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
34 | /// </summary> | ||
35 | public string ChainPackageId | ||
36 | { | ||
37 | get { return (string)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | /// <summary> | ||
42 | /// Gets or sets the raw Exe attributes of a patch. | ||
43 | /// </summary> | ||
44 | public WixBundleExePackageAttributes Attributes | ||
45 | { | ||
46 | get { return (WixBundleExePackageAttributes)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the protcol for the executable package. | ||
52 | /// </summary> | ||
53 | public string DetectCondition | ||
54 | { | ||
55 | get { return (string)this.Fields[2].Data; } | ||
56 | set { this.Fields[2].Data = value; } | ||
57 | } | ||
58 | |||
59 | /// <summary> | ||
60 | /// Gets or sets the install command for the executable package. | ||
61 | /// </summary> | ||
62 | public string InstallCommand | ||
63 | { | ||
64 | get { return (string)this.Fields[3].Data; } | ||
65 | set { this.Fields[3].Data = value; } | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Gets or sets the repair command for the executable package. | ||
70 | /// </summary> | ||
71 | public string RepairCommand | ||
72 | { | ||
73 | get { return (string)this.Fields[4].Data; } | ||
74 | set { this.Fields[4].Data = value; } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Gets or sets the uninstall command for the executable package. | ||
79 | /// </summary> | ||
80 | public string UninstallCommand | ||
81 | { | ||
82 | get { return (string)this.Fields[5].Data; } | ||
83 | set { this.Fields[5].Data = value; } | ||
84 | } | ||
85 | |||
86 | /// <summary> | ||
87 | /// Gets or sets the protcol for the executable package. | ||
88 | /// </summary> | ||
89 | public string ExeProtocol | ||
90 | { | ||
91 | get { return (string)this.Fields[6].Data; } | ||
92 | set { this.Fields[6].Data = value; } | ||
93 | } | ||
94 | |||
95 | /// <summary> | ||
96 | /// Gets whether the executable package is repairable. | ||
97 | /// </summary> | ||
98 | public bool Repairable | ||
99 | { | ||
100 | get { return 0 != (this.Attributes & WixBundleExePackageAttributes.Repairable); } | ||
101 | } | ||
102 | } | ||
103 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiFeatureRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiFeatureRow.cs new file mode 100644 index 00000000..551eae20 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiFeatureRow.cs | |||
@@ -0,0 +1,93 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the MsiFeature table. | ||
7 | /// </summary> | ||
8 | public class WixBundleMsiFeatureRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a MsiFeatureRow row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleMsiFeatureRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a MsiFeatureRow row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleMsiFeatureRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
32 | /// </summary> | ||
33 | public string ChainPackageId | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | public string Name | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | public long Size | ||
46 | { | ||
47 | get { return (long)this.Fields[2].Data; } | ||
48 | set { this.Fields[2].Data = value; } | ||
49 | } | ||
50 | |||
51 | public string Parent | ||
52 | { | ||
53 | get { return (string)this.Fields[3].Data; } | ||
54 | set { this.Fields[3].Data = value; } | ||
55 | } | ||
56 | |||
57 | public string Title | ||
58 | { | ||
59 | get { return (string)this.Fields[4].Data; } | ||
60 | set { this.Fields[4].Data = value; } | ||
61 | } | ||
62 | |||
63 | public string Description | ||
64 | { | ||
65 | get { return (string)this.Fields[5].Data; } | ||
66 | set { this.Fields[5].Data = value; } | ||
67 | } | ||
68 | |||
69 | public int Display | ||
70 | { | ||
71 | get { return (int)this.Fields[6].Data; } | ||
72 | set { this.Fields[6].Data = value; } | ||
73 | } | ||
74 | |||
75 | public int Level | ||
76 | { | ||
77 | get { return (int)this.Fields[7].Data; } | ||
78 | set { this.Fields[7].Data = value; } | ||
79 | } | ||
80 | |||
81 | public string Directory | ||
82 | { | ||
83 | get { return (string)this.Fields[8].Data; } | ||
84 | set { this.Fields[8].Data = value; } | ||
85 | } | ||
86 | |||
87 | public int Attributes | ||
88 | { | ||
89 | get { return (int)this.Fields[9].Data; } | ||
90 | set { this.Fields[9].Data = value; } | ||
91 | } | ||
92 | } | ||
93 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPackageRow.cs new file mode 100644 index 00000000..70d85e26 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPackageRow.cs | |||
@@ -0,0 +1,138 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Globalization; | ||
7 | using WixToolset.Data.Tuples; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Specialization of a row for the WixBundleMsiPackage table. | ||
11 | /// </summary> | ||
12 | public sealed class WixBundleMsiPackageRow : Row | ||
13 | { | ||
14 | /// <summary> | ||
15 | /// Creates a WixBundleMsiPackage row that does not belong to a table. | ||
16 | /// </summary> | ||
17 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
18 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
19 | public WixBundleMsiPackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
20 | base(sourceLineNumbers, tableDef) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | /// <summary> | ||
25 | /// Creates a WixBundleMsiPackageRow row that belongs to a table. | ||
26 | /// </summary> | ||
27 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
28 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
29 | public WixBundleMsiPackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
30 | base(sourceLineNumbers, table) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | /// <summary> | ||
35 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
36 | /// </summary> | ||
37 | public string ChainPackageId | ||
38 | { | ||
39 | get { return (string)this.Fields[0].Data; } | ||
40 | set { this.Fields[0].Data = value; } | ||
41 | } | ||
42 | |||
43 | /// <summary> | ||
44 | /// Gets or sets the raw MSI attributes of a package. | ||
45 | /// </summary> | ||
46 | public WixBundleMsiPackageAttributes Attributes | ||
47 | { | ||
48 | get { return (WixBundleMsiPackageAttributes)this.Fields[1].Data; } | ||
49 | set { this.Fields[1].Data = value; } | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Gets or sets the MSI package's product code. | ||
54 | /// </summary> | ||
55 | public string ProductCode | ||
56 | { | ||
57 | get { return (string)this.Fields[2].Data; } | ||
58 | set { this.Fields[2].Data = value; } | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Gets or sets the MSI package's upgrade code. | ||
63 | /// </summary> | ||
64 | public string UpgradeCode | ||
65 | { | ||
66 | get { return (string)this.Fields[3].Data; } | ||
67 | set { this.Fields[3].Data = value; } | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Gets or sets the product version of the MSI package. | ||
72 | /// </summary> | ||
73 | public string ProductVersion | ||
74 | { | ||
75 | get { return (string)this.Fields[4].Data; } | ||
76 | set { this.Fields[4].Data = value; } | ||
77 | } | ||
78 | |||
79 | /// <summary> | ||
80 | /// Gets or sets the language of the MSI package. | ||
81 | /// </summary> | ||
82 | public int ProductLanguage | ||
83 | { | ||
84 | get { return Convert.ToInt32(this.Fields[5].Data, CultureInfo.InvariantCulture); } | ||
85 | set { this.Fields[5].Data = value; } | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Gets or sets the product name of the MSI package. | ||
90 | /// </summary> | ||
91 | public string ProductName | ||
92 | { | ||
93 | get { return (string)this.Fields[6].Data; } | ||
94 | set { this.Fields[6].Data = value; } | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Gets or sets the MSI package's manufacturer. | ||
99 | /// </summary> | ||
100 | public string Manufacturer | ||
101 | { | ||
102 | get { return (string)this.Fields[7].Data; } | ||
103 | set { this.Fields[7].Data = value; } | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// Gets the display internal UI of a package. | ||
108 | /// </summary> | ||
109 | public bool DisplayInternalUI | ||
110 | { | ||
111 | get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.DisplayInternalUI); } | ||
112 | } | ||
113 | |||
114 | /// <summary> | ||
115 | /// Gets the display internal UI of a package. | ||
116 | /// </summary> | ||
117 | public bool EnableFeatureSelection | ||
118 | { | ||
119 | get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.EnableFeatureSelection); } | ||
120 | } | ||
121 | |||
122 | /// <summary> | ||
123 | /// Gets the display internal UI of a package. | ||
124 | /// </summary> | ||
125 | public bool ForcePerMachine | ||
126 | { | ||
127 | get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine); } | ||
128 | } | ||
129 | |||
130 | /// <summary> | ||
131 | /// Gets the suppress loose file payload generation of a package. | ||
132 | /// </summary> | ||
133 | public bool SuppressLooseFilePayloadGeneration | ||
134 | { | ||
135 | get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.SuppressLooseFilePayloadGeneration); } | ||
136 | } | ||
137 | } | ||
138 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPropertyRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPropertyRow.cs new file mode 100644 index 00000000..524f7929 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsiPropertyRow.cs | |||
@@ -0,0 +1,58 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixBundleMsiProperty table. | ||
7 | /// </summary> | ||
8 | public sealed class WixBundleMsiPropertyRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates an WixBundleMsiProperty row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this WixBundleMsiProperty row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleMsiPropertyRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
16 | base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
22 | /// </summary> | ||
23 | public string ChainPackageId | ||
24 | { | ||
25 | get { return (string)this.Fields[0].Data; } | ||
26 | set { this.Fields[0].Data = value; } | ||
27 | } | ||
28 | |||
29 | /// <summary> | ||
30 | /// Gets and sets the property identity. | ||
31 | /// </summary> | ||
32 | public string Name | ||
33 | { | ||
34 | get { return (string)this.Fields[1].Data; } | ||
35 | set { this.Fields[1].Data = value; } | ||
36 | } | ||
37 | |||
38 | /// <summary> | ||
39 | /// Gets and sets the value for the row. | ||
40 | /// </summary> | ||
41 | /// <value>MsiProperty value for the row.</value> | ||
42 | public string Value | ||
43 | { | ||
44 | get { return (string)this.Fields[2].Data; } | ||
45 | set { this.Fields[2].Data = value; } | ||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets and sets the condition for the row. | ||
50 | /// </summary> | ||
51 | /// <value>MsiProperty condition for the row.</value> | ||
52 | public string Condition | ||
53 | { | ||
54 | get { return (string)this.Fields[3].Data; } | ||
55 | set { this.Fields[3].Data = value; } | ||
56 | } | ||
57 | } | ||
58 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMspPackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMspPackageRow.cs new file mode 100644 index 00000000..053fc915 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMspPackageRow.cs | |||
@@ -0,0 +1,101 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the ChainMspPackage table. | ||
9 | /// </summary> | ||
10 | public sealed class WixBundleMspPackageRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a ChainMspPackage row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundleMspPackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixBundleMspPackage row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundleMspPackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
34 | /// </summary> | ||
35 | public string ChainPackageId | ||
36 | { | ||
37 | get { return (string)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | /// <summary> | ||
42 | /// Gets or sets the raw MSP attributes of a patch. | ||
43 | /// </summary> | ||
44 | public WixBundleMspPackageAttributes Attributes | ||
45 | { | ||
46 | get { return (WixBundleMspPackageAttributes)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the patch code. | ||
52 | /// </summary> | ||
53 | public string PatchCode | ||
54 | { | ||
55 | get { return (string)this.Fields[2].Data; } | ||
56 | set { this.Fields[2].Data = value; } | ||
57 | } | ||
58 | |||
59 | /// <summary> | ||
60 | /// Gets or sets the patch's manufacturer. | ||
61 | /// </summary> | ||
62 | public string Manufacturer | ||
63 | { | ||
64 | get { return (string)this.Fields[3].Data; } | ||
65 | set { this.Fields[3].Data = value; } | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Gets or sets the patch's xml. | ||
70 | /// </summary> | ||
71 | public string PatchXml | ||
72 | { | ||
73 | get { return (string)this.Fields[4].Data; } | ||
74 | set { this.Fields[4].Data = value; } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Gets the display internal UI of a patch. | ||
79 | /// </summary> | ||
80 | public bool DisplayInternalUI | ||
81 | { | ||
82 | get { return 0 != (this.Attributes & WixBundleMspPackageAttributes.DisplayInternalUI); } | ||
83 | } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Gets whether to slipstream the patch. | ||
87 | /// </summary> | ||
88 | public bool Slipstream | ||
89 | { | ||
90 | get { return 0 != (this.Attributes & WixBundleMspPackageAttributes.Slipstream); } | ||
91 | } | ||
92 | |||
93 | /// <summary> | ||
94 | /// Gets whether the patch targets an unspecified number of packages. | ||
95 | /// </summary> | ||
96 | public bool TargetUnspecified | ||
97 | { | ||
98 | get { return 0 != (this.Attributes & WixBundleMspPackageAttributes.TargetUnspecified); } | ||
99 | } | ||
100 | } | ||
101 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsuPackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsuPackageRow.cs new file mode 100644 index 00000000..0df635c2 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleMsuPackageRow.cs | |||
@@ -0,0 +1,57 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixBundleMsuPackage table. | ||
7 | /// </summary> | ||
8 | public sealed class WixBundleMsuPackageRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixBundleMsuPackage row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleMsuPackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a WixBundleMsuPackage row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleMsuPackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
32 | /// </summary> | ||
33 | public string ChainPackageId | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Gets or sets the detection condition the package. | ||
41 | /// </summary> | ||
42 | public string DetectCondition | ||
43 | { | ||
44 | get { return (string)this.Fields[1].Data; } | ||
45 | set { this.Fields[1].Data = value; } | ||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets or sets the KB of the package. | ||
50 | /// </summary> | ||
51 | public string MsuKB | ||
52 | { | ||
53 | get { return (string)this.Fields[2].Data; } | ||
54 | set { this.Fields[2].Data = value; } | ||
55 | } | ||
56 | } | ||
57 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageCommandLineRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageCommandLineRow.cs new file mode 100644 index 00000000..eba647d5 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageCommandLineRow.cs | |||
@@ -0,0 +1,82 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixBundlePackageCommandLine table. | ||
9 | /// </summary> | ||
10 | public class WixBundlePackageCommandLineRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixBundlePackageCommandLineRow row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this WixBundlePackageCommandLineRow row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundlePackageCommandLineRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates an WixBundlePackageCommandLineRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this WixBundlePackageCommandLineRow row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundlePackageCommandLineRow(SourceLineNumber sourceLineNumbers, Table table) | ||
28 | : base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the package identifier. | ||
34 | /// </summary> | ||
35 | /// <value>The package identifier.</value> | ||
36 | public string ChainPackageId | ||
37 | { | ||
38 | get { return (string)this.Fields[0].Data; } | ||
39 | set { this.Fields[0].Data = value; } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the command-line argument for installation. | ||
44 | /// </summary> | ||
45 | /// <value>The command-line argument.</value> | ||
46 | public string InstallArgument | ||
47 | { | ||
48 | get { return (string)this.Fields[1].Data; } | ||
49 | set { this.Fields[1].Data = value; } | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Gets or sets the command-line argument for uninstallation. | ||
54 | /// </summary> | ||
55 | /// <value>The command-line argument.</value> | ||
56 | public string UninstallArgument | ||
57 | { | ||
58 | get { return (string)this.Fields[2].Data; } | ||
59 | set { this.Fields[2].Data = value; } | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Gets or sets the command-line argument for repair. | ||
64 | /// </summary> | ||
65 | /// <value>The command-line argument.</value> | ||
66 | public string RepairArgument | ||
67 | { | ||
68 | get { return (string)this.Fields[3].Data; } | ||
69 | set { this.Fields[3].Data = value; } | ||
70 | } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Gets or sets the condition. | ||
74 | /// </summary> | ||
75 | /// <value>The condition.</value> | ||
76 | public string Condition | ||
77 | { | ||
78 | get { return (string)this.Fields[4].Data; } | ||
79 | set { this.Fields[4].Data = value; } | ||
80 | } | ||
81 | } | ||
82 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs new file mode 100644 index 00000000..2beed8da --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs | |||
@@ -0,0 +1,53 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the ExitCode table. | ||
9 | /// </summary> | ||
10 | public class WixBundlePackageExitCodeRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a ExitCodeRow row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundlePackageExitCodeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a ExitCodeRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundlePackageExitCodeRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
34 | /// </summary> | ||
35 | public string ChainPackageId | ||
36 | { | ||
37 | get { return (string)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | public int? Code | ||
42 | { | ||
43 | get { return (null == this.Fields[1].Data) ? (int?)null : (int?)this.Fields[1].Data; } | ||
44 | set { this.Fields[1].Data = value; } | ||
45 | } | ||
46 | |||
47 | public ExitCodeBehaviorType Behavior | ||
48 | { | ||
49 | get { return (ExitCodeBehaviorType)this.Fields[2].Data; } | ||
50 | set { this.Fields[2].Data = (int)value; } | ||
51 | } | ||
52 | } | ||
53 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageRow.cs new file mode 100644 index 00000000..973c43b9 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePackageRow.cs | |||
@@ -0,0 +1,228 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixBundlePackage table. | ||
9 | /// </summary> | ||
10 | public sealed class WixBundlePackageRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixBundlePackage row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundlePackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixBundlePackage row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundlePackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the foreign key to the WixChainItem. | ||
34 | /// </summary> | ||
35 | public string WixChainItemId | ||
36 | { | ||
37 | get { return (string)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | /// <summary> | ||
42 | /// Gets or sets the item type. | ||
43 | /// </summary> | ||
44 | public WixBundlePackageType Type | ||
45 | { | ||
46 | get { return (WixBundlePackageType)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = (int)value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the indentifier of the package's payload. | ||
52 | /// </summary> | ||
53 | public string PackagePayload | ||
54 | { | ||
55 | get { return (string)this.Fields[2].Data; } | ||
56 | set { this.Fields[2].Data = value; } | ||
57 | } | ||
58 | |||
59 | /// <summary> | ||
60 | /// Gets or sets the raw attributes of a package. | ||
61 | /// </summary> | ||
62 | public WixBundlePackageAttributes Attributes | ||
63 | { | ||
64 | get { return (WixBundlePackageAttributes)this.Fields[3].Data; } | ||
65 | set { this.Fields[3].Data = value; } | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Gets or sets the install condition of the package. | ||
70 | /// </summary> | ||
71 | public string InstallCondition | ||
72 | { | ||
73 | get { return (string)this.Fields[4].Data; } | ||
74 | set { this.Fields[4].Data = value; } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Gets or sets the language of the package. | ||
79 | /// </summary> | ||
80 | public YesNoAlwaysType Cache | ||
81 | { | ||
82 | get { return (null == this.Fields[5].Data) ? YesNoAlwaysType.NotSet : (YesNoAlwaysType)this.Fields[5].Data; } | ||
83 | set { this.Fields[5].Data = (int)value; } | ||
84 | } | ||
85 | |||
86 | /// <summary> | ||
87 | /// Gets or sets the indentifier of the package's cache. | ||
88 | /// </summary> | ||
89 | public string CacheId | ||
90 | { | ||
91 | get { return (string)this.Fields[6].Data; } | ||
92 | set { this.Fields[6].Data = value; } | ||
93 | } | ||
94 | |||
95 | /// <summary> | ||
96 | /// Gets or sets whether the package is vital. | ||
97 | /// </summary> | ||
98 | public YesNoType Vital | ||
99 | { | ||
100 | get { return (null == this.Fields[7].Data) ? YesNoType.NotSet : (YesNoType)this.Fields[7].Data; } | ||
101 | set { this.Fields[7].Data = (int)value; } | ||
102 | } | ||
103 | |||
104 | /// <summary> | ||
105 | /// Gets or sets whether the package is per-machine. | ||
106 | /// </summary> | ||
107 | public YesNoDefaultType PerMachine | ||
108 | { | ||
109 | get { return (null == this.Fields[8].Data) ? YesNoDefaultType.NotSet : (YesNoDefaultType)this.Fields[8].Data; } | ||
110 | set { this.Fields[8].Data = (int)value; } | ||
111 | } | ||
112 | |||
113 | /// <summary> | ||
114 | /// Gets or sets the variable that points to the log for the package. | ||
115 | /// </summary> | ||
116 | public string LogPathVariable | ||
117 | { | ||
118 | get { return (string)this.Fields[9].Data; } | ||
119 | set { this.Fields[9].Data = value; } | ||
120 | } | ||
121 | |||
122 | /// <summary> | ||
123 | /// Gets or sets the variable that points to the rollback log for the package. | ||
124 | /// </summary> | ||
125 | public string RollbackLogPathVariable | ||
126 | { | ||
127 | get { return (string)this.Fields[10].Data; } | ||
128 | set { this.Fields[10].Data = value; } | ||
129 | } | ||
130 | |||
131 | /// <summary> | ||
132 | /// Gets or sets the size of the package. | ||
133 | /// </summary> | ||
134 | public long Size | ||
135 | { | ||
136 | get { return (long)this.Fields[11].Data; } | ||
137 | set { this.Fields[11].Data = value; } | ||
138 | } | ||
139 | |||
140 | /// <summary> | ||
141 | /// Gets or sets the install size of the package. | ||
142 | /// </summary> | ||
143 | public long? InstallSize | ||
144 | { | ||
145 | get { return (long?)this.Fields[12].Data; } | ||
146 | set { this.Fields[12].Data = value; } | ||
147 | } | ||
148 | |||
149 | /// <summary> | ||
150 | /// Gets or sets the version of the package. | ||
151 | /// </summary> | ||
152 | public string Version | ||
153 | { | ||
154 | get { return (string)this.Fields[13].Data; } | ||
155 | set { this.Fields[13].Data = value; } | ||
156 | } | ||
157 | |||
158 | /// <summary> | ||
159 | /// Gets or sets the language of the package. | ||
160 | /// </summary> | ||
161 | public int Language | ||
162 | { | ||
163 | get { return (int)this.Fields[14].Data; } | ||
164 | set { this.Fields[14].Data = value; } | ||
165 | } | ||
166 | |||
167 | /// <summary> | ||
168 | /// Gets or sets the display name of the package. | ||
169 | /// </summary> | ||
170 | public string DisplayName | ||
171 | { | ||
172 | get { return (string)this.Fields[15].Data; } | ||
173 | set { this.Fields[15].Data = value; } | ||
174 | } | ||
175 | |||
176 | /// <summary> | ||
177 | /// Gets or sets the description of the package. | ||
178 | /// </summary> | ||
179 | public string Description | ||
180 | { | ||
181 | get { return (string)this.Fields[16].Data; } | ||
182 | set { this.Fields[16].Data = value; } | ||
183 | } | ||
184 | |||
185 | /// <summary> | ||
186 | /// Gets or sets the rollback boundary identifier for the package. | ||
187 | /// </summary> | ||
188 | public string RollbackBoundary | ||
189 | { | ||
190 | get { return (string)this.Fields[17].Data; } | ||
191 | set { this.Fields[17].Data = value; } | ||
192 | } | ||
193 | |||
194 | /// <summary> | ||
195 | /// Gets or sets the backward rollback boundary identifier for the package. | ||
196 | /// </summary> | ||
197 | public string RollbackBoundaryBackward | ||
198 | { | ||
199 | get { return (string)this.Fields[18].Data; } | ||
200 | set { this.Fields[18].Data = value; } | ||
201 | } | ||
202 | |||
203 | /// <summary> | ||
204 | /// Gets or sets whether the package is x64. | ||
205 | /// </summary> | ||
206 | public YesNoType x64 | ||
207 | { | ||
208 | get { return (null == this.Fields[19].Data) ? YesNoType.NotSet : (YesNoType)this.Fields[19].Data; } | ||
209 | set { this.Fields[19].Data = (int)value; } | ||
210 | } | ||
211 | |||
212 | /// <summary> | ||
213 | /// Gets whether the package is permanent. | ||
214 | /// </summary> | ||
215 | public bool Permanent | ||
216 | { | ||
217 | get { return 0 != (this.Attributes & WixBundlePackageAttributes.Permanent); } | ||
218 | } | ||
219 | |||
220 | /// <summary> | ||
221 | /// Gets whether the package is visible. | ||
222 | /// </summary> | ||
223 | public bool Visible | ||
224 | { | ||
225 | get { return 0 != (this.Attributes & WixBundlePackageAttributes.Visible); } | ||
226 | } | ||
227 | } | ||
228 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs new file mode 100644 index 00000000..e25f4a55 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs | |||
@@ -0,0 +1,81 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Text; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Attributes for the PatchTargetCode table. | ||
11 | /// </summary> | ||
12 | [Flags] | ||
13 | public enum WixBundlePatchTargetCodeAttributes : int | ||
14 | { | ||
15 | None = 0, | ||
16 | |||
17 | /// <summary> | ||
18 | /// The transform targets a specific ProductCode. | ||
19 | /// </summary> | ||
20 | TargetsProductCode = 1, | ||
21 | |||
22 | /// <summary> | ||
23 | /// The transform targets a specific UpgradeCode. | ||
24 | /// </summary> | ||
25 | TargetsUpgradeCode = 2, | ||
26 | } | ||
27 | |||
28 | /// <summary> | ||
29 | /// Specialization of a row for the PatchTargetCode table. | ||
30 | /// </summary> | ||
31 | public class WixBundlePatchTargetCodeRow : Row | ||
32 | { | ||
33 | /// <summary> | ||
34 | /// Creates a PatchTargetCodeRow row that does not belong to a table. | ||
35 | /// </summary> | ||
36 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
37 | /// <param name="tableDef">TableDefinition this PatchTargetCode row belongs to and should get its column definitions from.</param> | ||
38 | public WixBundlePatchTargetCodeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
39 | base(sourceLineNumbers, tableDef) | ||
40 | { | ||
41 | } | ||
42 | |||
43 | /// <summary> | ||
44 | /// Creates a PatchTargetCodeRow row that belongs to a table. | ||
45 | /// </summary> | ||
46 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
47 | /// <param name="table">Table this PatchTargetCode row belongs to and should get its column definitions from.</param> | ||
48 | public WixBundlePatchTargetCodeRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
49 | base(sourceLineNumbers, table) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public string MspPackageId | ||
54 | { | ||
55 | get { return (string)this.Fields[0].Data; } | ||
56 | set { this.Fields[0].Data = value; } | ||
57 | } | ||
58 | |||
59 | public string TargetCode | ||
60 | { | ||
61 | get { return (string)this.Fields[1].Data; } | ||
62 | set { this.Fields[1].Data = value; } | ||
63 | } | ||
64 | |||
65 | public WixBundlePatchTargetCodeAttributes Attributes | ||
66 | { | ||
67 | get { return (WixBundlePatchTargetCodeAttributes)this.Fields[2].Data; } | ||
68 | set { this.Fields[2].Data = (int)value; } | ||
69 | } | ||
70 | |||
71 | public bool TargetsProductCode | ||
72 | { | ||
73 | get { return 0 != (WixBundlePatchTargetCodeAttributes.TargetsProductCode & this.Attributes); } | ||
74 | } | ||
75 | |||
76 | public bool TargetsUpgradeCode | ||
77 | { | ||
78 | get { return 0 != (WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode & this.Attributes); } | ||
79 | } | ||
80 | } | ||
81 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePayloadRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePayloadRow.cs new file mode 100644 index 00000000..8aac8aa0 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundlePayloadRow.cs | |||
@@ -0,0 +1,185 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Specialization of a row for the PayloadInfo table. | ||
10 | /// </summary> | ||
11 | public class WixBundlePayloadRow : Row | ||
12 | { | ||
13 | /// <summary> | ||
14 | /// Creates a PayloadRow row that does not belong to a table. | ||
15 | /// </summary> | ||
16 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
17 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
18 | public WixBundlePayloadRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
19 | base(sourceLineNumbers, tableDef) | ||
20 | { | ||
21 | } | ||
22 | |||
23 | /// <summary> | ||
24 | /// Creates a PayloadRow row that belongs to a table. | ||
25 | /// </summary> | ||
26 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
27 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
28 | public WixBundlePayloadRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
29 | base(sourceLineNumbers, table) | ||
30 | { | ||
31 | } | ||
32 | |||
33 | public string Id | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | public string Name | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | public string SourceFile | ||
46 | { | ||
47 | get { return (string)this.Fields[2].Data; } | ||
48 | set { this.Fields[2].Data = value; } | ||
49 | } | ||
50 | |||
51 | public string DownloadUrl | ||
52 | { | ||
53 | get { return (string)this.Fields[3].Data; } | ||
54 | set { this.Fields[3].Data = value; } | ||
55 | } | ||
56 | |||
57 | public YesNoDefaultType Compressed | ||
58 | { | ||
59 | get { return (YesNoDefaultType)this.Fields[4].Data; } | ||
60 | set { this.Fields[4].Data = (int)value; } | ||
61 | } | ||
62 | |||
63 | public string UnresolvedSourceFile | ||
64 | { | ||
65 | get { return (string)this.Fields[5].Data; } | ||
66 | set { this.Fields[5].Data = value; } | ||
67 | } | ||
68 | |||
69 | public string DisplayName | ||
70 | { | ||
71 | get { return (string)this.Fields[6].Data; } | ||
72 | set { this.Fields[6].Data = value; } | ||
73 | } | ||
74 | |||
75 | public string Description | ||
76 | { | ||
77 | get { return (string)this.Fields[7].Data; } | ||
78 | set { this.Fields[7].Data = value; } | ||
79 | } | ||
80 | |||
81 | public bool EnableSignatureValidation | ||
82 | { | ||
83 | get { return (null != this.Fields[8].Data) && (1 == (int)this.Fields[8].Data); } | ||
84 | set { this.Fields[8].Data = value ? 1 : 0; } | ||
85 | } | ||
86 | |||
87 | public int FileSize | ||
88 | { | ||
89 | get { return (int)this.Fields[9].Data; } | ||
90 | set { this.Fields[9].Data = value; } | ||
91 | } | ||
92 | |||
93 | public string Version | ||
94 | { | ||
95 | get { return (string)this.Fields[10].Data; } | ||
96 | set { this.Fields[10].Data = value; } | ||
97 | } | ||
98 | |||
99 | public string Hash | ||
100 | { | ||
101 | get { return (string)this.Fields[11].Data; } | ||
102 | set { this.Fields[11].Data = value; } | ||
103 | } | ||
104 | |||
105 | public string PublicKey | ||
106 | { | ||
107 | get { return (string)this.Fields[12].Data; } | ||
108 | set { this.Fields[12].Data = value; } | ||
109 | } | ||
110 | |||
111 | public string Thumbprint | ||
112 | { | ||
113 | get { return (string)this.Fields[13].Data; } | ||
114 | set { this.Fields[13].Data = value; } | ||
115 | } | ||
116 | |||
117 | public string Catalog | ||
118 | { | ||
119 | get { return (string)this.Fields[14].Data; } | ||
120 | set { this.Fields[14].Data = value; } | ||
121 | } | ||
122 | |||
123 | public string Container | ||
124 | { | ||
125 | get { return (string)this.Fields[15].Data; } | ||
126 | set { this.Fields[15].Data = value; } | ||
127 | } | ||
128 | |||
129 | public string Package | ||
130 | { | ||
131 | get { return (string)this.Fields[16].Data; } | ||
132 | set { this.Fields[16].Data = value; } | ||
133 | } | ||
134 | |||
135 | public bool ContentFile | ||
136 | { | ||
137 | get { return (null != this.Fields[17].Data) && (1 == (int)this.Fields[17].Data); } | ||
138 | set { this.Fields[17].Data = value ? 1 : 0; } | ||
139 | } | ||
140 | |||
141 | public string EmbeddedId | ||
142 | { | ||
143 | get { return (string)this.Fields[18].Data; } | ||
144 | set { this.Fields[18].Data = value; } | ||
145 | } | ||
146 | |||
147 | public bool LayoutOnly | ||
148 | { | ||
149 | get { return (null != this.Fields[19].Data) && (1 == (int)this.Fields[19].Data); } | ||
150 | set { this.Fields[19].Data = value ? 1 : 0; } | ||
151 | } | ||
152 | |||
153 | public PackagingType Packaging | ||
154 | { | ||
155 | get | ||
156 | { | ||
157 | object data = this.Fields[20].Data; | ||
158 | return (null == data) ? PackagingType.Unknown : (PackagingType)data; | ||
159 | } | ||
160 | |||
161 | set | ||
162 | { | ||
163 | if (PackagingType.Unknown == value) | ||
164 | { | ||
165 | this.Fields[20].Data = null; | ||
166 | } | ||
167 | else | ||
168 | { | ||
169 | this.Fields[20].Data = (int)value; | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | |||
174 | public string ParentPackagePayload | ||
175 | { | ||
176 | get { return (string)this.Fields[21].Data; } | ||
177 | set { this.Fields[21].Data = value; } | ||
178 | } | ||
179 | |||
180 | public string FullFileName | ||
181 | { | ||
182 | get { return String.IsNullOrEmpty(this.SourceFile) ? String.Empty : Path.GetFullPath(this.SourceFile); } | ||
183 | } | ||
184 | } | ||
185 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRelatedPackageRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRelatedPackageRow.cs new file mode 100644 index 00000000..ea9ff99e --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRelatedPackageRow.cs | |||
@@ -0,0 +1,87 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the RelatedPackage table. | ||
7 | /// </summary> | ||
8 | public class WixBundleRelatedPackageRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a RelatedPackageRow row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleRelatedPackageRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a RelatedPackageRow row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleRelatedPackageRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
32 | /// </summary> | ||
33 | public string ChainPackageId | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | public string Id | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | public string MinVersion | ||
46 | { | ||
47 | get { return (string)this.Fields[2].Data; } | ||
48 | set { this.Fields[2].Data = value; } | ||
49 | } | ||
50 | |||
51 | public string MaxVersion | ||
52 | { | ||
53 | get { return (string)this.Fields[3].Data; } | ||
54 | set { this.Fields[3].Data = value; } | ||
55 | } | ||
56 | |||
57 | public string Languages | ||
58 | { | ||
59 | get { return (string)this.Fields[4].Data; } | ||
60 | set { this.Fields[4].Data = value; } | ||
61 | } | ||
62 | |||
63 | public bool MinInclusive | ||
64 | { | ||
65 | get { return 1 == (int)this.Fields[5].Data; } | ||
66 | set { this.Fields[5].Data = value ? 1 : 0; } | ||
67 | } | ||
68 | |||
69 | public bool MaxInclusive | ||
70 | { | ||
71 | get { return 1 == (int)this.Fields[6].Data; } | ||
72 | set { this.Fields[6].Data = value ? 1 : 0; } | ||
73 | } | ||
74 | |||
75 | public bool LangInclusive | ||
76 | { | ||
77 | get { return 1 == (int)this.Fields[7].Data; } | ||
78 | set { this.Fields[7].Data = value ? 1 : 0; } | ||
79 | } | ||
80 | |||
81 | public bool OnlyDetect | ||
82 | { | ||
83 | get { return 1 == (int)this.Fields[8].Data; } | ||
84 | set { this.Fields[8].Data = value ? 1 : 0; } | ||
85 | } | ||
86 | } | ||
87 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRollbackBoundaryRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRollbackBoundaryRow.cs new file mode 100644 index 00000000..d0a994c0 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRollbackBoundaryRow.cs | |||
@@ -0,0 +1,59 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixBundleRollbackBoundary table. | ||
7 | /// </summary> | ||
8 | public sealed class WixBundleRollbackBoundaryRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixBundleRollbackBoundary row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleRollbackBoundaryRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a RollbackBoundaryRow row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleRollbackBoundaryRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
32 | /// </summary> | ||
33 | public string ChainPackageId | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Gets or sets whether the package is vital. | ||
41 | /// </summary> | ||
42 | /// <value>Vitality of the package.</value> | ||
43 | public YesNoType Vital | ||
44 | { | ||
45 | get { return (null == this.Fields[1].Data) ? YesNoType.NotSet : (YesNoType)this.Fields[1].Data; } | ||
46 | set { this.Fields[1].Data = (int)value; } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets or sets whether the rollback-boundary should be installed as an MSI transaction. | ||
51 | /// </summary> | ||
52 | /// <value>Vitality of the package.</value> | ||
53 | public YesNoType Transaction | ||
54 | { | ||
55 | get { return (null == this.Fields[2].Data) ? YesNoType.NotSet : (YesNoType)this.Fields[2].Data; } | ||
56 | set { this.Fields[2].Data = (int)value; } | ||
57 | } | ||
58 | } | ||
59 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRow.cs new file mode 100644 index 00000000..4c96d6cc --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleRow.cs | |||
@@ -0,0 +1,228 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Bundle info for binding Bundles. | ||
9 | /// </summary> | ||
10 | public class WixBundleRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixBundleRow row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this WixBundleRow row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundleRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixBundleRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this WixBundleRow row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundleRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public string Version | ||
33 | { | ||
34 | get { return (string)this.Fields[0].Data; } | ||
35 | set { this.Fields[0].Data = value; } | ||
36 | } | ||
37 | |||
38 | public string Copyright | ||
39 | { | ||
40 | get { return (string)this.Fields[1].Data; } | ||
41 | set { this.Fields[1].Data = value; } | ||
42 | } | ||
43 | |||
44 | public string Name | ||
45 | { | ||
46 | get { return (string)this.Fields[2].Data; } | ||
47 | set { this.Fields[2].Data = value; } | ||
48 | } | ||
49 | |||
50 | public string AboutUrl | ||
51 | { | ||
52 | get { return (string)this.Fields[3].Data; } | ||
53 | set { this.Fields[3].Data = value; } | ||
54 | } | ||
55 | |||
56 | public int DisableModify | ||
57 | { | ||
58 | get { return (null == this.Fields[4].Data) ? 0 : (int)this.Fields[4].Data; } | ||
59 | set { this.Fields[4].Data = value; } | ||
60 | } | ||
61 | |||
62 | public bool DisableRemove | ||
63 | { | ||
64 | get { return (null != this.Fields[5].Data && 0 != (int)this.Fields[5].Data); } | ||
65 | set { this.Fields[5].Data = value ? 1 : 0; } | ||
66 | } | ||
67 | |||
68 | // There is no 6. It used to be DisableRepair. | ||
69 | |||
70 | public string HelpTelephone | ||
71 | { | ||
72 | get { return (string)this.Fields[7].Data; } | ||
73 | set { this.Fields[7].Data = value; } | ||
74 | } | ||
75 | |||
76 | public string HelpLink | ||
77 | { | ||
78 | get { return (string)this.Fields[8].Data; } | ||
79 | set { this.Fields[8].Data = value; } | ||
80 | } | ||
81 | |||
82 | public string Publisher | ||
83 | { | ||
84 | get { return (string)this.Fields[9].Data; } | ||
85 | set { this.Fields[9].Data = value; } | ||
86 | } | ||
87 | |||
88 | public string UpdateUrl | ||
89 | { | ||
90 | get { return (string)this.Fields[10].Data; } | ||
91 | set { this.Fields[10].Data = value; } | ||
92 | } | ||
93 | |||
94 | public YesNoDefaultType Compressed | ||
95 | { | ||
96 | get { return (null == this.Fields[11].Data) ? YesNoDefaultType.Default : (0 == (int)this.Fields[11].Data) ? YesNoDefaultType.No : YesNoDefaultType.Yes; } | ||
97 | set { this.Fields[11].Data = (int)value; } | ||
98 | } | ||
99 | |||
100 | public PackagingType DefaultPackagingType | ||
101 | { | ||
102 | get { return (YesNoDefaultType.No == this.Compressed) ? PackagingType.External : PackagingType.Embedded; } | ||
103 | } | ||
104 | |||
105 | public string LogPathPrefixExtension | ||
106 | { | ||
107 | get { return (string)this.Fields[12].Data ?? String.Empty; } | ||
108 | set { this.Fields[12].Data = value; } | ||
109 | } | ||
110 | |||
111 | public string LogPathVariable | ||
112 | { | ||
113 | get | ||
114 | { | ||
115 | string[] logVariableAndPrefixExtension = this.LogPathPrefixExtension.Split(':'); | ||
116 | return logVariableAndPrefixExtension[0]; | ||
117 | } | ||
118 | } | ||
119 | |||
120 | public string LogPrefix | ||
121 | { | ||
122 | get | ||
123 | { | ||
124 | string[] logVariableAndPrefixExtension = this.LogPathPrefixExtension.Split(':'); | ||
125 | if (2 > logVariableAndPrefixExtension.Length) | ||
126 | { | ||
127 | return String.Empty; | ||
128 | } | ||
129 | string logPrefixAndExtension = logVariableAndPrefixExtension[1]; | ||
130 | int extensionIndex = logPrefixAndExtension.LastIndexOf('.'); | ||
131 | return logPrefixAndExtension.Substring(0, extensionIndex); | ||
132 | } | ||
133 | } | ||
134 | |||
135 | public string LogExtension | ||
136 | { | ||
137 | get | ||
138 | { | ||
139 | string[] logVariableAndPrefixExtension = this.LogPathPrefixExtension.Split(':'); | ||
140 | if (2 > logVariableAndPrefixExtension.Length) | ||
141 | { | ||
142 | return String.Empty; | ||
143 | } | ||
144 | string logPrefixAndExtension = logVariableAndPrefixExtension[1]; | ||
145 | int extensionIndex = logPrefixAndExtension.LastIndexOf('.'); | ||
146 | return logPrefixAndExtension.Substring(extensionIndex + 1); | ||
147 | } | ||
148 | } | ||
149 | |||
150 | public string IconPath | ||
151 | { | ||
152 | get { return (string)this.Fields[13].Data; } | ||
153 | set { this.Fields[13].Data = value; } | ||
154 | } | ||
155 | |||
156 | public string SplashScreenBitmapPath | ||
157 | { | ||
158 | get { return (string)this.Fields[14].Data; } | ||
159 | set { this.Fields[14].Data = value; } | ||
160 | } | ||
161 | |||
162 | public string Condition | ||
163 | { | ||
164 | get { return (string)this.Fields[15].Data; } | ||
165 | set { this.Fields[15].Data = value; } | ||
166 | } | ||
167 | |||
168 | public string Tag | ||
169 | { | ||
170 | get { return (string)this.Fields[16].Data; } | ||
171 | set { this.Fields[16].Data = value; } | ||
172 | } | ||
173 | |||
174 | public Platform Platform | ||
175 | { | ||
176 | get { return (Platform)Enum.Parse(typeof(Platform), (string)this.Fields[17].Data); } | ||
177 | set { this.Fields[17].Data = value.ToString(); } | ||
178 | } | ||
179 | |||
180 | public string ParentName | ||
181 | { | ||
182 | get { return (string)this.Fields[18].Data; } | ||
183 | set { this.Fields[18].Data = value; } | ||
184 | } | ||
185 | |||
186 | public string UpgradeCode | ||
187 | { | ||
188 | get { return (string)this.Fields[19].Data; } | ||
189 | set { this.Fields[19].Data = value; } | ||
190 | } | ||
191 | |||
192 | public Guid BundleId | ||
193 | { | ||
194 | get | ||
195 | { | ||
196 | if (null == this.Fields[20].Data) | ||
197 | { | ||
198 | this.Fields[20].Data = Guid.NewGuid().ToString("B"); | ||
199 | } | ||
200 | |||
201 | return new Guid((string)this.Fields[20].Data); | ||
202 | } | ||
203 | |||
204 | set { this.Fields[20].Data = value.ToString(); } | ||
205 | } | ||
206 | |||
207 | public string ProviderKey | ||
208 | { | ||
209 | get | ||
210 | { | ||
211 | if (null == this.Fields[21].Data) | ||
212 | { | ||
213 | this.Fields[21].Data = this.BundleId.ToString("B"); | ||
214 | } | ||
215 | |||
216 | return (string)this.Fields[21].Data; | ||
217 | } | ||
218 | |||
219 | set { this.Fields[21].Data = value; } | ||
220 | } | ||
221 | |||
222 | public bool PerMachine | ||
223 | { | ||
224 | get { return (null != this.Fields[22].Data && 0 != (int)this.Fields[22].Data); } | ||
225 | set { this.Fields[22].Data = value ? 1 : 0; } | ||
226 | } | ||
227 | } | ||
228 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleSlipstreamMspRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleSlipstreamMspRow.cs new file mode 100644 index 00000000..d11b23ef --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleSlipstreamMspRow.cs | |||
@@ -0,0 +1,48 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the SlipstreamMsp table. | ||
7 | /// </summary> | ||
8 | public class WixBundleSlipstreamMspRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a SlipstreamMspRow row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleSlipstreamMspRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a SlipstreamMspRow row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleSlipstreamMspRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the foreign key identifier to the ChainPackage row. | ||
32 | /// </summary> | ||
33 | public string ChainPackageId | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Gets or sets the foreign key identifier to the ChainPackage row for the MSP package. | ||
41 | /// </summary> | ||
42 | public string MspPackageId | ||
43 | { | ||
44 | get { return (string)this.Fields[1].Data; } | ||
45 | set { this.Fields[1].Data = value; } | ||
46 | } | ||
47 | } | ||
48 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleUpdateRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleUpdateRow.cs new file mode 100644 index 00000000..e0150685 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleUpdateRow.cs | |||
@@ -0,0 +1,38 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Bundle update info for binding Bundles. | ||
9 | /// </summary> | ||
10 | public class WixBundleUpdateRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixBundleUpdateRow row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this WixBundleUpdateRow row belongs to and should get its column definitions from.</param> | ||
17 | public WixBundleUpdateRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixBundleUpdateRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this WixBundleUpdateRow row belongs to and should get its column definitions from.</param> | ||
27 | public WixBundleUpdateRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public string Location | ||
33 | { | ||
34 | get { return (string)this.Fields[0].Data; } | ||
35 | set { this.Fields[0].Data = value; } | ||
36 | } | ||
37 | } | ||
38 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleVariableRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleVariableRow.cs new file mode 100644 index 00000000..e7ff1a4d --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixBundleVariableRow.cs | |||
@@ -0,0 +1,80 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Variable table. | ||
7 | /// </summary> | ||
8 | public sealed class WixBundleVariableRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a Variable row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixBundleVariableRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a Variable row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixBundleVariableRow(SourceLineNumber sourceLineNumbers, Table table) | ||
26 | : base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the variable identifier. | ||
32 | /// </summary> | ||
33 | /// <value>The variable identifier.</value> | ||
34 | public string Id | ||
35 | { | ||
36 | get { return (string)this.Fields[0].Data; } | ||
37 | set { this.Fields[0].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the variable's value. | ||
42 | /// </summary> | ||
43 | /// <value>The variable's value.</value> | ||
44 | public string Value | ||
45 | { | ||
46 | get { return (string)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the variable's type. | ||
52 | /// </summary> | ||
53 | /// <value>The variable's type.</value> | ||
54 | public string Type | ||
55 | { | ||
56 | get { return (string)this.Fields[2].Data; } | ||
57 | set { this.Fields[2].Data = value; } | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets or sets whether this variable is hidden. | ||
62 | /// </summary> | ||
63 | /// <value>Whether this variable is hidden.</value> | ||
64 | public bool Hidden | ||
65 | { | ||
66 | get { return (null == this.Fields[3].Data || 0 == ((int)this.Fields[3].Data)) ? false : true; } | ||
67 | set { this.Fields[3].Data = value ? 1 : 0; } | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Gets or sets whether this variable is persisted. | ||
72 | /// </summary> | ||
73 | /// <value>Whether this variable is persisted.</value> | ||
74 | public bool Persisted | ||
75 | { | ||
76 | get { return (null == this.Fields[4].Data || 0 == ((int)this.Fields[4].Data)) ? false : true; } | ||
77 | set { this.Fields[4].Data = value ? 1 : 0; } | ||
78 | } | ||
79 | } | ||
80 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixChainItemRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixChainItemRow.cs new file mode 100644 index 00000000..12538d71 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixChainItemRow.cs | |||
@@ -0,0 +1,39 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixChainItem table. | ||
7 | /// </summary> | ||
8 | public sealed class WixChainItemRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixChainItem row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this ChainItem row belongs to and should get its column definitions from.</param> | ||
15 | public WixChainItemRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a WixChainItem row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this ChainItem row belongs to and should get its column definitions from.</param> | ||
25 | public WixChainItemRow(SourceLineNumber sourceLineNumbers, Table table) | ||
26 | : base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the WixChainItem identifier. | ||
32 | /// </summary> | ||
33 | public string Id | ||
34 | { | ||
35 | get { return (string)this.Fields[0].Data; } | ||
36 | set { this.Fields[0].Data = value; } | ||
37 | } | ||
38 | } | ||
39 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixChainRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixChainRow.cs new file mode 100644 index 00000000..54fff72c --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixChainRow.cs | |||
@@ -0,0 +1,65 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixChain table. | ||
9 | /// </summary> | ||
10 | public sealed class WixChainRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixChain row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
17 | public WixChainRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixChainRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
27 | public WixChainRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the raw chain attributes. | ||
34 | /// </summary> | ||
35 | public WixChainAttributes Attributes | ||
36 | { | ||
37 | get { return (WixChainAttributes)this.Fields[0].Data; } | ||
38 | set { this.Fields[0].Data = value; } | ||
39 | } | ||
40 | |||
41 | /// <summary> | ||
42 | /// Gets the disable rollback state of a chain. | ||
43 | /// </summary> | ||
44 | public bool DisableRollback | ||
45 | { | ||
46 | get { return 0 != (this.Attributes & WixChainAttributes.DisableRollback); } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets disable system restore state of a chain. | ||
51 | /// </summary> | ||
52 | public bool DisableSystemRestore | ||
53 | { | ||
54 | get { return 0 != (this.Attributes & WixChainAttributes.DisableSystemRestore); } | ||
55 | } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Gets parallel cache of a chain. | ||
59 | /// </summary> | ||
60 | public bool ParallelCache | ||
61 | { | ||
62 | get { return 0 != (this.Attributes & WixChainAttributes.ParallelCache); } | ||
63 | } | ||
64 | } | ||
65 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixComplexReferenceRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixComplexReferenceRow.cs new file mode 100644 index 00000000..40ca4592 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixComplexReferenceRow.cs | |||
@@ -0,0 +1,204 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Diagnostics.CodeAnalysis; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Specialization of a row for the WixComplexReference table. | ||
12 | /// </summary> | ||
13 | public sealed class WixComplexReferenceRow : Row, IComparable | ||
14 | { | ||
15 | /// <summary> | ||
16 | /// Creates a WixComplexReferenceRow row that belongs to a table. | ||
17 | /// </summary> | ||
18 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
19 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
20 | public WixComplexReferenceRow(SourceLineNumber sourceLineNumbers, Table table) | ||
21 | : base(sourceLineNumbers, table) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets the parent type of the complex reference. | ||
27 | /// </summary> | ||
28 | /// <value>Parent type of the complex reference.</value> | ||
29 | public ComplexReferenceParentType ParentType | ||
30 | { | ||
31 | get { return (ComplexReferenceParentType)Enum.ToObject(typeof(ComplexReferenceParentType), (int)this.Fields[1].Data); } | ||
32 | set { this.Fields[1].Data = (int)value; } | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Gets or sets the parent identifier of the complex reference. | ||
37 | /// </summary> | ||
38 | /// <value>Parent identifier of the complex reference.</value> | ||
39 | public string ParentId | ||
40 | { | ||
41 | get { return (string)this.Fields[0].Data; } | ||
42 | set { this.Fields[0].Data = value; } | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Gets the parent language of the complex reference. | ||
47 | /// </summary> | ||
48 | /// <value>Parent language of the complex reference.</value> | ||
49 | public string ParentLanguage | ||
50 | { | ||
51 | get { return (string)this.Fields[2].Data; } | ||
52 | set { this.Fields[2].Data = value; } | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets the child type of the complex reference. | ||
57 | /// </summary> | ||
58 | /// <value>Child type of the complex reference.</value> | ||
59 | public ComplexReferenceChildType ChildType | ||
60 | { | ||
61 | get { return (ComplexReferenceChildType)Enum.ToObject(typeof(ComplexReferenceChildType), (int)this.Fields[4].Data); } | ||
62 | set { this.Fields[4].Data = (int)value; } | ||
63 | } | ||
64 | |||
65 | /// <summary> | ||
66 | /// Gets the child identifier of the complex reference. | ||
67 | /// </summary> | ||
68 | /// <value>Child identifier of the complex reference.</value> | ||
69 | public string ChildId | ||
70 | { | ||
71 | get { return (string)this.Fields[3].Data; } | ||
72 | set { this.Fields[3].Data = value; } | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets if this is the primary complex reference. | ||
77 | /// </summary> | ||
78 | /// <value>true if primary complex reference.</value> | ||
79 | public bool IsPrimary | ||
80 | { | ||
81 | get | ||
82 | { | ||
83 | return (0x1 == ((int)this.Fields[5].Data & 0x1)); | ||
84 | } | ||
85 | |||
86 | set | ||
87 | { | ||
88 | if (null == this.Fields[5].Data) | ||
89 | { | ||
90 | this.Fields[5].Data = 0; | ||
91 | } | ||
92 | |||
93 | if (value) | ||
94 | { | ||
95 | this.Fields[5].Data = (int)this.Fields[5].Data | 0x1; | ||
96 | } | ||
97 | else | ||
98 | { | ||
99 | this.Fields[5].Data = (int)this.Fields[5].Data & ~0x1; | ||
100 | } | ||
101 | } | ||
102 | } | ||
103 | |||
104 | /// <summary> | ||
105 | /// Determines if two complex references are equivalent. | ||
106 | /// </summary> | ||
107 | /// <param name="obj">Complex reference to compare.</param> | ||
108 | /// <returns>True if complex references are equivalent.</returns> | ||
109 | public override bool Equals(object obj) | ||
110 | { | ||
111 | return 0 == this.CompareTo(obj); | ||
112 | } | ||
113 | |||
114 | /// <summary> | ||
115 | /// Gets the hash code for the complex reference. | ||
116 | /// </summary> | ||
117 | /// <returns>Hash code for the complex reference.</returns> | ||
118 | public override int GetHashCode() | ||
119 | { | ||
120 | return this.ChildType.GetHashCode() ^ this.ChildId.GetHashCode() ^ this.ParentType.GetHashCode() ^ this.ParentLanguage.GetHashCode() ^ this.ParentId.GetHashCode() ^ this.IsPrimary.GetHashCode(); | ||
121 | } | ||
122 | |||
123 | /// <summary> | ||
124 | /// Compares two complex references. | ||
125 | /// </summary> | ||
126 | /// <param name="obj">Complex reference to compare to.</param> | ||
127 | /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns> | ||
128 | public int CompareTo(object obj) | ||
129 | { | ||
130 | int comparison = this.CompareToWithoutConsideringPrimary(obj); | ||
131 | if (0 == comparison) | ||
132 | { | ||
133 | comparison = ((WixComplexReferenceRow)obj).IsPrimary.CompareTo(this.IsPrimary); // Note: the order of these is purposely switched to ensure that "Yes" is lower than "No" and "NotSet" | ||
134 | } | ||
135 | return comparison; | ||
136 | } | ||
137 | |||
138 | /// <summary> | ||
139 | /// Compares two complex references without considering the primary bit. | ||
140 | /// </summary> | ||
141 | /// <param name="obj">Complex reference to compare to.</param> | ||
142 | /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns> | ||
143 | [SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")] | ||
144 | public int CompareToWithoutConsideringPrimary(object obj) | ||
145 | { | ||
146 | var other = obj as WixComplexReferenceRow ?? throw new ArgumentNullException(nameof(obj)); | ||
147 | |||
148 | int comparison = this.ChildType - other.ChildType; | ||
149 | if (0 == comparison) | ||
150 | { | ||
151 | comparison = String.Compare(this.ChildId, other.ChildId, StringComparison.Ordinal); | ||
152 | if (0 == comparison) | ||
153 | { | ||
154 | comparison = this.ParentType - other.ParentType; | ||
155 | if (0 == comparison) | ||
156 | { | ||
157 | string thisParentLanguage = null == this.ParentLanguage ? String.Empty : this.ParentLanguage; | ||
158 | string otherParentLanguage = null == other.ParentLanguage ? String.Empty : other.ParentLanguage; | ||
159 | comparison = String.Compare(thisParentLanguage, otherParentLanguage, StringComparison.Ordinal); | ||
160 | if (0 == comparison) | ||
161 | { | ||
162 | comparison = String.Compare(this.ParentId, other.ParentId, StringComparison.Ordinal); | ||
163 | } | ||
164 | } | ||
165 | } | ||
166 | } | ||
167 | |||
168 | return comparison; | ||
169 | } | ||
170 | |||
171 | /// <summary> | ||
172 | /// Creates a shallow copy of the ComplexReference. | ||
173 | /// </summary> | ||
174 | /// <returns>A shallow copy of the ComplexReference.</returns> | ||
175 | public WixComplexReferenceRow Clone() | ||
176 | { | ||
177 | WixComplexReferenceRow wixComplexReferenceRow = new WixComplexReferenceRow(this.SourceLineNumbers, this.Table); | ||
178 | wixComplexReferenceRow.ParentType = this.ParentType; | ||
179 | wixComplexReferenceRow.ParentId = this.ParentId; | ||
180 | wixComplexReferenceRow.ParentLanguage = this.ParentLanguage; | ||
181 | wixComplexReferenceRow.ChildType = this.ChildType; | ||
182 | wixComplexReferenceRow.ChildId = this.ChildId; | ||
183 | wixComplexReferenceRow.IsPrimary = this.IsPrimary; | ||
184 | |||
185 | return wixComplexReferenceRow; | ||
186 | } | ||
187 | |||
188 | /// <summary> | ||
189 | /// Changes all of the parent references to point to the passed in parent reference. | ||
190 | /// </summary> | ||
191 | /// <param name="parent">New parent complex reference.</param> | ||
192 | public void Reparent(WixComplexReferenceRow parent) | ||
193 | { | ||
194 | this.ParentId = parent.ParentId; | ||
195 | this.ParentLanguage = parent.ParentLanguage; | ||
196 | this.ParentType = parent.ParentType; | ||
197 | |||
198 | if (!this.IsPrimary) | ||
199 | { | ||
200 | this.IsPrimary = parent.IsPrimary; | ||
201 | } | ||
202 | } | ||
203 | } | ||
204 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchFileRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchFileRow.cs new file mode 100644 index 00000000..000779d9 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchFileRow.cs | |||
@@ -0,0 +1,142 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixDeltaPatchFile table. | ||
7 | /// </summary> | ||
8 | public sealed class WixDeltaPatchFileRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixDeltaPatchFile row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixDeltaPatchFileRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a WixDeltaPatchFile row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this File row belongs to and should get its column definitions from.</param> | ||
25 | public WixDeltaPatchFileRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the primary key of the file row. | ||
32 | /// </summary> | ||
33 | /// <value>Primary key of the file row.</value> | ||
34 | public string File | ||
35 | { | ||
36 | get { return (string)this.Fields[0].Data; } | ||
37 | set { this.Fields[0].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the delta patch retain-length list for the file. | ||
42 | /// </summary> | ||
43 | /// <value>RetainLength list for the file.</value> | ||
44 | public string RetainLengths | ||
45 | { | ||
46 | get { return (string)this.Fields[1].Data; } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the previous delta patch retain-length list for the file. | ||
52 | /// </summary> | ||
53 | /// <value>Previous RetainLength list for the file.</value> | ||
54 | public string PreviousRetainLengths | ||
55 | { | ||
56 | get { return this.Fields[1].PreviousData; } | ||
57 | set { this.Fields[1].PreviousData = value; } | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets or sets the delta patch ignore-offset list for the file. | ||
62 | /// </summary> | ||
63 | /// <value>IgnoreOffset list for the file.</value> | ||
64 | public string IgnoreOffsets | ||
65 | { | ||
66 | get { return (string)this.Fields[2].Data; } | ||
67 | set { this.Fields[2].Data = value; } | ||
68 | } | ||
69 | |||
70 | /// <summary> | ||
71 | /// Gets or sets the previous delta patch ignore-offset list for the file. | ||
72 | /// </summary> | ||
73 | /// <value>Previous IgnoreOffset list for the file.</value> | ||
74 | public string PreviousIgnoreOffsets | ||
75 | { | ||
76 | get { return this.Fields[2].PreviousData; } | ||
77 | set { this.Fields[2].PreviousData = value; } | ||
78 | } | ||
79 | |||
80 | /// <summary> | ||
81 | /// Gets or sets the delta patch ignore-length list for the file. | ||
82 | /// </summary> | ||
83 | /// <value>IgnoreLength list for the file.</value> | ||
84 | public string IgnoreLengths | ||
85 | { | ||
86 | get { return (string)this.Fields[3].Data; } | ||
87 | set { this.Fields[3].Data = value; } | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Gets or sets the previous delta patch ignore-length list for the file. | ||
92 | /// </summary> | ||
93 | /// <value>Previous IgnoreLength list for the file.</value> | ||
94 | public string PreviousIgnoreLengths | ||
95 | { | ||
96 | get { return this.Fields[3].PreviousData; } | ||
97 | set { this.Fields[3].PreviousData = value; } | ||
98 | } | ||
99 | |||
100 | /// <summary> | ||
101 | /// Gets or sets the delta patch retain-offset list for the file. | ||
102 | /// </summary> | ||
103 | /// <value>RetainOffset list for the file.</value> | ||
104 | public string RetainOffsets | ||
105 | { | ||
106 | get { return (string)this.Fields[4].Data; } | ||
107 | set { this.Fields[4].Data = value; } | ||
108 | } | ||
109 | |||
110 | /// <summary> | ||
111 | /// Gets or sets the previous delta patch retain-offset list for the file. | ||
112 | /// </summary> | ||
113 | /// <value>PreviousRetainOffset list for the file.</value> | ||
114 | public string PreviousRetainOffsets | ||
115 | { | ||
116 | get { return this.Fields[4].PreviousData; } | ||
117 | set { this.Fields[4].PreviousData = value; } | ||
118 | } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Gets or sets the symbol paths for the file. | ||
122 | /// </summary> | ||
123 | /// <value>SymbolPath list for the file.</value> | ||
124 | /// <remarks>This is set during binding.</remarks> | ||
125 | public string Symbols | ||
126 | { | ||
127 | get { return (string)this.Fields[5].Data; } | ||
128 | set { this.Fields[5].Data = value; } | ||
129 | } | ||
130 | |||
131 | /// <summary> | ||
132 | /// Gets or sets the previous symbol paths for the file. | ||
133 | /// </summary> | ||
134 | /// <value>PreviousSymbolPath list for the file.</value> | ||
135 | /// <remarks>This is set during binding.</remarks> | ||
136 | public string PreviousSymbols | ||
137 | { | ||
138 | get { return (string)this.Fields[5].PreviousData; } | ||
139 | set { this.Fields[5].PreviousData = value; } | ||
140 | } | ||
141 | } | ||
142 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchSymbolPathsRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchSymbolPathsRow.cs new file mode 100644 index 00000000..b6c0b840 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixDeltaPatchSymbolPathsRow.cs | |||
@@ -0,0 +1,58 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixDeltaPatchSymbolPaths table. | ||
7 | /// </summary> | ||
8 | public sealed class WixDeltaPatchSymbolPathsRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixDeltaPatchSymbolPaths row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
15 | public WixDeltaPatchSymbolPathsRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a WixDeltaPatchSymbolPaths row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
25 | public WixDeltaPatchSymbolPathsRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the identifier the symbol paths apply to. | ||
32 | /// </summary> | ||
33 | /// <value>RetainLength list for the file.</value> | ||
34 | public string Id | ||
35 | { | ||
36 | get { return (string)this.Fields[0].Data; } | ||
37 | set { this.Fields[0].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the type of the identifier. | ||
42 | /// </summary> | ||
43 | public SymbolPathType Type | ||
44 | { | ||
45 | get { return (SymbolPathType)this.Fields[1].AsInteger(); } | ||
46 | set { this.Fields[1].Data = value; } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets or sets the delta patch symbol paths. | ||
51 | /// </summary> | ||
52 | public string SymbolPaths | ||
53 | { | ||
54 | get { return (string)this.Fields[2].Data; } | ||
55 | set { this.Fields[2].Data = value; } | ||
56 | } | ||
57 | } | ||
58 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixFileRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixFileRow.cs new file mode 100644 index 00000000..c006355a --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixFileRow.cs | |||
@@ -0,0 +1,163 @@ | |||
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 | using WixToolset.Data.Tuples; | ||
4 | |||
5 | namespace WixToolset.Data.Rows | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixFile table. | ||
9 | /// </summary> | ||
10 | public sealed class WixFileRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixFile row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this row belongs to and should get its column definitions from.</param> | ||
17 | public WixFileRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixFile row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
27 | public WixFileRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the primary key of the file row. | ||
34 | /// </summary> | ||
35 | /// <value>Primary key of the file row.</value> | ||
36 | public string File | ||
37 | { | ||
38 | get { return (string)this.Fields[0].Data; } | ||
39 | set { this.Fields[0].Data = value; } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the assembly type of the file row. | ||
44 | /// </summary> | ||
45 | /// <value>Assembly type of the file row.</value> | ||
46 | public FileAssemblyType AssemblyType | ||
47 | { | ||
48 | get { return (null == this.Fields[1]) ? FileAssemblyType.NotAnAssembly : (FileAssemblyType)this.Fields[1].AsInteger(); } | ||
49 | set { this.Fields[1].Data = (int)value; } | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Gets or sets the identifier for the assembly manifest. | ||
54 | /// </summary> | ||
55 | /// <value>Identifier for the assembly manifest.</value> | ||
56 | public string AssemblyManifest | ||
57 | { | ||
58 | get { return (string)this.Fields[2].Data; } | ||
59 | set { this.Fields[2].Data = value; } | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Gets or sets the application for the assembly. | ||
64 | /// </summary> | ||
65 | /// <value>Application for the assembly.</value> | ||
66 | public string AssemblyApplication | ||
67 | { | ||
68 | get { return (string)this.Fields[3].Data; } | ||
69 | set { this.Fields[3].Data = value; } | ||
70 | } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Gets or sets the directory of the file. | ||
74 | /// </summary> | ||
75 | /// <value>Directory of the file.</value> | ||
76 | public string Directory | ||
77 | { | ||
78 | get { return (string)this.Fields[4].Data; } | ||
79 | set { this.Fields[4].Data = value; } | ||
80 | } | ||
81 | |||
82 | /// <summary> | ||
83 | /// Gets or sets the disk id for this file. | ||
84 | /// </summary> | ||
85 | /// <value>Disk id for the file.</value> | ||
86 | public int DiskId | ||
87 | { | ||
88 | get { return (int)this.Fields[5].Data; } | ||
89 | set { this.Fields[5].Data = value; } | ||
90 | } | ||
91 | |||
92 | /// <summary> | ||
93 | /// Gets or sets the source location to the file. | ||
94 | /// </summary> | ||
95 | /// <value>Source location to the file.</value> | ||
96 | public string Source | ||
97 | { | ||
98 | get { return (string)this.Fields[6].Data; } | ||
99 | set { this.Fields[6].Data = value; } | ||
100 | } | ||
101 | |||
102 | /// <summary> | ||
103 | /// Gets or sets the source location to the file. | ||
104 | /// </summary> | ||
105 | /// <value>Source location to the file.</value> | ||
106 | public string PreviousSource | ||
107 | { | ||
108 | get { return (string)this.Fields[6].PreviousData; } | ||
109 | set { this.Fields[6].PreviousData = value; } | ||
110 | } | ||
111 | |||
112 | /// <summary> | ||
113 | /// Gets or sets the architecture the file executes on. | ||
114 | /// </summary> | ||
115 | /// <value>Architecture the file executes on.</value> | ||
116 | public string ProcessorArchitecture | ||
117 | { | ||
118 | get { return (string)this.Fields[7].Data; } | ||
119 | set { this.Fields[7].Data = value; } | ||
120 | } | ||
121 | |||
122 | /// <summary> | ||
123 | /// Gets or sets the patch group of a patch-added file. | ||
124 | /// </summary> | ||
125 | /// <value>The patch group of a patch-added file.</value> | ||
126 | public int PatchGroup | ||
127 | { | ||
128 | get { return (null == this.Fields[8].Data) ? 0 : (int)this.Fields[8].Data; } | ||
129 | set { this.Fields[8].Data = value; } | ||
130 | } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Gets or sets the attributes on a file. | ||
134 | /// </summary> | ||
135 | /// <value>Attributes on a file.</value> | ||
136 | public int Attributes | ||
137 | { | ||
138 | get { return (int)this.Fields[9].Data; } | ||
139 | set { this.Fields[9].Data = value; } | ||
140 | } | ||
141 | |||
142 | /// <summary> | ||
143 | /// Gets or sets the patching attributes to the file. | ||
144 | /// </summary> | ||
145 | /// <value>Patching attributes of the file.</value> | ||
146 | public PatchAttributeType PatchAttributes | ||
147 | { | ||
148 | get { return (PatchAttributeType)this.Fields[10].AsInteger(); } | ||
149 | set { this.Fields[10].Data = (int)value; } | ||
150 | } | ||
151 | |||
152 | /// <summary> | ||
153 | /// Gets or sets the path to the delta patch header. | ||
154 | /// </summary> | ||
155 | /// <value>Patch header path.</value> | ||
156 | /// <remarks>Set by the binder only when doing delta patching.</remarks> | ||
157 | public string DeltaPatchHeaderSource | ||
158 | { | ||
159 | get { return (string)this.Fields[11].Data; } | ||
160 | set { this.Fields[11].Data = value; } | ||
161 | } | ||
162 | } | ||
163 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixGroupRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixGroupRow.cs new file mode 100644 index 00000000..d36338d1 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixGroupRow.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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the WixGroup table. | ||
9 | /// </summary> | ||
10 | public sealed class WixGroupRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixGroupRow row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
17 | public WixGroupRow(SourceLineNumber sourceLineNumbers, Table table) | ||
18 | : base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Gets or sets the parent identifier of the complex reference. | ||
24 | /// </summary> | ||
25 | /// <value>Parent identifier of the complex reference.</value> | ||
26 | public string ParentId | ||
27 | { | ||
28 | get { return (string)this.Fields[0].Data; } | ||
29 | set { this.Fields[0].Data = value; } | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets the parent type of the complex reference. | ||
34 | /// </summary> | ||
35 | /// <value>Parent type of the complex reference.</value> | ||
36 | public ComplexReferenceParentType ParentType | ||
37 | { | ||
38 | get { return (ComplexReferenceParentType)Enum.Parse(typeof(ComplexReferenceParentType), (string)this.Fields[1].Data); } | ||
39 | set { this.Fields[1].Data = value.ToString(); } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets the child identifier of the complex reference. | ||
44 | /// </summary> | ||
45 | /// <value>Child identifier of the complex reference.</value> | ||
46 | public string ChildId | ||
47 | { | ||
48 | get { return (string)this.Fields[2].Data; } | ||
49 | set { this.Fields[2].Data = value; } | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Gets the child type of the complex reference. | ||
54 | /// </summary> | ||
55 | /// <value>Child type of the complex reference.</value> | ||
56 | public ComplexReferenceChildType ChildType | ||
57 | { | ||
58 | get { return (ComplexReferenceChildType)Enum.Parse(typeof(ComplexReferenceChildType), (string)this.Fields[3].Data); } | ||
59 | set { this.Fields[3].Data = value.ToString(); } | ||
60 | } | ||
61 | } | ||
62 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaRow.cs new file mode 100644 index 00000000..c1b3e155 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaRow.cs | |||
@@ -0,0 +1,60 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the WixMedia table. | ||
7 | /// </summary> | ||
8 | public sealed class WixMediaRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a WixMedia row that does not belong to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="tableDef">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
15 | public WixMediaRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
16 | base(sourceLineNumbers, tableDef) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Creates a WixMedia row that belongs to a table. | ||
22 | /// </summary> | ||
23 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
24 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
25 | public WixMediaRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
26 | base(sourceLineNumbers, table) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the disk id for this media. | ||
32 | /// </summary> | ||
33 | /// <value>Disk id for the media.</value> | ||
34 | public int DiskId | ||
35 | { | ||
36 | get { return (int)this.Fields[0].Data; } | ||
37 | set { this.Fields[0].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the compression level for this media row. | ||
42 | /// </summary> | ||
43 | /// <value>Compression level.</value> | ||
44 | public CompressionLevel? CompressionLevel | ||
45 | { | ||
46 | get { return (CompressionLevel?)this.Fields[1].AsNullableInteger(); } | ||
47 | set { this.Fields[1].Data = value; } | ||
48 | } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Gets or sets the layout location for this media row. | ||
52 | /// </summary> | ||
53 | /// <value>Layout location to the root of the media.</value> | ||
54 | public string Layout | ||
55 | { | ||
56 | get { return (string)this.Fields[2].Data; } | ||
57 | set { this.Fields[2].Data = value; } | ||
58 | } | ||
59 | } | ||
60 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaTemplateRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaTemplateRow.cs new file mode 100644 index 00000000..27c5ccce --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixMediaTemplateRow.cs | |||
@@ -0,0 +1,81 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the MediaTemplate table. | ||
7 | /// </summary> | ||
8 | public sealed class WixMediaTemplateRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a MediaTemplate row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this MediaTeplate row belongs to and should get its column definitions from.</param> | ||
15 | public WixMediaTemplateRow(SourceLineNumber sourceLineNumbers, Table table) | ||
16 | : base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets or sets the cabinet template name for this media template row. | ||
22 | /// </summary> | ||
23 | /// <value>Cabinet name.</value> | ||
24 | public string CabinetTemplate | ||
25 | { | ||
26 | get { return (string)this.Fields[0].Data; } | ||
27 | set { this.Fields[0].Data = value; } | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the compression level for this media template row. | ||
32 | /// </summary> | ||
33 | /// <value>Compression level.</value> | ||
34 | public CompressionLevel? CompressionLevel | ||
35 | { | ||
36 | get { return (CompressionLevel?)this.Fields[1].AsNullableInteger(); } | ||
37 | set { this.Fields[1].Data = value; } | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Gets or sets the disk prompt for this media template row. | ||
42 | /// </summary> | ||
43 | /// <value>Disk prompt.</value> | ||
44 | public string DiskPrompt | ||
45 | { | ||
46 | get { return (string)this.Fields[2].Data; } | ||
47 | set { this.Fields[2].Data = value; } | ||
48 | } | ||
49 | |||
50 | |||
51 | /// <summary> | ||
52 | /// Gets or sets the volume label for this media template row. | ||
53 | /// </summary> | ||
54 | /// <value>Volume label.</value> | ||
55 | public string VolumeLabel | ||
56 | { | ||
57 | get { return (string)this.Fields[3].Data; } | ||
58 | set { this.Fields[3].Data = value; } | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Gets or sets the maximum uncompressed media size for this media template row. | ||
63 | /// </summary> | ||
64 | /// <value>Disk id.</value> | ||
65 | public int MaximumUncompressedMediaSize | ||
66 | { | ||
67 | get { return (int)this.Fields[4].Data; } | ||
68 | set { this.Fields[4].Data = value; } | ||
69 | } | ||
70 | |||
71 | /// <summary> | ||
72 | /// Gets or sets the Maximum Cabinet Size For Large File Splitting for this media template row. | ||
73 | /// </summary> | ||
74 | /// <value>Disk id.</value> | ||
75 | public int MaximumCabinetSizeForLargeFileSplitting | ||
76 | { | ||
77 | get { return (int)this.Fields[5].Data; } | ||
78 | set { this.Fields[5].Data = value; } | ||
79 | } | ||
80 | } | ||
81 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixMergeRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixMergeRow.cs new file mode 100644 index 00000000..54f2125c --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixMergeRow.cs | |||
@@ -0,0 +1,149 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Globalization; | ||
7 | using System.Text; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Specialization of a row for tracking merge statements. | ||
12 | /// </summary> | ||
13 | public sealed class WixMergeRow : Row | ||
14 | { | ||
15 | /// <summary> | ||
16 | /// Creates a Merge row that does not belong to a table. | ||
17 | /// </summary> | ||
18 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
19 | /// <param name="tableDef">TableDefinition this Merge row belongs to and should get its column definitions from.</param> | ||
20 | public WixMergeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
21 | base(sourceLineNumbers, tableDef) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary>Creates a Merge row that belongs to a table.</summary> | ||
26 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
27 | /// <param name="table">Table this Merge row belongs to and should get its column definitions from.</param> | ||
28 | public WixMergeRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
29 | base(sourceLineNumbers, table) | ||
30 | { | ||
31 | } | ||
32 | |||
33 | /// <summary> | ||
34 | /// Gets and sets the id for a merge row. | ||
35 | /// </summary> | ||
36 | /// <value>Id for the row.</value> | ||
37 | public string Id | ||
38 | { | ||
39 | get { return (string)this.Fields[0].Data; } | ||
40 | set { this.Fields[0].Data = value; } | ||
41 | } | ||
42 | |||
43 | /// <summary> | ||
44 | /// Gets and sets the language for a merge row. | ||
45 | /// </summary> | ||
46 | /// <value>Language for the row.</value> | ||
47 | public string Language | ||
48 | { | ||
49 | get { return (string)this.Fields[1].Data; } | ||
50 | set { this.Fields[1].Data = value; } | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Gets and sets the directory for a merge row. | ||
55 | /// </summary> | ||
56 | /// <value>Direcotory for the row.</value> | ||
57 | public string Directory | ||
58 | { | ||
59 | get { return (string)this.Fields[2].Data; } | ||
60 | set { this.Fields[2].Data = value; } | ||
61 | } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Gets and sets the path to the merge module for a merge row. | ||
65 | /// </summary> | ||
66 | /// <value>Source path for the row.</value> | ||
67 | public string SourceFile | ||
68 | { | ||
69 | get { return (string)this.Fields[3].Data; } | ||
70 | set { this.Fields[3].Data = value; } | ||
71 | } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Gets and sets the disk id the merge module should be placed on for a merge row. | ||
75 | /// </summary> | ||
76 | /// <value>Disk identifier for row.</value> | ||
77 | public int DiskId | ||
78 | { | ||
79 | get { return (int)this.Fields[4].Data; } | ||
80 | set { this.Fields[4].Data = value; } | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Gets and sets the compression value for a merge row. | ||
85 | /// </summary> | ||
86 | /// <value>Compression for a merge row.</value> | ||
87 | public YesNoType FileCompression | ||
88 | { | ||
89 | get | ||
90 | { | ||
91 | if (null == this.Fields[5].Data) | ||
92 | { | ||
93 | return YesNoType.NotSet; | ||
94 | } | ||
95 | else if (1 == (int)this.Fields[5].Data) | ||
96 | { | ||
97 | return YesNoType.Yes; | ||
98 | } | ||
99 | else if (0 == (int)this.Fields[5].Data) | ||
100 | { | ||
101 | return YesNoType.No; | ||
102 | } | ||
103 | else | ||
104 | { | ||
105 | throw new InvalidOperationException(String.Format(CultureInfo.CurrentUICulture, WixDataStrings.EXP_MergeTableFileCompressionColumnContainsInvalidValue, this.Fields[5].Data)); | ||
106 | } | ||
107 | } | ||
108 | set | ||
109 | { | ||
110 | if (YesNoType.Yes == value) | ||
111 | { | ||
112 | this.Fields[5].Data = 1; | ||
113 | } | ||
114 | else if (YesNoType.No == value) | ||
115 | { | ||
116 | this.Fields[5].Data = 0; | ||
117 | } | ||
118 | else if (YesNoType.NotSet == value) | ||
119 | { | ||
120 | this.Fields[5].Data = null; | ||
121 | } | ||
122 | else | ||
123 | { | ||
124 | throw new InvalidOperationException(String.Format(CultureInfo.CurrentUICulture, WixDataStrings.EXP_CannotSetMergeTableFileCompressionColumnToInvalidValue, value)); | ||
125 | } | ||
126 | } | ||
127 | } | ||
128 | |||
129 | /// <summary> | ||
130 | /// Gets and sets the configuration data for a merge row. | ||
131 | /// </summary> | ||
132 | /// <value>Comma delimited string of "name=value" pairs.</value> | ||
133 | public string ConfigurationData | ||
134 | { | ||
135 | get { return (string)this.Fields[6].Data; } | ||
136 | set { this.Fields[6].Data = value; } | ||
137 | } | ||
138 | |||
139 | /// <summary> | ||
140 | /// Gets and sets the primary feature for a merge row. | ||
141 | /// </summary> | ||
142 | /// <value>The primary feature for a merge row.</value> | ||
143 | public string Feature | ||
144 | { | ||
145 | get { return (string)this.Fields[7].Data; } | ||
146 | set { this.Fields[7].Data = value; } | ||
147 | } | ||
148 | } | ||
149 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixPayloadPropertiesRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixPayloadPropertiesRow.cs new file mode 100644 index 00000000..2e5f53ad --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixPayloadPropertiesRow.cs | |||
@@ -0,0 +1,81 @@ | |||
1 | //------------------------------------------------------------------------------------------------- | ||
2 | // <copyright file="WixPayloadPropertiesRow.cs" company="Outercurve Foundation"> | ||
3 | // Copyright (c) 2004, Outercurve Foundation. | ||
4 | // This software is released under Microsoft Reciprocal License (MS-RL). | ||
5 | // The license and further copyright text can be found in the file | ||
6 | // LICENSE.TXT at the root directory of the distribution. | ||
7 | // </copyright> | ||
8 | //------------------------------------------------------------------------------------------------- | ||
9 | |||
10 | namespace WixToolset.Data.Rows | ||
11 | { | ||
12 | using System; | ||
13 | |||
14 | /// <summary> | ||
15 | /// Specialization of a row for the WixPayloadProperties table. | ||
16 | /// </summary> | ||
17 | public class WixPayloadPropertiesRow : Row | ||
18 | { | ||
19 | /// <summary> | ||
20 | /// Creates a WixPayloadProperties row that does not belong to a table. | ||
21 | /// </summary> | ||
22 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
23 | /// <param name="tableDef">TableDefinition this WixPayloadProperties row belongs to and should get its column definitions from.</param> | ||
24 | public WixPayloadPropertiesRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
25 | base(sourceLineNumbers, tableDef) | ||
26 | { | ||
27 | } | ||
28 | |||
29 | /// <summary> | ||
30 | /// Creates a WixPayloadProperties row that belongs to a table. | ||
31 | /// </summary> | ||
32 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
33 | /// <param name="table">Table this WixPayloadProperties row belongs to and should get its column definitions from.</param> | ||
34 | public WixPayloadPropertiesRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
35 | base(sourceLineNumbers, table) | ||
36 | { | ||
37 | } | ||
38 | |||
39 | public string Id | ||
40 | { | ||
41 | get { return (string)this.Fields[0].Data; } | ||
42 | set { this.Fields[0].Data = value; } | ||
43 | } | ||
44 | |||
45 | public string Package | ||
46 | { | ||
47 | get { return (string)this.Fields[1].Data; } | ||
48 | set { this.Fields[1].Data = value; } | ||
49 | } | ||
50 | |||
51 | public string Container | ||
52 | { | ||
53 | get { return (string)this.Fields[2].Data; } | ||
54 | set { this.Fields[2].Data = value; } | ||
55 | } | ||
56 | |||
57 | public string Name | ||
58 | { | ||
59 | get { return (string)this.Fields[3].Data; } | ||
60 | set { this.Fields[3].Data = value; } | ||
61 | } | ||
62 | |||
63 | public string Size | ||
64 | { | ||
65 | get { return (string)this.Fields[4].Data; } | ||
66 | set { this.Fields[4].Data = value; } | ||
67 | } | ||
68 | |||
69 | public string DownloadUrl | ||
70 | { | ||
71 | get { return (string)this.Fields[5].Data; } | ||
72 | set { this.Fields[5].Data = value; } | ||
73 | } | ||
74 | |||
75 | public string LayoutOnly | ||
76 | { | ||
77 | get { return (string)this.Fields[6].Data; } | ||
78 | set { this.Fields[6].Data = value; } | ||
79 | } | ||
80 | } | ||
81 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixPropertyRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixPropertyRow.cs new file mode 100644 index 00000000..5285195c --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixPropertyRow.cs | |||
@@ -0,0 +1,118 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Globalization; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Specialization of a row for the WixProperty table. | ||
10 | /// </summary> | ||
11 | public sealed class WixPropertyRow : Row | ||
12 | { | ||
13 | /// <summary>Creates a WixProperty row that belongs to a table.</summary> | ||
14 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
15 | /// <param name="table">Table this WixProperty row belongs to and should get its column definitions from.</param> | ||
16 | public WixPropertyRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
17 | base(sourceLineNumbers, table) | ||
18 | { | ||
19 | } | ||
20 | |||
21 | /// <summary> | ||
22 | /// Gets and sets the id for this property row. | ||
23 | /// </summary> | ||
24 | /// <value>Id for the property.</value> | ||
25 | public string Id | ||
26 | { | ||
27 | get { return (string)this.Fields[0].Data; } | ||
28 | set { this.Fields[0].Data = value; } | ||
29 | } | ||
30 | |||
31 | /// <summary> | ||
32 | /// Gets and sets if this is an admin property row. | ||
33 | /// </summary> | ||
34 | /// <value>Flag if this is an admin property.</value> | ||
35 | public bool Admin | ||
36 | { | ||
37 | get | ||
38 | { | ||
39 | return (0x1 == (Convert.ToInt32(this.Fields[1].Data, CultureInfo.InvariantCulture) & 0x1)); | ||
40 | } | ||
41 | |||
42 | set | ||
43 | { | ||
44 | if (null == this.Fields[1].Data) | ||
45 | { | ||
46 | this.Fields[1].Data = 0; | ||
47 | } | ||
48 | |||
49 | if (value) | ||
50 | { | ||
51 | this.Fields[1].Data = (int)this.Fields[1].Data | 0x1; | ||
52 | } | ||
53 | else | ||
54 | { | ||
55 | this.Fields[1].Data = (int)this.Fields[1].Data & ~0x1; | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets and sets if this is a hidden property row. | ||
62 | /// </summary> | ||
63 | /// <value>Flag if this is a hidden property.</value> | ||
64 | public bool Hidden | ||
65 | { | ||
66 | get | ||
67 | { | ||
68 | return (0x2 == (Convert.ToInt32(this.Fields[1].Data, CultureInfo.InvariantCulture) & 0x2)); | ||
69 | } | ||
70 | |||
71 | set | ||
72 | { | ||
73 | if (null == this.Fields[1].Data) | ||
74 | { | ||
75 | this.Fields[1].Data = 0; | ||
76 | } | ||
77 | |||
78 | if (value) | ||
79 | { | ||
80 | this.Fields[1].Data = (int)this.Fields[1].Data | 0x2; | ||
81 | } | ||
82 | else | ||
83 | { | ||
84 | this.Fields[1].Data = (int)this.Fields[1].Data & ~0x2; | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | |||
89 | /// <summary> | ||
90 | /// Gets and sets if this is a secure property row. | ||
91 | /// </summary> | ||
92 | /// <value>Flag if this is a secure property.</value> | ||
93 | public bool Secure | ||
94 | { | ||
95 | get | ||
96 | { | ||
97 | return (0x4 == (Convert.ToInt32(this.Fields[1].Data, CultureInfo.InvariantCulture) & 0x4)); | ||
98 | } | ||
99 | |||
100 | set | ||
101 | { | ||
102 | if (null == this.Fields[1].Data) | ||
103 | { | ||
104 | this.Fields[1].Data = 0; | ||
105 | } | ||
106 | |||
107 | if (value) | ||
108 | { | ||
109 | this.Fields[1].Data = (int)this.Fields[1].Data | 0x4; | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | this.Fields[1].Data = (int)this.Fields[1].Data & ~0x4; | ||
114 | } | ||
115 | } | ||
116 | } | ||
117 | } | ||
118 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixRelatedBundleRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixRelatedBundleRow.cs new file mode 100644 index 00000000..95fffde5 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixRelatedBundleRow.cs | |||
@@ -0,0 +1,52 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using Serialize = WixToolset.Data.Serialize; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the RelatedBundle table. | ||
9 | /// </summary> | ||
10 | public sealed class WixRelatedBundleRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a RelatedBundle row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this RelatedBundle row belongs to and should get its column definitions from.</param> | ||
17 | public WixRelatedBundleRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a RelatedBundle row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this RelatedBundle row belongs to and should get its column definitions from.</param> | ||
27 | public WixRelatedBundleRow(SourceLineNumber sourceLineNumbers, Table table) | ||
28 | : base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the related bundle identifier. | ||
34 | /// </summary> | ||
35 | /// <value>The related bundle identifier.</value> | ||
36 | public string Id | ||
37 | { | ||
38 | get { return (string)this.Fields[0].Data; } | ||
39 | set { this.Fields[0].Data = value; } | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the related bundle action. | ||
44 | /// </summary> | ||
45 | /// <value>The related bundle action.</value> | ||
46 | public Serialize.RelatedBundle.ActionType Action | ||
47 | { | ||
48 | get { return (Serialize.RelatedBundle.ActionType)this.Fields[1].Data; } | ||
49 | set { this.Fields[1].Data = (int)value; } | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixSimpleReferenceRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixSimpleReferenceRow.cs new file mode 100644 index 00000000..3a2cf8f1 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixSimpleReferenceRow.cs | |||
@@ -0,0 +1,63 @@ | |||
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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Xml; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Specialization of a row for the WixSimpleReference table. | ||
11 | /// </summary> | ||
12 | public sealed class WixSimpleReferenceRow : Row | ||
13 | { | ||
14 | /// <summary> | ||
15 | /// Creates a WixSimpleReferenceRow that belongs to a table. | ||
16 | /// </summary> | ||
17 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
18 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
19 | public WixSimpleReferenceRow(SourceLineNumber sourceLineNumbers, Table table) | ||
20 | : base(sourceLineNumbers, table) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | /// <summary> | ||
25 | /// Creates a WixSimpleReferenceRow that belongs to a table. | ||
26 | /// </summary> | ||
27 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
28 | /// <param name="tableDefinitions">Table definitions for this row.</param> | ||
29 | public WixSimpleReferenceRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinitions) | ||
30 | : base(sourceLineNumbers, tableDefinitions) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | /// <summary> | ||
35 | /// Gets or sets the primary keys of the simple reference. | ||
36 | /// </summary> | ||
37 | /// <value>The primary keys of the simple reference.</value> | ||
38 | public string PrimaryKeys | ||
39 | { | ||
40 | get { return (string)this.Fields[1].Data; } | ||
41 | set { this.Fields[1].Data = value; } | ||
42 | } | ||
43 | |||
44 | /// <summary> | ||
45 | /// Gets the symbolic name. | ||
46 | /// </summary> | ||
47 | /// <value>Symbolic name.</value> | ||
48 | public string SymbolicName | ||
49 | { | ||
50 | get { return String.Concat(this.TableName, ":", this.PrimaryKeys); } | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Gets or sets the table name of the simple reference. | ||
55 | /// </summary> | ||
56 | /// <value>The table name of the simple reference.</value> | ||
57 | public string TableName | ||
58 | { | ||
59 | get { return (string)this.Fields[0].Data; } | ||
60 | set { this.Fields[0].Data = value; } | ||
61 | } | ||
62 | } | ||
63 | } | ||
diff --git a/src/WixToolset.Data.WindowsInstaller/Rows/WixUpdateRegistrationRow.cs b/src/WixToolset.Data.WindowsInstaller/Rows/WixUpdateRegistrationRow.cs new file mode 100644 index 00000000..8d86f970 --- /dev/null +++ b/src/WixToolset.Data.WindowsInstaller/Rows/WixUpdateRegistrationRow.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.Data.Rows | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Update registration information for Binding. | ||
9 | /// </summary> | ||
10 | public class WixUpdateRegistrationRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a WixUpdateRegistrationRow row that does not belong to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="tableDef">TableDefinition this WixUpdateRegistrationRow row belongs to and should get its column definitions from.</param> | ||
17 | public WixUpdateRegistrationRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) : | ||
18 | base(sourceLineNumbers, tableDef) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a WixUpdateRegistrationRow row that belongs to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="table">Table this WixUpdateRegistrationRow row belongs to and should get its column definitions from.</param> | ||
27 | public WixUpdateRegistrationRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
28 | base(sourceLineNumbers, table) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public string Manufacturer | ||
33 | { | ||
34 | get { return (string)this.Fields[0].Data; } | ||
35 | set { this.Fields[0].Data = value; } | ||
36 | } | ||
37 | |||
38 | public string Department | ||
39 | { | ||
40 | get { return (string)this.Fields[1].Data; } | ||
41 | set { this.Fields[1].Data = value; } | ||
42 | } | ||
43 | |||
44 | public string ProductFamily | ||
45 | { | ||
46 | get { return (string)this.Fields[2].Data; } | ||
47 | set { this.Fields[2].Data = value; } | ||
48 | } | ||
49 | |||
50 | public string Name | ||
51 | { | ||
52 | get { return (string)this.Fields[3].Data; } | ||
53 | set { this.Fields[3].Data = value; } | ||
54 | } | ||
55 | |||
56 | public string Classification | ||
57 | { | ||
58 | get { return (string)this.Fields[4].Data; } | ||
59 | set { this.Fields[4].Data = value; } | ||
60 | } | ||
61 | } | ||
62 | } | ||