aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/WindowsInstaller/Rows
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2017-12-07 14:17:39 -0800
committerRob Mensching <rob@firegiant.com>2017-12-07 14:17:39 -0800
commit221da62c05ef2b515eb507c77655514cd0ec32a4 (patch)
treefabec5b8ac871f17de6fe0aad3e6188b9af42bfb /src/WixToolset.Data/WindowsInstaller/Rows
parentca376995792d2e2a1a7f39760989496702a8f603 (diff)
downloadwix-221da62c05ef2b515eb507c77655514cd0ec32a4.tar.gz
wix-221da62c05ef2b515eb507c77655514cd0ec32a4.tar.bz2
wix-221da62c05ef2b515eb507c77655514cd0ec32a4.zip
Reintegrate MSI constructs into WxToolset.Data.WindowsInstaller namespace
Diffstat (limited to 'src/WixToolset.Data/WindowsInstaller/Rows')
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/BBControlRow.cs113
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs244
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/ContainerType.cs13
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/ControlRow.cs143
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/FileRow.cs640
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/MediaRow.cs80
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/PropertyRow.cs40
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs41
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs90
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixActionRow.cs118
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs78
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleCatalogRow.cs50
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleContainerRow.cs78
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs103
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiFeatureRow.cs93
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs138
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPropertyRow.cs58
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMspPackageRow.cs101
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsuPackageRow.cs57
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageCommandLineRow.cs80
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs53
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageRow.cs228
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs79
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePayloadRow.cs185
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleRelatedPackageRow.cs87
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleRollbackBoundaryRow.cs59
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleRow.cs228
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleSlipstreamMspRow.cs48
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleUpdateRow.cs36
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleVariableRow.cs80
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixChainItemRow.cs39
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixChainRow.cs65
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixComplexReferenceRow.cs202
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixDeltaPatchFileRow.cs142
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixDeltaPatchSymbolPathsRow.cs60
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixFileRow.cs163
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixGroupRow.cs62
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixMediaRow.cs60
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixMediaTemplateRow.cs81
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixMergeRow.cs147
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixPayloadPropertiesRow.cs72
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixPropertyRow.cs118
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixRelatedBundleRow.cs52
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixSimpleReferenceRow.cs61
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixUpdateRegistrationRow.cs62
45 files changed, 4827 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..bf962e73
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..50ef5313
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs
@@ -0,0 +1,244 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Msi;
6
7 /// <summary>
8 /// Specialization of a row for the Component table.
9 /// </summary>
10 public sealed class ComponentRow : Row
11 {
12 private string sourceFile;
13
14 /// <summary>
15 /// Creates a Control row that belongs to a table.
16 /// </summary>
17 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
18 /// <param name="table">Table this Component row belongs to and should get its column definitions from.</param>
19 public ComponentRow(SourceLineNumber sourceLineNumbers, Table table) :
20 base(sourceLineNumbers, table)
21 {
22 }
23
24 /// <summary>
25 /// Gets or sets the identifier for this Component row.
26 /// </summary>
27 /// <value>Identifier for this Component row.</value>
28 public string Component
29 {
30 get { return (string)this.Fields[0].Data; }
31 set { this.Fields[0].Data = value; }
32 }
33
34 /// <summary>
35 /// Gets or sets the ComponentId for this Component row.
36 /// </summary>
37 /// <value>guid for this Component row.</value>
38 public string Guid
39 {
40 get { return (string)this.Fields[1].Data; }
41 set { this.Fields[1].Data = value; }
42 }
43
44 /// <summary>
45 /// Gets or sets the Directory_ of the Component.
46 /// </summary>
47 /// <value>Directory of the Component.</value>
48 public string Directory
49 {
50 get { return (string)this.Fields[2].Data; }
51 set { this.Fields[2].Data = value; }
52 }
53
54 /// <summary>
55 /// Gets or sets the local only attribute of the Component.
56 /// </summary>
57 /// <value>Local only attribute of the component.</value>
58 public bool IsLocalOnly
59 {
60 get { return MsiInterop.MsidbComponentAttributesLocalOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesLocalOnly); }
61 set
62 {
63 if (value)
64 {
65 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesLocalOnly;
66 }
67 else
68 {
69 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesLocalOnly;
70 }
71 }
72 }
73
74 /// <summary>
75 /// Gets or sets the source only attribute of the Component.
76 /// </summary>
77 /// <value>Source only attribute of the component.</value>
78 public bool IsSourceOnly
79 {
80 get { return MsiInterop.MsidbComponentAttributesSourceOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSourceOnly); }
81 set
82 {
83 if (value)
84 {
85 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSourceOnly;
86 }
87 else
88 {
89 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSourceOnly;
90 }
91 }
92 }
93
94 /// <summary>
95 /// Gets or sets the optional attribute of the Component.
96 /// </summary>
97 /// <value>Optional attribute of the component.</value>
98 public bool IsOptional
99 {
100 get { return MsiInterop.MsidbComponentAttributesOptional == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesOptional); }
101 set
102 {
103 if (value)
104 {
105 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesOptional;
106 }
107 else
108 {
109 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesOptional;
110 }
111 }
112 }
113
114 /// <summary>
115 /// Gets or sets the registry key path attribute of the Component.
116 /// </summary>
117 /// <value>Registry key path attribute of the component.</value>
118 public bool IsRegistryKeyPath
119 {
120 get { return MsiInterop.MsidbComponentAttributesRegistryKeyPath == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesRegistryKeyPath); }
121 set
122 {
123 if (value)
124 {
125 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesRegistryKeyPath;
126 }
127 else
128 {
129 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesRegistryKeyPath;
130 }
131 }
132 }
133
134 /// <summary>
135 /// Gets or sets the shared dll ref count attribute of the Component.
136 /// </summary>
137 /// <value>Shared dll ref countattribute of the component.</value>
138 public bool IsSharedDll
139 {
140 get { return MsiInterop.MsidbComponentAttributesSharedDllRefCount == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSharedDllRefCount); }
141 set
142 {
143 if (value)
144 {
145 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSharedDllRefCount;
146 }
147 else
148 {
149 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSharedDllRefCount;
150 }
151 }
152 }
153
154 /// <summary>
155 /// Gets or sets the permanent attribute of the Component.
156 /// </summary>
157 /// <value>Permanent attribute of the component.</value>
158 public bool IsPermanent
159 {
160 get { return MsiInterop.MsidbComponentAttributesPermanent == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesPermanent); }
161 set
162 {
163 if (value)
164 {
165 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesPermanent;
166 }
167 else
168 {
169 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesPermanent;
170 }
171 }
172 }
173
174 /// <summary>
175 /// Gets or sets the ODBC data source key path attribute of the Component.
176 /// </summary>
177 /// <value>ODBC data source key path attribute of the component.</value>
178 public bool IsOdbcDataSourceKeyPath
179 {
180 get { return MsiInterop.MsidbComponentAttributesODBCDataSource == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesODBCDataSource); }
181 set
182 {
183 if (value)
184 {
185 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesODBCDataSource;
186 }
187 else
188 {
189 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesODBCDataSource;
190 }
191 }
192 }
193
194 /// <summary>
195 /// Gets or sets the 64 bit attribute of the Component.
196 /// </summary>
197 /// <value>64-bitness of the component.</value>
198 public bool Is64Bit
199 {
200 get { return MsiInterop.MsidbComponentAttributes64bit == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributes64bit); }
201 set
202 {
203 if (value)
204 {
205 this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributes64bit;
206 }
207 else
208 {
209 this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributes64bit;
210 }
211 }
212 }
213
214 /// <summary>
215 /// Gets or sets the condition of the Component.
216 /// </summary>
217 /// <value>Condition of the Component.</value>
218 public string Condition
219 {
220 get { return (string)this.Fields[4].Data; }
221 set { this.Fields[4].Data = value; }
222 }
223
224 /// <summary>
225 /// Gets or sets the key path of the Component.
226 /// </summary>
227 /// <value>Key path of the Component.</value>
228 public string KeyPath
229 {
230 get { return (string)this.Fields[5].Data; }
231 set { this.Fields[5].Data = value; }
232 }
233
234 /// <summary>
235 /// Gets or sets the source location to the file to fill in the Text of the control.
236 /// </summary>
237 /// <value>Source location to the file to fill in the Text of the control.</value>
238 public string SourceFile
239 {
240 get { return this.sourceFile; }
241 set { this.sourceFile = value; }
242 }
243 }
244}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/ContainerType.cs b/src/WixToolset.Data/WindowsInstaller/Rows/ContainerType.cs
new file mode 100644
index 00000000..b983c2a6
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..95289dea
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..7fc34b3d
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..b931632f
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..ad5197d9
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/PropertyRow.cs
@@ -0,0 +1,40 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 /// <summary>
6 /// Specialization of a row for the upgrade table.
7 /// </summary>
8 public sealed class PropertyRow : 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 PropertyRow(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>Property identifier for the row.</value>
24 public string Property
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 value for the row.
32 /// </summary>
33 /// <value>Property value for the row.</value>
34 public string Value
35 {
36 get { return (string)this.Fields[1].Data; }
37 set { this.Fields[1].Data = value; }
38 }
39 }
40}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs b/src/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs
new file mode 100644
index 00000000..fc0410e9
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs
@@ -0,0 +1,41 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6 using System.Collections.ObjectModel;
7
8 /// <summary>
9 /// Indexed container class for summary information rows.
10 /// </summary>
11 public sealed class SummaryInfoRowCollection : KeyedCollection<int, Row>
12 {
13 /// <summary>
14 /// Creates the keyed collection from existing rows in a table.
15 /// </summary>
16 /// <param name="table">The summary information table to index.</param>
17 public SummaryInfoRowCollection(Table table)
18 {
19 if (0 != String.CompareOrdinal("_SummaryInformation", table.Name))
20 {
21 string message = string.Format(WixDataStrings.EXP_UnsupportedTable, table.Name);
22 throw new ArgumentException(message, "table");
23 }
24
25 foreach (Row row in table.Rows)
26 {
27 this.Add(row);
28 }
29 }
30
31 /// <summary>
32 /// Gets the summary property ID for the <paramref name="row"/>.
33 /// </summary>
34 /// <param name="row">The row to index.</param>
35 /// <returns>The summary property ID for the <paramref name="row"/>.
36 protected override int GetKeyForItem(Row row)
37 {
38 return (int)row[0];
39 }
40 }
41}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs
new file mode 100644
index 00000000..d757c8d3
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..f7bc784d
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixActionRow.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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6 using System.Diagnostics;
7 using System.Globalization;
8 using System.Xml;
9 using WixToolset.Data.Tuples;
10
11 /// <summary>
12 /// Specialization of a row for the sequence tables.
13 /// </summary>
14 public sealed class WixActionRow : Row, IComparable
15 {
16 /// <summary>
17 /// Instantiates an ActionRow that belongs to a table.
18 /// </summary>
19 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
20 /// <param name="table">Table this Action row belongs to and should get its column definitions from.</param>
21 public WixActionRow(SourceLineNumber sourceLineNumbers, Table table) :
22 base(sourceLineNumbers, table)
23 {
24 }
25
26 /// <summary>
27 /// Instantiates an ActionRow by copying data from another ActionRow.
28 /// </summary>
29 /// <param name="source">The row the data is copied from.</param>
30 /// <remarks>The previous and next action collections are not copied.</remarks>
31 private WixActionRow(WixActionRow source)
32 : base(source)
33 {
34 }
35
36 /// <summary>
37 /// Gets or sets the name of the action.
38 /// </summary>
39 /// <value>The name of the action.</value>
40 public string Action
41 {
42 get { return (string)this.Fields[1].Data; }
43 set { this.Fields[1].Data = value; }
44 }
45
46 /// <summary>
47 /// Gets the name of the action this action should be scheduled after.
48 /// </summary>
49 /// <value>The name of the action this action should be scheduled after.</value>
50 public string After
51 {
52 get { return (string)this.Fields[5].Data; }
53 set { this.Fields[5].Data = value; }
54 }
55
56 /// <summary>
57 /// Gets the name of the action this action should be scheduled before.
58 /// </summary>
59 /// <value>The name of the action this action should be scheduled before.</value>
60 public string Before
61 {
62 get { return (string)this.Fields[4].Data; }
63 set { this.Fields[4].Data = value; }
64 }
65
66 /// <summary>
67 /// Gets or sets the condition of the action.
68 /// </summary>
69 /// <value>The condition of the action.</value>
70 public string Condition
71 {
72 get { return (string)this.Fields[2].Data; }
73 set { this.Fields[2].Data = value; }
74 }
75
76 /// <summary>
77 /// Gets or sets whether this action is overridable.
78 /// </summary>
79 /// <value>Whether this action is overridable.</value>
80 public bool Overridable
81 {
82 get { return (1 == Convert.ToInt32(this.Fields[6].Data, CultureInfo.InvariantCulture)); }
83 set { this.Fields[6].Data = (value ? 1 : 0); }
84 }
85
86 /// <summary>
87 /// Gets or sets the sequence number of this action.
88 /// </summary>
89 /// <value>The sequence number of this action.</value>
90 public int Sequence
91 {
92 get { return Convert.ToInt32(this.Fields[3].Data, CultureInfo.InvariantCulture); }
93 set { this.Fields[3].Data = value; }
94 }
95
96 /// <summary>
97 /// Gets of sets the sequence table of this action.
98 /// </summary>
99 /// <value>The sequence table of this action.</value>
100 public SequenceTable SequenceTable
101 {
102 get { return (SequenceTable)Enum.Parse(typeof(SequenceTable), (string)this.Fields[0].Data); }
103 set { this.Fields[0].Data = value.ToString(); }
104 }
105
106 /// <summary>
107 /// Compares the current instance with another object of the same type.
108 /// </summary>
109 /// <param name="obj">Other reference to compare this one to.</param>
110 /// <returns>Returns less than 0 for less than, 0 for equals, and greater than 0 for greater.</returns>
111 public int CompareTo(object obj)
112 {
113 WixActionRow otherActionRow = (WixActionRow)obj;
114
115 return this.Sequence.CompareTo(otherActionRow.Sequence);
116 }
117 }
118}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs
new file mode 100644
index 00000000..b3d85c8a
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 /// <summary>
6 /// Specialization of a row for the WixApprovedExeForElevation table.
7 /// </summary>
8 public class WixApprovedExeForElevationRow : Row
9 {
10 /// <summary>
11 /// Creates an ApprovedExeForElevation 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 ApprovedExeForElevation row belongs to and should get its column definitions from.</param>
15 public WixApprovedExeForElevationRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
16 base(sourceLineNumbers, tableDef)
17 {
18 }
19
20 /// <summary>
21 /// Creates an ApprovedExeForElevation 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 ApprovedExeForElevation row belongs to and should get its column definitions from.</param>
25 public WixApprovedExeForElevationRow(SourceLineNumber sourceLineNumbers, Table table)
26 : base(sourceLineNumbers, table)
27 {
28 }
29
30 /// <summary>
31 /// Gets or sets the ApprovedExeForElevation identifier.
32 /// </summary>
33 /// <value>The ApprovedExeForElevation 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 Key path.
42 /// </summary>
43 /// <value>The Key path.</value>
44 public string Key
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 Value name.
52 /// </summary>
53 /// <value>The Value name.</value>
54 public string ValueName
55 {
56 get { return (string)this.Fields[2].Data; }
57 set { this.Fields[2].Data = value; }
58 }
59
60 /// <summary>
61 /// Gets or sets the attibutes.
62 /// </summary>
63 /// <value>The BundleApprovedExeForElevationAttributes.</value>
64 public BundleApprovedExeForElevationAttributes Attributes
65 {
66 get { return (BundleApprovedExeForElevationAttributes)this.Fields[3].Data; }
67 set { this.Fields[3].Data = (int)value; }
68 }
69
70 /// <summary>
71 /// Gets whether this row is 64-bit.
72 /// </summary>
73 public bool Win64
74 {
75 get { return BundleApprovedExeForElevationAttributes.Win64 == (this.Attributes & BundleApprovedExeForElevationAttributes.Win64); }
76 }
77 }
78}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleCatalogRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleCatalogRow.cs
new file mode 100644
index 00000000..0bebb5f3
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..1c138190
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..95fc0f54
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..6230a20c
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..fdd2b6cf
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..baa58f73
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..23c331fd
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..2a858d07
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..3f23c82c
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageCommandLineRow.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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 /// <summary>
6 /// Specialization of a row for the WixBundlePackageCommandLine table.
7 /// </summary>
8 public class WixBundlePackageCommandLineRow : Row
9 {
10 /// <summary>
11 /// Creates a WixBundlePackageCommandLineRow 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 WixBundlePackageCommandLineRow row belongs to and should get its column definitions from.</param>
15 public WixBundlePackageCommandLineRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
16 base(sourceLineNumbers, tableDef)
17 {
18 }
19
20 /// <summary>
21 /// Creates an WixBundlePackageCommandLineRow 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 WixBundlePackageCommandLineRow row belongs to and should get its column definitions from.</param>
25 public WixBundlePackageCommandLineRow(SourceLineNumber sourceLineNumbers, Table table)
26 : base(sourceLineNumbers, table)
27 {
28 }
29
30 /// <summary>
31 /// Gets or sets the package identifier.
32 /// </summary>
33 /// <value>The package identifier.</value>
34 public string ChainPackageId
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 command-line argument for installation.
42 /// </summary>
43 /// <value>The command-line argument.</value>
44 public string InstallArgument
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 command-line argument for uninstallation.
52 /// </summary>
53 /// <value>The command-line argument.</value>
54 public string UninstallArgument
55 {
56 get { return (string)this.Fields[2].Data; }
57 set { this.Fields[2].Data = value; }
58 }
59
60 /// <summary>
61 /// Gets or sets the command-line argument for repair.
62 /// </summary>
63 /// <value>The command-line argument.</value>
64 public string RepairArgument
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 condition.
72 /// </summary>
73 /// <value>The condition.</value>
74 public string Condition
75 {
76 get { return (string)this.Fields[4].Data; }
77 set { this.Fields[4].Data = value; }
78 }
79 }
80}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePackageExitCodeRow.cs
new file mode 100644
index 00000000..2de40eb2
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..8a1f438e
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..6e05e4b7
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6
7 /// <summary>
8 /// Attributes for the PatchTargetCode table.
9 /// </summary>
10 [Flags]
11 public enum WixBundlePatchTargetCodeAttributes : int
12 {
13 None = 0,
14
15 /// <summary>
16 /// The transform targets a specific ProductCode.
17 /// </summary>
18 TargetsProductCode = 1,
19
20 /// <summary>
21 /// The transform targets a specific UpgradeCode.
22 /// </summary>
23 TargetsUpgradeCode = 2,
24 }
25
26 /// <summary>
27 /// Specialization of a row for the PatchTargetCode table.
28 /// </summary>
29 public class WixBundlePatchTargetCodeRow : Row
30 {
31 /// <summary>
32 /// Creates a PatchTargetCodeRow row that does not belong to a table.
33 /// </summary>
34 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
35 /// <param name="tableDef">TableDefinition this PatchTargetCode row belongs to and should get its column definitions from.</param>
36 public WixBundlePatchTargetCodeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
37 base(sourceLineNumbers, tableDef)
38 {
39 }
40
41 /// <summary>
42 /// Creates a PatchTargetCodeRow 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 PatchTargetCode row belongs to and should get its column definitions from.</param>
46 public WixBundlePatchTargetCodeRow(SourceLineNumber sourceLineNumbers, Table table) :
47 base(sourceLineNumbers, table)
48 {
49 }
50
51 public string MspPackageId
52 {
53 get { return (string)this.Fields[0].Data; }
54 set { this.Fields[0].Data = value; }
55 }
56
57 public string TargetCode
58 {
59 get { return (string)this.Fields[1].Data; }
60 set { this.Fields[1].Data = value; }
61 }
62
63 public WixBundlePatchTargetCodeAttributes Attributes
64 {
65 get { return (WixBundlePatchTargetCodeAttributes)this.Fields[2].Data; }
66 set { this.Fields[2].Data = (int)value; }
67 }
68
69 public bool TargetsProductCode
70 {
71 get { return 0 != (WixBundlePatchTargetCodeAttributes.TargetsProductCode & this.Attributes); }
72 }
73
74 public bool TargetsUpgradeCode
75 {
76 get { return 0 != (WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode & this.Attributes); }
77 }
78 }
79}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePayloadRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePayloadRow.cs
new file mode 100644
index 00000000..ca4d35cc
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..5b0d2a18
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..434a19e3
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..22538606
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..0fea725f
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..68360ae9
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleUpdateRow.cs
@@ -0,0 +1,36 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 /// <summary>
6 /// Bundle update info for binding Bundles.
7 /// </summary>
8 public class WixBundleUpdateRow : Row
9 {
10 /// <summary>
11 /// Creates a WixBundleUpdateRow 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 WixBundleUpdateRow row belongs to and should get its column definitions from.</param>
15 public WixBundleUpdateRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
16 base(sourceLineNumbers, tableDef)
17 {
18 }
19
20 /// <summary>
21 /// Creates a WixBundleUpdateRow 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 WixBundleUpdateRow row belongs to and should get its column definitions from.</param>
25 public WixBundleUpdateRow(SourceLineNumber sourceLineNumbers, Table table) :
26 base(sourceLineNumbers, table)
27 {
28 }
29
30 public string Location
31 {
32 get { return (string)this.Fields[0].Data; }
33 set { this.Fields[0].Data = value; }
34 }
35 }
36}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleVariableRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleVariableRow.cs
new file mode 100644
index 00000000..64fa0336
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..8e08d613
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..78ba9766
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..2abd7656
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixComplexReferenceRow.cs
@@ -0,0 +1,202 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6 using System.Diagnostics.CodeAnalysis;
7
8 /// <summary>
9 /// Specialization of a row for the WixComplexReference table.
10 /// </summary>
11 public sealed class WixComplexReferenceRow : Row, IComparable
12 {
13 /// <summary>
14 /// Creates a WixComplexReferenceRow row that belongs to a table.
15 /// </summary>
16 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
17 /// <param name="table">Table this row belongs to and should get its column definitions from.</param>
18 public WixComplexReferenceRow(SourceLineNumber sourceLineNumbers, Table table)
19 : base(sourceLineNumbers, table)
20 {
21 }
22
23 /// <summary>
24 /// Gets the parent type of the complex reference.
25 /// </summary>
26 /// <value>Parent type of the complex reference.</value>
27 public ComplexReferenceParentType ParentType
28 {
29 get { return (ComplexReferenceParentType)Enum.ToObject(typeof(ComplexReferenceParentType), (int)this.Fields[1].Data); }
30 set { this.Fields[1].Data = (int)value; }
31 }
32
33 /// <summary>
34 /// Gets or sets the parent identifier of the complex reference.
35 /// </summary>
36 /// <value>Parent identifier of the complex reference.</value>
37 public string ParentId
38 {
39 get { return (string)this.Fields[0].Data; }
40 set { this.Fields[0].Data = value; }
41 }
42
43 /// <summary>
44 /// Gets the parent language of the complex reference.
45 /// </summary>
46 /// <value>Parent language of the complex reference.</value>
47 public string ParentLanguage
48 {
49 get { return (string)this.Fields[2].Data; }
50 set { this.Fields[2].Data = value; }
51 }
52
53 /// <summary>
54 /// Gets the child type of the complex reference.
55 /// </summary>
56 /// <value>Child type of the complex reference.</value>
57 public ComplexReferenceChildType ChildType
58 {
59 get { return (ComplexReferenceChildType)Enum.ToObject(typeof(ComplexReferenceChildType), (int)this.Fields[4].Data); }
60 set { this.Fields[4].Data = (int)value; }
61 }
62
63 /// <summary>
64 /// Gets the child identifier of the complex reference.
65 /// </summary>
66 /// <value>Child identifier of the complex reference.</value>
67 public string ChildId
68 {
69 get { return (string)this.Fields[3].Data; }
70 set { this.Fields[3].Data = value; }
71 }
72
73 /// <summary>
74 /// Gets if this is the primary complex reference.
75 /// </summary>
76 /// <value>true if primary complex reference.</value>
77 public bool IsPrimary
78 {
79 get
80 {
81 return (0x1 == ((int)this.Fields[5].Data & 0x1));
82 }
83
84 set
85 {
86 if (null == this.Fields[5].Data)
87 {
88 this.Fields[5].Data = 0;
89 }
90
91 if (value)
92 {
93 this.Fields[5].Data = (int)this.Fields[5].Data | 0x1;
94 }
95 else
96 {
97 this.Fields[5].Data = (int)this.Fields[5].Data & ~0x1;
98 }
99 }
100 }
101
102 /// <summary>
103 /// Determines if two complex references are equivalent.
104 /// </summary>
105 /// <param name="obj">Complex reference to compare.</param>
106 /// <returns>True if complex references are equivalent.</returns>
107 public override bool Equals(object obj)
108 {
109 return 0 == this.CompareTo(obj);
110 }
111
112 /// <summary>
113 /// Gets the hash code for the complex reference.
114 /// </summary>
115 /// <returns>Hash code for the complex reference.</returns>
116 public override int GetHashCode()
117 {
118 return this.ChildType.GetHashCode() ^ this.ChildId.GetHashCode() ^ this.ParentType.GetHashCode() ^ this.ParentLanguage.GetHashCode() ^ this.ParentId.GetHashCode() ^ this.IsPrimary.GetHashCode();
119 }
120
121 /// <summary>
122 /// Compares two complex references.
123 /// </summary>
124 /// <param name="obj">Complex reference to compare to.</param>
125 /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns>
126 public int CompareTo(object obj)
127 {
128 int comparison = this.CompareToWithoutConsideringPrimary(obj);
129 if (0 == comparison)
130 {
131 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"
132 }
133 return comparison;
134 }
135
136 /// <summary>
137 /// Compares two complex references without considering the primary bit.
138 /// </summary>
139 /// <param name="obj">Complex reference to compare to.</param>
140 /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns>
141 [SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.ArgumentException.#ctor(System.String,System.String)")]
142 public int CompareToWithoutConsideringPrimary(object obj)
143 {
144 var other = obj as WixComplexReferenceRow ?? throw new ArgumentNullException(nameof(obj));
145
146 int comparison = this.ChildType - other.ChildType;
147 if (0 == comparison)
148 {
149 comparison = String.Compare(this.ChildId, other.ChildId, StringComparison.Ordinal);
150 if (0 == comparison)
151 {
152 comparison = this.ParentType - other.ParentType;
153 if (0 == comparison)
154 {
155 string thisParentLanguage = null == this.ParentLanguage ? String.Empty : this.ParentLanguage;
156 string otherParentLanguage = null == other.ParentLanguage ? String.Empty : other.ParentLanguage;
157 comparison = String.Compare(thisParentLanguage, otherParentLanguage, StringComparison.Ordinal);
158 if (0 == comparison)
159 {
160 comparison = String.Compare(this.ParentId, other.ParentId, StringComparison.Ordinal);
161 }
162 }
163 }
164 }
165
166 return comparison;
167 }
168
169 /// <summary>
170 /// Creates a shallow copy of the ComplexReference.
171 /// </summary>
172 /// <returns>A shallow copy of the ComplexReference.</returns>
173 public WixComplexReferenceRow Clone()
174 {
175 WixComplexReferenceRow wixComplexReferenceRow = new WixComplexReferenceRow(this.SourceLineNumbers, this.Table);
176 wixComplexReferenceRow.ParentType = this.ParentType;
177 wixComplexReferenceRow.ParentId = this.ParentId;
178 wixComplexReferenceRow.ParentLanguage = this.ParentLanguage;
179 wixComplexReferenceRow.ChildType = this.ChildType;
180 wixComplexReferenceRow.ChildId = this.ChildId;
181 wixComplexReferenceRow.IsPrimary = this.IsPrimary;
182
183 return wixComplexReferenceRow;
184 }
185
186 /// <summary>
187 /// Changes all of the parent references to point to the passed in parent reference.
188 /// </summary>
189 /// <param name="parent">New parent complex reference.</param>
190 public void Reparent(WixComplexReferenceRow parent)
191 {
192 this.ParentId = parent.ParentId;
193 this.ParentLanguage = parent.ParentLanguage;
194 this.ParentType = parent.ParentType;
195
196 if (!this.IsPrimary)
197 {
198 this.IsPrimary = parent.IsPrimary;
199 }
200 }
201 }
202}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixDeltaPatchFileRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixDeltaPatchFileRow.cs
new file mode 100644
index 00000000..9edcea92
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..13899bd0
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixDeltaPatchSymbolPathsRow.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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
6
7 /// <summary>
8 /// Specialization of a row for the WixDeltaPatchSymbolPaths table.
9 /// </summary>
10 public sealed class WixDeltaPatchSymbolPathsRow : Row
11 {
12 /// <summary>
13 /// Creates a WixDeltaPatchSymbolPaths 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 WixDeltaPatchSymbolPathsRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
18 base(sourceLineNumbers, tableDef)
19 {
20 }
21
22 /// <summary>
23 /// Creates a WixDeltaPatchSymbolPaths 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 WixDeltaPatchSymbolPathsRow(SourceLineNumber sourceLineNumbers, Table table) :
28 base(sourceLineNumbers, table)
29 {
30 }
31
32 /// <summary>
33 /// Gets or sets the identifier the symbol paths apply to.
34 /// </summary>
35 /// <value>RetainLength list for the file.</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 type of the identifier.
44 /// </summary>
45 public SymbolPathType Type
46 {
47 get { return (SymbolPathType)this.Fields[1].AsInteger(); }
48 set { this.Fields[1].Data = value; }
49 }
50
51 /// <summary>
52 /// Gets or sets the delta patch symbol paths.
53 /// </summary>
54 public string SymbolPaths
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/WixFileRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixFileRow.cs
new file mode 100644
index 00000000..302272c4
--- /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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using WixToolset.Data.Tuples;
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..e59df729
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..dfe40c35
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..b2a64356
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..ac60452e
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixMergeRow.cs
@@ -0,0 +1,147 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6 using System.Globalization;
7
8 /// <summary>
9 /// Specialization of a row for tracking merge statements.
10 /// </summary>
11 public sealed class WixMergeRow : Row
12 {
13 /// <summary>
14 /// Creates a Merge 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 Merge row belongs to and should get its column definitions from.</param>
18 public WixMergeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
19 base(sourceLineNumbers, tableDef)
20 {
21 }
22
23 /// <summary>Creates a Merge row that belongs to a table.</summary>
24 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
25 /// <param name="table">Table this Merge row belongs to and should get its column definitions from.</param>
26 public WixMergeRow(SourceLineNumber sourceLineNumbers, Table table) :
27 base(sourceLineNumbers, table)
28 {
29 }
30
31 /// <summary>
32 /// Gets and sets the id for a merge row.
33 /// </summary>
34 /// <value>Id for the row.</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 and sets the language for a merge row.
43 /// </summary>
44 /// <value>Language for the row.</value>
45 public string Language
46 {
47 get { return (string)this.Fields[1].Data; }
48 set { this.Fields[1].Data = value; }
49 }
50
51 /// <summary>
52 /// Gets and sets the directory for a merge row.
53 /// </summary>
54 /// <value>Direcotory for the row.</value>
55 public string Directory
56 {
57 get { return (string)this.Fields[2].Data; }
58 set { this.Fields[2].Data = value; }
59 }
60
61 /// <summary>
62 /// Gets and sets the path to the merge module for a merge row.
63 /// </summary>
64 /// <value>Source path for the row.</value>
65 public string SourceFile
66 {
67 get { return (string)this.Fields[3].Data; }
68 set { this.Fields[3].Data = value; }
69 }
70
71 /// <summary>
72 /// Gets and sets the disk id the merge module should be placed on for a merge row.
73 /// </summary>
74 /// <value>Disk identifier for row.</value>
75 public int DiskId
76 {
77 get { return (int)this.Fields[4].Data; }
78 set { this.Fields[4].Data = value; }
79 }
80
81 /// <summary>
82 /// Gets and sets the compression value for a merge row.
83 /// </summary>
84 /// <value>Compression for a merge row.</value>
85 public YesNoType FileCompression
86 {
87 get
88 {
89 if (null == this.Fields[5].Data)
90 {
91 return YesNoType.NotSet;
92 }
93 else if (1 == (int)this.Fields[5].Data)
94 {
95 return YesNoType.Yes;
96 }
97 else if (0 == (int)this.Fields[5].Data)
98 {
99 return YesNoType.No;
100 }
101 else
102 {
103 throw new InvalidOperationException(String.Format(CultureInfo.CurrentUICulture, WixDataStrings.EXP_MergeTableFileCompressionColumnContainsInvalidValue, this.Fields[5].Data));
104 }
105 }
106 set
107 {
108 if (YesNoType.Yes == value)
109 {
110 this.Fields[5].Data = 1;
111 }
112 else if (YesNoType.No == value)
113 {
114 this.Fields[5].Data = 0;
115 }
116 else if (YesNoType.NotSet == value)
117 {
118 this.Fields[5].Data = null;
119 }
120 else
121 {
122 throw new InvalidOperationException(String.Format(CultureInfo.CurrentUICulture, WixDataStrings.EXP_CannotSetMergeTableFileCompressionColumnToInvalidValue, value));
123 }
124 }
125 }
126
127 /// <summary>
128 /// Gets and sets the configuration data for a merge row.
129 /// </summary>
130 /// <value>Comma delimited string of "name=value" pairs.</value>
131 public string ConfigurationData
132 {
133 get { return (string)this.Fields[6].Data; }
134 set { this.Fields[6].Data = value; }
135 }
136
137 /// <summary>
138 /// Gets and sets the primary feature for a merge row.
139 /// </summary>
140 /// <value>The primary feature for a merge row.</value>
141 public string Feature
142 {
143 get { return (string)this.Fields[7].Data; }
144 set { this.Fields[7].Data = value; }
145 }
146 }
147}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixPayloadPropertiesRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixPayloadPropertiesRow.cs
new file mode 100644
index 00000000..8bb9ef31
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixPayloadPropertiesRow.cs
@@ -0,0 +1,72 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 /// <summary>
6 /// Specialization of a row for the WixPayloadProperties table.
7 /// </summary>
8 public class WixPayloadPropertiesRow : Row
9 {
10 /// <summary>
11 /// Creates a WixPayloadProperties 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 WixPayloadProperties row belongs to and should get its column definitions from.</param>
15 public WixPayloadPropertiesRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDef) :
16 base(sourceLineNumbers, tableDef)
17 {
18 }
19
20 /// <summary>
21 /// Creates a WixPayloadProperties 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 WixPayloadProperties row belongs to and should get its column definitions from.</param>
25 public WixPayloadPropertiesRow(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 Package
37 {
38 get { return (string)this.Fields[1].Data; }
39 set { this.Fields[1].Data = value; }
40 }
41
42 public string Container
43 {
44 get { return (string)this.Fields[2].Data; }
45 set { this.Fields[2].Data = value; }
46 }
47
48 public string Name
49 {
50 get { return (string)this.Fields[3].Data; }
51 set { this.Fields[3].Data = value; }
52 }
53
54 public string Size
55 {
56 get { return (string)this.Fields[4].Data; }
57 set { this.Fields[4].Data = value; }
58 }
59
60 public string DownloadUrl
61 {
62 get { return (string)this.Fields[5].Data; }
63 set { this.Fields[5].Data = value; }
64 }
65
66 public string LayoutOnly
67 {
68 get { return (string)this.Fields[6].Data; }
69 set { this.Fields[6].Data = value; }
70 }
71 }
72}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixPropertyRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixPropertyRow.cs
new file mode 100644
index 00000000..2f356b71
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..d06429c5
--- /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
3namespace WixToolset.Data.WindowsInstaller.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..bf7dfb0e
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixSimpleReferenceRow.cs
@@ -0,0 +1,61 @@
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
3namespace WixToolset.Data.WindowsInstaller.Rows
4{
5 using System;
6
7 /// <summary>
8 /// Specialization of a row for the WixSimpleReference table.
9 /// </summary>
10 public sealed class WixSimpleReferenceRow : Row
11 {
12 /// <summary>
13 /// Creates a WixSimpleReferenceRow 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 WixSimpleReferenceRow(SourceLineNumber sourceLineNumbers, Table table)
18 : base(sourceLineNumbers, table)
19 {
20 }
21
22 /// <summary>
23 /// Creates a WixSimpleReferenceRow that belongs to a table.
24 /// </summary>
25 /// <param name="sourceLineNumbers">Original source lines for this row.</param>
26 /// <param name="tableDefinitions">Table definitions for this row.</param>
27 public WixSimpleReferenceRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinitions)
28 : base(sourceLineNumbers, tableDefinitions)
29 {
30 }
31
32 /// <summary>
33 /// Gets or sets the primary keys of the simple reference.
34 /// </summary>
35 /// <value>The primary keys of the simple reference.</value>
36 public string PrimaryKeys
37 {
38 get { return (string)this.Fields[1].Data; }
39 set { this.Fields[1].Data = value; }
40 }
41
42 /// <summary>
43 /// Gets the symbolic name.
44 /// </summary>
45 /// <value>Symbolic name.</value>
46 public string SymbolicName
47 {
48 get { return String.Concat(this.TableName, ":", this.PrimaryKeys); }
49 }
50
51 /// <summary>
52 /// Gets or sets the table name of the simple reference.
53 /// </summary>
54 /// <value>The table name of the simple reference.</value>
55 public string TableName
56 {
57 get { return (string)this.Fields[0].Data; }
58 set { this.Fields[0].Data = value; }
59 }
60 }
61}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixUpdateRegistrationRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixUpdateRegistrationRow.cs
new file mode 100644
index 00000000..8602d502
--- /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
3namespace WixToolset.Data.WindowsInstaller.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}