aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2019-01-01 00:26:30 -0800
committerRob Mensching <rob@robmensching.com>2019-01-01 09:58:27 -0800
commit41622a07f82c57cf3d80393b0b6914f5ccb76e33 (patch)
tree8b42a4903f4a98161b44049dd7f73721de6011b0 /src/WixToolset.Core
parente8cb78045d7d03b5014e1e6d781b71165db9b17d (diff)
downloadwix-41622a07f82c57cf3d80393b0b6914f5ccb76e33.tar.gz
wix-41622a07f82c57cf3d80393b0b6914f5ccb76e33.tar.bz2
wix-41622a07f82c57cf3d80393b0b6914f5ccb76e33.zip
Load .wixlib intermediates with single creator
Using a single creator ensures definitions are shared and consistent across the entire build.
Diffstat (limited to 'src/WixToolset.Core')
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs31
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs7
2 files changed, 17 insertions, 21 deletions
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 87a3cd30..f754c876 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -331,27 +331,20 @@ namespace WixToolset.Core.CommandLine
331 331
332 private IEnumerable<Intermediate> LoadLibraries(IEnumerable<string> libraryFiles, ITupleDefinitionCreator creator) 332 private IEnumerable<Intermediate> LoadLibraries(IEnumerable<string> libraryFiles, ITupleDefinitionCreator creator)
333 { 333 {
334 var libraries = new List<Intermediate>(); 334 try
335
336 foreach (var libraryFile in libraryFiles)
337 { 335 {
338 try 336 return Intermediate.Load(libraryFiles, creator);
339 { 337 }
340 var library = Intermediate.Load(libraryFile, creator); 338 catch (WixCorruptFileException e)
341 339 {
342 libraries.Add(library); 340 this.Messaging.Write(e.Error);
343 } 341 }
344 catch (WixCorruptFileException e) 342 catch (WixUnexpectedFileFormatException e)
345 { 343 {
346 this.Messaging.Write(e.Error); 344 this.Messaging.Write(e.Error);
347 }
348 catch (WixUnexpectedFileFormatException e)
349 {
350 this.Messaging.Write(e.Error);
351 }
352 } 345 }
353 346
354 return libraries; 347 return Array.Empty<Intermediate>();
355 } 348 }
356 349
357 private IEnumerable<Localization> LoadLocalizationFiles(IEnumerable<string> locFiles, IDictionary<string, string> preprocessorVariables) 350 private IEnumerable<Localization> LoadLocalizationFiles(IEnumerable<string> locFiles, IDictionary<string, string> preprocessorVariables)
@@ -437,7 +430,7 @@ namespace WixToolset.Core.CommandLine
437 public string OutputsFile { get; private set; } 430 public string OutputsFile { get; private set; }
438 431
439 public string BuiltOutputsFile { get; private set; } 432 public string BuiltOutputsFile { get; private set; }
440 433
441 public CommandLine(IMessaging messaging) 434 public CommandLine(IMessaging messaging)
442 { 435 {
443 this.Messaging = messaging; 436 this.Messaging = messaging;
diff --git a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
index b442da2b..e223e3a4 100644
--- a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs
@@ -1,4 +1,4 @@
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. 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 2
3namespace WixToolset.Core.ExtensibilityServices 3namespace WixToolset.Core.ExtensibilityServices
4{ 4{
@@ -23,7 +23,10 @@ namespace WixToolset.Core.ExtensibilityServices
23 23
24 public void AddCustomTupleDefinition(IntermediateTupleDefinition definition) 24 public void AddCustomTupleDefinition(IntermediateTupleDefinition definition)
25 { 25 {
26 this.CustomDefinitionByName.Add(definition.Name, definition); 26 if (!this.CustomDefinitionByName.TryGetValue(definition.Name, out var existing) || definition.Revision > existing.Revision)
27 {
28 this.CustomDefinitionByName[definition.Name] = definition;
29 }
27 } 30 }
28 31
29 public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) 32 public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition)