aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs')
-rw-r--r--src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs41
1 files changed, 15 insertions, 26 deletions
diff --git a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
index 9f98483f..2cb5ed64 100644
--- a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+++ b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
@@ -117,10 +117,10 @@ namespace WixToolset.Core.Burn
117 // If there are any fields to resolve later, create the cache to populate during bind. 117 // If there are any fields to resolve later, create the cache to populate during bind.
118 var variableCache = this.DelayedFields.Any() ? new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) : null; 118 var variableCache = this.DelayedFields.Any() ? new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) : null;
119 119
120 // TODO: Although the WixSearch tables are defined in the Util extension, 120 var orderSearchesCommand = new OrderSearchesCommand(this.Messaging, section);
121 // the Bundle Binder has to know all about them. We hope to revisit all 121 orderSearchesCommand.Execute();
122 // of this in the 4.0 timeframe. 122 var orderedSearches = orderSearchesCommand.OrderedSearchFacades;
123 var orderedSearches = this.OrderSearches(section); 123 var extensionSearchTuplesById = orderSearchesCommand.ExtensionSearchTuplesByExtensionId;
124 124
125 // Extract files that come from binary .wixlibs and WixExtensions (this does not extract files from merge modules). 125 // Extract files that come from binary .wixlibs and WixExtensions (this does not extract files from merge modules).
126 { 126 {
@@ -387,6 +387,17 @@ namespace WixToolset.Core.Burn
387 387
388 var baManifestPayload = command.BootstrapperApplicationManifestPayloadRow; 388 var baManifestPayload = command.BootstrapperApplicationManifestPayloadRow;
389 payloadTuples.Add(baManifestPayload.Id.Id, baManifestPayload); 389 payloadTuples.Add(baManifestPayload.Id.Id, baManifestPayload);
390 ++uxPayloadIndex;
391 }
392
393 // Generate the bundle extension manifest...
394 {
395 var command = new CreateBundleExtensionManifestCommand(section, bundleTuple, extensionSearchTuplesById, uxPayloadIndex, this.IntermediateFolder);
396 command.Execute();
397
398 var bextManifestPayload = command.BundleExtensionManifestPayloadRow;
399 payloadTuples.Add(bextManifestPayload.Id.Id, bextManifestPayload);
400 ++uxPayloadIndex;
390 } 401 }
391 402
392#if TODO 403#if TODO
@@ -464,28 +475,6 @@ namespace WixToolset.Core.Burn
464 trackedFiles.Add(trackIntermediate); 475 trackedFiles.Add(trackIntermediate);
465 } 476 }
466 477
467 private IEnumerable<SearchFacade> OrderSearches(IntermediateSection section)
468 {
469 var searchesById = section.Tuples
470 .Where(t => t.Definition.Type == TupleDefinitionType.WixComponentSearch ||
471 t.Definition.Type == TupleDefinitionType.WixFileSearch ||
472 t.Definition.Type == TupleDefinitionType.WixProductSearch ||
473 t.Definition.Type == TupleDefinitionType.WixRegistrySearch)
474 .ToDictionary(t => t.Id.Id);
475
476 var orderedSearches = new List<SearchFacade>(searchesById.Keys.Count);
477
478 foreach (var searchTuple in section.Tuples.OfType<WixSearchTuple>())
479 {
480 if (searchesById.TryGetValue(searchTuple.Id.Id, out var specificSearchTuple))
481 {
482 orderedSearches.Add(new SearchFacade(searchTuple, specificSearchTuple));
483 }
484 }
485
486 return orderedSearches;
487 }
488
489 /// <summary> 478 /// <summary>
490 /// Populates the variable cache with specific package properties. 479 /// Populates the variable cache with specific package properties.
491 /// </summary> 480 /// </summary>