aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2019-10-07 07:32:59 -0700
committerRob Mensching <rob@firegiant.com>2019-10-07 11:27:21 -0700
commitcece10e037c6daacc8d2def1a9057882aec47fe4 (patch)
tree8e79c0d5b30ed8e663c077b2d9ce2b829b76ab84
parent7462108b714d07161126dcedda5312daef54ae13 (diff)
downloadwix-cece10e037c6daacc8d2def1a9057882aec47fe4.tar.gz
wix-cece10e037c6daacc8d2def1a9057882aec47fe4.tar.bz2
wix-cece10e037c6daacc8d2def1a9057882aec47fe4.zip
Add support for long fields and fix up Bundle and many other tuples
-rw-r--r--src/WixToolset.Data/BundleApprovedExeForElevationAttributes.cs16
-rw-r--r--src/WixToolset.Data/Burn/BurnConstants.cs19
-rw-r--r--src/WixToolset.Data/IntermediateField.cs4
-rw-r--r--src/WixToolset.Data/IntermediateFieldExtensions.cs370
-rw-r--r--src/WixToolset.Data/IntermediateFieldValueExtensions.cs39
-rw-r--r--src/WixToolset.Data/Tuples/IconTuple.cs4
-rw-r--r--src/WixToolset.Data/Tuples/MsiFileHashTuple.cs8
-rw-r--r--src/WixToolset.Data/Tuples/ProvidesDependencyTuple.cs84
-rw-r--r--src/WixToolset.Data/Tuples/TupleDefinitions.cs21
-rw-r--r--src/WixToolset.Data/Tuples/WixApprovedExeForElevationTuple.cs27
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleCatalogTuple.cs10
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleExePackageTuple.cs14
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleMsiFeatureTuple.cs18
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleMsiPackageTuple.cs15
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleMsiPropertyTuple.cs10
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleMspPackageTuple.cs14
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleMsuPackageTuple.cs8
-rw-r--r--src/WixToolset.Data/Tuples/WixBundlePackageExitCodeTuple.cs6
-rw-r--r--src/WixToolset.Data/Tuples/WixBundlePackageTuple.cs24
-rw-r--r--src/WixToolset.Data/Tuples/WixBundlePatchTargetCodeTuple.cs40
-rw-r--r--src/WixToolset.Data/Tuples/WixBundlePayloadTuple.cs42
-rw-r--r--src/WixToolset.Data/Tuples/WixBundlePropertiesTuple.cs84
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleRelatedPackageTuple.cs58
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleRollbackBoundaryTuple.cs8
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleSlipstreamMspTuple.cs22
-rw-r--r--src/WixToolset.Data/Tuples/WixBundleTuple.cs128
-rw-r--r--src/WixToolset.Data/Tuples/WixChainTuple.cs8
-rw-r--r--src/WixToolset.Data/Tuples/WixComponentSearchTuple.cs26
-rw-r--r--src/WixToolset.Data/Tuples/WixDependencyProviderTuple.cs87
-rw-r--r--src/WixToolset.Data/Tuples/WixFileSearchTuple.cs33
-rw-r--r--src/WixToolset.Data/Tuples/WixPackageFeatureInfoTuple.cs116
-rw-r--r--src/WixToolset.Data/Tuples/WixPackagePropertiesTuple.cs180
-rw-r--r--src/WixToolset.Data/Tuples/WixPayloadPropertiesTuple.cs92
-rw-r--r--src/WixToolset.Data/Tuples/WixProductSearchTuple.cs28
-rw-r--r--src/WixToolset.Data/Tuples/WixRegistrySearchTuple.cs35
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs8
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs3
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs8
-rw-r--r--src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs20
39 files changed, 761 insertions, 976 deletions
diff --git a/src/WixToolset.Data/BundleApprovedExeForElevationAttributes.cs b/src/WixToolset.Data/BundleApprovedExeForElevationAttributes.cs
deleted file mode 100644
index 240c2160..00000000
--- a/src/WixToolset.Data/BundleApprovedExeForElevationAttributes.cs
+++ /dev/null
@@ -1,16 +0,0 @@
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
4{
5 using System;
6
7 /// <summary>
8 /// Attributes available for an ApprovedExeForElevation.
9 /// </summary>
10 [Flags]
11 public enum BundleApprovedExeForElevationAttributes : int
12 {
13 None = 0x0,
14 Win64 = 0x1,
15 }
16}
diff --git a/src/WixToolset.Data/Burn/BurnConstants.cs b/src/WixToolset.Data/Burn/BurnConstants.cs
new file mode 100644
index 00000000..9803a73a
--- /dev/null
+++ b/src/WixToolset.Data/Burn/BurnConstants.cs
@@ -0,0 +1,19 @@
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.Burn
4{
5 public static class BurnConstants
6 {
7 public const string BurnUXContainerName = "WixUXContainer";
8 public const string BurnDefaultAttachedContainerName = "WixAttachedContainer";
9 public const string BundleLayoutOnlyPayloadsName = "BundleLayoutOnlyPayloads";
10
11 public const string BootstrapperApplicationDataTupleDefinitionTag = "WixBootstrapperApplicationData";
12
13 // The following constants must stay in sync with src\burn\engine\core.h
14 public const string BURN_BUNDLE_NAME = "WixBundleName";
15 public const string BURN_BUNDLE_ORIGINAL_SOURCE = "WixBundleOriginalSource";
16 public const string BURN_BUNDLE_ORIGINAL_SOURCE_FOLDER = "WixBundleOriginalSourceFolder";
17 public const string BURN_BUNDLE_LAST_USED_SOURCE = "WixBundleLastUsedSource";
18 }
19}
diff --git a/src/WixToolset.Data/IntermediateField.cs b/src/WixToolset.Data/IntermediateField.cs
index 5b511d02..2310f447 100644
--- a/src/WixToolset.Data/IntermediateField.cs
+++ b/src/WixToolset.Data/IntermediateField.cs
@@ -27,6 +27,10 @@ namespace WixToolset.Data
27 27
28 public static explicit operator bool? (IntermediateField field) => field.AsNullableBool(); 28 public static explicit operator bool? (IntermediateField field) => field.AsNullableBool();
29 29
30 public static explicit operator long(IntermediateField field) => field.AsLargeNumber();
31
32 public static explicit operator long?(IntermediateField field) => field.AsNullableLargeNumber();
33
30 public static explicit operator int(IntermediateField field) => field.AsNumber(); 34 public static explicit operator int(IntermediateField field) => field.AsNumber();
31 35
32 public static explicit operator int? (IntermediateField field) => field.AsNullableNumber(); 36 public static explicit operator int? (IntermediateField field) => field.AsNullableNumber();
diff --git a/src/WixToolset.Data/IntermediateFieldExtensions.cs b/src/WixToolset.Data/IntermediateFieldExtensions.cs
index a73a6552..5d2ddf06 100644
--- a/src/WixToolset.Data/IntermediateFieldExtensions.cs
+++ b/src/WixToolset.Data/IntermediateFieldExtensions.cs
@@ -20,20 +20,21 @@ namespace WixToolset.Data
20 20
21 switch (field.Definition.Type) 21 switch (field.Definition.Type)
22 { 22 {
23 case IntermediateFieldType.Bool: 23 case IntermediateFieldType.Bool:
24 return field.Value.AsBool(); 24 return field.Value.AsBool();
25 25
26 case IntermediateFieldType.Number: 26 case IntermediateFieldType.LargeNumber:
27 return field.Value.AsNumber() != 0; 27 case IntermediateFieldType.Number:
28 return field.Value.AsLargeNumber() != 0;
28 29
29 case IntermediateFieldType.String: 30 case IntermediateFieldType.String:
30 return !String.IsNullOrEmpty(field.Value.AsString()); 31 return !String.IsNullOrEmpty(field.Value.AsString());
31 32
32 case IntermediateFieldType.Path: 33 case IntermediateFieldType.Path:
33 return !String.IsNullOrEmpty(field.Value.AsPath()?.Path); 34 return !String.IsNullOrEmpty(field.Value.AsPath()?.Path);
34 35
35 default: 36 default:
36 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean"); 37 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean");
37 } 38 }
38 } 39 }
39 40
@@ -46,20 +47,68 @@ namespace WixToolset.Data
46 47
47 switch (field.Definition.Type) 48 switch (field.Definition.Type)
48 { 49 {
49 case IntermediateFieldType.Bool: 50 case IntermediateFieldType.Bool:
50 return field.Value.AsBool(); 51 return field.Value.AsBool();
51 52
52 case IntermediateFieldType.Number: 53 case IntermediateFieldType.LargeNumber:
53 return field.Value.AsNumber() != 0; 54 case IntermediateFieldType.Number:
55 return field.Value.AsLargeNumber() != 0;
54 56
55 case IntermediateFieldType.String: 57 case IntermediateFieldType.String:
56 return !String.IsNullOrEmpty(field.Value.AsString()); 58 return !String.IsNullOrEmpty(field.Value.AsString());
57 59
58 default: 60 default:
59 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean"); 61 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean");
60 } 62 }
61 } 63 }
62 64
65 public static long AsLargeNumber(this IntermediateField field)
66 {
67 if (field == null || field.Value == null || field.Value.Data == null)
68 {
69 return 0;
70 }
71
72 switch (field.Definition.Type)
73 {
74 case IntermediateFieldType.Bool:
75 return field.Value.AsBool() ? 1 : 0;
76
77 case IntermediateFieldType.LargeNumber:
78 case IntermediateFieldType.Number:
79 return field.Value.AsLargeNumber();
80
81 case IntermediateFieldType.String:
82 return Convert.ToInt64(field.Value.AsString());
83
84 default:
85 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to large number");
86 }
87 }
88
89 public static long? AsNullableLargeNumber(this IntermediateField field)
90 {
91 if (field == null || field.Value == null || field.Value.Data == null)
92 {
93 return null;
94 }
95
96 switch (field.Definition.Type)
97 {
98 case IntermediateFieldType.Bool:
99 return field.Value.AsBool() ? 1 : 0;
100
101 case IntermediateFieldType.LargeNumber:
102 case IntermediateFieldType.Number:
103 return field.Value.AsLargeNumber();
104
105 case IntermediateFieldType.String:
106 return Convert.ToInt64(field.Value.AsString());
107
108 default:
109 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to large number");
110 }
111 }
63 112
64 public static int AsNumber(this IntermediateField field) 113 public static int AsNumber(this IntermediateField field)
65 { 114 {
@@ -70,17 +119,18 @@ namespace WixToolset.Data
70 119
71 switch (field.Definition.Type) 120 switch (field.Definition.Type)
72 { 121 {
73 case IntermediateFieldType.Bool: 122 case IntermediateFieldType.Bool:
74 return field.Value.AsBool() ? 1 : 0; 123 return field.Value.AsBool() ? 1 : 0;
75 124
76 case IntermediateFieldType.Number: 125 case IntermediateFieldType.LargeNumber:
77 return field.Value.AsNumber(); 126 case IntermediateFieldType.Number:
127 return field.Value.AsNumber();
78 128
79 case IntermediateFieldType.String: 129 case IntermediateFieldType.String:
80 return Convert.ToInt32(field.Value.AsString()); 130 return Convert.ToInt32(field.Value.AsString());
81 131
82 default: 132 default:
83 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number"); 133 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number");
84 } 134 }
85 } 135 }
86 136
@@ -93,17 +143,18 @@ namespace WixToolset.Data
93 143
94 switch (field.Definition.Type) 144 switch (field.Definition.Type)
95 { 145 {
96 case IntermediateFieldType.Bool: 146 case IntermediateFieldType.Bool:
97 return field.Value.AsBool() ? 1 : 0; 147 return field.Value.AsBool() ? 1 : 0;
98 148
99 case IntermediateFieldType.Number: 149 case IntermediateFieldType.LargeNumber:
100 return field.Value.AsNumber(); 150 case IntermediateFieldType.Number:
151 return field.Value.AsNumber();
101 152
102 case IntermediateFieldType.String: 153 case IntermediateFieldType.String:
103 return Convert.ToInt32(field.Value.AsString()); 154 return Convert.ToInt32(field.Value.AsString());
104 155
105 default: 156 default:
106 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number"); 157 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number");
107 } 158 }
108 } 159 }
109 160
@@ -116,14 +167,14 @@ namespace WixToolset.Data
116 167
117 switch (field.Definition.Type) 168 switch (field.Definition.Type)
118 { 169 {
119 case IntermediateFieldType.String: 170 case IntermediateFieldType.String:
120 return new IntermediateFieldPathValue { Path = field.Value.AsString() }; 171 return new IntermediateFieldPathValue { Path = field.Value.AsString() };
121 172
122 case IntermediateFieldType.Path: 173 case IntermediateFieldType.Path:
123 return field.Value.AsPath(); 174 return field.Value.AsPath();
124 175
125 default: 176 default:
126 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string"); 177 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string");
127 } 178 }
128 } 179 }
129 180
@@ -136,20 +187,21 @@ namespace WixToolset.Data
136 187
137 switch (field.Definition.Type) 188 switch (field.Definition.Type)
138 { 189 {
139 case IntermediateFieldType.Bool: 190 case IntermediateFieldType.Bool:
140 return field.Value.AsBool() ? "true" : "false"; 191 return field.Value.AsBool() ? "true" : "false";
141 192
142 case IntermediateFieldType.Number: 193 case IntermediateFieldType.LargeNumber:
143 return field.Value.AsNumber().ToString(); 194 case IntermediateFieldType.Number:
195 return field.Value.AsLargeNumber().ToString();
144 196
145 case IntermediateFieldType.String: 197 case IntermediateFieldType.String:
146 return field.Value.AsString(); 198 return field.Value.AsString();
147 199
148 case IntermediateFieldType.Path: 200 case IntermediateFieldType.Path:
149 return field.Value.AsPath()?.Path; 201 return field.Value.AsPath()?.Path;
150 202
151 default: 203 default:
152 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string"); 204 throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string");
153 } 205 }
154 } 206 }
155 207
@@ -169,27 +221,27 @@ namespace WixToolset.Data
169 221
170 switch (field.Type) 222 switch (field.Type)
171 { 223 {
172 case IntermediateFieldType.Bool: 224 case IntermediateFieldType.Bool:
173 data = value; 225 data = value;
174 break; 226 break;
175 227
176 case IntermediateFieldType.LargeNumber: 228 case IntermediateFieldType.LargeNumber:
177 data = value ? (long)1 : (long)0; 229 data = value ? (long)1 : (long)0;
178 break; 230 break;
179 231
180 case IntermediateFieldType.Number: 232 case IntermediateFieldType.Number:
181 data = value ? 1 : 0; 233 data = value ? 1 : 0;
182 break; 234 break;
183 235
184 case IntermediateFieldType.Path: 236 case IntermediateFieldType.Path:
185 throw new ArgumentException($"Cannot convert bool '{value}' to a 'Path' field type.", nameof(value)); 237 throw new ArgumentException($"Cannot convert bool '{value}' to a 'Path' field type.", nameof(value));
186 238
187 case IntermediateFieldType.String: 239 case IntermediateFieldType.String:
188 data = value ? "true" : "false"; 240 data = value ? "true" : "false";
189 break; 241 break;
190 242
191 default: 243 default:
192 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); 244 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}");
193 }; 245 };
194 246
195 return AssignFieldValue(field, data); 247 return AssignFieldValue(field, data);
@@ -216,27 +268,27 @@ namespace WixToolset.Data
216 268
217 switch (field.Type) 269 switch (field.Type)
218 { 270 {
219 case IntermediateFieldType.Bool: 271 case IntermediateFieldType.Bool:
220 data = (value != 0); 272 data = (value != 0);
221 break; 273 break;
222 274
223 case IntermediateFieldType.LargeNumber: 275 case IntermediateFieldType.LargeNumber:
224 data = value; 276 data = value;
225 break; 277 break;
226 278
227 case IntermediateFieldType.Number: 279 case IntermediateFieldType.Number:
228 data = (int)value; 280 data = (int)value;
229 break; 281 break;
230 282
231 case IntermediateFieldType.Path: 283 case IntermediateFieldType.Path:
232 throw new ArgumentException($"Cannot convert large number '{value}' to a 'Path' field type.", nameof(value)); 284 throw new ArgumentException($"Cannot convert large number '{value}' to a 'Path' field type.", nameof(value));
233 285
234 case IntermediateFieldType.String: 286 case IntermediateFieldType.String:
235 data = value.ToString(); 287 data = value.ToString();
236 break; 288 break;
237 289
238 default: 290 default:
239 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); 291 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}");
240 }; 292 };
241 293
242 return AssignFieldValue(field, data); 294 return AssignFieldValue(field, data);
@@ -263,27 +315,27 @@ namespace WixToolset.Data
263 315
264 switch (field.Type) 316 switch (field.Type)
265 { 317 {
266 case IntermediateFieldType.Bool: 318 case IntermediateFieldType.Bool:
267 data = (value != 0); 319 data = (value != 0);
268 break; 320 break;
269 321
270 case IntermediateFieldType.LargeNumber: 322 case IntermediateFieldType.LargeNumber:
271 data = (long)value; 323 data = (long)value;
272 break; 324 break;
273 325
274 case IntermediateFieldType.Number: 326 case IntermediateFieldType.Number:
275 data = value; 327 data = value;
276 break; 328 break;
277 329
278 case IntermediateFieldType.Path: 330 case IntermediateFieldType.Path:
279 throw new ArgumentException($"Cannot convert number '{value}' to a 'Path' field type.", nameof(value)); 331 throw new ArgumentException($"Cannot convert number '{value}' to a 'Path' field type.", nameof(value));
280 332
281 case IntermediateFieldType.String: 333 case IntermediateFieldType.String:
282 data = value.ToString(); 334 data = value.ToString();
283 break; 335 break;
284 336
285 default: 337 default:
286 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); 338 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}");
287 }; 339 };
288 340
289 return AssignFieldValue(field, data); 341 return AssignFieldValue(field, data);
@@ -315,25 +367,25 @@ namespace WixToolset.Data
315 { 367 {
316 switch (field.Type) 368 switch (field.Type)
317 { 369 {
318 case IntermediateFieldType.Bool: 370 case IntermediateFieldType.Bool:
319 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'bool' field type.", nameof(value)); 371 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'bool' field type.", nameof(value));
320 372
321 case IntermediateFieldType.LargeNumber: 373 case IntermediateFieldType.LargeNumber:
322 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'large number' field type.", nameof(value)); 374 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'large number' field type.", nameof(value));
323 375
324 case IntermediateFieldType.Number: 376 case IntermediateFieldType.Number:
325 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'number' field type.", nameof(value)); 377 throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'number' field type.", nameof(value));
326 378
327 case IntermediateFieldType.Path: 379 case IntermediateFieldType.Path:
328 data = value; 380 data = value;
329 break; 381 break;
330 382
331 case IntermediateFieldType.String: 383 case IntermediateFieldType.String:
332 data = value.Path; 384 data = value.Path;
333 break; 385 break;
334 386
335 default: 387 default:
336 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); 388 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}");
337 }; 389 };
338 } 390 }
339 391
@@ -356,53 +408,53 @@ namespace WixToolset.Data
356 { 408 {
357 switch (field.Type) 409 switch (field.Type)
358 { 410 {
359 case IntermediateFieldType.Bool: 411 case IntermediateFieldType.Bool:
360 if (value.Equals("yes", StringComparison.OrdinalIgnoreCase) || value.Equals("true", StringComparison.OrdinalIgnoreCase)) 412 if (value.Equals("yes", StringComparison.OrdinalIgnoreCase) || value.Equals("true", StringComparison.OrdinalIgnoreCase))
361 { 413 {
362 data = true; 414 data = true;
363 } 415 }
364 else if (value.Equals("no", StringComparison.OrdinalIgnoreCase) || value.Equals("false", StringComparison.OrdinalIgnoreCase)) 416 else if (value.Equals("no", StringComparison.OrdinalIgnoreCase) || value.Equals("false", StringComparison.OrdinalIgnoreCase))
365 { 417 {
366 data = false; 418 data = false;
367 } 419 }
368 else 420 else
369 { 421 {
370 throw new ArgumentException($"Cannot convert string '{value}' to a 'bool' field type.", nameof(value)); 422 throw new ArgumentException($"Cannot convert string '{value}' to a 'bool' field type.", nameof(value));
371 } 423 }
372 break; 424 break;
373 425
374 case IntermediateFieldType.LargeNumber: 426 case IntermediateFieldType.LargeNumber:
375 if (Int64.TryParse(value, out var largeNumber)) 427 if (Int64.TryParse(value, out var largeNumber))
376 { 428 {
377 data = largeNumber; 429 data = largeNumber;
378 } 430 }
379 else 431 else
380 { 432 {
381 throw new ArgumentException($"Cannot convert string '{value}' to a 'large number' field type.", nameof(value)); 433 throw new ArgumentException($"Cannot convert string '{value}' to a 'large number' field type.", nameof(value));
382 } 434 }
383 break; 435 break;
384 436
385 case IntermediateFieldType.Number: 437 case IntermediateFieldType.Number:
386 if (Int32.TryParse(value, out var number)) 438 if (Int32.TryParse(value, out var number))
387 { 439 {
388 data = number; 440 data = number;
389 } 441 }
390 else 442 else
391 { 443 {
392 throw new ArgumentException($"Cannot convert string '{value}' to a 'number' field type.", nameof(value)); 444 throw new ArgumentException($"Cannot convert string '{value}' to a 'number' field type.", nameof(value));
393 } 445 }
394 break; 446 break;
395 447
396 case IntermediateFieldType.Path: 448 case IntermediateFieldType.Path:
397 data = new IntermediateFieldPathValue { Path = value }; 449 data = new IntermediateFieldPathValue { Path = value };
398 break; 450 break;
399 451
400 case IntermediateFieldType.String: 452 case IntermediateFieldType.String:
401 data = value; 453 data = value;
402 break; 454 break;
403 455
404 default: 456 default:
405 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); 457 throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}");
406 }; 458 };
407 } 459 }
408 460
diff --git a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
index f9322e09..317dfc7f 100644
--- a/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
+++ b/src/WixToolset.Data/IntermediateFieldValueExtensions.cs
@@ -45,6 +45,45 @@ namespace WixToolset.Data
45 return (bool)value.Data; 45 return (bool)value.Data;
46 } 46 }
47 47
48 public static long AsLargeNumber(this IntermediateFieldValue value)
49 {
50 var result = value.AsNullableLargeNumber();
51 return result ?? 0;
52 }
53
54 public static long? AsNullableLargeNumber(this IntermediateFieldValue value)
55 {
56 if (value?.Data == null)
57 {
58 return null;
59 }
60 else if (value.Data is int n)
61 {
62 return n;
63 }
64 else if (value.Data is long l)
65 {
66 return l;
67 }
68 else if (value.Data is bool b)
69 {
70 return b ? 1 : 0;
71 }
72 else if (value.Data is string s)
73 {
74 try
75 {
76 return Convert.ToInt32(s);
77 }
78 catch (FormatException)
79 {
80 throw new WixException(ErrorMessages.UnableToConvertFieldToNumber(s));
81 }
82 }
83
84 return (long)value.Data;
85 }
86
48 public static int AsNumber(this IntermediateFieldValue value) 87 public static int AsNumber(this IntermediateFieldValue value)
49 { 88 {
50 var result = value.AsNullableNumber(); 89 var result = value.AsNullableNumber();
diff --git a/src/WixToolset.Data/Tuples/IconTuple.cs b/src/WixToolset.Data/Tuples/IconTuple.cs
index 0e8c9fd7..e9ed93b2 100644
--- a/src/WixToolset.Data/Tuples/IconTuple.cs
+++ b/src/WixToolset.Data/Tuples/IconTuple.cs
@@ -35,9 +35,9 @@ namespace WixToolset.Data.Tuples
35 35
36 public IntermediateField this[IconTupleFields index] => this.Fields[(int)index]; 36 public IntermediateField this[IconTupleFields index] => this.Fields[(int)index];
37 37
38 public string Data 38 public IntermediateFieldPathValue Data
39 { 39 {
40 get => (string)this.Fields[(int)IconTupleFields.Data]; 40 get => this.Fields[(int)IconTupleFields.Data].AsPath();
41 set => this.Set((int)IconTupleFields.Data, value); 41 set => this.Set((int)IconTupleFields.Data, value);
42 } 42 }
43 } 43 }
diff --git a/src/WixToolset.Data/Tuples/MsiFileHashTuple.cs b/src/WixToolset.Data/Tuples/MsiFileHashTuple.cs
index a83093e9..10aa801d 100644
--- a/src/WixToolset.Data/Tuples/MsiFileHashTuple.cs
+++ b/src/WixToolset.Data/Tuples/MsiFileHashTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.MsiFileHash, 10 TupleDefinitionType.MsiFileHash,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.FileRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.Options), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.Options), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.HashPart1), IntermediateFieldType.Number), 14 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.HashPart1), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.HashPart2), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(MsiFileHashTupleFields.HashPart2), IntermediateFieldType.Number),
@@ -25,7 +24,6 @@ namespace WixToolset.Data.Tuples
25{ 24{
26 public enum MsiFileHashTupleFields 25 public enum MsiFileHashTupleFields
27 { 26 {
28 FileRef,
29 Options, 27 Options,
30 HashPart1, 28 HashPart1,
31 HashPart2, 29 HashPart2,
@@ -45,12 +43,6 @@ namespace WixToolset.Data.Tuples
45 43
46 public IntermediateField this[MsiFileHashTupleFields index] => this.Fields[(int)index]; 44 public IntermediateField this[MsiFileHashTupleFields index] => this.Fields[(int)index];
47 45
48 public string FileRef
49 {
50 get => (string)this.Fields[(int)MsiFileHashTupleFields.FileRef];
51 set => this.Set((int)MsiFileHashTupleFields.FileRef, value);
52 }
53
54 public int Options 46 public int Options
55 { 47 {
56 get => (int)this.Fields[(int)MsiFileHashTupleFields.Options]; 48 get => (int)this.Fields[(int)MsiFileHashTupleFields.Options];
diff --git a/src/WixToolset.Data/Tuples/ProvidesDependencyTuple.cs b/src/WixToolset.Data/Tuples/ProvidesDependencyTuple.cs
new file mode 100644
index 00000000..a6337bdf
--- /dev/null
+++ b/src/WixToolset.Data/Tuples/ProvidesDependencyTuple.cs
@@ -0,0 +1,84 @@
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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition ProvidesDependency = new IntermediateTupleDefinition(
10 TupleDefinitionType.ProvidesDependency,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.PackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.Key), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.Version), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.DisplayName), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.Attributes), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(ProvidesDependencyTupleFields.Imported), IntermediateFieldType.Bool),
19 },
20 typeof(ProvidesDependencyTuple));
21 }
22}
23
24namespace WixToolset.Data.Tuples
25{
26 public enum ProvidesDependencyTupleFields
27 {
28 PackageRef,
29 Key,
30 Version,
31 DisplayName,
32 Attributes,
33 Imported,
34 }
35
36 public class ProvidesDependencyTuple : IntermediateTuple
37 {
38 public ProvidesDependencyTuple() : base(TupleDefinitions.ProvidesDependency, null, null)
39 {
40 }
41
42 public ProvidesDependencyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.ProvidesDependency, sourceLineNumber, id)
43 {
44 }
45
46 public IntermediateField this[ProvidesDependencyTupleFields index] => this.Fields[(int)index];
47
48 public string PackageRef
49 {
50 get => (string)this.Fields[(int)ProvidesDependencyTupleFields.PackageRef];
51 set => this.Set((int)ProvidesDependencyTupleFields.PackageRef, value);
52 }
53
54 public string Key
55 {
56 get => (string)this.Fields[(int)ProvidesDependencyTupleFields.Key];
57 set => this.Set((int)ProvidesDependencyTupleFields.Key, value);
58 }
59
60 public string Version
61 {
62 get => (string)this.Fields[(int)ProvidesDependencyTupleFields.Version];
63 set => this.Set((int)ProvidesDependencyTupleFields.Version, value);
64 }
65
66 public string DisplayName
67 {
68 get => (string)this.Fields[(int)ProvidesDependencyTupleFields.DisplayName];
69 set => this.Set((int)ProvidesDependencyTupleFields.DisplayName, value);
70 }
71
72 public int? Attributes
73 {
74 get => (int?)this.Fields[(int)ProvidesDependencyTupleFields.Attributes];
75 set => this.Set((int)ProvidesDependencyTupleFields.Attributes, value);
76 }
77
78 public bool Imported
79 {
80 get => (bool)this.Fields[(int)ProvidesDependencyTupleFields.Imported];
81 set => this.Set((int)ProvidesDependencyTupleFields.Imported, value);
82 }
83 }
84}
diff --git a/src/WixToolset.Data/Tuples/TupleDefinitions.cs b/src/WixToolset.Data/Tuples/TupleDefinitions.cs
index bc1cb2eb..bad8af3f 100644
--- a/src/WixToolset.Data/Tuples/TupleDefinitions.cs
+++ b/src/WixToolset.Data/Tuples/TupleDefinitions.cs
@@ -100,6 +100,7 @@ namespace WixToolset.Data
100 ProgId, 100 ProgId,
101 Properties, 101 Properties,
102 Property, 102 Property,
103 ProvidesDependency,
103 PublishComponent, 104 PublishComponent,
104 RadioButton, 105 RadioButton,
105 Registry, 106 Registry,
@@ -144,7 +145,6 @@ namespace WixToolset.Data
144 WixBundlePatchTargetCode, 145 WixBundlePatchTargetCode,
145 WixBundlePayload, 146 WixBundlePayload,
146 WixBundlePayloadGroup, 147 WixBundlePayloadGroup,
147 WixBundleProperties,
148 WixBundleRelatedPackage, 148 WixBundleRelatedPackage,
149 WixBundleRollbackBoundary, 149 WixBundleRollbackBoundary,
150 WixBundleSlipstreamMsp, 150 WixBundleSlipstreamMsp,
@@ -159,6 +159,7 @@ namespace WixToolset.Data
159 WixCustomTable, 159 WixCustomTable,
160 WixDeltaPatchFile, 160 WixDeltaPatchFile,
161 WixDeltaPatchSymbolPaths, 161 WixDeltaPatchSymbolPaths,
162 WixDependencyProvider,
162 WixEnsureTable, 163 WixEnsureTable,
163 WixFeatureGroup, 164 WixFeatureGroup,
164 WixFeatureModules, 165 WixFeatureModules,
@@ -171,15 +172,12 @@ namespace WixToolset.Data
171 WixMediaTemplate, 172 WixMediaTemplate,
172 WixMerge, 173 WixMerge,
173 WixOrdering, 174 WixOrdering,
174 WixPackageFeatureInfo,
175 WixPackageProperties,
176 WixPatchBaseline, 175 WixPatchBaseline,
177 WixPatchFamilyGroup, 176 WixPatchFamilyGroup,
178 WixPatchId, 177 WixPatchId,
179 WixPatchMetadata, 178 WixPatchMetadata,
180 WixPatchRef, 179 WixPatchRef,
181 WixPatchTarget, 180 WixPatchTarget,
182 WixPayloadProperties,
183 WixProductSearch, 181 WixProductSearch,
184 WixProperty, 182 WixProperty,
185 WixRegistrySearch, 183 WixRegistrySearch,
@@ -495,6 +493,9 @@ namespace WixToolset.Data
495 case TupleDefinitionType.PublishComponent: 493 case TupleDefinitionType.PublishComponent:
496 return TupleDefinitions.PublishComponent; 494 return TupleDefinitions.PublishComponent;
497 495
496 case TupleDefinitionType.ProvidesDependency:
497 return TupleDefinitions.ProvidesDependency;
498
498 case TupleDefinitionType.RadioButton: 499 case TupleDefinitionType.RadioButton:
499 return TupleDefinitions.RadioButton; 500 return TupleDefinitions.RadioButton;
500 501
@@ -624,9 +625,6 @@ namespace WixToolset.Data
624 case TupleDefinitionType.WixBundlePayloadGroup: 625 case TupleDefinitionType.WixBundlePayloadGroup:
625 return TupleDefinitions.WixBundlePayloadGroup; 626 return TupleDefinitions.WixBundlePayloadGroup;
626 627
627 case TupleDefinitionType.WixBundleProperties:
628 return TupleDefinitions.WixBundleProperties;
629
630 case TupleDefinitionType.WixBundleRelatedPackage: 628 case TupleDefinitionType.WixBundleRelatedPackage:
631 return TupleDefinitions.WixBundleRelatedPackage; 629 return TupleDefinitions.WixBundleRelatedPackage;
632 630
@@ -699,12 +697,6 @@ namespace WixToolset.Data
699 case TupleDefinitionType.WixOrdering: 697 case TupleDefinitionType.WixOrdering:
700 return TupleDefinitions.WixOrdering; 698 return TupleDefinitions.WixOrdering;
701 699
702 case TupleDefinitionType.WixPackageFeatureInfo:
703 return TupleDefinitions.WixPackageFeatureInfo;
704
705 case TupleDefinitionType.WixPackageProperties:
706 return TupleDefinitions.WixPackageProperties;
707
708 case TupleDefinitionType.WixPatchBaseline: 700 case TupleDefinitionType.WixPatchBaseline:
709 return TupleDefinitions.WixPatchBaseline; 701 return TupleDefinitions.WixPatchBaseline;
710 702
@@ -723,9 +715,6 @@ namespace WixToolset.Data
723 case TupleDefinitionType.WixPatchTarget: 715 case TupleDefinitionType.WixPatchTarget:
724 return TupleDefinitions.WixPatchTarget; 716 return TupleDefinitions.WixPatchTarget;
725 717
726 case TupleDefinitionType.WixPayloadProperties:
727 return TupleDefinitions.WixPayloadProperties;
728
729 case TupleDefinitionType.WixProductSearch: 718 case TupleDefinitionType.WixProductSearch:
730 return TupleDefinitions.WixProductSearch; 719 return TupleDefinitions.WixProductSearch;
731 720
diff --git a/src/WixToolset.Data/Tuples/WixApprovedExeForElevationTuple.cs b/src/WixToolset.Data/Tuples/WixApprovedExeForElevationTuple.cs
index e2326697..07fe838b 100644
--- a/src/WixToolset.Data/Tuples/WixApprovedExeForElevationTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixApprovedExeForElevationTuple.cs
@@ -11,7 +11,7 @@ namespace WixToolset.Data
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.Key), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.Key), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.Value), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.ValueName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.Attributes), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationTupleFields.Attributes), IntermediateFieldType.Number),
16 }, 16 },
17 typeof(WixApprovedExeForElevationTuple)); 17 typeof(WixApprovedExeForElevationTuple));
@@ -20,13 +20,22 @@ namespace WixToolset.Data
20 20
21namespace WixToolset.Data.Tuples 21namespace WixToolset.Data.Tuples
22{ 22{
23 using System;
24
23 public enum WixApprovedExeForElevationTupleFields 25 public enum WixApprovedExeForElevationTupleFields
24 { 26 {
25 Key, 27 Key,
26 Value, 28 ValueName,
27 Attributes, 29 Attributes,
28 } 30 }
29 31
32 [Flags]
33 public enum WixApprovedExeForElevationAttributes
34 {
35 None = 0x0,
36 Win64 = 0x1,
37 }
38
30 public class WixApprovedExeForElevationTuple : IntermediateTuple 39 public class WixApprovedExeForElevationTuple : IntermediateTuple
31 { 40 {
32 public WixApprovedExeForElevationTuple() : base(TupleDefinitions.WixApprovedExeForElevation, null, null) 41 public WixApprovedExeForElevationTuple() : base(TupleDefinitions.WixApprovedExeForElevation, null, null)
@@ -45,16 +54,18 @@ namespace WixToolset.Data.Tuples
45 set => this.Set((int)WixApprovedExeForElevationTupleFields.Key, value); 54 set => this.Set((int)WixApprovedExeForElevationTupleFields.Key, value);
46 } 55 }
47 56
48 public string Value 57 public string ValueName
49 { 58 {
50 get => (string)this.Fields[(int)WixApprovedExeForElevationTupleFields.Value]; 59 get => (string)this.Fields[(int)WixApprovedExeForElevationTupleFields.ValueName];
51 set => this.Set((int)WixApprovedExeForElevationTupleFields.Value, value); 60 set => this.Set((int)WixApprovedExeForElevationTupleFields.ValueName, value);
52 } 61 }
53 62
54 public BundleApprovedExeForElevationAttributes Attributes 63 public WixApprovedExeForElevationAttributes Attributes
55 { 64 {
56 get => (BundleApprovedExeForElevationAttributes)this.Fields[(int)WixApprovedExeForElevationTupleFields.Attributes].AsNumber(); 65 get => (WixApprovedExeForElevationAttributes)this.Fields[(int)WixApprovedExeForElevationTupleFields.Attributes].AsNumber();
57 set => this.Set((int)WixApprovedExeForElevationTupleFields.Attributes, (int)value); 66 set => this.Set((int)WixApprovedExeForElevationTupleFields.Attributes, (int)value);
58 } 67 }
68
69 public bool Win64 => (this.Attributes & WixApprovedExeForElevationAttributes.Win64) == WixApprovedExeForElevationAttributes.Win64;
59 } 70 }
60} \ No newline at end of file 71}
diff --git a/src/WixToolset.Data/Tuples/WixBundleCatalogTuple.cs b/src/WixToolset.Data/Tuples/WixBundleCatalogTuple.cs
index ca6e6b33..51c1306e 100644
--- a/src/WixToolset.Data/Tuples/WixBundleCatalogTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleCatalogTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleCatalog, 10 TupleDefinitionType.WixBundleCatalog,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleCatalogTupleFields.WixBundleCatalog), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleCatalogTupleFields.PayloadRef), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundleCatalogTupleFields.PayloadRef), IntermediateFieldType.String),
15 }, 14 },
16 typeof(WixBundleCatalogTuple)); 15 typeof(WixBundleCatalogTuple));
@@ -21,7 +20,6 @@ namespace WixToolset.Data.Tuples
21{ 20{
22 public enum WixBundleCatalogTupleFields 21 public enum WixBundleCatalogTupleFields
23 { 22 {
24 WixBundleCatalog,
25 PayloadRef, 23 PayloadRef,
26 } 24 }
27 25
@@ -37,16 +35,10 @@ namespace WixToolset.Data.Tuples
37 35
38 public IntermediateField this[WixBundleCatalogTupleFields index] => this.Fields[(int)index]; 36 public IntermediateField this[WixBundleCatalogTupleFields index] => this.Fields[(int)index];
39 37
40 public string WixBundleCatalog
41 {
42 get => (string)this.Fields[(int)WixBundleCatalogTupleFields.WixBundleCatalog];
43 set => this.Set((int)WixBundleCatalogTupleFields.WixBundleCatalog, value);
44 }
45
46 public string PayloadRef 38 public string PayloadRef
47 { 39 {
48 get => (string)this.Fields[(int)WixBundleCatalogTupleFields.PayloadRef]; 40 get => (string)this.Fields[(int)WixBundleCatalogTupleFields.PayloadRef];
49 set => this.Set((int)WixBundleCatalogTupleFields.PayloadRef, value); 41 set => this.Set((int)WixBundleCatalogTupleFields.PayloadRef, value);
50 } 42 }
51 } 43 }
52} \ No newline at end of file 44}
diff --git a/src/WixToolset.Data/Tuples/WixBundleExePackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundleExePackageTuple.cs
index 798e2d0d..e87de26d 100644
--- a/src/WixToolset.Data/Tuples/WixBundleExePackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleExePackageTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleExePackage, 10 TupleDefinitionType.WixBundleExePackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.WixBundlePackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.Attributes), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.Attributes), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.DetectCondition), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.DetectCondition), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.InstallCommand), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleExePackageTupleFields.InstallCommand), IntermediateFieldType.String),
@@ -28,7 +27,6 @@ namespace WixToolset.Data.Tuples
28 27
29 public enum WixBundleExePackageTupleFields 28 public enum WixBundleExePackageTupleFields
30 { 29 {
31 WixBundlePackageRef,
32 Attributes, 30 Attributes,
33 DetectCondition, 31 DetectCondition,
34 InstallCommand, 32 InstallCommand,
@@ -40,7 +38,7 @@ namespace WixToolset.Data.Tuples
40 [Flags] 38 [Flags]
41 public enum WixBundleExePackageAttributes 39 public enum WixBundleExePackageAttributes
42 { 40 {
43 Repairable = 0x1, 41 None = 0,
44 } 42 }
45 43
46 public class WixBundleExePackageTuple : IntermediateTuple 44 public class WixBundleExePackageTuple : IntermediateTuple
@@ -55,12 +53,6 @@ namespace WixToolset.Data.Tuples
55 53
56 public IntermediateField this[WixBundleExePackageTupleFields index] => this.Fields[(int)index]; 54 public IntermediateField this[WixBundleExePackageTupleFields index] => this.Fields[(int)index];
57 55
58 public string WixBundlePackageRef
59 {
60 get => (string)this.Fields[(int)WixBundleExePackageTupleFields.WixBundlePackageRef];
61 set => this.Set((int)WixBundleExePackageTupleFields.WixBundlePackageRef, value);
62 }
63
64 public WixBundleExePackageAttributes Attributes 56 public WixBundleExePackageAttributes Attributes
65 { 57 {
66 get => (WixBundleExePackageAttributes)(int)this.Fields[(int)WixBundleExePackageTupleFields.Attributes]; 58 get => (WixBundleExePackageAttributes)(int)this.Fields[(int)WixBundleExePackageTupleFields.Attributes];
@@ -96,5 +88,7 @@ namespace WixToolset.Data.Tuples
96 get => (string)this.Fields[(int)WixBundleExePackageTupleFields.ExeProtocol]; 88 get => (string)this.Fields[(int)WixBundleExePackageTupleFields.ExeProtocol];
97 set => this.Set((int)WixBundleExePackageTupleFields.ExeProtocol, value); 89 set => this.Set((int)WixBundleExePackageTupleFields.ExeProtocol, value);
98 } 90 }
91
92 public bool Repairable => !String.IsNullOrEmpty(this.RepairCommand);
99 } 93 }
100} \ No newline at end of file 94}
diff --git a/src/WixToolset.Data/Tuples/WixBundleMsiFeatureTuple.cs b/src/WixToolset.Data/Tuples/WixBundleMsiFeatureTuple.cs
index 7b6c635a..dab42529 100644
--- a/src/WixToolset.Data/Tuples/WixBundleMsiFeatureTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleMsiFeatureTuple.cs
@@ -10,9 +10,9 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleMsiFeature, 10 TupleDefinitionType.WixBundleMsiFeature,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.WixBundlePackageRef), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.PackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Name), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Name), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Size), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Size), IntermediateFieldType.LargeNumber),
16 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Parent), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Parent), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Title), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Title), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Description), IntermediateFieldType.String), 18 new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureTupleFields.Description), IntermediateFieldType.String),
@@ -29,7 +29,7 @@ namespace WixToolset.Data.Tuples
29{ 29{
30 public enum WixBundleMsiFeatureTupleFields 30 public enum WixBundleMsiFeatureTupleFields
31 { 31 {
32 WixBundlePackageRef, 32 PackageRef,
33 Name, 33 Name,
34 Size, 34 Size,
35 Parent, 35 Parent,
@@ -53,10 +53,10 @@ namespace WixToolset.Data.Tuples
53 53
54 public IntermediateField this[WixBundleMsiFeatureTupleFields index] => this.Fields[(int)index]; 54 public IntermediateField this[WixBundleMsiFeatureTupleFields index] => this.Fields[(int)index];
55 55
56 public string WixBundlePackageRef 56 public string PackageRef
57 { 57 {
58 get => (string)this.Fields[(int)WixBundleMsiFeatureTupleFields.WixBundlePackageRef]; 58 get => (string)this.Fields[(int)WixBundleMsiFeatureTupleFields.PackageRef];
59 set => this.Set((int)WixBundleMsiFeatureTupleFields.WixBundlePackageRef, value); 59 set => this.Set((int)WixBundleMsiFeatureTupleFields.PackageRef, value);
60 } 60 }
61 61
62 public string Name 62 public string Name
@@ -65,9 +65,9 @@ namespace WixToolset.Data.Tuples
65 set => this.Set((int)WixBundleMsiFeatureTupleFields.Name, value); 65 set => this.Set((int)WixBundleMsiFeatureTupleFields.Name, value);
66 } 66 }
67 67
68 public int Size 68 public long Size
69 { 69 {
70 get => (int)this.Fields[(int)WixBundleMsiFeatureTupleFields.Size]; 70 get => (long)this.Fields[(int)WixBundleMsiFeatureTupleFields.Size];
71 set => this.Set((int)WixBundleMsiFeatureTupleFields.Size, value); 71 set => this.Set((int)WixBundleMsiFeatureTupleFields.Size, value);
72 } 72 }
73 73
@@ -113,4 +113,4 @@ namespace WixToolset.Data.Tuples
113 set => this.Set((int)WixBundleMsiFeatureTupleFields.Attributes, value); 113 set => this.Set((int)WixBundleMsiFeatureTupleFields.Attributes, value);
114 } 114 }
115 } 115 }
116} \ No newline at end of file 116}
diff --git a/src/WixToolset.Data/Tuples/WixBundleMsiPackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundleMsiPackageTuple.cs
index a86c33d0..3a205376 100644
--- a/src/WixToolset.Data/Tuples/WixBundleMsiPackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleMsiPackageTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleMsiPackage, 10 TupleDefinitionType.WixBundleMsiPackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.WixBundlePackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.Attributes), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.Attributes), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.ProductCode), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.ProductCode), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.UpgradeCode), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleMsiPackageTupleFields.UpgradeCode), IntermediateFieldType.String),
@@ -29,7 +28,6 @@ namespace WixToolset.Data.Tuples
29 28
30 public enum WixBundleMsiPackageTupleFields 29 public enum WixBundleMsiPackageTupleFields
31 { 30 {
32 WixBundlePackageRef,
33 Attributes, 31 Attributes,
34 ProductCode, 32 ProductCode,
35 UpgradeCode, 33 UpgradeCode,
@@ -45,7 +43,6 @@ namespace WixToolset.Data.Tuples
45 DisplayInternalUI = 0x1, 43 DisplayInternalUI = 0x1,
46 EnableFeatureSelection = 0x4, 44 EnableFeatureSelection = 0x4,
47 ForcePerMachine = 0x2, 45 ForcePerMachine = 0x2,
48 SuppressLooseFilePayloadGeneration = 0x8,
49 } 46 }
50 47
51 public class WixBundleMsiPackageTuple : IntermediateTuple 48 public class WixBundleMsiPackageTuple : IntermediateTuple
@@ -60,12 +57,6 @@ namespace WixToolset.Data.Tuples
60 57
61 public IntermediateField this[WixBundleMsiPackageTupleFields index] => this.Fields[(int)index]; 58 public IntermediateField this[WixBundleMsiPackageTupleFields index] => this.Fields[(int)index];
62 59
63 public string WixBundlePackageRef
64 {
65 get => (string)this.Fields[(int)WixBundleMsiPackageTupleFields.WixBundlePackageRef];
66 set => this.Set((int)WixBundleMsiPackageTupleFields.WixBundlePackageRef, value);
67 }
68
69 public WixBundleMsiPackageAttributes Attributes 60 public WixBundleMsiPackageAttributes Attributes
70 { 61 {
71 get => (WixBundleMsiPackageAttributes)(int)this.Fields[(int)WixBundleMsiPackageTupleFields.Attributes]; 62 get => (WixBundleMsiPackageAttributes)(int)this.Fields[(int)WixBundleMsiPackageTupleFields.Attributes];
@@ -107,5 +98,11 @@ namespace WixToolset.Data.Tuples
107 get => (string)this.Fields[(int)WixBundleMsiPackageTupleFields.Manufacturer]; 98 get => (string)this.Fields[(int)WixBundleMsiPackageTupleFields.Manufacturer];
108 set => this.Set((int)WixBundleMsiPackageTupleFields.Manufacturer, value); 99 set => this.Set((int)WixBundleMsiPackageTupleFields.Manufacturer, value);
109 } 100 }
101
102 public bool DisplayInternalUI => (this.Attributes & WixBundleMsiPackageAttributes.DisplayInternalUI) == WixBundleMsiPackageAttributes.DisplayInternalUI;
103
104 public bool EnableFeatureSelection => (this.Attributes & WixBundleMsiPackageAttributes.EnableFeatureSelection) == WixBundleMsiPackageAttributes.EnableFeatureSelection;
105
106 public bool ForcePerMachine => (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine) == WixBundleMsiPackageAttributes.ForcePerMachine;
110 } 107 }
111} \ No newline at end of file 108} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixBundleMsiPropertyTuple.cs b/src/WixToolset.Data/Tuples/WixBundleMsiPropertyTuple.cs
index 2b236a24..80500f17 100644
--- a/src/WixToolset.Data/Tuples/WixBundleMsiPropertyTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleMsiPropertyTuple.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleMsiProperty, 10 TupleDefinitionType.WixBundleMsiProperty,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.WixBundlePackageRef), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.PackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Name), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Name), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Value), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Value), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Condition), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixBundleMsiPropertyTupleFields.Condition), IntermediateFieldType.String),
@@ -23,7 +23,7 @@ namespace WixToolset.Data.Tuples
23{ 23{
24 public enum WixBundleMsiPropertyTupleFields 24 public enum WixBundleMsiPropertyTupleFields
25 { 25 {
26 WixBundlePackageRef, 26 PackageRef,
27 Name, 27 Name,
28 Value, 28 Value,
29 Condition, 29 Condition,
@@ -41,10 +41,10 @@ namespace WixToolset.Data.Tuples
41 41
42 public IntermediateField this[WixBundleMsiPropertyTupleFields index] => this.Fields[(int)index]; 42 public IntermediateField this[WixBundleMsiPropertyTupleFields index] => this.Fields[(int)index];
43 43
44 public string WixBundlePackageRef 44 public string PackageRef
45 { 45 {
46 get => (string)this.Fields[(int)WixBundleMsiPropertyTupleFields.WixBundlePackageRef]; 46 get => (string)this.Fields[(int)WixBundleMsiPropertyTupleFields.PackageRef];
47 set => this.Set((int)WixBundleMsiPropertyTupleFields.WixBundlePackageRef, value); 47 set => this.Set((int)WixBundleMsiPropertyTupleFields.PackageRef, value);
48 } 48 }
49 49
50 public string Name 50 public string Name
diff --git a/src/WixToolset.Data/Tuples/WixBundleMspPackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundleMspPackageTuple.cs
index 8ef38fde..6c5cb38b 100644
--- a/src/WixToolset.Data/Tuples/WixBundleMspPackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleMspPackageTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleMspPackage, 10 TupleDefinitionType.WixBundleMspPackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.WixBundlePackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.Attributes), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.Attributes), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.PatchCode), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.PatchCode), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.Manufacturer), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleMspPackageTupleFields.Manufacturer), IntermediateFieldType.String),
@@ -26,7 +25,6 @@ namespace WixToolset.Data.Tuples
26 25
27 public enum WixBundleMspPackageTupleFields 26 public enum WixBundleMspPackageTupleFields
28 { 27 {
29 WixBundlePackageRef,
30 Attributes, 28 Attributes,
31 PatchCode, 29 PatchCode,
32 Manufacturer, 30 Manufacturer,
@@ -53,12 +51,6 @@ namespace WixToolset.Data.Tuples
53 51
54 public IntermediateField this[WixBundleMspPackageTupleFields index] => this.Fields[(int)index]; 52 public IntermediateField this[WixBundleMspPackageTupleFields index] => this.Fields[(int)index];
55 53
56 public string WixBundlePackageRef
57 {
58 get => (string)this.Fields[(int)WixBundleMspPackageTupleFields.WixBundlePackageRef];
59 set => this.Set((int)WixBundleMspPackageTupleFields.WixBundlePackageRef, value);
60 }
61
62 public WixBundleMspPackageAttributes Attributes 54 public WixBundleMspPackageAttributes Attributes
63 { 55 {
64 get => (WixBundleMspPackageAttributes)(int)this.Fields[(int)WixBundleMspPackageTupleFields.Attributes]; 56 get => (WixBundleMspPackageAttributes)(int)this.Fields[(int)WixBundleMspPackageTupleFields.Attributes];
@@ -82,5 +74,11 @@ namespace WixToolset.Data.Tuples
82 get => (string)this.Fields[(int)WixBundleMspPackageTupleFields.PatchXml]; 74 get => (string)this.Fields[(int)WixBundleMspPackageTupleFields.PatchXml];
83 set => this.Set((int)WixBundleMspPackageTupleFields.PatchXml, value); 75 set => this.Set((int)WixBundleMspPackageTupleFields.PatchXml, value);
84 } 76 }
77
78 public bool DisplayInternalUI => (this.Attributes & WixBundleMspPackageAttributes.DisplayInternalUI) == WixBundleMspPackageAttributes.DisplayInternalUI;
79
80 public bool Slipstream => (this.Attributes & WixBundleMspPackageAttributes.Slipstream) == WixBundleMspPackageAttributes.Slipstream;
81
82 public bool TargetUnspecified => (this.Attributes & WixBundleMspPackageAttributes.TargetUnspecified) == WixBundleMspPackageAttributes.TargetUnspecified;
85 } 83 }
86} \ No newline at end of file 84} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixBundleMsuPackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundleMsuPackageTuple.cs
index 33add8e9..5d5a4672 100644
--- a/src/WixToolset.Data/Tuples/WixBundleMsuPackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleMsuPackageTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleMsuPackage, 10 TupleDefinitionType.WixBundleMsuPackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleMsuPackageTupleFields.WixBundlePackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleMsuPackageTupleFields.DetectCondition), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundleMsuPackageTupleFields.DetectCondition), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleMsuPackageTupleFields.MsuKB), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleMsuPackageTupleFields.MsuKB), IntermediateFieldType.String),
16 }, 15 },
@@ -22,7 +21,6 @@ namespace WixToolset.Data.Tuples
22{ 21{
23 public enum WixBundleMsuPackageTupleFields 22 public enum WixBundleMsuPackageTupleFields
24 { 23 {
25 WixBundlePackageRef,
26 DetectCondition, 24 DetectCondition,
27 MsuKB, 25 MsuKB,
28 } 26 }
@@ -39,12 +37,6 @@ namespace WixToolset.Data.Tuples
39 37
40 public IntermediateField this[WixBundleMsuPackageTupleFields index] => this.Fields[(int)index]; 38 public IntermediateField this[WixBundleMsuPackageTupleFields index] => this.Fields[(int)index];
41 39
42 public string WixBundlePackageRef
43 {
44 get => (string)this.Fields[(int)WixBundleMsuPackageTupleFields.WixBundlePackageRef];
45 set => this.Set((int)WixBundleMsuPackageTupleFields.WixBundlePackageRef, value);
46 }
47
48 public string DetectCondition 40 public string DetectCondition
49 { 41 {
50 get => (string)this.Fields[(int)WixBundleMsuPackageTupleFields.DetectCondition]; 42 get => (string)this.Fields[(int)WixBundleMsuPackageTupleFields.DetectCondition];
diff --git a/src/WixToolset.Data/Tuples/WixBundlePackageExitCodeTuple.cs b/src/WixToolset.Data/Tuples/WixBundlePackageExitCodeTuple.cs
index 880f1f73..c585011d 100644
--- a/src/WixToolset.Data/Tuples/WixBundlePackageExitCodeTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundlePackageExitCodeTuple.cs
@@ -56,9 +56,9 @@ namespace WixToolset.Data.Tuples
56 set => this.Set((int)WixBundlePackageExitCodeTupleFields.ChainPackageId, value); 56 set => this.Set((int)WixBundlePackageExitCodeTupleFields.ChainPackageId, value);
57 } 57 }
58 58
59 public int Code 59 public int? Code
60 { 60 {
61 get => (int)this.Fields[(int)WixBundlePackageExitCodeTupleFields.Code]; 61 get => (int?)this.Fields[(int)WixBundlePackageExitCodeTupleFields.Code];
62 set => this.Set((int)WixBundlePackageExitCodeTupleFields.Code, value); 62 set => this.Set((int)WixBundlePackageExitCodeTupleFields.Code, value);
63 } 63 }
64 64
@@ -68,4 +68,4 @@ namespace WixToolset.Data.Tuples
68 set => this.Set((int)WixBundlePackageExitCodeTupleFields.Behavior, value.ToString()); 68 set => this.Set((int)WixBundlePackageExitCodeTupleFields.Behavior, value.ToString());
69 } 69 }
70 } 70 }
71} \ No newline at end of file 71}
diff --git a/src/WixToolset.Data/Tuples/WixBundlePackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundlePackageTuple.cs
index 07fdc2d5..d61e12d0 100644
--- a/src/WixToolset.Data/Tuples/WixBundlePackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundlePackageTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundlePackage, 10 TupleDefinitionType.WixBundlePackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.WixChainItemRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Type), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Type), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.PayloadRef), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.PayloadRef), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Attributes), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Attributes), IntermediateFieldType.Number),
@@ -22,14 +21,14 @@ namespace WixToolset.Data
22 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.LogPathVariable), IntermediateFieldType.String), 21 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.LogPathVariable), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackLogPathVariable), IntermediateFieldType.String), 22 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackLogPathVariable), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Size), IntermediateFieldType.Number), 23 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Size), IntermediateFieldType.Number),
25 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.InstallSize), IntermediateFieldType.Number), 24 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.InstallSize), IntermediateFieldType.LargeNumber),
26 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Version), IntermediateFieldType.String), 25 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Version), IntermediateFieldType.String),
27 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Language), IntermediateFieldType.Number), 26 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Language), IntermediateFieldType.Number),
28 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.DisplayName), IntermediateFieldType.String), 27 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.DisplayName), IntermediateFieldType.String),
29 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Description), IntermediateFieldType.String), 28 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Description), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackBoundaryRef), IntermediateFieldType.String), 29 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackBoundaryRef), IntermediateFieldType.String),
31 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackBoundaryBackwardRef), IntermediateFieldType.String), 30 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.RollbackBoundaryBackwardRef), IntermediateFieldType.String),
32 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Win64), IntermediateFieldType.Number), 31 new IntermediateFieldDefinition(nameof(WixBundlePackageTupleFields.Win64), IntermediateFieldType.Bool),
33 }, 32 },
34 typeof(WixBundlePackageTuple)); 33 typeof(WixBundlePackageTuple));
35 } 34 }
@@ -41,7 +40,6 @@ namespace WixToolset.Data.Tuples
41 40
42 public enum WixBundlePackageTupleFields 41 public enum WixBundlePackageTupleFields
43 { 42 {
44 WixChainItemRef,
45 Type, 43 Type,
46 PayloadRef, 44 PayloadRef,
47 Attributes, 45 Attributes,
@@ -79,6 +77,8 @@ namespace WixToolset.Data.Tuples
79 { 77 {
80 Permanent = 0x1, 78 Permanent = 0x1,
81 Visible = 0x2, 79 Visible = 0x2,
80 PerMachine = 0x4,
81 Win64 = 0x8,
82 } 82 }
83 83
84 public class WixBundlePackageTuple : IntermediateTuple 84 public class WixBundlePackageTuple : IntermediateTuple
@@ -93,12 +93,6 @@ namespace WixToolset.Data.Tuples
93 93
94 public IntermediateField this[WixBundlePackageTupleFields index] => this.Fields[(int)index]; 94 public IntermediateField this[WixBundlePackageTupleFields index] => this.Fields[(int)index];
95 95
96 public string WixChainItemRef
97 {
98 get => (string)this.Fields[(int)WixBundlePackageTupleFields.WixChainItemRef];
99 set => this.Set((int)WixBundlePackageTupleFields.WixChainItemRef, value);
100 }
101
102 public WixBundlePackageType Type 96 public WixBundlePackageType Type
103 { 97 {
104 get => (WixBundlePackageType)Enum.Parse(typeof(WixBundlePackageType), (string)this.Fields[(int)WixBundlePackageTupleFields.Type], true); 98 get => (WixBundlePackageType)Enum.Parse(typeof(WixBundlePackageType), (string)this.Fields[(int)WixBundlePackageTupleFields.Type], true);
@@ -165,9 +159,9 @@ namespace WixToolset.Data.Tuples
165 set => this.Set((int)WixBundlePackageTupleFields.Size, value); 159 set => this.Set((int)WixBundlePackageTupleFields.Size, value);
166 } 160 }
167 161
168 public int InstallSize 162 public long? InstallSize
169 { 163 {
170 get => (int)this.Fields[(int)WixBundlePackageTupleFields.InstallSize]; 164 get => (long?)this.Fields[(int)WixBundlePackageTupleFields.InstallSize];
171 set => this.Set((int)WixBundlePackageTupleFields.InstallSize, value); 165 set => this.Set((int)WixBundlePackageTupleFields.InstallSize, value);
172 } 166 }
173 167
@@ -207,10 +201,12 @@ namespace WixToolset.Data.Tuples
207 set => this.Set((int)WixBundlePackageTupleFields.RollbackBoundaryBackwardRef, value); 201 set => this.Set((int)WixBundlePackageTupleFields.RollbackBoundaryBackwardRef, value);
208 } 202 }
209 203
210 public int Win64 204 public bool Win64
211 { 205 {
212 get => (int)this.Fields[(int)WixBundlePackageTupleFields.Win64]; 206 get => (bool)this.Fields[(int)WixBundlePackageTupleFields.Win64];
213 set => this.Set((int)WixBundlePackageTupleFields.Win64, value); 207 set => this.Set((int)WixBundlePackageTupleFields.Win64, value);
214 } 208 }
209
210 public bool Permanent => (this.Attributes & WixBundlePackageAttributes.Permanent) == WixBundlePackageAttributes.Permanent;
215 } 211 }
216} \ No newline at end of file 212} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixBundlePatchTargetCodeTuple.cs b/src/WixToolset.Data/Tuples/WixBundlePatchTargetCodeTuple.cs
index f8752067..56ca144f 100644
--- a/src/WixToolset.Data/Tuples/WixBundlePatchTargetCodeTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundlePatchTargetCodeTuple.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundlePatchTargetCode, 10 TupleDefinitionType.WixBundlePatchTargetCode,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.PackageId), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.PackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.TargetCode), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.TargetCode), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.Attributes), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeTupleFields.Attributes), IntermediateFieldType.Number),
16 }, 16 },
@@ -20,13 +20,31 @@ namespace WixToolset.Data
20 20
21namespace WixToolset.Data.Tuples 21namespace WixToolset.Data.Tuples
22{ 22{
23 using System;
24
23 public enum WixBundlePatchTargetCodeTupleFields 25 public enum WixBundlePatchTargetCodeTupleFields
24 { 26 {
25 PackageId, 27 PackageRef,
26 TargetCode, 28 TargetCode,
27 Attributes, 29 Attributes,
28 } 30 }
29 31
32 [Flags]
33 public enum WixBundlePatchTargetCodeAttributes : int
34 {
35 None = 0,
36
37 /// <summary>
38 /// The transform targets a specific ProductCode.
39 /// </summary>
40 TargetsProductCode = 1,
41
42 /// <summary>
43 /// The transform targets a specific UpgradeCode.
44 /// </summary>
45 TargetsUpgradeCode = 2,
46 }
47
30 public class WixBundlePatchTargetCodeTuple : IntermediateTuple 48 public class WixBundlePatchTargetCodeTuple : IntermediateTuple
31 { 49 {
32 public WixBundlePatchTargetCodeTuple() : base(TupleDefinitions.WixBundlePatchTargetCode, null, null) 50 public WixBundlePatchTargetCodeTuple() : base(TupleDefinitions.WixBundlePatchTargetCode, null, null)
@@ -39,10 +57,10 @@ namespace WixToolset.Data.Tuples
39 57
40 public IntermediateField this[WixBundlePatchTargetCodeTupleFields index] => this.Fields[(int)index]; 58 public IntermediateField this[WixBundlePatchTargetCodeTupleFields index] => this.Fields[(int)index];
41 59
42 public string PackageId 60 public string PackageRef
43 { 61 {
44 get => (string)this.Fields[(int)WixBundlePatchTargetCodeTupleFields.PackageId]; 62 get => (string)this.Fields[(int)WixBundlePatchTargetCodeTupleFields.PackageRef];
45 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.PackageId, value); 63 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.PackageRef, value);
46 } 64 }
47 65
48 public string TargetCode 66 public string TargetCode
@@ -51,10 +69,14 @@ namespace WixToolset.Data.Tuples
51 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.TargetCode, value); 69 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.TargetCode, value);
52 } 70 }
53 71
54 public int Attributes 72 public WixBundlePatchTargetCodeAttributes Attributes
55 { 73 {
56 get => (int)this.Fields[(int)WixBundlePatchTargetCodeTupleFields.Attributes]; 74 get => (WixBundlePatchTargetCodeAttributes)this.Fields[(int)WixBundlePatchTargetCodeTupleFields.Attributes].AsNumber();
57 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.Attributes, value); 75 set => this.Set((int)WixBundlePatchTargetCodeTupleFields.Attributes, (int)value);
58 } 76 }
77
78 public bool TargetsProductCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsProductCode) == WixBundlePatchTargetCodeAttributes.TargetsProductCode;
79
80 public bool TargetsUpgradeCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode) == WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode;
59 } 81 }
60} \ No newline at end of file 82}
diff --git a/src/WixToolset.Data/Tuples/WixBundlePayloadTuple.cs b/src/WixToolset.Data/Tuples/WixBundlePayloadTuple.cs
index 5eb4a987..049ac3b5 100644
--- a/src/WixToolset.Data/Tuples/WixBundlePayloadTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundlePayloadTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundlePayload, 10 TupleDefinitionType.WixBundlePayload,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.WixBundlePayload), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Name), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Name), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.SourceFile), IntermediateFieldType.Path), 14 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.SourceFile), IntermediateFieldType.Path),
16 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.DownloadUrl), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.DownloadUrl), IntermediateFieldType.String),
@@ -26,10 +25,10 @@ namespace WixToolset.Data
26 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Thumbprint), IntermediateFieldType.String), 25 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Thumbprint), IntermediateFieldType.String),
27 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.CatalogRef), IntermediateFieldType.String), 26 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.CatalogRef), IntermediateFieldType.String),
28 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ContainerRef), IntermediateFieldType.String), 27 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ContainerRef), IntermediateFieldType.String),
29 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Package), IntermediateFieldType.String), 28 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.PackageRef), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ContentFile), IntermediateFieldType.Bool), 29 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ContentFile), IntermediateFieldType.Bool),
31 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.EmbeddedId), IntermediateFieldType.String), 30 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.EmbeddedId), IntermediateFieldType.String),
32 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.LayoutOnly), IntermediateFieldType.Number), 31 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.LayoutOnly), IntermediateFieldType.Bool),
33 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Packaging), IntermediateFieldType.Number), 32 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.Packaging), IntermediateFieldType.Number),
34 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ParentPackagePayloadRef), IntermediateFieldType.String), 33 new IntermediateFieldDefinition(nameof(WixBundlePayloadTupleFields.ParentPackagePayloadRef), IntermediateFieldType.String),
35 }, 34 },
@@ -43,7 +42,6 @@ namespace WixToolset.Data.Tuples
43 42
44 public enum WixBundlePayloadTupleFields 43 public enum WixBundlePayloadTupleFields
45 { 44 {
46 WixBundlePayload,
47 Name, 45 Name,
48 SourceFile, 46 SourceFile,
49 DownloadUrl, 47 DownloadUrl,
@@ -59,7 +57,7 @@ namespace WixToolset.Data.Tuples
59 Thumbprint, 57 Thumbprint,
60 CatalogRef, 58 CatalogRef,
61 ContainerRef, 59 ContainerRef,
62 Package, 60 PackageRef,
63 ContentFile, 61 ContentFile,
64 EmbeddedId, 62 EmbeddedId,
65 LayoutOnly, 63 LayoutOnly,
@@ -79,21 +77,15 @@ namespace WixToolset.Data.Tuples
79 77
80 public IntermediateField this[WixBundlePayloadTupleFields index] => this.Fields[(int)index]; 78 public IntermediateField this[WixBundlePayloadTupleFields index] => this.Fields[(int)index];
81 79
82 public string WixBundlePayload
83 {
84 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.WixBundlePayload];
85 set => this.Set((int)WixBundlePayloadTupleFields.WixBundlePayload, value);
86 }
87
88 public string Name 80 public string Name
89 { 81 {
90 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.Name]; 82 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.Name];
91 set => this.Set((int)WixBundlePayloadTupleFields.Name, value); 83 set => this.Set((int)WixBundlePayloadTupleFields.Name, value);
92 } 84 }
93 85
94 public string SourceFile 86 public IntermediateFieldPathValue SourceFile
95 { 87 {
96 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.SourceFile]; 88 get => this.Fields[(int)WixBundlePayloadTupleFields.SourceFile].AsPath();
97 set => this.Set((int)WixBundlePayloadTupleFields.SourceFile, value); 89 set => this.Set((int)WixBundlePayloadTupleFields.SourceFile, value);
98 } 90 }
99 91
@@ -103,10 +95,10 @@ namespace WixToolset.Data.Tuples
103 set => this.Set((int)WixBundlePayloadTupleFields.DownloadUrl, value); 95 set => this.Set((int)WixBundlePayloadTupleFields.DownloadUrl, value);
104 } 96 }
105 97
106 public YesNoDefaultType Compressed 98 public bool? Compressed
107 { 99 {
108 get => Enum.TryParse((string)this.Fields[(int)WixBundlePayloadTupleFields.Compressed], true, out YesNoDefaultType value) ? value : YesNoDefaultType.NotSet; 100 get => (bool?)this.Fields[(int)WixBundlePayloadTupleFields.Compressed];
109 set => this.Set((int)WixBundlePayloadTupleFields.Compressed, value.ToString().ToLowerInvariant()); 101 set => this.Set((int)WixBundlePayloadTupleFields.Compressed, value);
110 } 102 }
111 103
112 public string UnresolvedSourceFile 104 public string UnresolvedSourceFile
@@ -175,10 +167,10 @@ namespace WixToolset.Data.Tuples
175 set => this.Set((int)WixBundlePayloadTupleFields.ContainerRef, value); 167 set => this.Set((int)WixBundlePayloadTupleFields.ContainerRef, value);
176 } 168 }
177 169
178 public string Package 170 public string PackageRef
179 { 171 {
180 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.Package]; 172 get => (string)this.Fields[(int)WixBundlePayloadTupleFields.PackageRef];
181 set => this.Set((int)WixBundlePayloadTupleFields.Package, value); 173 set => this.Set((int)WixBundlePayloadTupleFields.PackageRef, value);
182 } 174 }
183 175
184 public bool ContentFile 176 public bool ContentFile
@@ -193,16 +185,16 @@ namespace WixToolset.Data.Tuples
193 set => this.Set((int)WixBundlePayloadTupleFields.EmbeddedId, value); 185 set => this.Set((int)WixBundlePayloadTupleFields.EmbeddedId, value);
194 } 186 }
195 187
196 public int LayoutOnly 188 public bool LayoutOnly
197 { 189 {
198 get => (int)this.Fields[(int)WixBundlePayloadTupleFields.LayoutOnly]; 190 get => (bool)this.Fields[(int)WixBundlePayloadTupleFields.LayoutOnly];
199 set => this.Set((int)WixBundlePayloadTupleFields.LayoutOnly, value); 191 set => this.Set((int)WixBundlePayloadTupleFields.LayoutOnly, value);
200 } 192 }
201 193
202 public int Packaging 194 public PackagingType Packaging
203 { 195 {
204 get => (int)this.Fields[(int)WixBundlePayloadTupleFields.Packaging]; 196 get => (PackagingType)this.Fields[(int)WixBundlePayloadTupleFields.Packaging].AsNumber();
205 set => this.Set((int)WixBundlePayloadTupleFields.Packaging, value); 197 set => this.Set((int)WixBundlePayloadTupleFields.Packaging, (int)value);
206 } 198 }
207 199
208 public string ParentPackagePayloadRef 200 public string ParentPackagePayloadRef
@@ -211,4 +203,4 @@ namespace WixToolset.Data.Tuples
211 set => this.Set((int)WixBundlePayloadTupleFields.ParentPackagePayloadRef, value); 203 set => this.Set((int)WixBundlePayloadTupleFields.ParentPackagePayloadRef, value);
212 } 204 }
213 } 205 }
214} \ No newline at end of file 206}
diff --git a/src/WixToolset.Data/Tuples/WixBundlePropertiesTuple.cs b/src/WixToolset.Data/Tuples/WixBundlePropertiesTuple.cs
deleted file mode 100644
index ae610aac..00000000
--- a/src/WixToolset.Data/Tuples/WixBundlePropertiesTuple.cs
+++ /dev/null
@@ -1,84 +0,0 @@
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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition WixBundleProperties = new IntermediateTupleDefinition(
10 TupleDefinitionType.WixBundleProperties,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.DisplayName), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.LogPathVariable), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.Compressed), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.BundleId), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.UpgradeCode), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixBundlePropertiesTupleFields.PerMachine), IntermediateFieldType.String),
19 },
20 typeof(WixBundlePropertiesTuple));
21 }
22}
23
24namespace WixToolset.Data.Tuples
25{
26 public enum WixBundlePropertiesTupleFields
27 {
28 DisplayName,
29 LogPathVariable,
30 Compressed,
31 BundleId,
32 UpgradeCode,
33 PerMachine,
34 }
35
36 public class WixBundlePropertiesTuple : IntermediateTuple
37 {
38 public WixBundlePropertiesTuple() : base(TupleDefinitions.WixBundleProperties, null, null)
39 {
40 }
41
42 public WixBundlePropertiesTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixBundleProperties, sourceLineNumber, id)
43 {
44 }
45
46 public IntermediateField this[WixBundlePropertiesTupleFields index] => this.Fields[(int)index];
47
48 public string DisplayName
49 {
50 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.DisplayName];
51 set => this.Set((int)WixBundlePropertiesTupleFields.DisplayName, value);
52 }
53
54 public string LogPathVariable
55 {
56 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.LogPathVariable];
57 set => this.Set((int)WixBundlePropertiesTupleFields.LogPathVariable, value);
58 }
59
60 public string Compressed
61 {
62 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.Compressed];
63 set => this.Set((int)WixBundlePropertiesTupleFields.Compressed, value);
64 }
65
66 public string BundleId
67 {
68 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.BundleId];
69 set => this.Set((int)WixBundlePropertiesTupleFields.BundleId, value);
70 }
71
72 public string UpgradeCode
73 {
74 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.UpgradeCode];
75 set => this.Set((int)WixBundlePropertiesTupleFields.UpgradeCode, value);
76 }
77
78 public string PerMachine
79 {
80 get => (string)this.Fields[(int)WixBundlePropertiesTupleFields.PerMachine];
81 set => this.Set((int)WixBundlePropertiesTupleFields.PerMachine, value);
82 }
83 }
84} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixBundleRelatedPackageTuple.cs b/src/WixToolset.Data/Tuples/WixBundleRelatedPackageTuple.cs
index ef620b26..e9a087f3 100644
--- a/src/WixToolset.Data/Tuples/WixBundleRelatedPackageTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleRelatedPackageTuple.cs
@@ -10,14 +10,12 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleRelatedPackage, 10 TupleDefinitionType.WixBundleRelatedPackage,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.PackageRef), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.RelatedId), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.RelatedId), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MinVersion), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MinVersion), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MaxVersion), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MaxVersion), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.Languages), IntermediateFieldType.String), 17 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.Languages), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MinInclusive), IntermediateFieldType.Number), 18 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.Attributes), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.MaxInclusive), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.LangInclusive), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageTupleFields.OnlyDetect), IntermediateFieldType.Number),
21 }, 19 },
22 typeof(WixBundleRelatedPackageTuple)); 20 typeof(WixBundleRelatedPackageTuple));
23 } 21 }
@@ -25,16 +23,26 @@ namespace WixToolset.Data
25 23
26namespace WixToolset.Data.Tuples 24namespace WixToolset.Data.Tuples
27{ 25{
26 using System;
27
28 public enum WixBundleRelatedPackageTupleFields 28 public enum WixBundleRelatedPackageTupleFields
29 { 29 {
30 PackageRef,
30 RelatedId, 31 RelatedId,
31 MinVersion, 32 MinVersion,
32 MaxVersion, 33 MaxVersion,
33 Languages, 34 Languages,
34 MinInclusive, 35 Attributes,
35 MaxInclusive, 36 }
36 LangInclusive, 37
37 OnlyDetect, 38 [Flags]
39 public enum WixBundleRelatedPackageAttributes
40 {
41 None,
42 OnlyDetect = 0x1,
43 MinInclusive = 0x2,
44 MaxInclusive = 0x4,
45 LangInclusive = 0x8,
38 } 46 }
39 47
40 public class WixBundleRelatedPackageTuple : IntermediateTuple 48 public class WixBundleRelatedPackageTuple : IntermediateTuple
@@ -49,6 +57,12 @@ namespace WixToolset.Data.Tuples
49 57
50 public IntermediateField this[WixBundleRelatedPackageTupleFields index] => this.Fields[(int)index]; 58 public IntermediateField this[WixBundleRelatedPackageTupleFields index] => this.Fields[(int)index];
51 59
60 public string PackageRef
61 {
62 get => (string)this.Fields[(int)WixBundleRelatedPackageTupleFields.PackageRef];
63 set => this.Set((int)WixBundleRelatedPackageTupleFields.PackageRef, value);
64 }
65
52 public string RelatedId 66 public string RelatedId
53 { 67 {
54 get => (string)this.Fields[(int)WixBundleRelatedPackageTupleFields.RelatedId]; 68 get => (string)this.Fields[(int)WixBundleRelatedPackageTupleFields.RelatedId];
@@ -73,28 +87,18 @@ namespace WixToolset.Data.Tuples
73 set => this.Set((int)WixBundleRelatedPackageTupleFields.Languages, value); 87 set => this.Set((int)WixBundleRelatedPackageTupleFields.Languages, value);
74 } 88 }
75 89
76 public int MinInclusive 90 public WixBundleRelatedPackageAttributes Attributes
77 { 91 {
78 get => (int)this.Fields[(int)WixBundleRelatedPackageTupleFields.MinInclusive]; 92 get => (WixBundleRelatedPackageAttributes)this.Fields[(int)WixBundleRelatedPackageTupleFields.Attributes].AsNumber();
79 set => this.Set((int)WixBundleRelatedPackageTupleFields.MinInclusive, value); 93 set => this.Set((int)WixBundleRelatedPackageTupleFields.Attributes, (int)value);
80 } 94 }
81 95
82 public int MaxInclusive 96 public bool MinInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MinInclusive) == WixBundleRelatedPackageAttributes.MinInclusive;
83 {
84 get => (int)this.Fields[(int)WixBundleRelatedPackageTupleFields.MaxInclusive];
85 set => this.Set((int)WixBundleRelatedPackageTupleFields.MaxInclusive, value);
86 }
87 97
88 public int LangInclusive 98 public bool MaxInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MaxInclusive) == WixBundleRelatedPackageAttributes.MaxInclusive;
89 {
90 get => (int)this.Fields[(int)WixBundleRelatedPackageTupleFields.LangInclusive];
91 set => this.Set((int)WixBundleRelatedPackageTupleFields.LangInclusive, value);
92 }
93 99
94 public int OnlyDetect 100 public bool OnlyDetect => (this.Attributes & WixBundleRelatedPackageAttributes.OnlyDetect) == WixBundleRelatedPackageAttributes.OnlyDetect;
95 { 101
96 get => (int)this.Fields[(int)WixBundleRelatedPackageTupleFields.OnlyDetect]; 102 public bool LangInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.LangInclusive) == WixBundleRelatedPackageAttributes.LangInclusive;
97 set => this.Set((int)WixBundleRelatedPackageTupleFields.OnlyDetect, value);
98 }
99 } 103 }
100} \ No newline at end of file 104}
diff --git a/src/WixToolset.Data/Tuples/WixBundleRollbackBoundaryTuple.cs b/src/WixToolset.Data/Tuples/WixBundleRollbackBoundaryTuple.cs
index a11c972d..648787f9 100644
--- a/src/WixToolset.Data/Tuples/WixBundleRollbackBoundaryTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleRollbackBoundaryTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleRollbackBoundary, 10 TupleDefinitionType.WixBundleRollbackBoundary,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundaryTupleFields.WixChainItemRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundaryTupleFields.Vital), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundaryTupleFields.Vital), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundaryTupleFields.Transaction), IntermediateFieldType.Number), 14 new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundaryTupleFields.Transaction), IntermediateFieldType.Number),
16 }, 15 },
@@ -22,7 +21,6 @@ namespace WixToolset.Data.Tuples
22{ 21{
23 public enum WixBundleRollbackBoundaryTupleFields 22 public enum WixBundleRollbackBoundaryTupleFields
24 { 23 {
25 WixChainItemRef,
26 Vital, 24 Vital,
27 Transaction, 25 Transaction,
28 } 26 }
@@ -39,12 +37,6 @@ namespace WixToolset.Data.Tuples
39 37
40 public IntermediateField this[WixBundleRollbackBoundaryTupleFields index] => this.Fields[(int)index]; 38 public IntermediateField this[WixBundleRollbackBoundaryTupleFields index] => this.Fields[(int)index];
41 39
42 public string WixChainItemRef
43 {
44 get => (string)this.Fields[(int)WixBundleRollbackBoundaryTupleFields.WixChainItemRef];
45 set => this.Set((int)WixBundleRollbackBoundaryTupleFields.WixChainItemRef, value);
46 }
47
48 public bool? Vital 40 public bool? Vital
49 { 41 {
50 get => (bool?)this.Fields[(int)WixBundleRollbackBoundaryTupleFields.Vital]; 42 get => (bool?)this.Fields[(int)WixBundleRollbackBoundaryTupleFields.Vital];
diff --git a/src/WixToolset.Data/Tuples/WixBundleSlipstreamMspTuple.cs b/src/WixToolset.Data/Tuples/WixBundleSlipstreamMspTuple.cs
index 3a028d16..bfe8c6e1 100644
--- a/src/WixToolset.Data/Tuples/WixBundleSlipstreamMspTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleSlipstreamMspTuple.cs
@@ -10,8 +10,8 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundleSlipstreamMsp, 10 TupleDefinitionType.WixBundleSlipstreamMsp,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspTupleFields.WixBundlePackageRef), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspTupleFields.TargetPackageRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspTupleFields.MspWixBundlePackageRef), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspTupleFields.MspPackageRef), IntermediateFieldType.String),
15 }, 15 },
16 typeof(WixBundleSlipstreamMspTuple)); 16 typeof(WixBundleSlipstreamMspTuple));
17 } 17 }
@@ -21,8 +21,8 @@ namespace WixToolset.Data.Tuples
21{ 21{
22 public enum WixBundleSlipstreamMspTupleFields 22 public enum WixBundleSlipstreamMspTupleFields
23 { 23 {
24 WixBundlePackageRef, 24 TargetPackageRef,
25 MspWixBundlePackageRef, 25 MspPackageRef,
26 } 26 }
27 27
28 public class WixBundleSlipstreamMspTuple : IntermediateTuple 28 public class WixBundleSlipstreamMspTuple : IntermediateTuple
@@ -37,16 +37,16 @@ namespace WixToolset.Data.Tuples
37 37
38 public IntermediateField this[WixBundleSlipstreamMspTupleFields index] => this.Fields[(int)index]; 38 public IntermediateField this[WixBundleSlipstreamMspTupleFields index] => this.Fields[(int)index];
39 39
40 public string WixBundlePackageRef 40 public string TargetPackageRef
41 { 41 {
42 get => (string)this.Fields[(int)WixBundleSlipstreamMspTupleFields.WixBundlePackageRef]; 42 get => (string)this.Fields[(int)WixBundleSlipstreamMspTupleFields.TargetPackageRef];
43 set => this.Set((int)WixBundleSlipstreamMspTupleFields.WixBundlePackageRef, value); 43 set => this.Set((int)WixBundleSlipstreamMspTupleFields.TargetPackageRef, value);
44 } 44 }
45 45
46 public string MspWixBundlePackageRef 46 public string MspPackageRef
47 { 47 {
48 get => (string)this.Fields[(int)WixBundleSlipstreamMspTupleFields.MspWixBundlePackageRef]; 48 get => (string)this.Fields[(int)WixBundleSlipstreamMspTupleFields.MspPackageRef];
49 set => this.Set((int)WixBundleSlipstreamMspTupleFields.MspWixBundlePackageRef, value); 49 set => this.Set((int)WixBundleSlipstreamMspTupleFields.MspPackageRef, value);
50 } 50 }
51 } 51 }
52} \ No newline at end of file 52}
diff --git a/src/WixToolset.Data/Tuples/WixBundleTuple.cs b/src/WixToolset.Data/Tuples/WixBundleTuple.cs
index 8f6f760a..dcaea6bc 100644
--- a/src/WixToolset.Data/Tuples/WixBundleTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixBundleTuple.cs
@@ -10,29 +10,28 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixBundle, 10 TupleDefinitionType.WixBundle,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.UpgradeCode), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Version), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Version), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Copyright), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Copyright), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Name), IntermediateFieldType.String), 16 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Manufacturer), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Attributes), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.AboutUrl), IntermediateFieldType.String), 19 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.AboutUrl), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.DisableModify), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.DisableRemove), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.DisableRepair), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.HelpTelephone), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.HelpUrl), IntermediateFieldType.String), 20 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.HelpUrl), IntermediateFieldType.String),
22 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Manufacturer), IntermediateFieldType.String), 21 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.HelpTelephone), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.UpdateUrl), IntermediateFieldType.String), 22 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.UpdateUrl), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Compressed), IntermediateFieldType.Number), 23 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Compressed), IntermediateFieldType.Bool),
25 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.LogPrefixAndExtension), IntermediateFieldType.String), 24 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.LogPathVariable), IntermediateFieldType.String),
25 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.LogPrefix), IntermediateFieldType.String),
26 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.LogExtension), IntermediateFieldType.String),
26 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.IconSourceFile), IntermediateFieldType.Path), 27 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.IconSourceFile), IntermediateFieldType.Path),
27 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.SplashScreenSourceFile), IntermediateFieldType.Path), 28 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.SplashScreenSourceFile), IntermediateFieldType.Path),
28 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Condition), IntermediateFieldType.String), 29 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Condition), IntermediateFieldType.String),
29 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Tag), IntermediateFieldType.String), 30 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Tag), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Platform), IntermediateFieldType.String), 31 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.Platform), IntermediateFieldType.String),
31 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.ParentName), IntermediateFieldType.String), 32 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.ParentName), IntermediateFieldType.String),
32 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.UpgradeCode), IntermediateFieldType.String),
33 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.BundleId), IntermediateFieldType.String), 33 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.BundleId), IntermediateFieldType.String),
34 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.ProviderKey), IntermediateFieldType.String), 34 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.ProviderKey), IntermediateFieldType.String),
35 new IntermediateFieldDefinition(nameof(WixBundleTupleFields.PerMachine), IntermediateFieldType.Bool),
36 }, 35 },
37 typeof(WixBundleTuple)); 36 typeof(WixBundleTuple));
38 } 37 }
@@ -40,30 +39,41 @@ namespace WixToolset.Data
40 39
41namespace WixToolset.Data.Tuples 40namespace WixToolset.Data.Tuples
42{ 41{
42 using System;
43
43 public enum WixBundleTupleFields 44 public enum WixBundleTupleFields
44 { 45 {
46 UpgradeCode,
45 Version, 47 Version,
46 Copyright, 48 Copyright,
47 Name, 49 Name,
50 Manufacturer,
51 Attributes,
48 AboutUrl, 52 AboutUrl,
49 DisableModify,
50 DisableRemove,
51 DisableRepair,
52 HelpTelephone,
53 HelpUrl, 53 HelpUrl,
54 Manufacturer, 54 HelpTelephone,
55 UpdateUrl, 55 UpdateUrl,
56 Compressed, 56 Compressed,
57 LogPrefixAndExtension, 57 LogPathVariable,
58 LogPrefix,
59 LogExtension,
58 IconSourceFile, 60 IconSourceFile,
59 SplashScreenSourceFile, 61 SplashScreenSourceFile,
60 Condition, 62 Condition,
61 Tag, 63 Tag,
62 Platform, 64 Platform,
63 ParentName, 65 ParentName,
64 UpgradeCode,
65 BundleId, 66 BundleId,
66 ProviderKey, 67 ProviderKey,
68 }
69
70 [Flags]
71 public enum WixBundleAttributes
72 {
73 None,
74 DisableModify,
75 DisableRemove,
76 SingleChangeUninstallButton,
67 PerMachine, 77 PerMachine,
68 } 78 }
69 79
@@ -79,6 +89,12 @@ namespace WixToolset.Data.Tuples
79 89
80 public IntermediateField this[WixBundleTupleFields index] => this.Fields[(int)index]; 90 public IntermediateField this[WixBundleTupleFields index] => this.Fields[(int)index];
81 91
92 public string UpgradeCode
93 {
94 get => (string)this.Fields[(int)WixBundleTupleFields.UpgradeCode];
95 set => this.Set((int)WixBundleTupleFields.UpgradeCode, value);
96 }
97
82 public string Version 98 public string Version
83 { 99 {
84 get => (string)this.Fields[(int)WixBundleTupleFields.Version]; 100 get => (string)this.Fields[(int)WixBundleTupleFields.Version];
@@ -97,28 +113,22 @@ namespace WixToolset.Data.Tuples
97 set => this.Set((int)WixBundleTupleFields.Name, value); 113 set => this.Set((int)WixBundleTupleFields.Name, value);
98 } 114 }
99 115
100 public string AboutUrl 116 public string Manufacturer
101 {
102 get => (string)this.Fields[(int)WixBundleTupleFields.AboutUrl];
103 set => this.Set((int)WixBundleTupleFields.AboutUrl, value);
104 }
105
106 public int DisableModify
107 { 117 {
108 get => (int)this.Fields[(int)WixBundleTupleFields.DisableModify]; 118 get => (string)this.Fields[(int)WixBundleTupleFields.Manufacturer];
109 set => this.Set((int)WixBundleTupleFields.DisableModify, value); 119 set => this.Set((int)WixBundleTupleFields.Manufacturer, value);
110 } 120 }
111 121
112 public int DisableRemove 122 public WixBundleAttributes Attributes
113 { 123 {
114 get => (int)this.Fields[(int)WixBundleTupleFields.DisableRemove]; 124 get => (WixBundleAttributes)this.Fields[(int)WixBundleTupleFields.Attributes].AsNumber();
115 set => this.Set((int)WixBundleTupleFields.DisableRemove, value); 125 set => this.Set((int)WixBundleTupleFields.Attributes, (int)value);
116 } 126 }
117 127
118 public int DisableRepair 128 public string AboutUrl
119 { 129 {
120 get => (int)this.Fields[(int)WixBundleTupleFields.DisableRepair]; 130 get => (string)this.Fields[(int)WixBundleTupleFields.AboutUrl];
121 set => this.Set((int)WixBundleTupleFields.DisableRepair, value); 131 set => this.Set((int)WixBundleTupleFields.AboutUrl, value);
122 } 132 }
123 133
124 public string HelpTelephone 134 public string HelpTelephone
@@ -133,28 +143,34 @@ namespace WixToolset.Data.Tuples
133 set => this.Set((int)WixBundleTupleFields.HelpUrl, value); 143 set => this.Set((int)WixBundleTupleFields.HelpUrl, value);
134 } 144 }
135 145
136 public string Manufacturer
137 {
138 get => (string)this.Fields[(int)WixBundleTupleFields.Manufacturer];
139 set => this.Set((int)WixBundleTupleFields.Manufacturer, value);
140 }
141
142 public string UpdateUrl 146 public string UpdateUrl
143 { 147 {
144 get => (string)this.Fields[(int)WixBundleTupleFields.UpdateUrl]; 148 get => (string)this.Fields[(int)WixBundleTupleFields.UpdateUrl];
145 set => this.Set((int)WixBundleTupleFields.UpdateUrl, value); 149 set => this.Set((int)WixBundleTupleFields.UpdateUrl, value);
146 } 150 }
147 151
148 public int Compressed 152 public bool? Compressed
149 { 153 {
150 get => (int)this.Fields[(int)WixBundleTupleFields.Compressed]; 154 get => (bool?)this.Fields[(int)WixBundleTupleFields.Compressed];
151 set => this.Set((int)WixBundleTupleFields.Compressed, value); 155 set => this.Set((int)WixBundleTupleFields.Compressed, value);
152 } 156 }
153 157
154 public string LogPrefixAndExtension 158 public string LogPathVariable
155 { 159 {
156 get => (string)this.Fields[(int)WixBundleTupleFields.LogPrefixAndExtension]; 160 get => (string)this.Fields[(int)WixBundleTupleFields.LogPathVariable];
157 set => this.Set((int)WixBundleTupleFields.LogPrefixAndExtension, value); 161 set => this.Set((int)WixBundleTupleFields.LogPathVariable, value);
162 }
163
164 public string LogPrefix
165 {
166 get => (string)this.Fields[(int)WixBundleTupleFields.LogPrefix];
167 set => this.Set((int)WixBundleTupleFields.LogPrefix, value);
168 }
169
170 public string LogExtension
171 {
172 get => (string)this.Fields[(int)WixBundleTupleFields.LogExtension];
173 set => this.Set((int)WixBundleTupleFields.LogExtension, value);
158 } 174 }
159 175
160 public string IconSourceFile 176 public string IconSourceFile
@@ -181,10 +197,10 @@ namespace WixToolset.Data.Tuples
181 set => this.Set((int)WixBundleTupleFields.Tag, value); 197 set => this.Set((int)WixBundleTupleFields.Tag, value);
182 } 198 }
183 199
184 public string Platform 200 public Platform Platform
185 { 201 {
186 get => (string)this.Fields[(int)WixBundleTupleFields.Platform]; 202 get => (Platform)this.Fields[(int)WixBundleTupleFields.Platform].AsNumber();
187 set => this.Set((int)WixBundleTupleFields.Platform, value); 203 set => this.Set((int)WixBundleTupleFields.Platform, (int)value);
188 } 204 }
189 205
190 public string ParentName 206 public string ParentName
@@ -193,12 +209,6 @@ namespace WixToolset.Data.Tuples
193 set => this.Set((int)WixBundleTupleFields.ParentName, value); 209 set => this.Set((int)WixBundleTupleFields.ParentName, value);
194 } 210 }
195 211
196 public string UpgradeCode
197 {
198 get => (string)this.Fields[(int)WixBundleTupleFields.UpgradeCode];
199 set => this.Set((int)WixBundleTupleFields.UpgradeCode, value);
200 }
201
202 public string BundleId 212 public string BundleId
203 { 213 {
204 get => (string)this.Fields[(int)WixBundleTupleFields.BundleId]; 214 get => (string)this.Fields[(int)WixBundleTupleFields.BundleId];
@@ -211,10 +221,14 @@ namespace WixToolset.Data.Tuples
211 set => this.Set((int)WixBundleTupleFields.ProviderKey, value); 221 set => this.Set((int)WixBundleTupleFields.ProviderKey, value);
212 } 222 }
213 223
214 public bool PerMachine 224 public PackagingType DefaultPackagingType => (this.Compressed.HasValue && !this.Compressed.Value) ? PackagingType.External : PackagingType.Embedded;
215 { 225
216 get => (bool)this.Fields[(int)WixBundleTupleFields.PerMachine]; 226 public bool DisableModify => (this.Attributes & WixBundleAttributes.DisableModify) == WixBundleAttributes.DisableModify;
217 set => this.Set((int)WixBundleTupleFields.PerMachine, value); 227
218 } 228 public bool DisableRemove => (this.Attributes & WixBundleAttributes.DisableRemove) == WixBundleAttributes.DisableRemove;
229
230 public bool PerMachine => (this.Attributes & WixBundleAttributes.PerMachine) == WixBundleAttributes.PerMachine;
231
232 public bool SingleChangeUninstallButton => (this.Attributes & WixBundleAttributes.SingleChangeUninstallButton) == WixBundleAttributes.SingleChangeUninstallButton;
219 } 233 }
220} \ No newline at end of file 234}
diff --git a/src/WixToolset.Data/Tuples/WixChainTuple.cs b/src/WixToolset.Data/Tuples/WixChainTuple.cs
index d8bef8cc..9343ead1 100644
--- a/src/WixToolset.Data/Tuples/WixChainTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixChainTuple.cs
@@ -51,5 +51,11 @@ namespace WixToolset.Data.Tuples
51 get => (WixChainAttributes)(int)this.Fields[(int)WixChainTupleFields.Attributes]; 51 get => (WixChainAttributes)(int)this.Fields[(int)WixChainTupleFields.Attributes];
52 set => this.Set((int)WixChainTupleFields.Attributes, (int)value); 52 set => this.Set((int)WixChainTupleFields.Attributes, (int)value);
53 } 53 }
54
55 public bool DisableRollback => (this.Attributes & WixChainAttributes.DisableRollback) == WixChainAttributes.DisableRollback;
56
57 public bool DisableSystemRestore => (this.Attributes & WixChainAttributes.DisableSystemRestore) == WixChainAttributes.DisableSystemRestore;
58
59 public bool ParallelCache => (this.Attributes & WixChainAttributes.ParallelCache) == WixChainAttributes.ParallelCache;
54 } 60 }
55} \ No newline at end of file 61}
diff --git a/src/WixToolset.Data/Tuples/WixComponentSearchTuple.cs b/src/WixToolset.Data/Tuples/WixComponentSearchTuple.cs
index 47cccf25..de6f47b9 100644
--- a/src/WixToolset.Data/Tuples/WixComponentSearchTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixComponentSearchTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixComponentSearch, 10 TupleDefinitionType.WixComponentSearch,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.WixSearchRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.Guid), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.Guid), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.ProductCode), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.ProductCode), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.Attributes), IntermediateFieldType.Number), 15 new IntermediateFieldDefinition(nameof(WixComponentSearchTupleFields.Attributes), IntermediateFieldType.Number),
@@ -21,14 +20,23 @@ namespace WixToolset.Data
21 20
22namespace WixToolset.Data.Tuples 21namespace WixToolset.Data.Tuples
23{ 22{
23 using System;
24
24 public enum WixComponentSearchTupleFields 25 public enum WixComponentSearchTupleFields
25 { 26 {
26 WixSearchRef,
27 Guid, 27 Guid,
28 ProductCode, 28 ProductCode,
29 Attributes, 29 Attributes,
30 } 30 }
31 31
32 [Flags]
33 public enum WixComponentSearchAttributes
34 {
35 KeyPath = 0x1,
36 State = 0x2,
37 WantDirectory = 0x4,
38 }
39
32 public class WixComponentSearchTuple : IntermediateTuple 40 public class WixComponentSearchTuple : IntermediateTuple
33 { 41 {
34 public WixComponentSearchTuple() : base(TupleDefinitions.WixComponentSearch, null, null) 42 public WixComponentSearchTuple() : base(TupleDefinitions.WixComponentSearch, null, null)
@@ -41,12 +49,6 @@ namespace WixToolset.Data.Tuples
41 49
42 public IntermediateField this[WixComponentSearchTupleFields index] => this.Fields[(int)index]; 50 public IntermediateField this[WixComponentSearchTupleFields index] => this.Fields[(int)index];
43 51
44 public string WixSearchRef
45 {
46 get => (string)this.Fields[(int)WixComponentSearchTupleFields.WixSearchRef];
47 set => this.Set((int)WixComponentSearchTupleFields.WixSearchRef, value);
48 }
49
50 public string Guid 52 public string Guid
51 { 53 {
52 get => (string)this.Fields[(int)WixComponentSearchTupleFields.Guid]; 54 get => (string)this.Fields[(int)WixComponentSearchTupleFields.Guid];
@@ -59,10 +61,10 @@ namespace WixToolset.Data.Tuples
59 set => this.Set((int)WixComponentSearchTupleFields.ProductCode, value); 61 set => this.Set((int)WixComponentSearchTupleFields.ProductCode, value);
60 } 62 }
61 63
62 public int Attributes 64 public WixComponentSearchAttributes Attributes
63 { 65 {
64 get => (int)this.Fields[(int)WixComponentSearchTupleFields.Attributes]; 66 get => (WixComponentSearchAttributes)this.Fields[(int)WixComponentSearchTupleFields.Attributes].AsNumber();
65 set => this.Set((int)WixComponentSearchTupleFields.Attributes, value); 67 set => this.Set((int)WixComponentSearchTupleFields.Attributes, (int)value);
66 } 68 }
67 } 69 }
68} \ No newline at end of file 70}
diff --git a/src/WixToolset.Data/Tuples/WixDependencyProviderTuple.cs b/src/WixToolset.Data/Tuples/WixDependencyProviderTuple.cs
new file mode 100644
index 00000000..1953594e
--- /dev/null
+++ b/src/WixToolset.Data/Tuples/WixDependencyProviderTuple.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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition WixDependencyProvider = new IntermediateTupleDefinition(
10 TupleDefinitionType.WixDependencyProvider.ToString(),
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixDependencyProviderTupleFields.ComponentRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixDependencyProviderTupleFields.ProviderKey), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixDependencyProviderTupleFields.Version), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixDependencyProviderTupleFields.DisplayName), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixDependencyProviderTupleFields.Attributes), IntermediateFieldType.Number),
18 },
19 typeof(WixDependencyProviderTuple));
20 }
21}
22
23namespace WixToolset.Data.Tuples
24{
25 using System;
26 using WixToolset.Data;
27
28 public enum WixDependencyProviderTupleFields
29 {
30 ComponentRef,
31 ProviderKey,
32 Version,
33 DisplayName,
34 Attributes,
35 }
36
37 [Flags]
38 public enum WixDependencyProviderAttributes
39 {
40 ProvidesAttributesBundle = 0x10000
41 }
42
43 public class WixDependencyProviderTuple : IntermediateTuple
44 {
45 public WixDependencyProviderTuple() : base(TupleDefinitions.WixDependencyProvider, null, null)
46 {
47 }
48
49 public WixDependencyProviderTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixDependencyProvider, sourceLineNumber, id)
50 {
51 }
52
53 public IntermediateField this[WixDependencyProviderTupleFields index] => this.Fields[(int)index];
54
55 public string ComponentRef
56 {
57 get => this.Fields[(int)WixDependencyProviderTupleFields.ComponentRef].AsString();
58 set => this.Set((int)WixDependencyProviderTupleFields.ComponentRef, value);
59 }
60
61 public string ProviderKey
62 {
63 get => this.Fields[(int)WixDependencyProviderTupleFields.ProviderKey].AsString();
64 set => this.Set((int)WixDependencyProviderTupleFields.ProviderKey, value);
65 }
66
67 public string Version
68 {
69 get => this.Fields[(int)WixDependencyProviderTupleFields.Version].AsString();
70 set => this.Set((int)WixDependencyProviderTupleFields.Version, value);
71 }
72
73 public string DisplayName
74 {
75 get => this.Fields[(int)WixDependencyProviderTupleFields.DisplayName].AsString();
76 set => this.Set((int)WixDependencyProviderTupleFields.DisplayName, value);
77 }
78
79 public WixDependencyProviderAttributes Attributes
80 {
81 get => (WixDependencyProviderAttributes)(int)this.Fields[(int)WixDependencyProviderTupleFields.Attributes];
82 set => this.Set((int)WixDependencyProviderTupleFields.Attributes, (int)value);
83 }
84
85 public bool Bundle => (this.Attributes & WixDependencyProviderAttributes.ProvidesAttributesBundle) == WixDependencyProviderAttributes.ProvidesAttributesBundle;
86 }
87}
diff --git a/src/WixToolset.Data/Tuples/WixFileSearchTuple.cs b/src/WixToolset.Data/Tuples/WixFileSearchTuple.cs
index 27c5cc83..4c0cedf3 100644
--- a/src/WixToolset.Data/Tuples/WixFileSearchTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixFileSearchTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixFileSearch, 10 TupleDefinitionType.WixFileSearch,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.WixSearchRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.Path), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.Path), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.MinVersion), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.MinVersion), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.MaxVersion), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixFileSearchTupleFields.MaxVersion), IntermediateFieldType.String),
@@ -27,9 +26,10 @@ namespace WixToolset.Data
27 26
28namespace WixToolset.Data.Tuples 27namespace WixToolset.Data.Tuples
29{ 28{
29 using System;
30
30 public enum WixFileSearchTupleFields 31 public enum WixFileSearchTupleFields
31 { 32 {
32 WixSearchRef,
33 Path, 33 Path,
34 MinVersion, 34 MinVersion,
35 MaxVersion, 35 MaxVersion,
@@ -41,6 +41,21 @@ namespace WixToolset.Data.Tuples
41 Attributes, 41 Attributes,
42 } 42 }
43 43
44 [Flags]
45 public enum WixFileSearchAttributes
46 {
47 Default = 0x001,
48 MinVersionInclusive = 0x002,
49 MaxVersionInclusive = 0x004,
50 MinSizeInclusive = 0x008,
51 MaxSizeInclusive = 0x010,
52 MinDateInclusive = 0x020,
53 MaxDateInclusive = 0x040,
54 WantVersion = 0x080,
55 WantExists = 0x100,
56 IsDirectory = 0x200,
57 }
58
44 public class WixFileSearchTuple : IntermediateTuple 59 public class WixFileSearchTuple : IntermediateTuple
45 { 60 {
46 public WixFileSearchTuple() : base(TupleDefinitions.WixFileSearch, null, null) 61 public WixFileSearchTuple() : base(TupleDefinitions.WixFileSearch, null, null)
@@ -53,12 +68,6 @@ namespace WixToolset.Data.Tuples
53 68
54 public IntermediateField this[WixFileSearchTupleFields index] => this.Fields[(int)index]; 69 public IntermediateField this[WixFileSearchTupleFields index] => this.Fields[(int)index];
55 70
56 public string WixSearchRef
57 {
58 get => (string)this.Fields[(int)WixFileSearchTupleFields.WixSearchRef];
59 set => this.Set((int)WixFileSearchTupleFields.WixSearchRef, value);
60 }
61
62 public string Path 71 public string Path
63 { 72 {
64 get => (string)this.Fields[(int)WixFileSearchTupleFields.Path]; 73 get => (string)this.Fields[(int)WixFileSearchTupleFields.Path];
@@ -107,10 +116,10 @@ namespace WixToolset.Data.Tuples
107 set => this.Set((int)WixFileSearchTupleFields.Languages, value); 116 set => this.Set((int)WixFileSearchTupleFields.Languages, value);
108 } 117 }
109 118
110 public int Attributes 119 public WixFileSearchAttributes Attributes
111 { 120 {
112 get => (int)this.Fields[(int)WixFileSearchTupleFields.Attributes]; 121 get => (WixFileSearchAttributes)this.Fields[(int)WixFileSearchTupleFields.Attributes].AsNumber();
113 set => this.Set((int)WixFileSearchTupleFields.Attributes, value); 122 set => this.Set((int)WixFileSearchTupleFields.Attributes, (int)value);
114 } 123 }
115 } 124 }
116} \ No newline at end of file 125}
diff --git a/src/WixToolset.Data/Tuples/WixPackageFeatureInfoTuple.cs b/src/WixToolset.Data/Tuples/WixPackageFeatureInfoTuple.cs
deleted file mode 100644
index bcc0ad78..00000000
--- a/src/WixToolset.Data/Tuples/WixPackageFeatureInfoTuple.cs
+++ /dev/null
@@ -1,116 +0,0 @@
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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition WixPackageFeatureInfo = new IntermediateTupleDefinition(
10 TupleDefinitionType.WixPackageFeatureInfo,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Package), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Feature), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Size), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Parent), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Title), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Description), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Display), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Level), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Directory), IntermediateFieldType.String),
22 new IntermediateFieldDefinition(nameof(WixPackageFeatureInfoTupleFields.Attributes), IntermediateFieldType.String),
23 },
24 typeof(WixPackageFeatureInfoTuple));
25 }
26}
27
28namespace WixToolset.Data.Tuples
29{
30 public enum WixPackageFeatureInfoTupleFields
31 {
32 Package,
33 Feature,
34 Size,
35 Parent,
36 Title,
37 Description,
38 Display,
39 Level,
40 Directory,
41 Attributes,
42 }
43
44 public class WixPackageFeatureInfoTuple : IntermediateTuple
45 {
46 public WixPackageFeatureInfoTuple() : base(TupleDefinitions.WixPackageFeatureInfo, null, null)
47 {
48 }
49
50 public WixPackageFeatureInfoTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixPackageFeatureInfo, sourceLineNumber, id)
51 {
52 }
53
54 public IntermediateField this[WixPackageFeatureInfoTupleFields index] => this.Fields[(int)index];
55
56 public string Package
57 {
58 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Package];
59 set => this.Set((int)WixPackageFeatureInfoTupleFields.Package, value);
60 }
61
62 public string Feature
63 {
64 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Feature];
65 set => this.Set((int)WixPackageFeatureInfoTupleFields.Feature, value);
66 }
67
68 public string Size
69 {
70 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Size];
71 set => this.Set((int)WixPackageFeatureInfoTupleFields.Size, value);
72 }
73
74 public string Parent
75 {
76 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Parent];
77 set => this.Set((int)WixPackageFeatureInfoTupleFields.Parent, value);
78 }
79
80 public string Title
81 {
82 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Title];
83 set => this.Set((int)WixPackageFeatureInfoTupleFields.Title, value);
84 }
85
86 public string Description
87 {
88 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Description];
89 set => this.Set((int)WixPackageFeatureInfoTupleFields.Description, value);
90 }
91
92 public string Display
93 {
94 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Display];
95 set => this.Set((int)WixPackageFeatureInfoTupleFields.Display, value);
96 }
97
98 public string Level
99 {
100 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Level];
101 set => this.Set((int)WixPackageFeatureInfoTupleFields.Level, value);
102 }
103
104 public string Directory
105 {
106 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Directory];
107 set => this.Set((int)WixPackageFeatureInfoTupleFields.Directory, value);
108 }
109
110 public string Attributes
111 {
112 get => (string)this.Fields[(int)WixPackageFeatureInfoTupleFields.Attributes];
113 set => this.Set((int)WixPackageFeatureInfoTupleFields.Attributes, value);
114 }
115 }
116} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixPackagePropertiesTuple.cs b/src/WixToolset.Data/Tuples/WixPackagePropertiesTuple.cs
deleted file mode 100644
index 56f6523b..00000000
--- a/src/WixToolset.Data/Tuples/WixPackagePropertiesTuple.cs
+++ /dev/null
@@ -1,180 +0,0 @@
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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition WixPackageProperties = new IntermediateTupleDefinition(
10 TupleDefinitionType.WixPackageProperties,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Package), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Vital), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.DisplayName), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Description), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.DownloadSize), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.PackageSize), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.InstalledSize), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.PackageType), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Permanent), IntermediateFieldType.String),
22 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.LogPathVariable), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.RollbackLogPathVariable), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Compressed), IntermediateFieldType.String),
25 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.DisplayInternalUI), IntermediateFieldType.String),
26 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.ProductCode), IntermediateFieldType.String),
27 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.UpgradeCode), IntermediateFieldType.String),
28 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Version), IntermediateFieldType.String),
29 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.InstallCondition), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(WixPackagePropertiesTupleFields.Cache), IntermediateFieldType.String),
31 },
32 typeof(WixPackagePropertiesTuple));
33 }
34}
35
36namespace WixToolset.Data.Tuples
37{
38 public enum WixPackagePropertiesTupleFields
39 {
40 Package,
41 Vital,
42 DisplayName,
43 Description,
44 DownloadSize,
45 PackageSize,
46 InstalledSize,
47 PackageType,
48 Permanent,
49 LogPathVariable,
50 RollbackLogPathVariable,
51 Compressed,
52 DisplayInternalUI,
53 ProductCode,
54 UpgradeCode,
55 Version,
56 InstallCondition,
57 Cache,
58 }
59
60 public class WixPackagePropertiesTuple : IntermediateTuple
61 {
62 public WixPackagePropertiesTuple() : base(TupleDefinitions.WixPackageProperties, null, null)
63 {
64 }
65
66 public WixPackagePropertiesTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixPackageProperties, sourceLineNumber, id)
67 {
68 }
69
70 public IntermediateField this[WixPackagePropertiesTupleFields index] => this.Fields[(int)index];
71
72 public string Package
73 {
74 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Package];
75 set => this.Set((int)WixPackagePropertiesTupleFields.Package, value);
76 }
77
78 public string Vital
79 {
80 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Vital];
81 set => this.Set((int)WixPackagePropertiesTupleFields.Vital, value);
82 }
83
84 public string DisplayName
85 {
86 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.DisplayName];
87 set => this.Set((int)WixPackagePropertiesTupleFields.DisplayName, value);
88 }
89
90 public string Description
91 {
92 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Description];
93 set => this.Set((int)WixPackagePropertiesTupleFields.Description, value);
94 }
95
96 public string DownloadSize
97 {
98 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.DownloadSize];
99 set => this.Set((int)WixPackagePropertiesTupleFields.DownloadSize, value);
100 }
101
102 public string PackageSize
103 {
104 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.PackageSize];
105 set => this.Set((int)WixPackagePropertiesTupleFields.PackageSize, value);
106 }
107
108 public string InstalledSize
109 {
110 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.InstalledSize];
111 set => this.Set((int)WixPackagePropertiesTupleFields.InstalledSize, value);
112 }
113
114 public string PackageType
115 {
116 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.PackageType];
117 set => this.Set((int)WixPackagePropertiesTupleFields.PackageType, value);
118 }
119
120 public string Permanent
121 {
122 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Permanent];
123 set => this.Set((int)WixPackagePropertiesTupleFields.Permanent, value);
124 }
125
126 public string LogPathVariable
127 {
128 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.LogPathVariable];
129 set => this.Set((int)WixPackagePropertiesTupleFields.LogPathVariable, value);
130 }
131
132 public string RollbackLogPathVariable
133 {
134 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.RollbackLogPathVariable];
135 set => this.Set((int)WixPackagePropertiesTupleFields.RollbackLogPathVariable, value);
136 }
137
138 public string Compressed
139 {
140 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Compressed];
141 set => this.Set((int)WixPackagePropertiesTupleFields.Compressed, value);
142 }
143
144 public string DisplayInternalUI
145 {
146 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.DisplayInternalUI];
147 set => this.Set((int)WixPackagePropertiesTupleFields.DisplayInternalUI, value);
148 }
149
150 public string ProductCode
151 {
152 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.ProductCode];
153 set => this.Set((int)WixPackagePropertiesTupleFields.ProductCode, value);
154 }
155
156 public string UpgradeCode
157 {
158 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.UpgradeCode];
159 set => this.Set((int)WixPackagePropertiesTupleFields.UpgradeCode, value);
160 }
161
162 public string Version
163 {
164 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Version];
165 set => this.Set((int)WixPackagePropertiesTupleFields.Version, value);
166 }
167
168 public string InstallCondition
169 {
170 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.InstallCondition];
171 set => this.Set((int)WixPackagePropertiesTupleFields.InstallCondition, value);
172 }
173
174 public string Cache
175 {
176 get => (string)this.Fields[(int)WixPackagePropertiesTupleFields.Cache];
177 set => this.Set((int)WixPackagePropertiesTupleFields.Cache, value);
178 }
179 }
180} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixPayloadPropertiesTuple.cs b/src/WixToolset.Data/Tuples/WixPayloadPropertiesTuple.cs
deleted file mode 100644
index c992bb4f..00000000
--- a/src/WixToolset.Data/Tuples/WixPayloadPropertiesTuple.cs
+++ /dev/null
@@ -1,92 +0,0 @@
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
4{
5 using WixToolset.Data.Tuples;
6
7 public static partial class TupleDefinitions
8 {
9 public static readonly IntermediateTupleDefinition WixPayloadProperties = new IntermediateTupleDefinition(
10 TupleDefinitionType.WixPayloadProperties,
11 new[]
12 {
13 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.Payload), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.Package), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.Container), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.Name), IntermediateFieldType.String),
17 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.Size), IntermediateFieldType.String),
18 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.DownloadUrl), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(WixPayloadPropertiesTupleFields.LayoutOnly), IntermediateFieldType.String),
20 },
21 typeof(WixPayloadPropertiesTuple));
22 }
23}
24
25namespace WixToolset.Data.Tuples
26{
27 public enum WixPayloadPropertiesTupleFields
28 {
29 Payload,
30 Package,
31 Container,
32 Name,
33 Size,
34 DownloadUrl,
35 LayoutOnly,
36 }
37
38 public class WixPayloadPropertiesTuple : IntermediateTuple
39 {
40 public WixPayloadPropertiesTuple() : base(TupleDefinitions.WixPayloadProperties, null, null)
41 {
42 }
43
44 public WixPayloadPropertiesTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixPayloadProperties, sourceLineNumber, id)
45 {
46 }
47
48 public IntermediateField this[WixPayloadPropertiesTupleFields index] => this.Fields[(int)index];
49
50 public string Payload
51 {
52 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.Payload];
53 set => this.Set((int)WixPayloadPropertiesTupleFields.Payload, value);
54 }
55
56 public string Package
57 {
58 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.Package];
59 set => this.Set((int)WixPayloadPropertiesTupleFields.Package, value);
60 }
61
62 public string Container
63 {
64 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.Container];
65 set => this.Set((int)WixPayloadPropertiesTupleFields.Container, value);
66 }
67
68 public string Name
69 {
70 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.Name];
71 set => this.Set((int)WixPayloadPropertiesTupleFields.Name, value);
72 }
73
74 public string Size
75 {
76 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.Size];
77 set => this.Set((int)WixPayloadPropertiesTupleFields.Size, value);
78 }
79
80 public string DownloadUrl
81 {
82 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.DownloadUrl];
83 set => this.Set((int)WixPayloadPropertiesTupleFields.DownloadUrl, value);
84 }
85
86 public string LayoutOnly
87 {
88 get => (string)this.Fields[(int)WixPayloadPropertiesTupleFields.LayoutOnly];
89 set => this.Set((int)WixPayloadPropertiesTupleFields.LayoutOnly, value);
90 }
91 }
92} \ No newline at end of file
diff --git a/src/WixToolset.Data/Tuples/WixProductSearchTuple.cs b/src/WixToolset.Data/Tuples/WixProductSearchTuple.cs
index 4a13f47d..22e96365 100644
--- a/src/WixToolset.Data/Tuples/WixProductSearchTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixProductSearchTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixProductSearch, 10 TupleDefinitionType.WixProductSearch,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixProductSearchTupleFields.WixSearchRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixProductSearchTupleFields.Guid), IntermediateFieldType.String), 13 new IntermediateFieldDefinition(nameof(WixProductSearchTupleFields.Guid), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(WixProductSearchTupleFields.Attributes), IntermediateFieldType.Number), 14 new IntermediateFieldDefinition(nameof(WixProductSearchTupleFields.Attributes), IntermediateFieldType.Number),
16 }, 15 },
@@ -20,13 +19,24 @@ namespace WixToolset.Data
20 19
21namespace WixToolset.Data.Tuples 20namespace WixToolset.Data.Tuples
22{ 21{
22 using System;
23
23 public enum WixProductSearchTupleFields 24 public enum WixProductSearchTupleFields
24 { 25 {
25 WixSearchRef,
26 Guid, 26 Guid,
27 Attributes, 27 Attributes,
28 } 28 }
29 29
30 [Flags]
31 public enum WixProductSearchAttributes
32 {
33 Version = 0x1,
34 Language = 0x2,
35 State = 0x4,
36 Assignment = 0x8,
37 UpgradeCode = 0x10,
38 }
39
30 public class WixProductSearchTuple : IntermediateTuple 40 public class WixProductSearchTuple : IntermediateTuple
31 { 41 {
32 public WixProductSearchTuple() : base(TupleDefinitions.WixProductSearch, null, null) 42 public WixProductSearchTuple() : base(TupleDefinitions.WixProductSearch, null, null)
@@ -39,22 +49,16 @@ namespace WixToolset.Data.Tuples
39 49
40 public IntermediateField this[WixProductSearchTupleFields index] => this.Fields[(int)index]; 50 public IntermediateField this[WixProductSearchTupleFields index] => this.Fields[(int)index];
41 51
42 public string WixSearchRef
43 {
44 get => (string)this.Fields[(int)WixProductSearchTupleFields.WixSearchRef];
45 set => this.Set((int)WixProductSearchTupleFields.WixSearchRef, value);
46 }
47
48 public string Guid 52 public string Guid
49 { 53 {
50 get => (string)this.Fields[(int)WixProductSearchTupleFields.Guid]; 54 get => (string)this.Fields[(int)WixProductSearchTupleFields.Guid];
51 set => this.Set((int)WixProductSearchTupleFields.Guid, value); 55 set => this.Set((int)WixProductSearchTupleFields.Guid, value);
52 } 56 }
53 57
54 public int Attributes 58 public WixProductSearchAttributes Attributes
55 { 59 {
56 get => (int)this.Fields[(int)WixProductSearchTupleFields.Attributes]; 60 get => (WixProductSearchAttributes)this.Fields[(int)WixProductSearchTupleFields.Attributes].AsNumber();
57 set => this.Set((int)WixProductSearchTupleFields.Attributes, value); 61 set => this.Set((int)WixProductSearchTupleFields.Attributes, (int)value);
58 } 62 }
59 } 63 }
60} \ No newline at end of file 64}
diff --git a/src/WixToolset.Data/Tuples/WixRegistrySearchTuple.cs b/src/WixToolset.Data/Tuples/WixRegistrySearchTuple.cs
index c88d6982..6bf43a00 100644
--- a/src/WixToolset.Data/Tuples/WixRegistrySearchTuple.cs
+++ b/src/WixToolset.Data/Tuples/WixRegistrySearchTuple.cs
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixRegistrySearch, 10 TupleDefinitionType.WixRegistrySearch,
11 new[] 11 new[]
12 { 12 {
13 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.WixSearchRef), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Root), IntermediateFieldType.Number), 13 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Root), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Key), IntermediateFieldType.String), 14 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Key), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Value), IntermediateFieldType.String), 15 new IntermediateFieldDefinition(nameof(WixRegistrySearchTupleFields.Value), IntermediateFieldType.String),
@@ -22,15 +21,27 @@ namespace WixToolset.Data
22 21
23namespace WixToolset.Data.Tuples 22namespace WixToolset.Data.Tuples
24{ 23{
24 using System;
25
25 public enum WixRegistrySearchTupleFields 26 public enum WixRegistrySearchTupleFields
26 { 27 {
27 WixSearchRef,
28 Root, 28 Root,
29 Key, 29 Key,
30 Value, 30 Value,
31 Attributes, 31 Attributes,
32 } 32 }
33 33
34 [Flags]
35 public enum WixRegistrySearchAttributes
36 {
37 Raw = 0x01,
38 Compatible = 0x02,
39 ExpandEnvironmentVariables = 0x04,
40 WantValue = 0x08,
41 WantExists = 0x10,
42 Win64 = 0x20,
43 }
44
34 public class WixRegistrySearchTuple : IntermediateTuple 45 public class WixRegistrySearchTuple : IntermediateTuple
35 { 46 {
36 public WixRegistrySearchTuple() : base(TupleDefinitions.WixRegistrySearch, null, null) 47 public WixRegistrySearchTuple() : base(TupleDefinitions.WixRegistrySearch, null, null)
@@ -43,16 +54,10 @@ namespace WixToolset.Data.Tuples
43 54
44 public IntermediateField this[WixRegistrySearchTupleFields index] => this.Fields[(int)index]; 55 public IntermediateField this[WixRegistrySearchTupleFields index] => this.Fields[(int)index];
45 56
46 public string WixSearchRef 57 public RegistryRootType Root
47 { 58 {
48 get => (string)this.Fields[(int)WixRegistrySearchTupleFields.WixSearchRef]; 59 get => (RegistryRootType)this.Fields[(int)WixRegistrySearchTupleFields.Root].AsNumber();
49 set => this.Set((int)WixRegistrySearchTupleFields.WixSearchRef, value); 60 set => this.Set((int)WixRegistrySearchTupleFields.Root, (int)value);
50 }
51
52 public int Root
53 {
54 get => (int)this.Fields[(int)WixRegistrySearchTupleFields.Root];
55 set => this.Set((int)WixRegistrySearchTupleFields.Root, value);
56 } 61 }
57 62
58 public string Key 63 public string Key
@@ -67,10 +72,10 @@ namespace WixToolset.Data.Tuples
67 set => this.Set((int)WixRegistrySearchTupleFields.Value, value); 72 set => this.Set((int)WixRegistrySearchTupleFields.Value, value);
68 } 73 }
69 74
70 public int Attributes 75 public WixRegistrySearchAttributes Attributes
71 { 76 {
72 get => (int)this.Fields[(int)WixRegistrySearchTupleFields.Attributes]; 77 get => (WixRegistrySearchAttributes)this.Fields[(int)WixRegistrySearchTupleFields.Attributes].AsNumber();
73 set => this.Set((int)WixRegistrySearchTupleFields.Attributes, value); 78 set => this.Set((int)WixRegistrySearchTupleFields.Attributes, (int)value);
74 } 79 }
75 } 80 }
76} \ No newline at end of file 81}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs
index b3d85c8a..28a14ddd 100644
--- a/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixApprovedExeForElevationRow.cs
@@ -2,6 +2,8 @@
2 2
3namespace WixToolset.Data.WindowsInstaller.Rows 3namespace WixToolset.Data.WindowsInstaller.Rows
4{ 4{
5 using WixToolset.Data.Tuples;
6
5 /// <summary> 7 /// <summary>
6 /// Specialization of a row for the WixApprovedExeForElevation table. 8 /// Specialization of a row for the WixApprovedExeForElevation table.
7 /// </summary> 9 /// </summary>
@@ -61,9 +63,9 @@ namespace WixToolset.Data.WindowsInstaller.Rows
61 /// Gets or sets the attibutes. 63 /// Gets or sets the attibutes.
62 /// </summary> 64 /// </summary>
63 /// <value>The BundleApprovedExeForElevationAttributes.</value> 65 /// <value>The BundleApprovedExeForElevationAttributes.</value>
64 public BundleApprovedExeForElevationAttributes Attributes 66 public WixApprovedExeForElevationAttributes Attributes
65 { 67 {
66 get { return (BundleApprovedExeForElevationAttributes)this.Fields[3].Data; } 68 get { return (WixApprovedExeForElevationAttributes)this.Fields[3].Data; }
67 set { this.Fields[3].Data = (int)value; } 69 set { this.Fields[3].Data = (int)value; }
68 } 70 }
69 71
@@ -72,7 +74,7 @@ namespace WixToolset.Data.WindowsInstaller.Rows
72 /// </summary> 74 /// </summary>
73 public bool Win64 75 public bool Win64
74 { 76 {
75 get { return BundleApprovedExeForElevationAttributes.Win64 == (this.Attributes & BundleApprovedExeForElevationAttributes.Win64); } 77 get { return WixApprovedExeForElevationAttributes.Win64 == (this.Attributes & WixApprovedExeForElevationAttributes.Win64); }
76 } 78 }
77 } 79 }
78} 80}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs
index 95fc0f54..241c1f7f 100644
--- a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleExePackageRow.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Data.WindowsInstaller.Rows 3namespace WixToolset.Data.WindowsInstaller.Rows
4{ 4{
5 using System;
5 using WixToolset.Data.Tuples; 6 using WixToolset.Data.Tuples;
6 7
7 /// <summary> 8 /// <summary>
@@ -97,7 +98,7 @@ namespace WixToolset.Data.WindowsInstaller.Rows
97 /// </summary> 98 /// </summary>
98 public bool Repairable 99 public bool Repairable
99 { 100 {
100 get { return 0 != (this.Attributes & WixBundleExePackageAttributes.Repairable); } 101 get { return !String.IsNullOrEmpty(this.RepairCommand); }
101 } 102 }
102 } 103 }
103} 104}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs
index fdd2b6cf..5f07072d 100644
--- a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundleMsiPackageRow.cs
@@ -126,13 +126,5 @@ namespace WixToolset.Data.WindowsInstaller.Rows
126 { 126 {
127 get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine); } 127 get { return 0 != (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine); }
128 } 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 } 129 }
138} 130}
diff --git a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs
index 6e05e4b7..84d13c43 100644
--- a/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs
+++ b/src/WixToolset.Data/WindowsInstaller/Rows/WixBundlePatchTargetCodeRow.cs
@@ -3,25 +3,7 @@
3namespace WixToolset.Data.WindowsInstaller.Rows 3namespace WixToolset.Data.WindowsInstaller.Rows
4{ 4{
5 using System; 5 using System;
6 6 using WixToolset.Data.Tuples;
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 7
26 /// <summary> 8 /// <summary>
27 /// Specialization of a row for the PatchTargetCode table. 9 /// Specialization of a row for the PatchTargetCode table.