From f87ec715a88a78a6d7788503da2ebec786544e75 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Nov 2017 10:59:13 -0700 Subject: Update to WiX Intermediate Representation --- .../BinderExtensionBase.cs | 2 +- src/WixToolset.Extensibility/CompilerExtension.cs | 5 +++-- .../DecompilerExtension.cs | 2 ++ src/WixToolset.Extensibility/ExtensionData.cs | 2 ++ src/WixToolset.Extensibility/ExtensionHelper.cs | 2 ++ src/WixToolset.Extensibility/IBackend.cs | 2 +- .../IBindVariableResolver.cs | 4 ++-- src/WixToolset.Extensibility/IBinderCore.cs | 2 +- src/WixToolset.Extensibility/IBinderExtension.cs | 2 +- .../IBinderFileManagerCore.cs | 4 ++-- src/WixToolset.Extensibility/ICompileContext.cs | 26 ++++++++++++++++++++++ src/WixToolset.Extensibility/ICompilerCore.cs | 2 +- src/WixToolset.Extensibility/ICompilerExtension.cs | 9 +++++--- src/WixToolset.Extensibility/IDecompilerCore.cs | 8 +++---- .../IDecompilerExtension.cs | 10 ++++----- src/WixToolset.Extensibility/IDelayedField.cs | 4 ++-- src/WixToolset.Extensibility/IExtensionData.cs | 16 +++++++------ .../IInspectorExtension.cs | 4 ++-- .../ILibrarianExtension.cs | 2 +- src/WixToolset.Extensibility/ILibraryContext.cs | 11 ++++++++- src/WixToolset.Extensibility/ILinkerExtension.cs | 23 +++++++++++++++++++ src/WixToolset.Extensibility/IUnbinderExtension.cs | 2 +- .../IWindowsInstallerBackendExtension.cs | 4 ++-- src/WixToolset.Extensibility/InspectorExtension.cs | 2 ++ .../Services/IBindContext.cs | 2 +- .../Services/ILinkContext.cs | 21 +++++++++++++++++ 26 files changed, 133 insertions(+), 40 deletions(-) create mode 100644 src/WixToolset.Extensibility/ICompileContext.cs create mode 100644 src/WixToolset.Extensibility/ILinkerExtension.cs create mode 100644 src/WixToolset.Extensibility/Services/ILinkContext.cs (limited to 'src/WixToolset.Extensibility') diff --git a/src/WixToolset.Extensibility/BinderExtensionBase.cs b/src/WixToolset.Extensibility/BinderExtensionBase.cs index a0b34a31..f3f3d63b 100644 --- a/src/WixToolset.Extensibility/BinderExtensionBase.cs +++ b/src/WixToolset.Extensibility/BinderExtensionBase.cs @@ -21,7 +21,7 @@ namespace WixToolset.Extensibility /// /// Called after variable resolution occurs. /// - public virtual void AfterResolvedFields(Output output) + public virtual void AfterResolvedFields(Intermediate intermediate) { } diff --git a/src/WixToolset.Extensibility/CompilerExtension.cs b/src/WixToolset.Extensibility/CompilerExtension.cs index 522ffcf8..d0bb4a10 100644 --- a/src/WixToolset.Extensibility/CompilerExtension.cs +++ b/src/WixToolset.Extensibility/CompilerExtension.cs @@ -4,6 +4,7 @@ namespace WixToolset.Extensibility { using System.Collections.Generic; using System.Xml.Linq; + using WixToolset.Data; /// /// Base class for creating a compiler extension. @@ -25,7 +26,7 @@ namespace WixToolset.Extensibility /// /// Called at the beginning of the compilation of a source file. /// - public virtual void Initialize() + public virtual void PreCompile(ICompileContext context) { } @@ -67,7 +68,7 @@ namespace WixToolset.Extensibility /// /// Called at the end of the compilation of a source file. /// - public virtual void Finish() + public virtual void PostCompile(Intermediate intermediate) { } } diff --git a/src/WixToolset.Extensibility/DecompilerExtension.cs b/src/WixToolset.Extensibility/DecompilerExtension.cs index 00277639..b492cf3a 100644 --- a/src/WixToolset.Extensibility/DecompilerExtension.cs +++ b/src/WixToolset.Extensibility/DecompilerExtension.cs @@ -4,6 +4,7 @@ namespace WixToolset.Extensibility { using WixToolset.Data; +#if BRING_BACK_LATER /// /// Base class for creating a decompiler extension. /// @@ -56,4 +57,5 @@ namespace WixToolset.Extensibility { } } +#endif } diff --git a/src/WixToolset.Extensibility/ExtensionData.cs b/src/WixToolset.Extensibility/ExtensionData.cs index 4cf262b9..0cd0c420 100644 --- a/src/WixToolset.Extensibility/ExtensionData.cs +++ b/src/WixToolset.Extensibility/ExtensionData.cs @@ -8,6 +8,7 @@ namespace WixToolset.Extensibility using System.Xml; using WixToolset.Data; +#if BRING_BACK_LATER public abstract class ExtensionData : IExtensionData { /// @@ -72,4 +73,5 @@ namespace WixToolset.Extensibility } } } +#endif } diff --git a/src/WixToolset.Extensibility/ExtensionHelper.cs b/src/WixToolset.Extensibility/ExtensionHelper.cs index 9c1ca950..6b938a65 100644 --- a/src/WixToolset.Extensibility/ExtensionHelper.cs +++ b/src/WixToolset.Extensibility/ExtensionHelper.cs @@ -10,6 +10,7 @@ namespace WixToolset.Extensibility using WixToolset.Data; using WixToolset.Extensibility; +#if BRING_BACK_LATER /// /// The main class for a WiX extension. /// @@ -50,4 +51,5 @@ namespace WixToolset.Extensibility } } } +#endif } diff --git a/src/WixToolset.Extensibility/IBackend.cs b/src/WixToolset.Extensibility/IBackend.cs index e38de544..9b950364 100644 --- a/src/WixToolset.Extensibility/IBackend.cs +++ b/src/WixToolset.Extensibility/IBackend.cs @@ -10,7 +10,7 @@ namespace WixToolset.Extensibility { BindResult Bind(IBindContext context); - Output Unbind(IUnbindContext context); + Intermediate Unbind(IUnbindContext context); bool Inscribe(IInscribeContext context); } diff --git a/src/WixToolset.Extensibility/IBindVariableResolver.cs b/src/WixToolset.Extensibility/IBindVariableResolver.cs index 4c2c3003..f584f327 100644 --- a/src/WixToolset.Extensibility/IBindVariableResolver.cs +++ b/src/WixToolset.Extensibility/IBindVariableResolver.cs @@ -3,7 +3,7 @@ namespace WixToolset.Extensibility { using WixToolset.Data; - using WixToolset.Data.Rows; + using WixToolset.Data.Tuples; public interface IBindVariableResolver { @@ -11,7 +11,7 @@ namespace WixToolset.Extensibility void AddVariable(string name, string value); - void AddVariable(WixVariableRow wixVariableRow); + void AddVariable(WixVariableTuple wixVariableRow); string ResolveVariables(SourceLineNumber sourceLineNumbers, string value, bool localizationOnly); diff --git a/src/WixToolset.Extensibility/IBinderCore.cs b/src/WixToolset.Extensibility/IBinderCore.cs index a4044c11..dd3fa3fe 100644 --- a/src/WixToolset.Extensibility/IBinderCore.cs +++ b/src/WixToolset.Extensibility/IBinderCore.cs @@ -22,7 +22,7 @@ namespace WixToolset.Extensibility /// Gets the table definitions used by the Binder. /// /// Table definitions used by the binder. - TableDefinitionCollection TableDefinitions { get; } + //TableDefinitionCollection TableDefinitions { get; } /// /// Generate an identifier by hashing data from the row. diff --git a/src/WixToolset.Extensibility/IBinderExtension.cs b/src/WixToolset.Extensibility/IBinderExtension.cs index 9673d60e..0e9df10b 100644 --- a/src/WixToolset.Extensibility/IBinderExtension.cs +++ b/src/WixToolset.Extensibility/IBinderExtension.cs @@ -19,7 +19,7 @@ namespace WixToolset.Extensibility /// /// Called after variable resolution occurs. /// - void AfterResolvedFields(Output output); + void AfterResolvedFields(Intermediate intermediate); string ResolveFile(string source, string type, SourceLineNumber sourceLineNumbers, BindStage bindStage); diff --git a/src/WixToolset.Extensibility/IBinderFileManagerCore.cs b/src/WixToolset.Extensibility/IBinderFileManagerCore.cs index c6d46e11..b73acb6b 100644 --- a/src/WixToolset.Extensibility/IBinderFileManagerCore.cs +++ b/src/WixToolset.Extensibility/IBinderFileManagerCore.cs @@ -18,13 +18,13 @@ namespace WixToolset.Extensibility /// Gets or sets the active subStorage used for binding. /// /// The subStorage object. - SubStorage ActiveSubStorage { get; } + //SubStorage ActiveSubStorage { get; } /// /// Gets or sets the output object used for binding. /// /// The output object. - Output Output { get; } + Intermediate Intermediate { get; } /// /// Gets or sets the path to the temp files location. diff --git a/src/WixToolset.Extensibility/ICompileContext.cs b/src/WixToolset.Extensibility/ICompileContext.cs new file mode 100644 index 00000000..d48e9539 --- /dev/null +++ b/src/WixToolset.Extensibility/ICompileContext.cs @@ -0,0 +1,26 @@ +// 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. + +namespace WixToolset.Extensibility +{ + using System; + using System.Collections.Generic; + using System.Xml.Linq; + using WixToolset.Data; + + public interface ICompileContext + { + IServiceProvider ServiceProvider { get; } + + Messaging Messaging { get; set; } + + string CompilationId { get; set; } + + IEnumerable Extensions { get; set; } + + string OutputPath { get; set; } + + Platform Platform { get; set; } + + XDocument Source { get; set; } + } +} diff --git a/src/WixToolset.Extensibility/ICompilerCore.cs b/src/WixToolset.Extensibility/ICompilerCore.cs index b2ad6abd..d71f9cbe 100644 --- a/src/WixToolset.Extensibility/ICompilerCore.cs +++ b/src/WixToolset.Extensibility/ICompilerCore.cs @@ -62,7 +62,7 @@ namespace WixToolset.Extensibility /// Name of table to create row in. /// Optional identifier for the row. /// New row. - Row CreateRow(SourceLineNumber sourceLineNumbers, string tableName, Identifier identifier = null); + IntermediateTuple CreateRow(SourceLineNumber sourceLineNumbers, string tableName, Identifier identifier = null); /// /// Creates directories using the inline directory syntax. diff --git a/src/WixToolset.Extensibility/ICompilerExtension.cs b/src/WixToolset.Extensibility/ICompilerExtension.cs index edd7aa15..1746a571 100644 --- a/src/WixToolset.Extensibility/ICompilerExtension.cs +++ b/src/WixToolset.Extensibility/ICompilerExtension.cs @@ -4,18 +4,21 @@ namespace WixToolset.Extensibility { using System.Collections.Generic; using System.Xml.Linq; + using WixToolset.Data; + using WixToolset.Extensibility.Services; /// /// Interface all compiler extensions implement. /// public interface ICompilerExtension { +#if false /// /// Gets or sets the compiler core for the extension. /// /// Compiler core for the extension. ICompilerCore Core { get; set; } - +#endif /// /// Gets the schema namespace for this extension. /// @@ -25,7 +28,7 @@ namespace WixToolset.Extensibility /// /// Called at the beginning of the compilation of a source file. /// - void Initialize(); + void PreCompile(ICompileContext context); /// /// Processes an attribute for the Compiler. @@ -54,6 +57,6 @@ namespace WixToolset.Extensibility /// /// Called at the end of the compilation of a source file. /// - void Finish(); + void PostCompile(Intermediate intermediate); } } diff --git a/src/WixToolset.Extensibility/IDecompilerCore.cs b/src/WixToolset.Extensibility/IDecompilerCore.cs index d18d5170..1c367e0c 100644 --- a/src/WixToolset.Extensibility/IDecompilerCore.cs +++ b/src/WixToolset.Extensibility/IDecompilerCore.cs @@ -47,7 +47,7 @@ namespace WixToolset.Extensibility /// /// The row corresponding to the element. /// The indexed element. - Wix.ISchemaElement GetIndexedElement(Row row); + Wix.ISchemaElement GetIndexedElement(IntermediateTuple row); /// /// Gets the element corresponding to the primary key of the given table. @@ -62,12 +62,12 @@ namespace WixToolset.Extensibility /// /// The row corresponding to the element. /// The element to index. - void IndexElement(Row row, Wix.ISchemaElement element); + void IndexElement(IntermediateTuple row, Wix.ISchemaElement element); - /// + /// /// Indicates the decompiler encountered and unexpected table to decompile. /// /// Unknown decompiled table. - void UnexpectedTable(Table table); + void UnexpectedTable(string table); } } diff --git a/src/WixToolset.Extensibility/IDecompilerExtension.cs b/src/WixToolset.Extensibility/IDecompilerExtension.cs index 6124f348..1574f964 100644 --- a/src/WixToolset.Extensibility/IDecompilerExtension.cs +++ b/src/WixToolset.Extensibility/IDecompilerExtension.cs @@ -19,31 +19,31 @@ namespace WixToolset.Extensibility /// Gets the table definitions this extension decompiles. /// /// Table definitions this extension decompiles. - TableDefinitionCollection TableDefinitions { get; } + //TableDefinitionCollection TableDefinitions { get; } /// /// Gets the library that this decompiler wants removed from the decomipiled output. /// /// The table definitions to use while loading the library. /// The library for this extension or null if there is no library to be removed. - Library GetLibraryToRemove(TableDefinitionCollection tableDefinitions); + //Library GetLibraryToRemove(TableDefinitionCollection tableDefinitions); /// /// Called at the beginning of the decompilation of a database. /// /// The collection of all tables. - void Initialize(TableIndexedCollection tables); + //void Initialize(TableIndexedCollection tables); /// /// Decompiles an extension table. /// /// The table to decompile. - void DecompileTable(Table table); + //void DecompileTable(Table table); /// /// Finalize decompilation. /// /// The collection of all tables. - void Finish(TableIndexedCollection tables); + //void Finish(TableIndexedCollection tables); } } diff --git a/src/WixToolset.Extensibility/IDelayedField.cs b/src/WixToolset.Extensibility/IDelayedField.cs index a6cc7a2e..e06dbe59 100644 --- a/src/WixToolset.Extensibility/IDelayedField.cs +++ b/src/WixToolset.Extensibility/IDelayedField.cs @@ -6,8 +6,8 @@ namespace WixToolset.Extensibility public interface IDelayedField { - Field Field { get; } + IntermediateField Field { get; } - Row Row { get; } + IntermediateTuple Row { get; } } } \ No newline at end of file diff --git a/src/WixToolset.Extensibility/IExtensionData.cs b/src/WixToolset.Extensibility/IExtensionData.cs index 19e23590..f0e339d4 100644 --- a/src/WixToolset.Extensibility/IExtensionData.cs +++ b/src/WixToolset.Extensibility/IExtensionData.cs @@ -9,23 +9,25 @@ namespace WixToolset.Extensibility /// public interface IExtensionData { - /// - /// Gets the table definitions for this extension. - /// - /// Table definisions for this extension or null if there are no table definitions. - TableDefinitionCollection TableDefinitions { get; } - /// /// Gets the optional default culture. /// /// The optional default culture. string DefaultCulture { get; } + /// + /// + /// + /// + /// + /// True + bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition); + /// /// Gets the library associated with this extension. /// /// The table definitions to use while loading the library. /// The library for this extension or null if there is no library. - Library GetLibrary(TableDefinitionCollection tableDefinitions); + Library GetLibrary(ITupleDefinitionCreator tupleDefinitions); } } diff --git a/src/WixToolset.Extensibility/IInspectorExtension.cs b/src/WixToolset.Extensibility/IInspectorExtension.cs index b2a098b7..6c4be1e5 100644 --- a/src/WixToolset.Extensibility/IInspectorExtension.cs +++ b/src/WixToolset.Extensibility/IInspectorExtension.cs @@ -46,7 +46,7 @@ namespace WixToolset.Extensibility /// transforms are the primary transforms you'll typically want to inspect /// and contain your changes to target products. /// - void InspectOutput(Output output); + void InspectOutput(Intermediate output); /// /// Inspect the final output after binding. @@ -54,6 +54,6 @@ namespace WixToolset.Extensibility /// The file path to the final bound output. /// The that contains source line numbers /// for the database and all rows. - void InspectDatabase(string filePath, Pdb pdb); + void InspectDatabase(string filePath, Intermediate pdb); } } diff --git a/src/WixToolset.Extensibility/ILibrarianExtension.cs b/src/WixToolset.Extensibility/ILibrarianExtension.cs index 08d37607..ae4529d8 100644 --- a/src/WixToolset.Extensibility/ILibrarianExtension.cs +++ b/src/WixToolset.Extensibility/ILibrarianExtension.cs @@ -10,6 +10,6 @@ namespace WixToolset.Extensibility string Resolve(SourceLineNumber sourceLineNumber, string table, string path); - void PostCombine(Library library); + void PostCombine(Intermediate library); } } diff --git a/src/WixToolset.Extensibility/ILibraryContext.cs b/src/WixToolset.Extensibility/ILibraryContext.cs index 4e13696b..b8c1887a 100644 --- a/src/WixToolset.Extensibility/ILibraryContext.cs +++ b/src/WixToolset.Extensibility/ILibraryContext.cs @@ -2,18 +2,27 @@ namespace WixToolset.Extensibility { + using System; using System.Collections.Generic; using WixToolset.Data; public interface ILibraryContext { + IServiceProvider ServiceProvider { get; } + + Messaging Messaging { get; set; } + bool BindFiles { get; set; } + IEnumerable BindPaths { get; set; } + IEnumerable Extensions { get; set; } + string LibraryId { get; set; } + IEnumerable Localizations { get; set; } - IEnumerable
Sections { get; set; } + IEnumerable Intermediates { get; set; } IBindVariableResolver WixVariableResolver { get; set; } } diff --git a/src/WixToolset.Extensibility/ILinkerExtension.cs b/src/WixToolset.Extensibility/ILinkerExtension.cs new file mode 100644 index 00000000..cb82720a --- /dev/null +++ b/src/WixToolset.Extensibility/ILinkerExtension.cs @@ -0,0 +1,23 @@ +// 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. + +namespace WixToolset.Extensibility +{ + using WixToolset.Data; + using WixToolset.Extensibility.Services; + + /// + /// Interface all binder extensions implement. + /// + public interface ILinkerExtension + { + /// + /// Called before linking occurs. + /// + void PreLink(ILinkContext context); + + /// + /// Called after all linking occurs. + /// + void PostLink(Intermediate intermediate); + } +} diff --git a/src/WixToolset.Extensibility/IUnbinderExtension.cs b/src/WixToolset.Extensibility/IUnbinderExtension.cs index 88bf20d9..0e9a2504 100644 --- a/src/WixToolset.Extensibility/IUnbinderExtension.cs +++ b/src/WixToolset.Extensibility/IUnbinderExtension.cs @@ -13,6 +13,6 @@ namespace WixToolset.Extensibility /// /// Called during the generation of sectionIds for an admin image. /// - void GenerateSectionIds(Output output); + void GenerateSectionIds(Intermediate output); } } diff --git a/src/WixToolset.Extensibility/IWindowsInstallerBackendExtension.cs b/src/WixToolset.Extensibility/IWindowsInstallerBackendExtension.cs index 3b01cc0d..f6ffc69c 100644 --- a/src/WixToolset.Extensibility/IWindowsInstallerBackendExtension.cs +++ b/src/WixToolset.Extensibility/IWindowsInstallerBackendExtension.cs @@ -3,8 +3,8 @@ namespace WixToolset.Extensibility { using System.Collections.Generic; - using WixToolset.Data.Rows; using WixToolset.Data.Bind; + using WixToolset.Data.Tuples; using WixToolset.Extensibility.Services; /// @@ -19,7 +19,7 @@ namespace WixToolset.Extensibility ResolvedCabinet ResolveCabinet(string cabinetPath, IEnumerable files); - string ResolveMedia(MediaRow mediaRow, string mediaLayoutDirectory, string layoutDirectory); + string ResolveMedia(MediaTuple mediaRow, string mediaLayoutDirectory, string layoutDirectory); /// /// Called after all output changes occur and right before the output is bound into its final format. diff --git a/src/WixToolset.Extensibility/InspectorExtension.cs b/src/WixToolset.Extensibility/InspectorExtension.cs index 82b1ef02..49c3f9de 100644 --- a/src/WixToolset.Extensibility/InspectorExtension.cs +++ b/src/WixToolset.Extensibility/InspectorExtension.cs @@ -6,6 +6,7 @@ namespace WixToolset.Extensibility using System.IO; using WixToolset.Data; +#if BRING_THIS_BACK /// /// Opitonal base class for inspector extensions. /// @@ -58,4 +59,5 @@ namespace WixToolset.Extensibility { } } +#endif } diff --git a/src/WixToolset.Extensibility/Services/IBindContext.cs b/src/WixToolset.Extensibility/Services/IBindContext.cs index ce78709b..6bed0ef6 100644 --- a/src/WixToolset.Extensibility/Services/IBindContext.cs +++ b/src/WixToolset.Extensibility/Services/IBindContext.cs @@ -34,7 +34,7 @@ namespace WixToolset.Extensibility.Services string IntermediateFolder { get; set; } - Output IntermediateRepresentation { get; set; } + Intermediate IntermediateRepresentation { get; set; } string OutputPath { get; set; } diff --git a/src/WixToolset.Extensibility/Services/ILinkContext.cs b/src/WixToolset.Extensibility/Services/ILinkContext.cs new file mode 100644 index 00000000..8c5b3c65 --- /dev/null +++ b/src/WixToolset.Extensibility/Services/ILinkContext.cs @@ -0,0 +1,21 @@ +// 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. + +namespace WixToolset.Extensibility.Services +{ + using System; + using System.Collections.Generic; + using WixToolset.Data; + + public interface ILinkContext + { + IServiceProvider ServiceProvider { get; } + + Messaging Messaging { get; set; } + + IEnumerable Extensions { get; set; } + + OutputType ExpectedOutputType { get; set; } + + IEnumerable Intermediates { get; set; } + } +} -- cgit v1.2.3-55-g6feb