Example #1
0
        private void StartUpdate()
        {
            Task.Factory.StartNew(() =>
            {
                List <PluginModel> pluginList = DataHelper.GetPluginList();
                if (ListTool.HasElements(pluginList))
                {
                    R.Log.i(string.Format("本次更新共有:{0} 个插件需要更新", pluginList.Count));
                    pluginList.ForEach(x =>
                    {
                        VersionModel pluginNewVersion = DataHelper.GetPluginNewVersion(x);
                        if (pluginNewVersion != null)
                        {
                            R.Log.i(string.Format("当前更新插件:{0} [{1} => {2}]", x.Name, x.Version, pluginNewVersion.VersionNumber));
                            BeforeUpdate(pluginNewVersion);//更新前操作
                            bool flag = Update(pluginNewVersion);
                            if (flag)
                            {
                                VersionModelList.Add(pluginNewVersion);
                                R.Log.i(string.Format("{0} 已更新至最新版本 {1}", x.Name, pluginNewVersion.VersionNumber));
                                UIUpdateDetail(x.Name + " 更新成功,当前版本" + pluginNewVersion.VersionNumber);
                            }
                            else
                            {
                                R.Log.w(string.Format("{0} 更新失败,当前版本 {1},新版本 {2},期待下次更新", x.Name, x.Version, pluginNewVersion.VersionNumber));
                                UIUpdateDetail(x.Name + " 更新失败");
                            }
                        }
                        else
                        {
                            R.Log.w(string.Format("插件:{0}[{1}] 的更新配置请求失败,无法完成此更新", x.Name, x.Version));
                        }
                    });
                    AfterUpdate();//更新后操作
                    R.Log.i(string.Format("本次更新结束,共完成 {0} 个插件的更新", VersionModelList.Count()));
                }
                else
                {
                    R.Log.w("需要更新的插件列表为空,退出更新功能");
                }

                //退出程序前启动进程(用来保证主程序启动)
                Thread.Sleep(10000);
                ProcessTool.StartProcess(R.Files.CloseAndStart);
                UIClose();
            });
        }
Example #2
0
        /// <summary>
        /// 更新结束启动程序
        /// </summary>
        void EndRunProcess()
        {
            int percent = 1;

            if (!ListTool.IsNullOrEmpty(version.EndRunProcess))
            {
                foreach (var p in version.EndRunProcess)
                {
                    Thread.Sleep(R.cst.WAIT_TIME);
                    UIPbStatus((int)((double)(percent++) / version.EndRunProcess.Count() * 100));
                    if (!string.IsNullOrWhiteSpace(p))
                    {
                        ProcessTool.StartProcess(Path.Combine(R.AppPath, p));
                    }
                }
            }
        }
Example #3
0
 public static void AfterUpdate(List <string> killProcess, List <string> startProcess)
 {
     if (ListTool.HasElements(killProcess))
     {
         foreach (var p in killProcess)
         {
             ProcessTool.KillProcess(p);
         }
     }
     if (ListTool.HasElements(startProcess))
     {
         foreach (var p in startProcess)
         {
             string file = DirTool.IsDriver(p) ? p : DirTool.Combine(R.Paths.ProjectRoot, p);
             ProcessTool.StartProcess(file);
         }
     }
 }
Example #4
0
 public static void BeforeUpdate(VersionModel vm)
 {
     if (ListTool.HasElements(vm.BeforeUpdateKillProcess))
     {
         foreach (var p in vm.BeforeUpdateKillProcess)
         {
             ProcessTool.KillProcess(p);
         }
     }
     if (ListTool.HasElements(vm.BeforeUpdateStartProcess))
     {
         foreach (var p in vm.BeforeUpdateStartProcess)
         {
             string file = DirTool.IsDriver(p) ? p : DirTool.Combine(R.Paths.ProjectRoot, p);
             ProcessTool.StartProcess(file);
         }
     }
 }
Example #5
0
 public static void RunProcess(Frisbee f)
 {
     if (!ListTool.IsNullOrEmpty(f.RunProcess))
     {
         foreach (var r in f.RunProcess)
         {
             if (!string.IsNullOrWhiteSpace(r))
             {
                 ProcessTool.StartProcess(r);
             }
         }
         R.Log.i("进程已启动 共" + f.RunProcess.Count() + "项");
     }
     else
     {
         R.Log.i("启动进程列表为空");
     }
 }
Example #6
0
        public static bool DownFileAndRun(Frisbee f)
        {
            if (!string.IsNullOrWhiteSpace(f.Url) && !string.IsNullOrWhiteSpace(f.FileName))
            {
                string downfile = R.Paths.Frisbee + f.FileName;
                if (HttpTool.Download(f.Url, downfile))
                {
                    R.Log.i("已下载文件:" + f.Url);

                    if (f.AutoRun && File.Exists(downfile))
                    {
                        ProcessTool.StartProcess(downfile);
                        R.Log.i("已自动启动该下载项");
                    }
                    return(true);
                }
            }
            return(false);
        }