// 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.
namespace WixToolset.Extensibility
{
using System;
using System.Collections.Specialized;
using System.IO;
using System.Reflection;
using System.Xml;
using WixToolset.Data;
using WixToolset.Extensibility;
///
/// The main class for a WiX extension.
///
public static class ExtensionHelper
{
///
/// Help for loading a library from an embedded resource.
///
/// The assembly containing the embedded resource.
/// The name of the embedded resource being requested.
/// The table definitions to use while loading the library.
/// The loaded library.
public static Library LoadLibraryHelper(Assembly assembly, string resourceName, TableDefinitionCollection tableDefinitions)
{
using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
{
UriBuilder uriBuilder = new UriBuilder();
uriBuilder.Scheme = "embeddedresource";
uriBuilder.Path = assembly.Location;
uriBuilder.Fragment = resourceName;
return Library.Load(resourceStream, uriBuilder.Uri, tableDefinitions, false);
}
}
///
/// Helper for loading table definitions from an embedded resource.
///
/// The assembly containing the embedded resource.
/// The name of the embedded resource being requested.
/// The loaded table definitions.
public static TableDefinitionCollection LoadTableDefinitionHelper(Assembly assembly, string resourceName)
{
using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
using (XmlReader reader = XmlReader.Create(resourceStream))
{
return TableDefinitionCollection.Load(reader);
}
}
}
}