From 21c430b0d2a46bae326655209fefde13ae17b051 Mon Sep 17 00:00:00 2001 From: Rob Mensching <rob@firegiant.com> Date: Tue, 23 Feb 2021 07:45:42 -0800 Subject: Rename FullyResolved to SymbolsFinalized and TryAddSymbolXxx to TryProcessSymbol Plus fix up more documentation --- .../BaseBurnBackendExtension.cs | 63 ++++++++-------------- .../BaseWindowsInstallerBackendBinderExtension.cs | 10 ++-- .../IBurnBackendExtension.cs | 45 ++++++++-------- .../IWindowsInstallerBackendBinderExtension.cs | 22 ++++---- 4 files changed, 61 insertions(+), 79 deletions(-) (limited to 'src') diff --git a/src/WixToolset.Extensibility/BaseBurnBackendExtension.cs b/src/WixToolset.Extensibility/BaseBurnBackendExtension.cs index 0575d725..488f882a 100644 --- a/src/WixToolset.Extensibility/BaseBurnBackendExtension.cs +++ b/src/WixToolset.Extensibility/BaseBurnBackendExtension.cs @@ -2,6 +2,7 @@ namespace WixToolset.Extensibility { + using System; using System.Collections.Generic; using System.Linq; using WixToolset.Data; @@ -35,24 +36,8 @@ namespace WixToolset.Extensibility protected virtual IEnumerable<IntermediateSymbolDefinition> SymbolDefinitions => Enumerable.Empty<IntermediateSymbolDefinition>(); /// <summary> - /// Called after all output changes occur and right before the output is bound into its final format. + /// See <see cref="IBurnBackendExtension.PreBackendBind(IBindContext)"/> /// </summary> - public virtual void BundleFinalize() - { - } - - /// <summary> - /// Called after output is bound into its final format. - /// </summary> - /// <param name="result"></param> - public virtual void PostBackendBind(IBindResult result) - { - } - - /// <summary> - /// Called before binding occurs. - /// </summary> - /// <param name="context"></param> public virtual void PreBackendBind(IBindContext context) { this.Context = context; @@ -61,44 +46,32 @@ namespace WixToolset.Extensibility } /// <summary> - /// + /// See <see cref="IBurnBackendExtension.ResolveRelatedFile(String, String, String, SourceLineNumber)"/> /// </summary> - /// <param name="source"></param> - /// <param name="relatedSource"></param> - /// <param name="type"></param> - /// <param name="sourceLineNumbers"></param> - /// <param name="bindStage"></param> - /// <returns></returns> - public virtual IResolveFileResult ResolveRelatedFile(string source, string relatedSource, string type, SourceLineNumber sourceLineNumbers, BindStage bindStage) + public virtual IResolveFileResult ResolveRelatedFile(string source, string relatedSource, string type, SourceLineNumber sourceLineNumbers) { return null; } /// <summary> - /// + /// See <see cref="IBurnBackendExtension.SymbolsFinalized(IntermediateSection)"/> + /// </summary> + public virtual void SymbolsFinalized(IntermediateSection section) + { + } + + /// <summary> + /// See <see cref="IBurnBackendExtension.ResolveUrl(String, String, String, String, String)"/> /// </summary> - /// <param name="url"></param> - /// <param name="fallbackUrl"></param> - /// <param name="packageId"></param> - /// <param name="payloadId"></param> - /// <param name="fileName"></param> - /// <returns></returns> public virtual string ResolveUrl(string url, string fallbackUrl, string packageId, string payloadId, string fileName) { return null; } /// <summary> - /// Called for each extension symbol that hasn't been handled yet. - /// Use IBurnBackendHelper to add data to the appropriate data manifest. + /// See <see cref="IBurnBackendExtension.TryProcessSymbol(IntermediateSection, IntermediateSymbol)"/> /// </summary> - /// <param name="section">The linked section.</param> - /// <param name="symbol">The current symbol.</param> - /// <returns> - /// True if the extension handled the symbol, false otherwise. - /// The Burn backend will warn on all unhandled symbols. - /// </returns> - public virtual bool TryAddSymbolToDataManifest(IntermediateSection section, IntermediateSymbol symbol) + public virtual bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol) { if (this.SymbolDefinitions.Any(t => t == symbol.Definition) && symbol.Definition.HasTag(BurnConstants.BootstrapperApplicationDataSymbolDefinitionTag)) @@ -109,5 +82,13 @@ namespace WixToolset.Extensibility return false; } + + /// <summary> + /// See <see cref="IBurnBackendExtension.PostBackendBind(IBindResult)"/> + /// </summary> + /// <param name="result"></param> + public virtual void PostBackendBind(IBindResult result) + { + } } } diff --git a/src/WixToolset.Extensibility/BaseWindowsInstallerBackendBinderExtension.cs b/src/WixToolset.Extensibility/BaseWindowsInstallerBackendBinderExtension.cs index c0086aed..47777fae 100644 --- a/src/WixToolset.Extensibility/BaseWindowsInstallerBackendBinderExtension.cs +++ b/src/WixToolset.Extensibility/BaseWindowsInstallerBackendBinderExtension.cs @@ -53,9 +53,9 @@ namespace WixToolset.Extensibility } /// <summary> - /// See <see cref="IWindowsInstallerBackendBinderExtension.FullyResolved(IntermediateSection)"/> + /// See <see cref="IWindowsInstallerBackendBinderExtension.SymbolsFinalized(IntermediateSection)"/> /// </summary> - public virtual void FullyResolved(IntermediateSection section) + public virtual void SymbolsFinalized(IntermediateSection section) { } @@ -70,13 +70,13 @@ namespace WixToolset.Extensibility public virtual string ResolveMedia(MediaSymbol mediaRow, string mediaLayoutDirectory, string layoutDirectory) => null; /// <summary> - /// See <see cref="IWindowsInstallerBackendBinderExtension.PreBackendBind(IBindContext)"/> + /// See <see cref="IWindowsInstallerBackendBinderExtension.TryProcessSymbol(IntermediateSection, IntermediateSymbol, WindowsInstallerData, TableDefinitionCollection)"/> /// </summary> - public virtual bool TryAddSymbolToOutput(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinitionCollection tableDefinitions) + public virtual bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData data, TableDefinitionCollection tableDefinitions) { if (this.TableDefinitions.Any(t => t.SymbolDefinition == symbol.Definition)) { - return this.BackendHelper.TryAddSymbolToOutputMatchingTableDefinitions(section, symbol, output, tableDefinitions); + return this.BackendHelper.TryAddSymbolToOutputMatchingTableDefinitions(section, symbol, data, tableDefinitions); } return false; diff --git a/src/WixToolset.Extensibility/IBurnBackendExtension.cs b/src/WixToolset.Extensibility/IBurnBackendExtension.cs index 769c2457..07f5cd1b 100644 --- a/src/WixToolset.Extensibility/IBurnBackendExtension.cs +++ b/src/WixToolset.Extensibility/IBurnBackendExtension.cs @@ -16,30 +16,36 @@ namespace WixToolset.Extensibility void PreBackendBind(IBindContext context); /// <summary> - /// + /// Called to find a file related to another source in the authoring. For example, most often used + /// to find cabinets and uncompressed files for an MSI package. /// </summary> - /// <param name="source"></param> - /// <param name="relatedSource"></param> - /// <param name="type"></param> - /// <param name="sourceLineNumbers"></param> - /// <param name="bindStage"></param> - /// <returns></returns> - IResolveFileResult ResolveRelatedFile(string source, string relatedSource, string type, SourceLineNumber sourceLineNumbers, BindStage bindStage); + /// <param name="source">Path to the source package.</param> + /// <param name="relatedSource">Expected path to the related file.</param> + /// <param name="type">Type of related file, such as "File" or "Cabinet"</param> + /// <param name="sourceLineNumbers">Source line number of source package.</param> + /// <returns><c>IResolveFileResult</c> if the related file was found, or null for default handling.</returns> + IResolveFileResult ResolveRelatedFile(string source, string relatedSource, string type, SourceLineNumber sourceLineNumbers); /// <summary> - /// + /// Called right before the output is bound into its final format. /// </summary> - /// <param name="url"></param> - /// <param name="fallbackUrl"></param> - /// <param name="packageId"></param> - /// <param name="payloadId"></param> - /// <param name="fileName"></param> - /// <returns></returns> + /// <param name="section">The finalized intermediate section.</param> + void SymbolsFinalized(IntermediateSection section); + + /// <summary> + /// Called to customize the DownloadUrl provided in source cde. + /// </summary> + /// <param name="url">The value from the source code. May not actually be a URL.</param> + /// <param name="fallbackUrl">The default URL if the extension does not return a value.</param> + /// <param name="packageId">Identifier of the package.</param> + /// <param name="payloadId">Identifier of the payload.</param> + /// <param name="fileName">Filename of the payload.</param> + /// <returns>Url to override, or null to use default value.</returns> string ResolveUrl(string url, string fallbackUrl, string packageId, string payloadId, string fileName); /// <summary> /// Called for each extension symbol that hasn't been handled yet. - /// Use IBurnBackendHelper to add data to the appropriate data manifest. + /// Use IBurnBackendHelper to add data. /// </summary> /// <param name="section">The linked section.</param> /// <param name="symbol">The current symbol.</param> @@ -47,12 +53,7 @@ namespace WixToolset.Extensibility /// True if the extension handled the symbol, false otherwise. /// The Burn backend will warn on all unhandled symbols. /// </returns> - bool TryAddSymbolToDataManifest(IntermediateSection section, IntermediateSymbol symbol); - - /// <summary> - /// Called after all output changes occur and right before the output is bound into its final format. - /// </summary> - void BundleFinalize(); + bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol); /// <summary> /// Called after output is bound into its final format. diff --git a/src/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs b/src/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs index b913dadc..12a38b9a 100644 --- a/src/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs +++ b/src/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs @@ -24,10 +24,10 @@ namespace WixToolset.Extensibility void PreBackendBind(IBindContext context); /// <summary> - /// + /// Extension can process the intermediate before the Windows Installer data is created. /// </summary> - /// <param name="section">The resolved intermedate section.</param> - void FullyResolved(IntermediateSection section); + /// <param name="section">The finalized intermediate section.</param> + void SymbolsFinalized(IntermediateSection section); /// <summary> /// Finds an existing cabinet that contains the provided files. @@ -41,20 +41,20 @@ namespace WixToolset.Extensibility /// Override layout location for a media. /// </summary> /// <param name="mediaSymbol">Media symbol.</param> - /// <param name="mediaLayoutDirectory">Default media layout directory.</param> - /// <param name="layoutDirectory">Default layout directory.</param> + /// <param name="mediaLayoutDirectory">Default media specific layout directory.</param> + /// <param name="layoutDirectory">Default overall layout directory.</param> /// <returns>Layout location or null to use the default processing.</returns> string ResolveMedia(MediaSymbol mediaSymbol, string mediaLayoutDirectory, string layoutDirectory); /// <summary> - /// + /// Called for each extension symbol that hasn't been handled yet. /// </summary> - /// <param name="section"></param> - /// <param name="symbol"></param> - /// <param name="output">Windows Installer data </param> + /// <param name="section">The linked section.</param> + /// <param name="symbol">The current symbol.</param> + /// <param name="data">Windows Installer data </param> /// <param name="tableDefinitions">Collection of table definitions available for the output.</param> - /// <returns>True if the symbol was added to the output, or false if not.</returns> - bool TryAddSymbolToOutput(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinitionCollection tableDefinitions); + /// <returns>True if the symbol was handled, or false if not.</returns> + bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData data, TableDefinitionCollection tableDefinitions); /// <summary> /// Called after all output changes occur and right before the output is bound into its final format. -- cgit v1.2.3-55-g6feb