/// <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));
 }
Ejemplo n.º 3
0
        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);
        }