// 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.Core.WindowsInstaller { using System; using System.Collections.Generic; using WixToolset.Core.WindowsInstaller.ExtensibilityServices; using WixToolset.Extensibility.Services; /// /// Extensions methods for adding WindowsInstaller services. /// public static class WixToolsetCoreServiceProviderExtensions { /// /// Adds WindowsInstaller services. /// /// /// public static IWixToolsetCoreServiceProvider AddWindowsInstallerBackend(this IWixToolsetCoreServiceProvider coreProvider) { AddServices(coreProvider); var extensionManager = coreProvider.GetService(); extensionManager.Add(typeof(WindowsInstallerExtensionFactory).Assembly); return coreProvider; } private static void AddServices(IWixToolsetCoreServiceProvider coreProvider) { // Singletons. coreProvider.AddService((provider, singletons) => AddSingleton(singletons, new WindowsInstallerBackendHelper(provider))); } private static T AddSingleton(Dictionary singletons, T service) where T : class { singletons.Add(typeof(T), service); return service; } } }