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(); }); }
/// <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)); } } } }
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); } } }
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); } } }
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("启动进程列表为空"); } }
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); }