aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.Burn
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core.Burn')
-rw-r--r--src/WixToolset.Core.Burn/Bind/SetVariableSearchFacade.cs33
-rw-r--r--src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs9
2 files changed, 41 insertions, 1 deletions
diff --git a/src/WixToolset.Core.Burn/Bind/SetVariableSearchFacade.cs b/src/WixToolset.Core.Burn/Bind/SetVariableSearchFacade.cs
new file mode 100644
index 00000000..0fe60422
--- /dev/null
+++ b/src/WixToolset.Core.Burn/Bind/SetVariableSearchFacade.cs
@@ -0,0 +1,33 @@
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.Core.Burn
4{
5 using System.Xml;
6 using WixToolset.Data.Tuples;
7
8 internal class SetVariableSearchFacade : BaseSearchFacade
9 {
10 public SetVariableSearchFacade(WixSearchTuple searchTuple, WixSetVariableTuple setVariableTuple)
11 {
12 this.SearchTuple = searchTuple;
13 this.SetVariableTuple = setVariableTuple;
14 }
15
16 private WixSetVariableTuple SetVariableTuple { get; }
17
18 public override void WriteXml(XmlTextWriter writer)
19 {
20 writer.WriteStartElement("SetVariable");
21
22 base.WriteXml(writer);
23
24 if (this.SetVariableTuple.Type != null)
25 {
26 writer.WriteAttributeString("Value", this.SetVariableTuple.Value);
27 writer.WriteAttributeString("Type", this.SetVariableTuple.Type);
28 }
29
30 writer.WriteEndElement();
31 }
32 }
33}
diff --git a/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs b/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
index 55b31ed3..3f720115 100644
--- a/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/OrderSearchesCommand.cs
@@ -36,13 +36,16 @@ namespace WixToolset.Core.Burn.Bundles
36 t.Definition.Type == TupleDefinitionType.WixProductSearch || 36 t.Definition.Type == TupleDefinitionType.WixProductSearch ||
37 t.Definition.Type == TupleDefinitionType.WixRegistrySearch) 37 t.Definition.Type == TupleDefinitionType.WixRegistrySearch)
38 .ToDictionary(t => t.Id.Id); 38 .ToDictionary(t => t.Id.Id);
39 var setVariablesById = this.Section.Tuples
40 .OfType<WixSetVariableTuple>()
41 .ToDictionary(t => t.Id.Id);
39 var extensionSearchesById = this.Section.Tuples 42 var extensionSearchesById = this.Section.Tuples
40 .Where(t => t.Definition.HasTag(BurnConstants.BundleExtensionSearchTupleDefinitionTag)) 43 .Where(t => t.Definition.HasTag(BurnConstants.BundleExtensionSearchTupleDefinitionTag))
41 .ToDictionary(t => t.Id.Id); 44 .ToDictionary(t => t.Id.Id);
42 var searchTuples = this.Section.Tuples.OfType<WixSearchTuple>().ToList(); 45 var searchTuples = this.Section.Tuples.OfType<WixSearchTuple>().ToList();
43 46
44 this.ExtensionSearchTuplesByExtensionId = new Dictionary<string, IList<IntermediateTuple>>(); 47 this.ExtensionSearchTuplesByExtensionId = new Dictionary<string, IList<IntermediateTuple>>();
45 this.OrderedSearchFacades = new List<ISearchFacade>(legacySearchesById.Keys.Count + extensionSearchesById.Keys.Count); 48 this.OrderedSearchFacades = new List<ISearchFacade>(legacySearchesById.Keys.Count + setVariablesById.Keys.Count + extensionSearchesById.Keys.Count);
46 49
47 foreach (var searchTuple in searchTuples) 50 foreach (var searchTuple in searchTuples)
48 { 51 {
@@ -50,6 +53,10 @@ namespace WixToolset.Core.Burn.Bundles
50 { 53 {
51 this.OrderedSearchFacades.Add(new LegacySearchFacade(searchTuple, specificSearchTuple)); 54 this.OrderedSearchFacades.Add(new LegacySearchFacade(searchTuple, specificSearchTuple));
52 } 55 }
56 else if (setVariablesById.TryGetValue(searchTuple.Id.Id, out var setVariableTuple))
57 {
58 this.OrderedSearchFacades.Add(new SetVariableSearchFacade(searchTuple, setVariableTuple));
59 }
53 else if (extensionSearchesById.TryGetValue(searchTuple.Id.Id, out var extensionSearchTuple)) 60 else if (extensionSearchesById.TryGetValue(searchTuple.Id.Id, out var extensionSearchTuple))
54 { 61 {
55 this.OrderedSearchFacades.Add(new ExtensionSearchFacade(searchTuple)); 62 this.OrderedSearchFacades.Add(new ExtensionSearchFacade(searchTuple));