@joebigelow / wix-1 / commits / da9f4cf9

Implement IBackendHelper passthru in Burn and WindowsInstaller helpers

Rob Mensching committed Feb 23, 2021 at 08:17 UTC da9f4cf9627ca628f87f0938414795258190439b
4 files changed +60 -2
src/WixToolset.Core.Burn/ExtensibilityServices/BurnBackendHelper.cs
+31
@@ -9,16 +9,41 @@ namespace WixToolset.Core.Burn.ExtensibilityServices
9 using System.Xml;
10 using WixToolset.Core.Burn.Bundles;
11 using WixToolset.Data;
12 + using WixToolset.Extensibility.Data;
13 + using WixToolset.Extensibility.Services;
14
15 internal class BurnBackendHelper : IInternalBurnBackendHelper
16 {
17 public static readonly XmlReaderSettings ReaderSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
18 public static readonly XmlWriterSettings WriterSettings = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment };
19
20 + private readonly IBackendHelper backendHelper;
21 +
22 private ManifestData BootstrapperApplicationManifestData { get; } = new ManifestData();
23
24 private Dictionary<string, ManifestData> BundleExtensionDataById { get; } = new Dictionary<string, ManifestData>();
25
26 + public BurnBackendHelper(IWixToolsetServiceProvider serviceProvider)
27 + {
28 + this.backendHelper = serviceProvider.GetService<IBackendHelper>();
29 + }
30 +
31 + #region IBackendHelper interfaces
32 +
33 + public IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.CreateFileTransfer(source, destination, move, sourceLineNumbers);
34 +
35 + public string CreateGuid(Guid namespaceGuid, string value) => this.backendHelper.CreateGuid(namespaceGuid, value);
36 +
37 + public IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name) => this.backendHelper.CreateResolvedDirectory(directoryParent, name);
38 +
39 + public string GetCanonicalRelativePath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string relativePath) => this.backendHelper.GetCanonicalRelativePath(sourceLineNumbers, elementName, attributeName, relativePath);
40 +
41 + public ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.TrackFile(path, type, sourceLineNumbers);
42 +
43 + #endregion
44 +
45 + #region IBurnBackendHelper interfaces
46 +
47 public void AddBootstrapperApplicationData(string xml)
48 {
49 this.BootstrapperApplicationManifestData.AddXml(xml);
@@ -41,6 +66,10 @@ namespace WixToolset.Core.Burn.ExtensibilityServices
66 manifestData.AddSymbol(symbol, symbolIdIsIdAttribute, BurnCommon.BundleExtensionDataNamespace);
67 }
68
69 + #endregion
70 +
71 + #region IInternalBurnBackendHelper interfaces
72 +
73 public void WriteBootstrapperApplicationData(XmlWriter writer)
74 {
75 this.BootstrapperApplicationManifestData.Write(writer);
@@ -54,6 +83,8 @@ namespace WixToolset.Core.Burn.ExtensibilityServices
83 }
84 }
85
86 + #endregion
87 +
88 private ManifestData GetBundleExtensionManifestData(string extensionId)
89 {
90 if (!Common.IsIdentifier(extensionId))
src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs
+1 -1
@@ -30,7 +30,7 @@ namespace WixToolset.Core.Burn
30 private static void AddServices(IWixToolsetCoreServiceProvider coreProvider)
31 {
32 // Singletons.
33 - coreProvider.AddService((provider, singletons) => AddSingleton<IInternalBurnBackendHelper>(singletons, new BurnBackendHelper()));
33 + coreProvider.AddService((provider, singletons) => AddSingleton<IInternalBurnBackendHelper>(singletons, new BurnBackendHelper(provider)));
34 coreProvider.AddService((provider, singletons) => AddSingleton<IBurnBackendHelper>(singletons, provider.GetService<IInternalBurnBackendHelper>()));
35 }
36
src/WixToolset.Core.WindowsInstaller/ExtensibilityServices/WindowsInstallerBackendHelper.cs
+27
@@ -2,13 +2,38 @@
2
3 namespace WixToolset.Core.WindowsInstaller.ExtensibilityServices
4 {
5 + using System;
6 using System.Linq;
7 using WixToolset.Data;
8 using WixToolset.Data.WindowsInstaller;
9 + using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services;
11
12 internal class WindowsInstallerBackendHelper : IWindowsInstallerBackendHelper
13 {
14 + private readonly IBackendHelper backendHelper;
15 +
16 + public WindowsInstallerBackendHelper(IWixToolsetServiceProvider serviceProvider)
17 + {
18 + this.backendHelper = serviceProvider.GetService<IBackendHelper>();
19 + }
20 +
21 + #region IBackendHelper interfaces
22 +
23 + public IFileTransfer CreateFileTransfer(string source, string destination, bool move, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.CreateFileTransfer(source, destination, move, sourceLineNumbers);
24 +
25 + public string CreateGuid(Guid namespaceGuid, string value) => this.backendHelper.CreateGuid(namespaceGuid, value);
26 +
27 + public IResolvedDirectory CreateResolvedDirectory(string directoryParent, string name) => this.backendHelper.CreateResolvedDirectory(directoryParent, name);
28 +
29 + public string GetCanonicalRelativePath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string relativePath) => this.backendHelper.GetCanonicalRelativePath(sourceLineNumbers, elementName, attributeName, relativePath);
30 +
31 + public ITrackedFile TrackFile(string path, TrackedFileType type, SourceLineNumber sourceLineNumbers = null) => this.backendHelper.TrackFile(path, type, sourceLineNumbers);
32 +
33 + #endregion
34 +
35 + #region IWindowsInstallerBackendHelper interfaces
36 +
37 public Row CreateRow(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData output, TableDefinition tableDefinition)
38 {
39 var table = output.EnsureTable(tableDefinition);
@@ -57,5 +82,7 @@ namespace WixToolset.Core.WindowsInstaller.ExtensibilityServices
82
83 return true;
84 }
85 +
86 + #endregion
87 }
88 }
src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs
+1 -1
@@ -30,7 +30,7 @@ namespace WixToolset.Core.WindowsInstaller
30 private static void AddServices(IWixToolsetCoreServiceProvider coreProvider)
31 {
32 // Singletons.
33 - coreProvider.AddService((provider, singletons) => AddSingleton<IWindowsInstallerBackendHelper>(singletons, new WindowsInstallerBackendHelper()));
33 + coreProvider.AddService((provider, singletons) => AddSingleton<IWindowsInstallerBackendHelper>(singletons, new WindowsInstallerBackendHelper(provider)));
34 coreProvider.AddService<IUnbinder>((provider, singletons) => new Unbinder(provider));
35 }
36