//************************************************************************ // https://github.com/yuzhengyang // author: yuzhengyang // date: 2017.10.12 - 2018.10.24 // desc: 客户端启动器 // Copyright (c) yuzhengyang. All rights reserved. //************************************************************************ using Azylee.Core.DataUtils.CollectionUtils; using Azylee.Core.DataUtils.StringUtils; using Azylee.Core.IOUtils.DirUtils; using Azylee.Core.IOUtils.FileUtils; using Azylee.Core.ProcessUtils; using System; using System.Collections.Generic; using System.IO; namespace Azylee.Core.AppUtils { public static class AppLaunchTool { /// /// 启动最新版本程序 /// /// 路径:程序版本文件夹路径 /// 可执行文件名 /// public static bool StartNewVersion(string route, string exeFile) { if (GetNewVersion(route, exeFile, out Version version, out string startFile)) { return ProcessTool.Start(startFile); } return false; } public static bool Start(string file) { return ProcessTool.Start(file); } /// /// 查询是否有最新版本程序可以执行 /// /// 路径:程序版本文件夹路径 /// 可执行文件名 /// public static bool HasNewVersion(string route, string startfilename) { //判断路径是文件还是文件夹,并统一处理为文件夹 string appPath = route; if (FileTool.IsFile(route)) appPath = DirTool.GetFilePath(route); if (Directory.Exists(appPath)) { //获取运行目录下所有文件 List paths = DirTool.GetPath(appPath); if (ListTool.HasElements(paths)) { //解析属于版本号的文件 foreach (var path in paths) { //只解析文件名带三个点的文件夹 string filename = Path.GetFileName(path); if (StringTool.SubStringCount(filename, ".") == 3) { try { //有版本命名的文件,且文件中有exe程序 Version tempVersion = new Version(filename); string tempFile = DirTool.Combine(path, startfilename); if (File.Exists(tempFile)) return true; } catch { } } } } } return false; } /// /// 获取最新版本号 /// /// 路径:程序版本文件夹路径 /// 可执行文件名 /// public static bool GetNewVersion(string route, string exeFile, out Version version, out string startFile) { version = null; startFile = ""; //判断路径是文件还是文件夹,并统一处理为文件夹 string appPath = route; if (FileTool.IsFile(route)) appPath = DirTool.GetFilePath(route); if (Directory.Exists(appPath)) { //获取运行目录下所有文件 List paths = DirTool.GetPath(appPath); if (ListTool.HasElements(paths)) { foreach (var path in paths) { //只解析文件名带三个点的文件夹 string filename = Path.GetFileName(path); if (StringTool.SubStringCount(filename, ".") == 3) { try { Version tempVersion = new Version(filename); string tempFile = DirTool.Combine(path, exeFile); if ((version == null || tempVersion > version) && File.Exists(tempFile)) { version = tempVersion; startFile = tempFile; } } catch { } } } } } if (version != null && Str.Ok(startFile)) return true; return false; } } }