示例#1
0
        /// <summary>
        /// 通过plugIn.conf文件获取已安装的插件信息
        /// </summary>
        /// <returns></returns>
        public List <PlugInInfo> GetLocalPlugIns()
        {
            List <PlugInInfo> listLocalPlugInData = new List <PlugInInfo>();

            List <VSDT.PlugIns.Config.PlugInStatusList.PlugInStatus> listStatus = PlugInStatusList.LoadConfig().listStatus;
            //获取所有插件文件
            ArrayList listPlugInFiles = UtilityEnvironment.GetPlugInConfigFiles(ConstantString.PlugInConfigFileName);

            for (int i = 0; i < listPlugInFiles.Count; i++)
            {
                PlugInData data = PlugInDataParser.CreatePlugInData(listPlugInFiles[i].ToString());
                PlugInInfo info = new PlugInInfo();
                info.PlugInData = data;
                info.FilePath   = data.FilePath;
                if (listStatus.Count > 0)
                {
                    info.PlugInState = listStatus.Single(t => t.path == info.FilePath).PlugInState;
                }
                else
                {
                    info.PlugInState = data.InitializedState;
                }
                listLocalPlugInData.Add(info);
            }
            //排序
            listLocalPlugInData.Sort(new Comparison <PlugInInfo>(ComparePlugInByStartLevel));
            return(listLocalPlugInData);
        }
示例#2
0
 public static IPlugIn CreatePlugIn(PlugInData plugInData)
 {
     PlugIn plugIn = new PlugIn(Guid.NewGuid());
     plugIn.PlugInInfo = new PlugInInfo(plugInData);
     plugIn.Name = plugInData.Name;
     plugIn.Location = Common.Utility.UtilityEnvironment.GetPath(plugInData.FilePath);
     plugIn.StartMode = plugInData.StartMode;
     plugIn.EnableState = plugInData.InitializedState;
     plugIn.SymbolicName = plugInData.SymbolicName;
     plugIn.Version = plugInData.Version;
     return plugIn;
 }
示例#3
0
        public static IPlugIn CreatePlugIn(PlugInData plugInData)
        {
            PlugIn plugIn = new PlugIn(Guid.NewGuid());

            plugIn.PlugInInfo   = new PlugInInfo(plugInData);
            plugIn.Name         = plugInData.Name;
            plugIn.Location     = Common.Utility.UtilityEnvironment.GetPath(plugInData.FilePath);
            plugIn.StartMode    = plugInData.StartMode;
            plugIn.EnableState  = plugInData.InitializedState;
            plugIn.SymbolicName = plugInData.SymbolicName;
            plugIn.Version      = plugInData.Version;
            return(plugIn);
        }
示例#4
0
 public PlugInInfo(PlugInData data)
 {
     this.PlugInData = data;
     FilePath = data.FilePath;
     this.PlugInState = data.InitializedState;
 }
示例#5
0
        public static PlugInData CreatePlugInData(string path)
        {
            PlugInData plugInData = new PlugInData();

            if (!File.Exists(path))
            {
                throw new Exception(string.Format("文件{0}不存在", path));
            }
            XmlDocument xmldoc = new XmlDocument();

            xmldoc.Load(path);

            if (string.Compare(xmldoc.DocumentElement.Name, "PlugIn", true) == 0)
            {
                plugInData.FilePath = path.Substring(0, path.LastIndexOf("\\"));
                //读取PlugIn属性
                int _count = xmldoc.DocumentElement.Attributes.Count;
                for (int i = 0; i < _count; i++)
                {
                    string _name  = xmldoc.DocumentElement.Attributes[i].Name.ToLower();
                    string _value = xmldoc.DocumentElement.Attributes[i].Value;
                    switch (_name)
                    {
                    case "name":
                        plugInData.Name = _value;
                        break;

                    case "symbolicname":
                        plugInData.SymbolicName = _value;
                        break;

                    case "version":
                        plugInData.Version = new Version(_value);
                        break;

                    case "startlevel":
                        int tmp = 50;
                        Int32.TryParse(_value, out tmp);
                        plugInData.StartLevel = tmp;
                        break;

                    case "initializedstate":
                        try{
                            plugInData.InitializedState = (PlugInEnableState)System.Enum.Parse(typeof(PlugInEnableState), _value);
                        }
                        catch
                        {
                            plugInData.InitializedState = PlugInEnableState.Enable;
                        }
                        break;

                    case "startmode":
                        try
                        {
                            plugInData.StartMode = (StartMode)System.Enum.Parse(typeof(StartMode), _value);
                        }
                        catch {
                            plugInData.StartMode = StartMode.NeedLogin;
                        }
                        break;

                    default:
                        break;
                    }
                }
                //读取PlugIn入口点
                XmlNode _node = xmldoc.SelectSingleNode("PlugIn/EntryPoint");
                if (_node != null)
                {
                    _count = _node.Attributes.Count;
                    for (int i = 0; i < _count; i++)
                    {
                        string _name  = _node.Attributes[i].Name.ToLower();
                        string _value = _node.Attributes[i].Value;
                        plugInData.EntryPoint = new EntryPointData(_value);
                    }
                }
                //读取插件详细描述信息
                _node = xmldoc.SelectSingleNode("PlugIn/PlugInInfo");
                PlugInInfoData infoData = new PlugInInfoData();
                if (_node != null)
                {
                    _count = _node.Attributes.Count;
                    for (int i = 0; i < _count; i++)
                    {
                        string _name  = _node.Attributes[i].Name.ToLower();
                        string _value = _node.Attributes[i].Value;
                        switch (_name)
                        {
                        case "author":
                            infoData.Author = _value;
                            break;

                        case "description":
                            infoData.Description = _value;
                            break;

                        case "updatelocation":
                            infoData.UpdateLocation = _value;
                            break;

                        default:
                            break;
                        }
                    }
                }
                plugInData.PlugInInfo = infoData;
                //读取运行时dll(exe)全路径
                _node = xmldoc.SelectSingleNode("PlugIn/Runtime");
                if (_node != null)
                {
                    foreach (XmlNode item in _node.ChildNodes)
                    {
                        AssemblyData assembly = new AssemblyData(item, plugInData.FilePath);
                        plugInData.Runtime.Assemblies.Add(assembly);
                    }
                }
                //读取扩展节点....此处可能有多个Extension
                XmlNodeList _nodeList = xmldoc.SelectNodes("PlugIn/Extension");
                if (_nodeList != null)
                {
                    for (int i = 0; i < _nodeList.Count; i++)
                    {
                        _node = _nodeList[i];
                        ExtensionData _extensionData = new ExtensionData(_node);
                        plugInData.Extensions.Add(_extensionData);
                    }
                }
            }
            return(plugInData);
        }
