diff options
Diffstat (limited to 'src/WixToolset.Core/Compiler_Bundle.cs')
-rw-r--r-- | src/WixToolset.Core/Compiler_Bundle.cs | 97 |
1 files changed, 36 insertions, 61 deletions
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs index ff746f8d..a0fe1608 100644 --- a/src/WixToolset.Core/Compiler_Bundle.cs +++ b/src/WixToolset.Core/Compiler_Bundle.cs | |||
@@ -84,14 +84,12 @@ namespace WixToolset.Core | |||
84 | 84 | ||
85 | if (!this.Core.EncounteredError) | 85 | if (!this.Core.EncounteredError) |
86 | { | 86 | { |
87 | var tuple = new WixApprovedExeForElevationTuple(sourceLineNumbers, id) | 87 | this.Core.AddTuple(new WixApprovedExeForElevationTuple(sourceLineNumbers, id) |
88 | { | 88 | { |
89 | Key = key, | 89 | Key = key, |
90 | ValueName = valueName, | 90 | ValueName = valueName, |
91 | Attributes = attributes | 91 | Attributes = attributes, |
92 | }; | 92 | }); |
93 | |||
94 | this.Core.AddTuple(tuple); | ||
95 | } | 93 | } |
96 | } | 94 | } |
97 | 95 | ||
@@ -282,7 +280,7 @@ namespace WixToolset.Core | |||
282 | this.ParseBundleExtensionElement(child); | 280 | this.ParseBundleExtensionElement(child); |
283 | break; | 281 | break; |
284 | case "BundleExtensionRef": | 282 | case "BundleExtensionRef": |
285 | this.ParseSimpleRefElement(child, "WixBundleExtension"); | 283 | this.ParseSimpleRefElement(child, TupleDefinitions.WixBundleExtension); |
286 | break; | 284 | break; |
287 | case "OptionalUpdateRegistration": | 285 | case "OptionalUpdateRegistration": |
288 | this.ParseOptionalUpdateRegistrationElement(child, manufacturer, parentName, name); | 286 | this.ParseOptionalUpdateRegistrationElement(child, manufacturer, parentName, name); |
@@ -303,7 +301,7 @@ namespace WixToolset.Core | |||
303 | this.ParseContainerElement(child); | 301 | this.ParseContainerElement(child); |
304 | break; | 302 | break; |
305 | case "ContainerRef": | 303 | case "ContainerRef": |
306 | this.ParseSimpleRefElement(child, "WixBundleContainer"); | 304 | this.ParseSimpleRefElement(child, TupleDefinitions.WixBundleContainer); |
307 | break; | 305 | break; |
308 | case "Log": | 306 | case "Log": |
309 | if (logSeen) | 307 | if (logSeen) |
@@ -327,7 +325,7 @@ namespace WixToolset.Core | |||
327 | this.ParseSetVariableElement(child); | 325 | this.ParseSetVariableElement(child); |
328 | break; | 326 | break; |
329 | case "SetVariableRef": | 327 | case "SetVariableRef": |
330 | this.ParseSimpleRefElement(child, "WixSetVariable"); | 328 | this.ParseSimpleRefElement(child, TupleDefinitions.WixSetVariable); |
331 | break; | 329 | break; |
332 | case "Update": | 330 | case "Update": |
333 | this.ParseUpdateElement(child); | 331 | this.ParseUpdateElement(child); |
@@ -356,7 +354,7 @@ namespace WixToolset.Core | |||
356 | 354 | ||
357 | if (!this.Core.EncounteredError) | 355 | if (!this.Core.EncounteredError) |
358 | { | 356 | { |
359 | var tuple = new WixBundleTuple(sourceLineNumbers) | 357 | var tuple = this.Core.AddTuple(new WixBundleTuple(sourceLineNumbers) |
360 | { | 358 | { |
361 | UpgradeCode = upgradeCode, | 359 | UpgradeCode = upgradeCode, |
362 | Version = version, | 360 | Version = version, |
@@ -375,7 +373,7 @@ namespace WixToolset.Core | |||
375 | Tag = tag, | 373 | Tag = tag, |
376 | Platform = this.CurrentPlatform, | 374 | Platform = this.CurrentPlatform, |
377 | ParentName = parentName, | 375 | ParentName = parentName, |
378 | }; | 376 | }); |
379 | 377 | ||
380 | if (!String.IsNullOrEmpty(logVariablePrefixAndExtension)) | 378 | if (!String.IsNullOrEmpty(logVariablePrefixAndExtension)) |
381 | { | 379 | { |
@@ -385,8 +383,6 @@ namespace WixToolset.Core | |||
385 | tuple.LogExtension = split[2]; | 383 | tuple.LogExtension = split[2]; |
386 | } | 384 | } |
387 | 385 | ||
388 | this.Core.AddTuple(tuple);; | ||
389 | |||
390 | if (null != upgradeCode) | 386 | if (null != upgradeCode) |
391 | { | 387 | { |
392 | this.Core.AddTuple(new WixRelatedBundleTuple(sourceLineNumbers) | 388 | this.Core.AddTuple(new WixRelatedBundleTuple(sourceLineNumbers) |
@@ -399,32 +395,32 @@ namespace WixToolset.Core | |||
399 | this.Core.AddTuple(new WixBundleContainerTuple(sourceLineNumbers, Compiler.BurnDefaultAttachedContainerId) | 395 | this.Core.AddTuple(new WixBundleContainerTuple(sourceLineNumbers, Compiler.BurnDefaultAttachedContainerId) |
400 | { | 396 | { |
401 | Name = "bundle-attached.cab", | 397 | Name = "bundle-attached.cab", |
402 | Type = ContainerType.Attached | 398 | Type = ContainerType.Attached, |
403 | }); | 399 | }); |
404 | 400 | ||
405 | // Ensure that the bundle stores the well-known persisted values. | 401 | // Ensure that the bundle stores the well-known persisted values. |
406 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_NAME)) | 402 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_NAME)) |
407 | { | 403 | { |
408 | Hidden = false, | 404 | Hidden = false, |
409 | Persisted = true | 405 | Persisted = true, |
410 | }); | 406 | }); |
411 | 407 | ||
412 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_ORIGINAL_SOURCE)) | 408 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_ORIGINAL_SOURCE)) |
413 | { | 409 | { |
414 | Hidden = false, | 410 | Hidden = false, |
415 | Persisted = true | 411 | Persisted = true, |
416 | }); | 412 | }); |
417 | 413 | ||
418 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_ORIGINAL_SOURCE_FOLDER)) | 414 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_ORIGINAL_SOURCE_FOLDER)) |
419 | { | 415 | { |
420 | Hidden = false, | 416 | Hidden = false, |
421 | Persisted = true | 417 | Persisted = true, |
422 | }); | 418 | }); |
423 | 419 | ||
424 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_LAST_USED_SOURCE)) | 420 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, BurnConstants.BURN_BUNDLE_LAST_USED_SOURCE)) |
425 | { | 421 | { |
426 | Hidden = false, | 422 | Hidden = false, |
427 | Persisted = true | 423 | Persisted = true, |
428 | }); | 424 | }); |
429 | } | 425 | } |
430 | } | 426 | } |
@@ -767,7 +763,7 @@ namespace WixToolset.Core | |||
767 | } | 763 | } |
768 | else | 764 | else |
769 | { | 765 | { |
770 | this.Core.CreateSimpleReference(sourceLineNumbers, "WixBootstrapperApplication", id); | 766 | this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixBootstrapperApplication, id); |
771 | } | 767 | } |
772 | } | 768 | } |
773 | 769 | ||
@@ -830,11 +826,10 @@ namespace WixToolset.Core | |||
830 | // Add the BundleExtension. | 826 | // Add the BundleExtension. |
831 | if (!this.Core.EncounteredError) | 827 | if (!this.Core.EncounteredError) |
832 | { | 828 | { |
833 | var tuple = new WixBundleExtensionTuple(sourceLineNumbers, id) | 829 | this.Core.AddTuple(new WixBundleExtensionTuple(sourceLineNumbers, id) |
834 | { | 830 | { |
835 | PayloadRef = id.Id, | 831 | PayloadRef = id.Id, |
836 | }; | 832 | }); |
837 | this.Core.AddTuple(tuple); | ||
838 | } | 833 | } |
839 | } | 834 | } |
840 | 835 | ||
@@ -1194,7 +1189,7 @@ namespace WixToolset.Core | |||
1194 | 1189 | ||
1195 | if (!this.Core.EncounteredError) | 1190 | if (!this.Core.EncounteredError) |
1196 | { | 1191 | { |
1197 | tuple = new WixBundlePayloadTuple(sourceLineNumbers, id) | 1192 | tuple = this.Core.AddTuple(new WixBundlePayloadTuple(sourceLineNumbers, id) |
1198 | { | 1193 | { |
1199 | Name = String.IsNullOrEmpty(name) ? Path.GetFileName(sourceFile) : name, | 1194 | Name = String.IsNullOrEmpty(name) ? Path.GetFileName(sourceFile) : name, |
1200 | SourceFile = new IntermediateFieldPathValue { Path = sourceFile }, | 1195 | SourceFile = new IntermediateFieldPathValue { Path = sourceFile }, |
@@ -1204,7 +1199,7 @@ namespace WixToolset.Core | |||
1204 | DisplayName = displayName, | 1199 | DisplayName = displayName, |
1205 | Description = description, | 1200 | Description = description, |
1206 | EnableSignatureValidation = (YesNoType.Yes == enableSignatureVerification) | 1201 | EnableSignatureValidation = (YesNoType.Yes == enableSignatureVerification) |
1207 | }; | 1202 | }); |
1208 | 1203 | ||
1209 | if (null != remotePayload) | 1204 | if (null != remotePayload) |
1210 | { | 1205 | { |
@@ -1217,8 +1212,6 @@ namespace WixToolset.Core | |||
1217 | tuple.Version = remotePayload.Version; | 1212 | tuple.Version = remotePayload.Version; |
1218 | } | 1213 | } |
1219 | 1214 | ||
1220 | this.Core.AddTuple(tuple); | ||
1221 | |||
1222 | this.CreateGroupAndOrderingRows(sourceLineNumbers, parentType, parentId.Id, ComplexReferenceChildType.Payload, id.Id, previousType, previousId?.Id); | 1215 | this.CreateGroupAndOrderingRows(sourceLineNumbers, parentType, parentId.Id, ComplexReferenceChildType.Payload, id.Id, previousType, previousId?.Id); |
1223 | } | 1216 | } |
1224 | 1217 | ||
@@ -1322,7 +1315,7 @@ namespace WixToolset.Core | |||
1322 | { | 1315 | { |
1323 | case "Id": | 1316 | case "Id": |
1324 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 1317 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
1325 | this.Core.CreateSimpleReference(sourceLineNumbers, "WixBundlePayloadGroup", id.Id); | 1318 | this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixBundlePayloadGroup, id.Id); |
1326 | break; | 1319 | break; |
1327 | default: | 1320 | default: |
1328 | this.Core.UnexpectedAttribute(node, attrib); | 1321 | this.Core.UnexpectedAttribute(node, attrib); |
@@ -1377,15 +1370,13 @@ namespace WixToolset.Core | |||
1377 | // TODO: Should we define our own enum for this, just to ensure there's no "cross-contamination"? | 1370 | // TODO: Should we define our own enum for this, just to ensure there's no "cross-contamination"? |
1378 | // TODO: Also, we could potentially include an 'Attributes' field to track things like | 1371 | // TODO: Also, we could potentially include an 'Attributes' field to track things like |
1379 | // 'before' vs. 'after', and explicit vs. inferred dependencies. | 1372 | // 'before' vs. 'after', and explicit vs. inferred dependencies. |
1380 | var tuple = new WixOrderingTuple(sourceLineNumbers) | 1373 | this.Core.AddTuple(new WixOrderingTuple(sourceLineNumbers) |
1381 | { | 1374 | { |
1382 | ItemType = type, | 1375 | ItemType = type, |
1383 | ItemIdRef = id, | 1376 | ItemIdRef = id, |
1384 | DependsOnType = previousType, | 1377 | DependsOnType = previousType, |
1385 | DependsOnIdRef = previousId | 1378 | DependsOnIdRef = previousId |
1386 | }; | 1379 | }); |
1387 | |||
1388 | this.Core.AddTuple(tuple); | ||
1389 | } | 1380 | } |
1390 | } | 1381 | } |
1391 | 1382 | ||
@@ -2101,7 +2092,7 @@ namespace WixToolset.Core | |||
2101 | attributes |= (YesNoType.Yes == permanent) ? WixBundlePackageAttributes.Permanent : 0; | 2092 | attributes |= (YesNoType.Yes == permanent) ? WixBundlePackageAttributes.Permanent : 0; |
2102 | attributes |= (YesNoType.Yes == visible) ? WixBundlePackageAttributes.Visible : 0; | 2093 | attributes |= (YesNoType.Yes == visible) ? WixBundlePackageAttributes.Visible : 0; |
2103 | 2094 | ||
2104 | var chainPackageTuple = new WixBundlePackageTuple(sourceLineNumbers, id) | 2095 | var chainPackageTuple = this.Core.AddTuple(new WixBundlePackageTuple(sourceLineNumbers, id) |
2105 | { | 2096 | { |
2106 | Type = packageType, | 2097 | Type = packageType, |
2107 | PayloadRef = id.Id, | 2098 | PayloadRef = id.Id, |
@@ -2110,7 +2101,7 @@ namespace WixToolset.Core | |||
2110 | CacheId = cacheId, | 2101 | CacheId = cacheId, |
2111 | LogPathVariable = logPathVariable, | 2102 | LogPathVariable = logPathVariable, |
2112 | RollbackLogPathVariable = rollbackPathVariable, | 2103 | RollbackLogPathVariable = rollbackPathVariable, |
2113 | }; | 2104 | }); |
2114 | 2105 | ||
2115 | if (YesNoAlwaysType.NotSet != cache) | 2106 | if (YesNoAlwaysType.NotSet != cache) |
2116 | { | 2107 | { |
@@ -2132,8 +2123,6 @@ namespace WixToolset.Core | |||
2132 | chainPackageTuple.InstallSize = installSize; | 2123 | chainPackageTuple.InstallSize = installSize; |
2133 | } | 2124 | } |
2134 | 2125 | ||
2135 | this.Core.AddTuple(chainPackageTuple); | ||
2136 | |||
2137 | switch (packageType) | 2126 | switch (packageType) |
2138 | { | 2127 | { |
2139 | case WixBundlePackageType.Exe: | 2128 | case WixBundlePackageType.Exe: |
@@ -2370,7 +2359,7 @@ namespace WixToolset.Core | |||
2370 | { | 2359 | { |
2371 | case "Id": | 2360 | case "Id": |
2372 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2361 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2373 | this.Core.CreateSimpleReference(sourceLineNumbers, "WixBundlePackageGroup", id); | 2362 | this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixBundlePackageGroup, id); |
2374 | break; | 2363 | break; |
2375 | case "After": | 2364 | case "After": |
2376 | after = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2365 | after = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
@@ -2425,7 +2414,7 @@ namespace WixToolset.Core | |||
2425 | { | 2414 | { |
2426 | this.Core.AddTuple(new WixChainItemTuple(sourceLineNumbers, id)); | 2415 | this.Core.AddTuple(new WixChainItemTuple(sourceLineNumbers, id)); |
2427 | 2416 | ||
2428 | var rollbackBoundary = new WixBundleRollbackBoundaryTuple(sourceLineNumbers, id); | 2417 | var rollbackBoundary = this.Core.AddTuple(new WixBundleRollbackBoundaryTuple(sourceLineNumbers, id)); |
2429 | 2418 | ||
2430 | if (YesNoType.NotSet != vital) | 2419 | if (YesNoType.NotSet != vital) |
2431 | { | 2420 | { |
@@ -2437,8 +2426,6 @@ namespace WixToolset.Core | |||
2437 | rollbackBoundary.Transaction = (transaction == YesNoType.Yes); | 2426 | rollbackBoundary.Transaction = (transaction == YesNoType.Yes); |
2438 | } | 2427 | } |
2439 | 2428 | ||
2440 | this.Core.AddTuple(rollbackBoundary); | ||
2441 | |||
2442 | this.CreateChainPackageMetaRows(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.Package, id.Id, previousType, previousId, null); | 2429 | this.CreateChainPackageMetaRows(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.Package, id.Id, previousType, previousId, null); |
2443 | } | 2430 | } |
2444 | 2431 | ||
@@ -2520,19 +2507,17 @@ namespace WixToolset.Core | |||
2520 | 2507 | ||
2521 | if (!this.Core.EncounteredError) | 2508 | if (!this.Core.EncounteredError) |
2522 | { | 2509 | { |
2523 | var tuple = new WixBundleMsiPropertyTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, packageId, name)) | 2510 | var tuple = this.Core.AddTuple(new WixBundleMsiPropertyTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, packageId, name)) |
2524 | { | 2511 | { |
2525 | PackageRef = packageId, | 2512 | PackageRef = packageId, |
2526 | Name = name, | 2513 | Name = name, |
2527 | Value = value | 2514 | Value = value |
2528 | }; | 2515 | }); |
2529 | 2516 | ||
2530 | if (!String.IsNullOrEmpty(condition)) | 2517 | if (!String.IsNullOrEmpty(condition)) |
2531 | { | 2518 | { |
2532 | tuple.Condition = condition; | 2519 | tuple.Condition = condition; |
2533 | } | 2520 | } |
2534 | |||
2535 | this.Core.AddTuple(tuple); | ||
2536 | } | 2521 | } |
2537 | } | 2522 | } |
2538 | 2523 | ||
@@ -2554,7 +2539,7 @@ namespace WixToolset.Core | |||
2554 | { | 2539 | { |
2555 | case "Id": | 2540 | case "Id": |
2556 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2541 | id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2557 | this.Core.CreateSimpleReference(sourceLineNumbers, "WixBundlePackage", id); | 2542 | this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixBundlePackage, id); |
2558 | break; | 2543 | break; |
2559 | default: | 2544 | default: |
2560 | this.Core.UnexpectedAttribute(node, attrib); | 2545 | this.Core.UnexpectedAttribute(node, attrib); |
@@ -2650,16 +2635,11 @@ namespace WixToolset.Core | |||
2650 | 2635 | ||
2651 | if (!this.Core.EncounteredError) | 2636 | if (!this.Core.EncounteredError) |
2652 | { | 2637 | { |
2653 | var tuple = new WixRelatedBundleTuple(sourceLineNumbers) | 2638 | this.Core.AddTuple(new WixRelatedBundleTuple(sourceLineNumbers) |
2654 | { | 2639 | { |
2655 | BundleId = id, | 2640 | BundleId = id, |
2656 | Action = actionType, | 2641 | Action = actionType, |
2657 | }; | 2642 | }); |
2658 | |||
2659 | this.Core.AddTuple(tuple); | ||
2660 | //var row = this.Core.CreateRow(sourceLineNumbers, TupleDefinitionType.WixRelatedBundle); | ||
2661 | //row.Set(0, id); | ||
2662 | //row.Set(1, (int)actionType); | ||
2663 | } | 2643 | } |
2664 | } | 2644 | } |
2665 | 2645 | ||
@@ -2701,12 +2681,10 @@ namespace WixToolset.Core | |||
2701 | 2681 | ||
2702 | if (!this.Core.EncounteredError) | 2682 | if (!this.Core.EncounteredError) |
2703 | { | 2683 | { |
2704 | var tuple = new WixBundleUpdateTuple(sourceLineNumbers) | 2684 | this.Core.AddTuple(new WixBundleUpdateTuple(sourceLineNumbers) |
2705 | { | 2685 | { |
2706 | Location = location | 2686 | Location = location |
2707 | }; | 2687 | }); |
2708 | |||
2709 | this.Core.AddTuple(tuple); | ||
2710 | } | 2688 | } |
2711 | } | 2689 | } |
2712 | 2690 | ||
@@ -2773,12 +2751,11 @@ namespace WixToolset.Core | |||
2773 | 2751 | ||
2774 | if (!this.Messaging.EncounteredError) | 2752 | if (!this.Messaging.EncounteredError) |
2775 | { | 2753 | { |
2776 | var tuple = new WixSetVariableTuple(sourceLineNumbers, id) | 2754 | this.Core.AddTuple(new WixSetVariableTuple(sourceLineNumbers, id) |
2777 | { | 2755 | { |
2778 | Value = value, | 2756 | Value = value, |
2779 | Type = type, | 2757 | Type = type, |
2780 | }; | 2758 | }); |
2781 | this.Core.AddTuple(tuple); | ||
2782 | } | 2759 | } |
2783 | } | 2760 | } |
2784 | 2761 | ||
@@ -2848,15 +2825,13 @@ namespace WixToolset.Core | |||
2848 | 2825 | ||
2849 | if (!this.Core.EncounteredError) | 2826 | if (!this.Core.EncounteredError) |
2850 | { | 2827 | { |
2851 | var tuple = new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, name)) | 2828 | this.Core.AddTuple(new WixBundleVariableTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, name)) |
2852 | { | 2829 | { |
2853 | Value = value, | 2830 | Value = value, |
2854 | Type = type, | 2831 | Type = type, |
2855 | Hidden = hidden, | 2832 | Hidden = hidden, |
2856 | Persisted = persisted | 2833 | Persisted = persisted |
2857 | }; | 2834 | }); |
2858 | |||
2859 | this.Core.AddTuple(tuple); | ||
2860 | } | 2835 | } |
2861 | } | 2836 | } |
2862 | 2837 | ||