diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
| commit | dc9f4c329e6f55ce7595970463e0caf148096f4b (patch) | |
| tree | 86155ac36c76acda0a4b1673c77f54a9780c6885 /src/WixToolset.Core/Compiler.cs | |
| parent | 155a6e96346e0cb3d9ab6f5372fa29b46ebaee89 (diff) | |
| download | wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.gz wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.bz2 wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.zip | |
Support wixout and extract Resolve and Layout from Binder
Diffstat (limited to 'src/WixToolset.Core/Compiler.cs')
| -rw-r--r-- | src/WixToolset.Core/Compiler.cs | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 74ca86ac..2dd7da4d 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs | |||
| @@ -154,24 +154,40 @@ namespace WixToolset.Core | |||
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | // Resolve any Component Id placeholders compiled into the intermediate. | 156 | // Resolve any Component Id placeholders compiled into the intermediate. |
| 157 | if (0 < this.componentIdPlaceholdersResolver.VariableCount) | 157 | this.ResolveComponentIdPlaceholders(target); |
| 158 | } | ||
| 159 | finally | ||
| 160 | { | ||
| 161 | foreach (var extension in context.Extensions) | ||
| 158 | { | 162 | { |
| 159 | foreach (var section in target.Sections) | 163 | extension.PostCompile(target); |
| 164 | } | ||
| 165 | |||
| 166 | this.Core = null; | ||
| 167 | } | ||
| 168 | |||
| 169 | return this.Context.Messaging.EncounteredError ? null : target; | ||
| 170 | } | ||
| 171 | |||
| 172 | private void ResolveComponentIdPlaceholders(Intermediate target) | ||
| 173 | { | ||
| 174 | if (0 < this.componentIdPlaceholdersResolver.VariableCount) | ||
| 175 | { | ||
| 176 | foreach (var section in target.Sections) | ||
| 177 | { | ||
| 178 | foreach (var tuple in section.Tuples) | ||
| 160 | { | 179 | { |
| 161 | foreach (var tuple in section.Tuples) | 180 | foreach (var field in tuple.Fields) |
| 162 | { | 181 | { |
| 163 | foreach (var field in tuple.Fields) | 182 | if (field?.Type == IntermediateFieldType.String) |
| 164 | { | 183 | { |
| 165 | if (field != null && field.Type == IntermediateFieldType.String) | 184 | var data = field.AsString(); |
| 185 | if (!String.IsNullOrEmpty(data)) | ||
| 166 | { | 186 | { |
| 167 | var data = field.AsString(); | 187 | var resolved = this.componentIdPlaceholdersResolver.ResolveVariables(tuple.SourceLineNumbers, data, false, false); |
| 168 | if (!String.IsNullOrEmpty(data)) | 188 | if (resolved.UpdatedValue) |
| 169 | { | 189 | { |
| 170 | var resolved = this.componentIdPlaceholdersResolver.ResolveVariables(tuple.SourceLineNumbers, data, false, false, out var defaultIgnored, out var delayedIgnored); | 190 | field.Set(resolved.Value); |
| 171 | if (data != resolved) | ||
| 172 | { | ||
| 173 | field.Set(resolved); | ||
| 174 | } | ||
| 175 | } | 191 | } |
| 176 | } | 192 | } |
| 177 | } | 193 | } |
| @@ -179,17 +195,6 @@ namespace WixToolset.Core | |||
| 179 | } | 195 | } |
| 180 | } | 196 | } |
| 181 | } | 197 | } |
| 182 | finally | ||
| 183 | { | ||
| 184 | foreach (var extension in context.Extensions) | ||
| 185 | { | ||
| 186 | extension.PostCompile(target); | ||
| 187 | } | ||
| 188 | |||
| 189 | this.Core = null; | ||
| 190 | } | ||
| 191 | |||
| 192 | return this.Context.Messaging.EncounteredError ? null : target; | ||
| 193 | } | 198 | } |
| 194 | 199 | ||
| 195 | /// <summary> | 200 | /// <summary> |
| @@ -2422,7 +2427,7 @@ namespace WixToolset.Core | |||
| 2422 | { | 2427 | { |
| 2423 | if (isGeneratableGuidOk || keyFound && !String.IsNullOrEmpty(keyPath)) | 2428 | if (isGeneratableGuidOk || keyFound && !String.IsNullOrEmpty(keyPath)) |
| 2424 | { | 2429 | { |
| 2425 | this.componentIdPlaceholdersResolver.AddVariable(componentIdPlaceholder, keyPath); | 2430 | this.componentIdPlaceholdersResolver.AddVariable(componentIdPlaceholder, keyPath, false); |
| 2426 | 2431 | ||
| 2427 | id = new Identifier(keyPath, AccessModifier.Private); | 2432 | id = new Identifier(keyPath, AccessModifier.Private); |
| 2428 | } | 2433 | } |
