/// <summary> /// Marks a plugin as uninstalled /// </summary> /// <param name="pluginInfo"></param> public static void MarkUninstalled(PluginInfo pluginInfo) { pluginInfo.Installed = false; pluginInfo.Active = false; PluginConfigurator.WriteConfigFile(Plugins.ToList(), HostingEnvironment.MapPath(PluginsFile)); }
public static bool IsInstalled(PluginInfo pluginInfo) { return(Plugins.Any(x => x.SystemName == pluginInfo.SystemName)); }
public static PluginInfo LoadPluginInfo(string fileName) { //because this code fires before app startup, we won't be able to use any resolver to read the files //TODO: find a better way to do this var fileFound = File.Exists(fileName); if (!fileFound) { throw new FileNotFoundException(); } var pluginInfo = new PluginInfo(); //read the file stream var fileStream = new FileStream(fileName, FileMode.Open); //create the reader var xmlReader = XmlReader.Create(fileStream); var currentConfigName = string.Empty;//this stores the element name at any point of time while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: if (xmlReader.Name.ToLower() == "config") { continue; } currentConfigName = xmlReader.Name.ToLower(); break; case XmlNodeType.Text: if (currentConfigName != string.Empty) { var value = xmlReader.Value; switch (currentConfigName) { case "name": pluginInfo.Name = value; break; case "systemname": pluginInfo.SystemName = value; break; case "supportedversions": pluginInfo.SupportedVersions = value.Split(',').ToList(); break; case "author": pluginInfo.Author = value; break; case "authoruri": pluginInfo.AuthorUri = value; break; case "pluginuri": pluginInfo.PluginUri = value; break; case "assemblydllname": pluginInfo.AssemblyDllName = value; break; case "issystemplugin": pluginInfo.IsSystemPlugin = Convert.ToBoolean(value); break; } } break; case XmlNodeType.EndElement: currentConfigName = string.Empty; break; } } //close the stream fileStream.Close(); //file info var fileInfo = new FileInfo(fileName); if (fileInfo.DirectoryName != null) { var assemblyFilePath = Path.Combine(fileInfo.DirectoryName, pluginInfo.AssemblyDllName); pluginInfo.OriginalAssemblyFileInfo = new FileInfo(assemblyFilePath); } return(pluginInfo); }