using MicaSetup.Helper; using MicaSetup.Natives; using MicaSetup.Services; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Globalization; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Threading; namespace MicaSetup.Design.Controls; #pragma warning disable IDE0002 public static class HostBuilderExtension { public static IHostBuilder UseHostBuilder(this IHostBuilder builder, Action custom) { custom?.Invoke(builder); return builder; } public static IHostBuilder UseAsUninst(this IHostBuilder builder) { Option.Current.IsUninst = true; return builder; } public static IHostBuilder UseLogger(this IHostBuilder builder, bool enabled = true) { Option.Current.Logging = enabled; Logger.Info("Setup run started ..."); return builder; } public static IHostBuilder UseServices(this IHostBuilder builder, Action service) { ServiceCollection serviceCollection = new(); service?.Invoke(serviceCollection); ServiceManager.Services = builder.ServiceProvider = serviceCollection.BuildServiceProvider(); return builder; } public static IHostBuilder UseTempPathFork(this IHostBuilder builder) { if (RuntimeHelper.IsDebuggerAttached) { return builder; } TempPathForkHelper.Fork(); return builder; } public static IHostBuilder UseElevated(this IHostBuilder builder) { RuntimeHelper.EnsureElevated(); return builder; } public static IHostBuilder UseDpiAware(this IHostBuilder builder) { _ = DpiAwareHelper.SetProcessDpiAwareness(); return builder; } public static IHostBuilder UseSingleInstance(this IHostBuilder builder, string instanceName, Action callback = null!) { RuntimeHelper.CheckSingleInstance(instanceName, callback); return builder; } public static IHostBuilder UseLanguage(this IHostBuilder builder, string name) { Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture = new CultureInfo(name); return builder; } public static IHostBuilder UseMuiLanguage(this IHostBuilder builder) { MuiLanguage.SetupLanguage(); return builder; } public static IHostBuilder UseTheme(this IHostBuilder builder, WindowsTheme theme = WindowsTheme.Auto) { ThemeService.Current.SetTheme(theme); return builder; } public static IHostBuilder UseFonts(this IHostBuilder builder, Action> handler) { handler?.Invoke(MuiLanguage.FontSelector); return builder; } public static IHostBuilder UseOptions(this IHostBuilder builder, Action