aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-03-14 07:38:48 -0700
committerRob Mensching <rob@firegiant.com>2021-03-14 07:47:48 -0700
commit3ccd5e439da4296d6f2b66ce47075ab20d039676 (patch)
treeb5546552613b869367d09f444492a0bbcfadcfe0 /src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
parent574785ab1421c9b67336c13ade5c2263e665ca07 (diff)
downloadwix-3ccd5e439da4296d6f2b66ce47075ab20d039676.tar.gz
wix-3ccd5e439da4296d6f2b66ce47075ab20d039676.tar.bz2
wix-3ccd5e439da4296d6f2b66ce47075ab20d039676.zip
Minimize public surface area of Core
Fixes wixtoolset/issues#6374
Diffstat (limited to 'src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs')
-rw-r--r--src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
index 14b6d011..0afcc2b3 100644
--- a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
+++ b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
@@ -10,19 +10,18 @@ namespace WixToolset.Core.Bind
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
12 12
13#pragma warning disable 1591 // TODO: this shouldn't be public, need interface in Extensibility
14 /// <summary> 13 /// <summary>
15 /// Resolves the fields which had variables that needed to be resolved after the file information 14 /// Resolves the fields which had variables that needed to be resolved after the file information
16 /// was loaded. 15 /// was loaded.
17 /// </summary> 16 /// </summary>
18 public class ResolveDelayedFieldsCommand 17 internal class ResolveDelayedFieldsCommand
19 { 18 {
20 /// <summary> 19 /// <summary>
21 /// Resolve delayed fields. 20 /// Resolve delayed fields.
22 /// </summary> 21 /// </summary>
23 /// <param name="messaging"></param> 22 /// <param name="messaging"></param>
24 /// <param name="delayedFields">The fields which had resolution delayed.</param> 23 /// <param name="delayedFields">The fields which had resolution delayed.</param>
25 /// <param name="variableCache">The file information to use when resolving variables.</param> 24 /// <param name="variableCache">The cached variable values used when resolving delayed fields.</param>
26 public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache) 25 public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache)
27 { 26 {
28 this.Messaging = messaging; 27 this.Messaging = messaging;
@@ -49,7 +48,7 @@ namespace WixToolset.Core.Bind
49 // process properties first in case they refer to other binder variables 48 // process properties first in case they refer to other binder variables
50 if (delayedField.Symbol.Definition.Type == SymbolDefinitionType.Property) 49 if (delayedField.Symbol.Definition.Type == SymbolDefinitionType.Property)
51 { 50 {
52 var value = ResolveDelayedVariables(propertySymbol.SourceLineNumbers, delayedField.Field.AsString(), this.VariableCache); 51 var value = this.ResolveDelayedVariables(propertySymbol.SourceLineNumbers, delayedField.Field.AsString());
53 52
54 // update the variable cache with the new value 53 // update the variable cache with the new value
55 var key = String.Concat("property.", propertySymbol.Id.Id); 54 var key = String.Concat("property.", propertySymbol.Id.Id);
@@ -72,7 +71,7 @@ namespace WixToolset.Core.Bind
72 71
73 // add specialization for ProductVersion fields 72 // add specialization for ProductVersion fields
74 var keyProductVersion = "property.ProductVersion"; 73 var keyProductVersion = "property.ProductVersion";
75 if (this.VariableCache.TryGetValue(keyProductVersion, out var versionValue) && Version.TryParse(versionValue, out Version productVersion)) 74 if (this.VariableCache.TryGetValue(keyProductVersion, out var versionValue) && Version.TryParse(versionValue, out var productVersion))
76 { 75 {
77 // Don't add the variable if it already exists (developer defined a property with the same name). 76 // Don't add the variable if it already exists (developer defined a property with the same name).
78 var fieldKey = String.Concat(keyProductVersion, ".Major"); 77 var fieldKey = String.Concat(keyProductVersion, ".Major");
@@ -105,7 +104,7 @@ namespace WixToolset.Core.Bind
105 { 104 {
106 try 105 try
107 { 106 {
108 var value = ResolveDelayedVariables(delayedField.Symbol.SourceLineNumbers, delayedField.Field.AsString(), this.VariableCache); 107 var value = this.ResolveDelayedVariables(delayedField.Symbol.SourceLineNumbers, delayedField.Field.AsString());
109 delayedField.Field.Set(value); 108 delayedField.Field.Set(value);
110 } 109 }
111 catch (WixException we) 110 catch (WixException we)
@@ -115,7 +114,7 @@ namespace WixToolset.Core.Bind
115 } 114 }
116 } 115 }
117 116
118 private static string ResolveDelayedVariables(SourceLineNumber sourceLineNumbers, string value, IDictionary<string, string> resolutionData) 117 private string ResolveDelayedVariables(SourceLineNumber sourceLineNumbers, string value)
119 { 118 {
120 var start = 0; 119 var start = 0;
121 120
@@ -125,7 +124,7 @@ namespace WixToolset.Core.Bind
125 { 124 {
126 var key = String.Concat(parsed.Name, ".", parsed.Scope); 125 var key = String.Concat(parsed.Name, ".", parsed.Scope);
127 126
128 if (!resolutionData.TryGetValue(key, out var resolvedValue)) 127 if (!this.VariableCache.TryGetValue(key, out var resolvedValue))
129 { 128 {
130 resolvedValue = parsed.DefaultValue; 129 resolvedValue = parsed.DefaultValue;
131 } 130 }
@@ -149,7 +148,7 @@ namespace WixToolset.Core.Bind
149 } 148 }
150 else 149 else
151 { 150 {
152 throw new WixException(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value)); 151 this.Messaging.Write(ErrorMessages.UnresolvedBindReference(sourceLineNumbers, value));
153 } 152 }
154 } 153 }
155 else 154 else