private async void CreateInstallator()
        {
            try {
                _installator = await ContentInstallation.FromFile(Filename);
            } catch (Exception e) {
                NonfatalError.Notify(AppStrings.AdditionalContent_CannotInstall, e);
                Close();
                return;
            }

            var msg = AppStrings.AdditionalContent_InputPassword_Prompt;

            while (_installator.IsPasswordRequired && !_installator.IsPasswordCorrect)
            {
                var password = Prompt.Show(msg, AppStrings.AdditionalContent_InputPassword_Title, passwordMode: true);
                if (password == null)
                {
                    Close();
                    return;
                }

                try {
                    await _installator.TrySetPasswordAsync(password);

                    break;
                } catch (PasswordException) {
                    msg = AppStrings.AdditionalContent_InputPassword_InvalidPrompt;
                }
            }

            UpdateEntries();
        }
Ejemplo n.º 2
0
        private static void Main()
        {
            var services = new ServiceCollection();

            switch (Configuration["DefaultConnectionString"])
            {
            case "MsSqlAzureConnection":
                services.AddDbContext <EfDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MsSqlAzureConnection")));
                break;

            case "MsSqlConnection":
                services.AddDbContext <EfDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MsSqlConnection")));
                break;

            case "MsSqlLocalDbConnection":
                services.AddDbContext <EfDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MsSqlLocalDbConnection")));
                break;

            case "MySqlConnection":
                services.AddDbContext <EfDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("MySqlConnection")));
                break;

            case "MariaDbConnection":
                services.AddDbContext <EfDbContext>(options => options.UseMySql(Configuration.GetConnectionString("MariaDbConnection")));
                break;

            case "PostgreSqlConnection":
                services.AddDbContext <EfDbContext>(options => options.UseNpgsql(Configuration.GetConnectionString("PostgreSqlConnection")));
                break;

            case "SqliteConnection":
                services.AddDbContext <EfDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("SqliteConnection")));
                break;

            default:
                services.AddDbContext <EfDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqliteConnection")));
                break;
            }



            services.AddScoped(typeof(IUnitOfWork <EfDbContext>), typeof(UnitOfWork));
            services.AddScoped(typeof(IRepository <>), typeof(Repository <>));

            var provider = services.BuildServiceProvider();

            var unitOfWork = provider.GetService <IUnitOfWork <EfDbContext> >();

            var dbName   = "";
            var dbServer = "";

            foreach (var s in Configuration.GetSection("ConnectionStrings:" + Configuration["DefaultConnectionString"]).Value.Split(";"))
            {
                if (s.Contains("Data Source"))
                {
                    dbServer = s.Replace("Data Source=", "");
                }

                if (s.Contains("Server"))
                {
                    dbServer = s.Replace("Server=", "");
                }

                if (s.Contains("Host"))
                {
                    dbServer = s.Replace("Host=", "");
                }

                if (s.Contains("Database"))
                {
                    dbName = s.Replace("Database=", "");
                }

                if (s.Contains("Initial Catalog"))
                {
                    dbName = s.Replace("Initial Catalog=", "");
                }
            }

            Console.WriteLine(@"Kurulum başlatılıyor...");
            Console.WriteLine(@"Başlama Zamanı: " + DateTime.Now);

            Console.WriteLine(@"Veritabanı Türü: " + Configuration["DefaultConnectionString"].Replace("Connection", ""));
            Console.WriteLine(@"Veritabanı Sunucusu: " + dbServer);
            Console.WriteLine(@"Veritabanı Adı: " + dbName);
            Console.WriteLine(@"");
            Console.WriteLine(@"Mevcut veritabanı kaldırılıyor...");

            if (unitOfWork.Context.Database.GetService <IRelationalDatabaseCreator>().Exists())
            {
                if (unitOfWork.Context.Database.EnsureDeleted())
                {
                    Console.WriteLine(@"Mevcut veritabanı kaldırıldı.");
                    Console.WriteLine(@"");
                }
                else
                {
                    Console.WriteLine(@"Hata: Mevcut veritabanı kaldırılamadı!");
                    Console.WriteLine(@"");
                    return;
                }
            }

            Console.WriteLine(@"Yeni veritabanı oluşturuluyor...");

            if (unitOfWork.Context.Database.EnsureCreated())
            {
                Console.WriteLine(@"Yeni veritabanı oluşturuldu.");
                Console.WriteLine(@"");

                try
                {
                    UserInstallation.Install(provider);
                    Console.WriteLine(@"Kullanıcılar oluşturuldu.");
                    Console.WriteLine(@"");

                    ParameterInstallation.Install(provider);
                    Console.WriteLine(@"Parametreler oluşturuldu.");
                    Console.WriteLine(@"");

                    RoleInstallation.Install(provider);
                    Console.WriteLine(@"Roller oluşturuldu.");
                    Console.WriteLine(@"");

                    PermissionInstallation.Install(provider);
                    Console.WriteLine(@"Yetkiler oluşturuldu.");
                    Console.WriteLine(@"");

                    MenuInstallation.Install(provider);
                    Console.WriteLine(@"Menüler oluşturuldu.");
                    Console.WriteLine(@"");

                    LanguageInstallation.Install(provider);
                    Console.WriteLine(@"Diller oluşturuldu.");
                    Console.WriteLine(@"");

                    CategoryInstallation.Install(provider);
                    Console.WriteLine(@"Kategoriler oluşturuldu.");
                    Console.WriteLine(@"");

                    ContentInstallation.Install(provider);
                    Console.WriteLine(@"İçerikler oluşturuldu.");
                    Console.WriteLine(@"");

                    PartInstallation.Install(provider);
                    Console.WriteLine(@"Bölümler oluşturuldu.");
                    Console.WriteLine(@"");

                    PartInstallation.SetContents(provider);
                    Console.WriteLine(@"Bölüm içerikleri ayarlandı.");
                    Console.WriteLine(@"");

                    if (Configuration["DefaultConnectionString"] == "SqliteConnection")
                    {
                        var setupProjectRootPath = AppContext.BaseDirectory;
                        if (AppContext.BaseDirectory.Contains("bin"))
                        {
                            setupProjectRootPath = AppContext.BaseDirectory.Substring(0, AppContext.BaseDirectory.IndexOf("bin", StringComparison.Ordinal));
                        }

                        if (File.Exists(Path.Combine(setupProjectRootPath, dbServer)))
                        {
                            var apiProjectRootPath = setupProjectRootPath.Replace("AnkaCMS.SetupConsoleApp", "AnkaCMS.WebApi");
                            File.Delete(Path.Combine(apiProjectRootPath, dbServer));
                            File.Copy(Path.Combine(setupProjectRootPath, dbServer), Path.Combine(apiProjectRootPath, dbServer));
                        }
                    }



                    Console.WriteLine(@"Kurulum Tamamlandı.");
                    Console.WriteLine(@"Bitiş Zamanı: " + DateTime.Now);
                    Console.WriteLine(@"Programı kapatabilirsiniz.");
                    Console.WriteLine(@"--------------------------");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    Console.WriteLine(@"");
                    Console.WriteLine(@"Hata oluştu.");
                    Console.WriteLine(@"--------------------------");
                }
            }
            else
            {
                Console.WriteLine(@"Hata: Yeni veritabanı oluşturulamadı!");
                Console.WriteLine(@"");
            }

            Console.ReadLine();
        }