示例#6
0
        public static PlugInData CreatePlugInData(string path)
        {
            PlugInData plugInData = new PlugInData();
            if (!File.Exists(path))
            {
                throw new Exception(string.Format("文件{0}不存在", path));
            }
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(path);

            if (string.Compare(xmldoc.DocumentElement.Name, "PlugIn", true) == 0)
            {
                plugInData.FilePath = path.Substring(0, path.LastIndexOf("\\"));
                //读取PlugIn属性
                int _count = xmldoc.DocumentElement.Attributes.Count;
                for (int i = 0; i < _count; i++)
                {
                    string _name = xmldoc.DocumentElement.Attributes[i].Name.ToLower();
                    string _value = xmldoc.DocumentElement.Attributes[i].Value;
                    switch (_name)
                    {
                        case "name":
                            plugInData.Name = _value;
                            break;
                        case "symbolicname":
                            plugInData.SymbolicName = _value;
                            break;
                        case "version":
                            plugInData.Version = new Version(_value);
                            break;
                        case "startlevel":
                            int tmp = 50;
                            Int32.TryParse(_value, out tmp);
                            plugInData.StartLevel = tmp;
                            break;
                        case "initializedstate":
                            try{
                            plugInData.InitializedState = (PlugInEnableState)System.Enum.Parse(typeof(PlugInEnableState), _value);
                            }
                            catch
                            {
                                plugInData.InitializedState = PlugInEnableState.Enable;
                            }
                                break;
                        case "startmode":
                            try
                            {
                                plugInData.StartMode = (StartMode)System.Enum.Parse(typeof(StartMode), _value);
                            }
                            catch {
                                plugInData.StartMode = StartMode.NeedLogin;
                            }
                            break;
                        default:
                            break;
                    }
                }
                //读取PlugIn入口点
                XmlNode _node = xmldoc.SelectSingleNode("PlugIn/EntryPoint");
                if (_node != null)
                {
                    _count = _node.Attributes.Count;
                    for (int i = 0; i < _count; i++)
                    {
                        string _name = _node.Attributes[i].Name.ToLower();
                        string _value = _node.Attributes[i].Value;
                        plugInData.EntryPoint = new EntryPointData(_value);
                    }
                }
                //读取插件详细描述信息
                _node = xmldoc.SelectSingleNode("PlugIn/PlugInInfo");
                PlugInInfoData infoData = new PlugInInfoData();
                if (_node != null)
                {
                    _count = _node.Attributes.Count;
                    for (int i = 0; i < _count; i++)
                    {
                        string _name = _node.Attributes[i].Name.ToLower();
                        string _value = _node.Attributes[i].Value;
                        switch (_name)
                        {
                            case "author":
                                infoData.Author = _value;
                                break;
                            case "description":
                                infoData.Description = _value;
                                break;
                            case "updatelocation":
                                infoData.UpdateLocation = _value;
                                break;
                            default:
                                break;
                        }
                    }
                }
                plugInData.PlugInInfo = infoData;
                //读取运行时dll(exe)全路径
                _node = xmldoc.SelectSingleNode("PlugIn/Runtime");
                if (_node != null)
                {
                    foreach (XmlNode item in _node.ChildNodes)
                    {
                        AssemblyData assembly = new AssemblyData(item, plugInData.FilePath);
                        plugInData.Runtime.Assemblies.Add(assembly);
                    }
                }
                //读取扩展节点....此处可能有多个Extension
                XmlNodeList _nodeList = xmldoc.SelectNodes("PlugIn/Extension");
                if (_nodeList != null)
                {
                    for (int i = 0; i < _nodeList.Count; i++)
                    {
                        _node = _nodeList[i];
                        ExtensionData _extensionData = new ExtensionData(_node);
                        plugInData.Extensions.Add(_extensionData);
                    }
                }
            }
            return plugInData;
        }
示例#7
0
 public PlugInInfo(PlugInData data)
 {
     this.PlugInData  = data;
     FilePath         = data.FilePath;
     this.PlugInState = data.InitializedState;
 }