aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs21
-rw-r--r--src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs6
-rw-r--r--src/WixToolset.Core.Burn/BundleBackend.cs2
-rw-r--r--src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs4
-rw-r--r--src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs12
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs2
-rw-r--r--src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs4
7 files changed, 28 insertions, 23 deletions
diff --git a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
index dea1f47d..93620e1b 100644
--- a/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+++ b/src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
@@ -23,7 +23,7 @@ namespace WixToolset.Core.Burn
23 /// </summary> 23 /// </summary>
24 internal class BindBundleCommand 24 internal class BindBundleCommand
25 { 25 {
26 public BindBundleCommand(IBindContext context, IEnumerable<IBurnBackendExtension> backedExtensions) 26 public BindBundleCommand(IBindContext context, IEnumerable<IBurnBackendBinderExtension> backedExtensions)
27 { 27 {
28 this.ServiceProvider = context.ServiceProvider; 28 this.ServiceProvider = context.ServiceProvider;
29 29
@@ -58,7 +58,7 @@ namespace WixToolset.Core.Burn
58 58
59 public IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; } 59 public IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; }
60 60
61 private IEnumerable<IBurnBackendExtension> BackendExtensions { get; } 61 private IEnumerable<IBurnBackendBinderExtension> BackendExtensions { get; }
62 62
63 private Intermediate Output { get; } 63 private Intermediate Output { get; }
64 64
@@ -380,16 +380,21 @@ namespace WixToolset.Core.Burn
380 // Update the bundle per-machine/per-user scope based on the chained packages. 380 // Update the bundle per-machine/per-user scope based on the chained packages.
381 this.ResolveBundleInstallScope(section, bundleSymbol, orderedFacades); 381 this.ResolveBundleInstallScope(section, bundleSymbol, orderedFacades);
382 382
383 // Generate data for all manifests. 383 // Give the extension one last hook before generating the output files.
384 foreach (var extension in this.BackendExtensions)
384 { 385 {
385 var command = new GenerateManifestDataFromIRCommand(this.Messaging, section, this.BackendExtensions, this.InternalBurnBackendHelper, extensionSearchSymbolsById); 386 extension.SymbolsFinalized(section);
386 command.Execute();
387 } 387 }
388 388
389 // Give the extension one last hook before generating the output files. 389 if (this.Messaging.EncounteredError)
390 foreach (var extension in this.BackendExtensions)
391 { 390 {
392 extension.BundleFinalize(); 391 return;
392 }
393
394 // Generate data for all manifests.
395 {
396 var command = new GenerateManifestDataFromIRCommand(this.Messaging, section, this.BackendExtensions, this.InternalBurnBackendHelper, extensionSearchSymbolsById);
397 command.Execute();
393 } 398 }
394 399
395 if (this.Messaging.EncounteredError) 400 if (this.Messaging.EncounteredError)
diff --git a/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs b/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
index 93a1a0bc..c51d380c 100644
--- a/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
+++ b/src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
@@ -16,7 +16,7 @@ namespace WixToolset.Core.Burn.Bind
16 16
17 internal class GenerateManifestDataFromIRCommand 17 internal class GenerateManifestDataFromIRCommand
18 { 18 {
19 public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IBurnBackendExtension> backendExtensions, IBurnBackendHelper backendHelper, IDictionary<string, IList<IntermediateSymbol>> extensionSearchSymbolsById) 19 public GenerateManifestDataFromIRCommand(IMessaging messaging, IntermediateSection section, IEnumerable<IBurnBackendBinderExtension> backendExtensions, IBurnBackendHelper backendHelper, IDictionary<string, IList<IntermediateSymbol>> extensionSearchSymbolsById)
20 { 20 {
21 this.Messaging = messaging; 21 this.Messaging = messaging;
22 this.Section = section; 22 this.Section = section;
@@ -25,7 +25,7 @@ namespace WixToolset.Core.Burn.Bind
25 this.ExtensionSearchSymbolsById = extensionSearchSymbolsById; 25 this.ExtensionSearchSymbolsById = extensionSearchSymbolsById;
26 } 26 }
27 27
28 private IEnumerable<IBurnBackendExtension> BackendExtensions { get; } 28 private IEnumerable<IBurnBackendBinderExtension> BackendExtensions { get; }
29 29
30 private IBurnBackendHelper BackendHelper { get; } 30 private IBurnBackendHelper BackendHelper { get; }
31 31
@@ -220,7 +220,7 @@ namespace WixToolset.Core.Burn.Bind
220 { 220 {
221 foreach (var extension in this.BackendExtensions) 221 foreach (var extension in this.BackendExtensions)
222 { 222 {
223 if (extension.TryAddSymbolToDataManifest(this.Section, symbol)) 223 if (extension.TryProcessSymbol(this.Section, symbol))
224 { 224 {
225 return true; 225 return true;
226 } 226 }
diff --git a/src/WixToolset.Core.Burn/BundleBackend.cs b/src/WixToolset.Core.Burn/BundleBackend.cs
index 4ca54fae..60e9ea60 100644
--- a/src/WixToolset.Core.Burn/BundleBackend.cs
+++ b/src/WixToolset.Core.Burn/BundleBackend.cs
@@ -17,7 +17,7 @@ namespace WixToolset.Core.Burn
17 { 17 {
18 var extensionManager = context.ServiceProvider.GetService<IExtensionManager>(); 18 var extensionManager = context.ServiceProvider.GetService<IExtensionManager>();
19 19
20 var backendExtensions = extensionManager.GetServices<IBurnBackendExtension>(); 20 var backendExtensions = extensionManager.GetServices<IBurnBackendBinderExtension>();
21 21
22 foreach (var extension in backendExtensions) 22 foreach (var extension in backendExtensions)
23 { 23 {
diff --git a/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs b/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
index 994e02f8..71bc0229 100644
--- a/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
@@ -18,7 +18,7 @@ namespace WixToolset.Core.Burn.Bundles
18 18
19 internal class CreateBurnManifestCommand 19 internal class CreateBurnManifestCommand
20 { 20 {
21 public CreateBurnManifestCommand(IMessaging messaging, IEnumerable<IBurnBackendExtension> backendExtensions, string executableName, IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable<WixBundleContainerSymbol> containers, WixChainSymbol chainSymbol, IEnumerable<PackageFacade> orderedPackages, IEnumerable<WixBundleRollbackBoundarySymbol> boundaries, IEnumerable<WixBundlePayloadSymbol> uxPayloads, Dictionary<string, WixBundlePayloadSymbol> allPayloadsById, IEnumerable<ISearchFacade> orderedSearches, string intermediateFolder) 21 public CreateBurnManifestCommand(IMessaging messaging, IEnumerable<IBurnBackendBinderExtension> backendExtensions, string executableName, IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable<WixBundleContainerSymbol> containers, WixChainSymbol chainSymbol, IEnumerable<PackageFacade> orderedPackages, IEnumerable<WixBundleRollbackBoundarySymbol> boundaries, IEnumerable<WixBundlePayloadSymbol> uxPayloads, Dictionary<string, WixBundlePayloadSymbol> allPayloadsById, IEnumerable<ISearchFacade> orderedSearches, string intermediateFolder)
22 { 22 {
23 this.Messaging = messaging; 23 this.Messaging = messaging;
24 this.BackendExtensions = backendExtensions; 24 this.BackendExtensions = backendExtensions;
@@ -39,7 +39,7 @@ namespace WixToolset.Core.Burn.Bundles
39 39
40 private IMessaging Messaging { get; } 40 private IMessaging Messaging { get; }
41 41
42 private IEnumerable<IBurnBackendExtension> BackendExtensions { get; } 42 private IEnumerable<IBurnBackendBinderExtension> BackendExtensions { get; }
43 43
44 private string ExecutableName { get; } 44 private string ExecutableName { get; }
45 45
diff --git a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
index e13561bc..017f29bc 100644
--- a/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
+++ b/src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
@@ -23,7 +23,7 @@ namespace WixToolset.Core.Burn.Bundles
23 { 23 {
24 private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'"; 24 private const string PropertySqlFormat = "SELECT `Value` FROM `Property` WHERE `Property` = '{0}'";
25 25
26 public ProcessMsiPackageCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<IBurnBackendExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols) 26 public ProcessMsiPackageCommand(IWixToolsetServiceProvider serviceProvider, IEnumerable<IBurnBackendBinderExtension> backendExtensions, IntermediateSection section, PackageFacade facade, Dictionary<string, WixBundlePayloadSymbol> payloadSymbols)
27 { 27 {
28 this.Messaging = serviceProvider.GetService<IMessaging>(); 28 this.Messaging = serviceProvider.GetService<IMessaging>();
29 this.BackendHelper = serviceProvider.GetService<IBackendHelper>(); 29 this.BackendHelper = serviceProvider.GetService<IBackendHelper>();
@@ -42,7 +42,7 @@ namespace WixToolset.Core.Burn.Bundles
42 42
43 private IPathResolver PathResolver { get; } 43 private IPathResolver PathResolver { get; }
44 44
45 private IEnumerable<IBurnBackendExtension> BackendExtensions { get; } 45 private IEnumerable<IBurnBackendBinderExtension> BackendExtensions { get; }
46 46
47 private Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { get; } 47 private Dictionary<string, WixBundlePayloadSymbol> AuthoredPayloads { get; }
48 48
@@ -395,7 +395,7 @@ namespace WixToolset.Core.Burn.Bundles
395 if (!payloadNames.Contains(cabinetName)) 395 if (!payloadNames.Contains(cabinetName))
396 { 396 {
397 var generatedId = Common.GenerateIdentifier("cab", packagePayload.Id.Id, cabinet); 397 var generatedId = Common.GenerateIdentifier("cab", packagePayload.Id.Id, cabinet);
398 var payloadSourceFile = this.ResolveRelatedFile(packagePayload.SourceFile.Path, packagePayload.UnresolvedSourceFile, cabinet, "Cabinet", this.Facade.PackageSymbol.SourceLineNumbers, BindStage.Normal); 398 var payloadSourceFile = this.ResolveRelatedFile(packagePayload.SourceFile.Path, packagePayload.UnresolvedSourceFile, cabinet, "Cabinet", this.Facade.PackageSymbol.SourceLineNumbers);
399 399
400 this.Section.AddSymbol(new WixBundlePayloadSymbol(this.Facade.PackageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Private, generatedId)) 400 this.Section.AddSymbol(new WixBundlePayloadSymbol(this.Facade.PackageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Private, generatedId))
401 { 401 {
@@ -472,7 +472,7 @@ namespace WixToolset.Core.Burn.Bundles
472 if (!payloadNames.Contains(name)) 472 if (!payloadNames.Contains(name))
473 { 473 {
474 var generatedId = Common.GenerateIdentifier("f", packagePayload.Id.Id, record.GetString(2)); 474 var generatedId = Common.GenerateIdentifier("f", packagePayload.Id.Id, record.GetString(2));
475 var payloadSourceFile = this.ResolveRelatedFile(packagePayload.SourceFile.Path, packagePayload.UnresolvedSourceFile, fileSourcePath, "File", this.Facade.PackageSymbol.SourceLineNumbers, BindStage.Normal); 475 var payloadSourceFile = this.ResolveRelatedFile(packagePayload.SourceFile.Path, packagePayload.UnresolvedSourceFile, fileSourcePath, "File", this.Facade.PackageSymbol.SourceLineNumbers);
476 476
477 this.Section.AddSymbol(new WixBundlePayloadSymbol(this.Facade.PackageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Private, generatedId)) 477 this.Section.AddSymbol(new WixBundlePayloadSymbol(this.Facade.PackageSymbol.SourceLineNumbers, new Identifier(AccessModifier.Private, generatedId))
478 { 478 {
@@ -542,13 +542,13 @@ namespace WixToolset.Core.Burn.Bundles
542 } 542 }
543 } 543 }
544 544
545 private string ResolveRelatedFile(string resolvedSource, string unresolvedSource, string relatedSource, string type, SourceLineNumber sourceLineNumbers, BindStage stage) 545 private string ResolveRelatedFile(string resolvedSource, string unresolvedSource, string relatedSource, string type, SourceLineNumber sourceLineNumbers)
546 { 546 {
547 var checkedPaths = new List<string>(); 547 var checkedPaths = new List<string>();
548 548
549 foreach (var extension in this.BackendExtensions) 549 foreach (var extension in this.BackendExtensions)
550 { 550 {
551 var resolved = extension.ResolveRelatedFile(unresolvedSource, relatedSource, type, sourceLineNumbers, stage); 551 var resolved = extension.ResolveRelatedFile(unresolvedSource, relatedSource, type, sourceLineNumbers);
552 552
553 if (resolved?.CheckedPaths != null) 553 if (resolved?.CheckedPaths != null)
554 { 554 {
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
index e1e40f4a..b52ff434 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
@@ -1153,7 +1153,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
1153 { 1153 {
1154 foreach (var extension in this.BackendExtensions) 1154 foreach (var extension in this.BackendExtensions)
1155 { 1155 {
1156 if (extension.TryAddSymbolToOutput(this.Section, symbol, this.Output, this.TableDefinitions)) 1156 if (extension.TryProcessSymbol(this.Section, symbol, this.Output, this.TableDefinitions))
1157 { 1157 {
1158 return true; 1158 return true;
1159 } 1159 }
diff --git a/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs b/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs
index 2c108d96..87b7855c 100644
--- a/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs
+++ b/src/test/Example.Extension/ExampleWindowsInstallerBackendExtension.cs
@@ -11,7 +11,7 @@ namespace Example.Extension
11 { 11 {
12 public override IEnumerable<TableDefinition> TableDefinitions => ExampleTableDefinitions.All; 12 public override IEnumerable<TableDefinition> TableDefinitions => ExampleTableDefinitions.All;
13 13
14 public override bool TryAddSymbolToOutput(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinitionCollection tableDefinitions) 14 public override bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinitionCollection tableDefinitions)
15 { 15 {
16 if (ExampleSymbolDefinitions.TryGetSymbolType(symbol.Definition.Name, out var symbolType)) 16 if (ExampleSymbolDefinitions.TryGetSymbolType(symbol.Definition.Name, out var symbolType))
17 { 17 {
@@ -27,7 +27,7 @@ namespace Example.Extension
27 } 27 }
28 } 28 }
29 29
30 return base.TryAddSymbolToOutput(section, symbol, output, tableDefinitions); 30 return base.TryProcessSymbol(section, symbol, output, tableDefinitions);
31 } 31 }
32 } 32 }
33} 33}