public void Delete(int id, int siteid) { List <ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(siteid).ToList(); ModuleDefinition moduledefinition = moduledefinitions.Where(item => item.ModuleDefinitionId == id).FirstOrDefault(); if (moduledefinition != null) { string moduledefinitionname = moduledefinition.ModuleDefinitionName.Substring(0, moduledefinition.ModuleDefinitionName.IndexOf(",")); string folder = Path.Combine(_environment.WebRootPath, "Modules\\" + moduledefinitionname); if (Directory.Exists(folder)) { Directory.Delete(folder, true); } string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); foreach (string file in Directory.EnumerateFiles(binfolder, moduledefinitionname + "*.dll")) { System.IO.File.Delete(file); } _moduleDefinitions.DeleteModuleDefinition(id, siteid); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Deleted {ModuleDefinitionId}", id); _installationManager.RestartApplication(); } }
public void Delete(int id, int siteid) { ModuleDefinition moduledefinition = _moduleDefinitions.GetModuleDefinition(id, siteid); if (moduledefinition != null) { if (!string.IsNullOrEmpty(moduledefinition.ServerManagerType) && Utilities.GetAssemblyName(moduledefinition.ServerManagerType) != "Oqtane.Server") { Type moduletype = Type.GetType(moduledefinition.ServerManagerType); foreach (Tenant tenant in _tenants.GetTenants()) { try { if (moduletype.GetInterface("IInstallable") != null) { var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype); ((IInstallable)moduleobject).Uninstall(tenant); } else { _sql.ExecuteScript(tenant, moduletype.Assembly, Utilities.GetTypeName(moduledefinition.ModuleDefinitionName) + ".Uninstall.sql"); } _logger.Log(LogLevel.Information, this, LogFunction.Delete, "{ModuleDefinitionName} Uninstalled For Tenant {Tenant}", moduledefinition.ModuleDefinitionName, tenant.Name); } catch (Exception ex) { _logger.Log(LogLevel.Error, this, LogFunction.Delete, "Error Uninstalling {ModuleDefinitionName} For Tenant {Tenant} {Error}", moduledefinition.ModuleDefinitionName, tenant.Name, ex.Message); } } // clean up module static resource folder string folder = Path.Combine(_environment.WebRootPath, Path.Combine("Modules", Utilities.GetTypeName(moduledefinition.ModuleDefinitionName))); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Static Resources Removed For {ModuleDefinitionName}", moduledefinition.ModuleDefinitionName); } // get root assembly name ( note that this only works if modules follow a specific naming convention for their assemblies ) string assemblyname = Utilities.GetAssemblyName(moduledefinition.ModuleDefinitionName).ToLower(); assemblyname = assemblyname.Replace(".client", "").Replace(".oqtane", ""); // remove module assemblies from /bin string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); foreach (string file in Directory.EnumerateFiles(binfolder, assemblyname + "*.*")) { System.IO.File.Delete(file); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Assembly {Filename} Removed For {ModuleDefinitionName}", file, moduledefinition.ModuleDefinitionName); } // remove module definition _moduleDefinitions.DeleteModuleDefinition(id, siteid); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Definition {ModuleDefinitionName} Deleted", moduledefinition.Name); // restart application _installationManager.RestartApplication(); } } }
public void Delete(int id, int siteid) { ModuleDefinition moduledefinition = _moduleDefinitions.GetModuleDefinition(id, siteid); if (moduledefinition != null) { if (!string.IsNullOrEmpty(moduledefinition.ServerManagerType)) { Type moduletype = Type.GetType(moduledefinition.ServerManagerType); if (moduletype != null && moduletype.GetInterface("IInstallable") != null) { foreach (Tenant tenant in _tenants.GetTenants()) { try { var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype); ((IInstallable)moduleobject).Uninstall(tenant); } catch { // an error occurred executing the uninstall } } } } // format root assembly name string assemblyname = Utilities.GetAssemblyName(moduledefinition.ModuleDefinitionName); if (assemblyname != "Oqtane.Client") { assemblyname = assemblyname.Replace(".Client", ""); // clean up module static resource folder string folder = Path.Combine(_environment.WebRootPath, Path.Combine("Modules", assemblyname)); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Static Resources Removed For {AssemblynName}", assemblyname); } // remove module assembly from /bin string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); foreach (string file in Directory.EnumerateFiles(binfolder, assemblyname + "*.*")) { System.IO.File.Delete(file); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Assembly Removed {Filename}", file); } } // remove module definition _moduleDefinitions.DeleteModuleDefinition(id, siteid); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Definition Deleted {ModuleDefinitionName}", moduledefinition.Name); // restart application _installationManager.RestartApplication(); } }
public void Delete(string themename) { List <Theme> themes = Themes.GetThemes().ToList(); Theme theme = themes.Where(item => item.ThemeName == themename).FirstOrDefault(); if (theme != null) { themename = theme.ThemeName.Substring(0, theme.ThemeName.IndexOf(",")); string folder = Path.Combine(environment.WebRootPath, "Themes\\" + themename); if (Directory.Exists(folder)) { Directory.Delete(folder, true); } string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); foreach (string file in Directory.EnumerateFiles(binfolder, themename + "*.dll")) { System.IO.File.Delete(file); } logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Deleted {ThemeName}", themename); InstallationManager.RestartApplication(); } }
public void Delete(string themename) { List <Theme> themes = _themes.GetThemes().ToList(); Theme theme = themes.Where(item => item.ThemeName == themename).FirstOrDefault(); if (theme != null && Utilities.GetAssemblyName(theme.ThemeName) != "Oqtane.Client") { // use assets.json to clean up file resources string assetfilepath = Path.Combine(_environment.WebRootPath, "Modules", Utilities.GetTypeName(theme.ThemeName), "assets.json"); if (System.IO.File.Exists(assetfilepath)) { List <string> assets = JsonSerializer.Deserialize <List <string> >(System.IO.File.ReadAllText(assetfilepath)); foreach (string asset in assets) { if (System.IO.File.Exists(asset)) { System.IO.File.Delete(asset); } } _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Assets Removed For {ThemeName}", theme.ThemeName); } // clean up theme static resource folder string folder = Path.Combine(_environment.WebRootPath, "Themes", Utilities.GetTypeName(theme.ThemeName)); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Resource Folder Removed For {ThemeName}", theme.ThemeName); } _installationManager.RestartApplication(); } }
public void Delete(string themename) { List <Theme> themes = _themes.GetThemes().ToList(); Theme theme = themes.Where(item => item.ThemeName == themename).FirstOrDefault(); if (theme != null && Utilities.GetAssemblyName(theme.ThemeName) != "Oqtane.Client") { // clean up theme static resource folder string folder = Path.Combine(_environment.WebRootPath, "Themes", Utilities.GetTypeName(theme.ThemeName)); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Static Resources Removed For {ThemeName}", theme.ThemeName); } // remove theme assembly from /bin string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); System.IO.File.Delete(Path.Combine(binfolder, Utilities.GetAssemblyName(theme.ThemeName) + ".dll")); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Theme Assembly {Filename} Removed For {ThemeName}", Utilities.GetAssemblyName(theme.ThemeName) + ".dll", themename); _installationManager.RestartApplication(); } }
public void Delete(int id, int siteid) { ModuleDefinition moduledefinition = _moduleDefinitions.GetModuleDefinition(id, siteid); if (moduledefinition != null) { if (!string.IsNullOrEmpty(moduledefinition.ServerManagerType) && Utilities.GetAssemblyName(moduledefinition.ServerManagerType) != "Oqtane.Server") { Type moduletype = Type.GetType(moduledefinition.ServerManagerType); // execute uninstall logic foreach (Tenant tenant in _tenants.GetTenants()) { try { if (moduletype.GetInterface("IInstallable") != null) { var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype); ((IInstallable)moduleobject).Uninstall(tenant); } else { _sql.ExecuteScript(tenant, moduletype.Assembly, Utilities.GetTypeName(moduledefinition.ModuleDefinitionName) + ".Uninstall.sql"); } _logger.Log(LogLevel.Information, this, LogFunction.Delete, "{ModuleDefinitionName} Uninstalled For Tenant {Tenant}", moduledefinition.ModuleDefinitionName, tenant.Name); } catch (Exception ex) { _logger.Log(LogLevel.Error, this, LogFunction.Delete, "Error Uninstalling {ModuleDefinitionName} For Tenant {Tenant} {Error}", moduledefinition.ModuleDefinitionName, tenant.Name, ex.Message); } } // use assets.json to clean up file resources string assetfilepath = Path.Combine(_environment.WebRootPath, "Modules", Utilities.GetTypeName(moduledefinition.ModuleDefinitionName), "assets.json"); if (System.IO.File.Exists(assetfilepath)) { List <string> assets = JsonSerializer.Deserialize <List <string> >(System.IO.File.ReadAllText(assetfilepath)); foreach (string asset in assets) { if (System.IO.File.Exists(asset)) { System.IO.File.Delete(asset); } } _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Assets Removed For {ModuleDefinitionName}", moduledefinition.ModuleDefinitionName); } // clean up module static resource folder string folder = Path.Combine(_environment.WebRootPath, Path.Combine("Modules", Utilities.GetTypeName(moduledefinition.ModuleDefinitionName))); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Resources Folder Removed For {ModuleDefinitionName}", moduledefinition.ModuleDefinitionName); } // remove module definition _moduleDefinitions.DeleteModuleDefinition(id, siteid); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Definition {ModuleDefinitionName} Deleted", moduledefinition.Name); // restart application _installationManager.RestartApplication(); } } }
public void Restart() { _installationManager.RestartApplication(); }
public void Delete(int id, int siteid) { List <ModuleDefinition> moduledefinitions = _moduleDefinitions.GetModuleDefinitions(siteid).ToList(); ModuleDefinition moduledefinition = moduledefinitions.Where(item => item.ModuleDefinitionId == id).FirstOrDefault(); if (moduledefinition != null) { // server assembly name should follow client naming convention string assemblyname = Utilities.GetAssemblyName(moduledefinition.ModuleDefinitionName).Replace(".Client", ".Server"); string uninstallScript = ""; Assembly assembly = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.GetName().Name == assemblyname); if (assembly != null) { Stream resourceStream = assembly.GetManifestResourceStream(assemblyname + ".Scripts.Uninstall.sql"); if (resourceStream != null) { using (var reader = new StreamReader(resourceStream)) { uninstallScript = reader.ReadToEnd(); } } } foreach (Tenant tenant in _tenants.GetTenants()) { // uninstall module database schema if (!string.IsNullOrEmpty(uninstallScript)) { _sql.ExecuteScript(tenant, uninstallScript); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Uninstall Script Executed For {AssemblyName}", assemblyname); } // clean up module schema versions _sql.ExecuteNonQuery(tenant, "DELETE FROM [dbo].[SchemaVersions] WHERE ScriptName LIKE '" + assemblyname + "%'"); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Schema Versions Removed For {AssemblyName}", assemblyname); } // format root assembly name assemblyname = assemblyname.Replace(".Server", ""); // clean up module static resource folder string folder = Path.Combine(_environment.WebRootPath, "Modules\\" + assemblyname); if (Directory.Exists(folder)) { Directory.Delete(folder, true); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Static Resources Removed For {AssemblynName}", assemblyname); } // remove module assembly from /bin string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); foreach (string file in Directory.EnumerateFiles(binfolder, assemblyname + "*.*")) { System.IO.File.Delete(file); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Assembly Removed {Filename}", file); } // remove module definition _moduleDefinitions.DeleteModuleDefinition(id, siteid); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Definition Deleted {ModuleDefinitionName}", moduledefinition.Name); // restart application _installationManager.RestartApplication(); } }