aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Extensibility/ExtensionHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Extensibility/ExtensionHelper.cs')
-rw-r--r--src/WixToolset.Extensibility/ExtensionHelper.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/WixToolset.Extensibility/ExtensionHelper.cs b/src/WixToolset.Extensibility/ExtensionHelper.cs
new file mode 100644
index 00000000..9c1ca950
--- /dev/null
+++ b/src/WixToolset.Extensibility/ExtensionHelper.cs
@@ -0,0 +1,53 @@
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;
6 using System.Collections.Specialized;
7 using System.IO;
8 using System.Reflection;
9 using System.Xml;
10 using WixToolset.Data;
11 using WixToolset.Extensibility;
12
13 /// <summary>
14 /// The main class for a WiX extension.
15 /// </summary>
16 public static class ExtensionHelper
17 {
18 /// <summary>
19 /// Help for loading a library from an embedded resource.
20 /// </summary>
21 /// <param name="assembly">The assembly containing the embedded resource.</param>
22 /// <param name="resourceName">The name of the embedded resource being requested.</param>
23 /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
24 /// <returns>The loaded library.</returns>
25 public static Library LoadLibraryHelper(Assembly assembly, string resourceName, TableDefinitionCollection tableDefinitions)
26 {
27 using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
28 {
29 UriBuilder uriBuilder = new UriBuilder();
30 uriBuilder.Scheme = "embeddedresource";
31 uriBuilder.Path = assembly.Location;
32 uriBuilder.Fragment = resourceName;
33
34 return Library.Load(resourceStream, uriBuilder.Uri, tableDefinitions, false);
35 }
36 }
37
38 /// <summary>
39 /// Helper for loading table definitions from an embedded resource.
40 /// </summary>
41 /// <param name="assembly">The assembly containing the embedded resource.</param>
42 /// <param name="resourceName">The name of the embedded resource being requested.</param>
43 /// <returns>The loaded table definitions.</returns>
44 public static TableDefinitionCollection LoadTableDefinitionHelper(Assembly assembly, string resourceName)
45 {
46 using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
47 using (XmlReader reader = XmlReader.Create(resourceStream))
48 {
49 return TableDefinitionCollection.Load(reader);
50 }
51 }
52 }
53}