diff options
author | Rob Mensching <rob@firegiant.com> | 2021-02-23 09:23:01 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2021-02-27 07:47:08 -0800 |
commit | 52f4ea0a7d85c2c83c7d6c771a3bdc6dd74fdbc0 (patch) | |
tree | 20b58ee7e2b7c724c477ef6e95a8ed4ebbfa8a92 | |
parent | da9f4cf9627ca628f87f0938414795258190439b (diff) | |
download | wix-52f4ea0a7d85c2c83c7d6c771a3bdc6dd74fdbc0.tar.gz wix-52f4ea0a7d85c2c83c7d6c771a3bdc6dd74fdbc0.tar.bz2 wix-52f4ea0a7d85c2c83c7d6c771a3bdc6dd74fdbc0.zip |
Integrate the latest Extensibility changes
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 | } |