From da9f4cf9627ca628f87f0938414795258190439b Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 23 Feb 2021 08:17:10 -0800 Subject: Implement IBackendHelper passthru in Burn and WindowsInstaller helpers --- .../ExtensibilityServices/BurnBackendHelper.cs | 31 ++++++++++++++++++++++ .../WixToolsetCoreServiceProviderExtensions.cs | 2 +- .../WindowsInstallerBackendHelper.cs | 27 +++++++++++++++++++ .../WixToolsetCoreServiceProviderExtensions.cs | 2 +- 4 files changed, 60 insertions(+), 2 deletions(-) diff --git a/src/WixToolset.Core.Burn/ExtensibilityServices/BurnBackendHelper.cs b/src/WixToolset.Core.Burn/ExtensibilityServices/BurnBackendHelper.cs index 7d3acff9..59efcbc9 100644 --- a/src/WixToolset.Core.Burn/ExtensibilityServices/BurnBackendHelper.cs +++ b/src/WixToolset.Core.Burn/ExtensibilityServices/BurnBackendHelper.cs @@ -9,16 +9,41 @@ namespace WixToolset.Core.Burn.ExtensibilityServices using System.Xml; using WixToolset.Core.Burn.Bundles; using WixToolset.Data; + using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; internal class BurnBackendHelper : IInternalBurnBackendHelper { public static readonly XmlReaderSettings ReaderSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment }; public static readonly XmlWriterSettings WriterSettings = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment }; + private readonly IBackendHelper backendHelper; + private ManifestData BootstrapperApplicationManifestData { get; } = new ManifestData(); private Dictionary BundleExtensionDataById { get; } = new Dictionary(); + public BurnBackendHelper(IWixToolsetServiceProvider serviceProvider) + { + this.backendHelper = serviceProvider.GetService(); + } + + #region IBackendHelper interfaces + + public IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.CreateFileTransfer(source, destination, move, sourceLineNumbers); + + public string CreateGuid(Guid namespaceGuid, string value) => this.backendHelper.CreateGuid(namespaceGuid, value); + + public IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name) => this.backendHelper.CreateResolvedDirectory(directoryParent, name); + + public string GetCanonicalRelativePath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string relativePath) => this.backendHelper.GetCanonicalRelativePath(sourceLineNumbers, elementName, attributeName, relativePath); + + public ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.TrackFile(path, type, sourceLineNumbers); + + #endregion + + #region IBurnBackendHelper interfaces + public void AddBootstrapperApplicationData(string xml) { this.BootstrapperApplicationManifestData.AddXml(xml); @@ -41,6 +66,10 @@ namespace WixToolset.Core.Burn.ExtensibilityServices manifestData.AddSymbol(symbol, symbolIdIsIdAttribute, BurnCommon.BundleExtensionDataNamespace); } + #endregion + + #region IInternalBurnBackendHelper interfaces + public void WriteBootstrapperApplicationData(XmlWriter writer) { this.BootstrapperApplicationManifestData.Write(writer); @@ -54,6 +83,8 @@ namespace WixToolset.Core.Burn.ExtensibilityServices } } + #endregion + private ManifestData GetBundleExtensionManifestData(string extensionId) { if (!Common.IsIdentifier(extensionId)) diff --git a/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs b/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs index 5303899f..b0401b4a 100644 --- a/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs +++ b/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs @@ -30,7 +30,7 @@ namespace WixToolset.Core.Burn private static void AddServices(IWixToolsetCoreServiceProvider coreProvider) { // Singletons. - coreProvider.AddService((provider, singletons) => AddSingleton(singletons, new BurnBackendHelper())); + coreProvider.AddService((provider, singletons) => AddSingleton(singletons, new BurnBackendHelper(provider))); coreProvider.AddService((provider, singletons) => AddSingleton(singletons, provider.GetService())); } diff --git a/src/WixToolset.Core.WindowsInstaller/ExtensibilityServices/WindowsInstallerBackendHelper.cs b/src/WixToolset.Core.WindowsInstaller/ExtensibilityServices/WindowsInstallerBackendHelper.cs index 0082bc7c..248dea9b 100644 --- a/src/WixToolset.Core.WindowsInstaller/ExtensibilityServices/WindowsInstallerBackendHelper.cs +++ b/src/WixToolset.Core.WindowsInstaller/ExtensibilityServices/WindowsInstallerBackendHelper.cs @@ -2,13 +2,38 @@ namespace WixToolset.Core.WindowsInstaller.ExtensibilityServices { + using System; using System.Linq; using WixToolset.Data; using WixToolset.Data.WindowsInstaller; + using WixToolset.Extensibility.Data; using WixToolset.Extensibility.Services; internal class WindowsInstallerBackendHelper : IWindowsInstallerBackendHelper { + private readonly IBackendHelper backendHelper; + + public WindowsInstallerBackendHelper(IWixToolsetServiceProvider serviceProvider) + { + this.backendHelper = serviceProvider.GetService(); + } + + #region IBackendHelper interfaces + + public IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.CreateFileTransfer(source, destination, move, sourceLineNumbers); + + public string CreateGuid(Guid namespaceGuid, string value) => this.backendHelper.CreateGuid(namespaceGuid, value); + + public IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name) => this.backendHelper.CreateResolvedDirectory(directoryParent, name); + + public string GetCanonicalRelativePath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string relativePath) => this.backendHelper.GetCanonicalRelativePath(sourceLineNumbers, elementName, attributeName, relativePath); + + public ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.TrackFile(path, type, sourceLineNumbers); + + #endregion + + #region IWindowsInstallerBackendHelper interfaces + public Row CreateRow(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinition tableDefinition) { var table = output.EnsureTable(tableDefinition); @@ -57,5 +82,7 @@ namespace WixToolset.Core.WindowsInstaller.ExtensibilityServices return true; } + + #endregion } } diff --git a/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs b/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs index e013cefb..d9649dec 100644 --- a/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs +++ b/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs @@ -30,7 +30,7 @@ namespace WixToolset.Core.WindowsInstaller private static void AddServices(IWixToolsetCoreServiceProvider coreProvider) { // Singletons. - coreProvider.AddService((provider, singletons) => AddSingleton(singletons, new WindowsInstallerBackendHelper())); + coreProvider.AddService((provider, singletons) => AddSingleton(singletons, new WindowsInstallerBackendHelper(provider))); coreProvider.AddService((provider, singletons) => new Unbinder(provider)); } -- cgit v1.2.3-55-g6feb