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