aboutsummaryrefslogtreecommitdiff
path: root/src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs')
-rw-r--r--src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs b/src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs
new file mode 100644
index 00000000..067745c2
--- /dev/null
+++ b/src/api/wix/WixToolset.Extensibility/IWindowsInstallerBackendBinderExtension.cs
@@ -0,0 +1,65 @@
1// 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.
2
3namespace WixToolset.Extensibility
4{
5 using System.Collections.Generic;
6 using WixToolset.Data;
7 using WixToolset.Data.Symbols;
8 using WixToolset.Data.WindowsInstaller;
9 using WixToolset.Extensibility.Data;
10
11 /// <summary>
12 /// Interface all binder extensions implement.
13 /// </summary>
14 public interface IWindowsInstallerBackendBinderExtension
15 {
16 /// <summary>
17 /// Table definitions provided by the extension.
18 /// </summary>
19 IReadOnlyCollection<TableDefinition> TableDefinitions { get; }
20
21 /// <summary>
22 /// Called before binding occurs.
23 /// </summary>
24 void PreBackendBind(IBindContext context);
25
26 /// <summary>
27 /// Extension can process the intermediate before the Windows Installer data is created.
28 /// </summary>
29 /// <param name="section">The finalized intermediate section.</param>
30 void SymbolsFinalized(IntermediateSection section);
31
32 /// <summary>
33 /// Finds an existing cabinet that contains the provided files.
34 /// </summary>
35 /// <param name="cabinetPath">Path to the cabinet.</param>
36 /// <param name="files">Files contained in the cabinet.</param>
37 /// <returns>Resolved cabinet options or null if the cabinet could not be found.</returns>
38 IResolvedCabinet ResolveCabinet(string cabinetPath, IEnumerable<IBindFileWithPath> files);
39
40 /// <summary>
41 /// Override layout location for a media.
42 /// </summary>
43 /// <param name="mediaSymbol">Media symbol.</param>
44 /// <param name="mediaLayoutDirectory">Default media specific layout directory.</param>
45 /// <param name="layoutDirectory">Default overall layout directory.</param>
46 /// <returns>Layout location or null to use the default processing.</returns>
47 string ResolveMedia(MediaSymbol mediaSymbol, string mediaLayoutDirectory, string layoutDirectory);
48
49 /// <summary>
50 /// Called for each extension symbol that hasn't been handled yet.
51 /// </summary>
52 /// <param name="section">The linked section.</param>
53 /// <param name="symbol">The current symbol.</param>
54 /// <param name="data">Windows Installer data </param>
55 /// <param name="tableDefinitions">Collection of table definitions available for the output.</param>
56 /// <returns>True if the symbol was handled, or false if not.</returns>
57 bool TryProcessSymbol(IntermediateSection section, IntermediateSymbol symbol, WindowsInstallerData data, TableDefinitionCollection tableDefinitions);
58
59 /// <summary>
60 /// Called after all output changes occur and right before the output is bound into its final format.
61 /// </summary>
62 /// <param name="result">Bind result to process.</param>
63 void PostBackendBind(IBindResult result);
64 }
65}