diff --git a/I18N Commander/UI WinForms/Program.cs b/I18N Commander/UI WinForms/Program.cs index 50c87bb..fbb744a 100644 --- a/I18N Commander/UI WinForms/Program.cs +++ b/I18N Commander/UI WinForms/Program.cs @@ -1,17 +1,61 @@ +using DataModel; +using DataModel.Database.Common; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + namespace UI_WinForms; internal static class Program { + internal const string VERSION = "v0.1.0"; + internal static IServiceProvider SERVICE_PROVIDER; + + [STAThread] private static void Main() { ApplicationConfiguration.Initialize(); - + Application.EnableVisualStyles(); + // Start the loader screen: var loader = new Loader(); Application.Run(loader); - // Start the main app: - Application.Run(new Main()); + // + // Create the DI system + // + var builder = new HostBuilder(); + + // + // Add services + // + builder.ConfigureServices((hostContext, serviceCollection) => + { + // The main form: + serviceCollection.AddSingleton
(); + + // The database: + serviceCollection.AddDatabase(loader.DataFile, true); + }); + + // Get the host out of the DI system: + var host = builder.Build(); + + // Create a service scope: + using (var scope = host.Services.CreateScope()) + { + // Get a service provider: + SERVICE_PROVIDER = scope.ServiceProvider; + + // Apply database migrations: + using (var database = SERVICE_PROVIDER.GetRequiredService()) + Setup.PerformDataMigration(database).Wait(); + + // Create the main window: + var mainWindow = SERVICE_PROVIDER.GetService
(); + + // Start the app: + Application.Run(mainWindow); + } } } \ No newline at end of file