示例#1
0
 /// <summary>
 /// 读取脚本文件内容
 /// </summary>
 /// <param name="plugin"></param>
 /// <param name="isPassword"></param>
 /// <returns></returns>
 private void ReadScriptContent(AbstractZipPluginInfo plugin, bool isPassword)
 {
     //如果未配置脚本文件名
     //if (string.IsNullOrWhiteSpace(plugin.ScriptFile))
     //{
     //    throw new Exception("未找到脚本文件!" + plugin.ScriptFile);
     //}
     plugin.ScriptObject = string.IsNullOrWhiteSpace(plugin.ScriptFile) ? plugin.ZipTempDirectory
         : Path.Combine(plugin.ZipTempDirectory, plugin.ScriptFile);
     //plugin.ScriptObject = FileHelper.FileToUTF8String(plugin.ScriptFile);
     //if (isPassword)   //再次使用DES解密
     //{
     //    plugin.ScriptObject = CryptographyHelper.DecodeDES(plugin.ScriptObject, DesPassword);
     //}
 }
示例#2
0
        private static readonly string DefaultUnrarPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); //默认的临时解压缩路径

        /* 脚本文件结构:
         *
         * --Android_QQ_5.1.0.zip
         |--plugin.config        (主配置文件,名称固定)
         |--main.py              (主插件,名称固定)
         |--icon.png             (图标,名称固定)
         |--chalib               (数据恢复特征库文件夹)
         |--其它文件及文件夹
         *
         */

        protected override void LoadPlugin(IAsyncProgress asyn)
        {
            List <IPlugin> plugins = new List <IPlugin>();
            //string dir = SystemContext.Instance.CurLanguage == LanguageType.Cn ? FileHelper.GetPhysicalPath("\\Script\\cn")
            //    : FileHelper.GetPhysicalPath("\\Script\\en");
            string dir = FileHelper.GetPhysicalPath("\\Script\\cn");

            foreach (var file in FileHelper.GetFiles(dir, new[] { DebugScriptExtension, ReleaseScriptExtension }))
            {
                try
                {
                    bool isPassword = file.Extension.Equals(ReleaseScriptExtension, StringComparison.OrdinalIgnoreCase);

                    //解压缩文件到临时目录
                    string tmpDir = UnRarFile(file, isPassword);

                    //读取配置文件
                    AbstractZipPluginInfo pluginInfo = ReadPluginInfo(Path.Combine(tmpDir, PluginConfigFileName));

                    //读取脚本文件内容
                    pluginInfo.ZipTempDirectory = tmpDir;
                    ReadScriptContent(pluginInfo, isPassword);

                    //生成插件实例
                    IPlugin plugin = GetPlugin(pluginInfo);
                    plugin.PluginInfo = pluginInfo;
                    plugins.Add(plugin);
                }
                catch (Exception ex)
                {
                    LoggerManagerSingle.Instance.Warn(ex, string.Format("解析脚本发生异常!脚本文件:{0}", file.FullName));
                }
            }

            Plugins = plugins;
        }