public ActionResult Index() { if (DataHelper.TableIsExisted()) return RedirectToAction(RedirectToActionAfterInstall[1], RedirectToActionAfterInstall[0]); // set page timeout to 5 minutes this.Server.ScriptTimeout = 300; var model = new InstallModel() { AdminEmail = "*****@*****.**", SqlServerName = @".\SQLExpress", DatabaseConnectionString = "", DataProvider = "sqlserver", SqlAuthenticationType = "sqlauthentication", SqlServerCreateDatabase = false, UseCustomCollation = false, Collation = "SQL_Latin1_General_CP1_CI_AS", }; return View(model); }
public ActionResult Index(InstallModel model) { if (DataHelper.TableIsExisted()) return RedirectToAction(RedirectToActionAfterInstall[1], RedirectToActionAfterInstall[0]); if (model.DatabaseConnectionString != null) model.DatabaseConnectionString = model.DatabaseConnectionString.Trim(); //try //{ var webHelper = IoC.Resolve<IWebHelper>(); if (!DataHelper.HasSettingsFileOrNotNull()) // check Settings.txt file is existed. { if (model.DataProvider.Equals("sqlserver", StringComparison.InvariantCultureIgnoreCase)) { //values if (string.IsNullOrEmpty(model.SqlServerName)) ModelState.AddModelError("", "Server name is required!"); if (string.IsNullOrEmpty(model.SqlDatabaseName)) ModelState.AddModelError("", "Database name is required!"); //authentication type if (model.SqlAuthenticationType.Equals("sqlauthentication", StringComparison.InvariantCultureIgnoreCase)) { //SQL authentication if (string.IsNullOrEmpty(model.SqlServerUsername)) ModelState.AddModelError("", "Sqlserver Username is required!"); if (string.IsNullOrEmpty(model.SqlServerPassword)) ModelState.AddModelError("", "Sqlserver Password is required!"); if(model.SqlServerPassword.Trim().Equals(model.ConfirmPassword)) ModelState.AddModelError("", "Sqlserver Password is not duplicated!"); } } //validate permissions var dirsToCheck = FilePermissionHelper.GetDirectoriesWrite(webHelper); foreach (string dir in dirsToCheck) if (!FilePermissionHelper.CheckPermissions(dir, false, true, true, false)) ModelState.AddModelError("", string.Format("{0} cannot be writable for {1}", WindowsIdentity.GetCurrent().Name, dir)); var filesToCheck = FilePermissionHelper.GetFilesWrite(webHelper); foreach (string file in filesToCheck) if (!FilePermissionHelper.CheckPermissions(file, false, true, true, true)) ModelState.AddModelError("", string.Format("{0} cannot be writable for {1}", WindowsIdentity.GetCurrent().Name, file)); if (ModelState.IsValid) { DataHelper.SaveSettings("SqlServer", model.SqlAuthenticationType == "windowsauthentication", model.SqlServerName, model.SqlDatabaseName, model.SqlServerUsername, model.SqlServerPassword); } } if (DataHelper.HasSettingsFileOrNotNull()) { if (model.SqlServerCreateDatabase) { var collation = model.UseCustomCollation ? model.Collation : ""; DataHelper.CreateDatabase(collation); } else { if (!DataHelper.DatabaseIsExisted()) throw new Exception("Database is not existed!"); } // init tables or instace db. var dataProviderInstance = IoC.Resolve<IDataProvider>(); dataProviderInstance.InitDatabase(); // install all providers InstallationManager.Install(); // install default admin var installAccountFirstService = IoC.Resolve<IInstallAccountFirstService>(); installAccountFirstService.Install(model.AdminEmail, model.AdminPassword); DataHelper.ResetCache(); //install plugins PluginManager.MarkAllPluginsAsUninstalled(); var pluginFinder = IoC.Resolve<IPluginFinder>(); var plugins = pluginFinder.GetPlugins<IPlugin>(false) .ToList() .OrderBy(x => x.PluginDescriptor.Group) .ThenBy(x => x.PluginDescriptor.DisplayOrder) .ToList(); foreach (var plugin in plugins) { plugin.Install(); } webHelper.RestartAppDomain(true, "~/install/success"); } //} //catch (Exception ex) //{ // ViewBag.ErrorMessage = ex.Message; // DataHelper.RemoveSettingsFile(); // DataHelper.ResetCache(); //} return View(model); }