static void CheckContent() { // 释放ico图标 var ico = "favicon.ico"; var wwwroot = Setting.Current.WebRootPath; var ico2 = wwwroot.CombinePath(ico).GetFullPath(); if (!File.Exists(ico2)) { var asm = Assembly.GetExecutingAssembly(); var ns = asm.GetManifestResourceNames(); var f = ns.FirstOrDefault(e => e.EndsWithIgnoreCase(ico)); if (!f.IsNullOrEmpty()) { XTrace.WriteLine("释放图标{0}到{1}", f, ico2); var ms = asm.GetManifestResourceStream(f); File.WriteAllBytes(ico2.EnsureDirectory(true), ms.ReadBytes()); } } // 检查魔方样式 var content = Setting.Current.WebRootPath.CombinePath("Content"); var js = content.CombinePath("Cube.js").GetFullPath(); var css = content.CombinePath("Cube.css").GetFullPath(); if (File.Exists(js) && File.Exists(css)) { // 判断脚本时间 var dt = DateTime.MinValue; var ss = File.ReadAllLines(js); for (var i = 0; i < 5; i++) { if (DateTime.TryParse(ss[i].TrimStart("//").Trim(), out dt)) { break; } } // 要求脚本最小更新时间 if (dt >= "2020-02-04 00:00:00".ToDateTime()) { return; } } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX() { Log = XTrace.Log }; wc.DownloadLinkAndExtract(url, "Cube_Content", content, true); }
static void CheckContent() { // 释放ico图标 var ico = "favicon.ico"; var ico2 = ico.GetFullPath(); if (!File.Exists(ico2)) { // 延迟时间释放,给子系统覆盖的机会 TimerX.Delay(s => { if (!File.Exists(ico2)) { Assembly.GetExecutingAssembly().ReleaseFile(ico, ico2); } }, 15000); } // 检查魔方样式 var js = "~/Content/Cube.js".GetFullPath(); var css = "~/Content/Cube.css".GetFullPath(); if (File.Exists(js) && File.Exists(css)) { // 判断脚本时间 var dt = DateTime.MinValue; var ss = File.ReadAllLines(js); for (var i = 0; i < 5; i++) { if (DateTime.TryParse(ss[i].TrimStart("//").Trim(), out dt)) { break; } } // 要求脚本最小更新时间 if (dt >= "2017-12-07 00:00:00".ToDateTime()) { return; } } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX(true, true) { Log = XTrace.Log }; wc.DownloadLinkAndExtract(url, "Cube_Content", "~/Content".GetFullPath(), true); }
///// <summary>自动扫描控制器,并添加到菜单</summary> ///// <remarks>默认操作当前注册区域的下一级Controllers命名空间</remarks> //protected override void ScanController() //{ // base.ScanController(); // var menu = ManageProvider.Menu.Root.FindByPath(AreaName); // if (menu != null && menu.DisplayName.IsNullOrEmpty()) // { // menu.DisplayName = "管理平台"; // menu.Save(); // } //} void CheckContent() { var cube = "~/Content/Cube.js".GetFullPath(); if (File.Exists(cube)) { return; } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX(true, true); wc.Log = XTrace.Log; wc.DownloadLinkAndExtract(url, "Cube_Content", "~/Content".GetFullPath()); }
static void CheckContent() { var js = "~/Content/Cube.js".GetFullPath(); var css = "~/Content/Cube.css".GetFullPath(); if (File.Exists(js) && File.Exists(css)) { // 判断脚本时间 var dt = DateTime.MinValue; var ss = File.ReadAllLines(js); for (var i = 0; i < 5; i++) { if (DateTime.TryParse(ss[i].TrimStart("//").Trim(), out dt)) { break; } } // 要求脚本最小更新时间 if (dt >= "2017-11-27 00:00:00".ToDateTime()) { return; } } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX(true, true) { Log = XTrace.Log }; wc.DownloadLinkAndExtract(url, "Cube_Content", "~/Content".GetFullPath(), true); }
static void CheckContent() { var js = "~/Content/Cube.js".GetFullPath(); var css = "~/Content/Cube.css".GetFullPath(); if (File.Exists(js) && File.Exists(css)) { return; } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX(true, true) { Log = XTrace.Log }; wc.DownloadLinkAndExtract(url, "Cube_Content", "~/Content".GetFullPath(), false); }
/// <summary>检查是否安装了语音库</summary> void CheckVoice() { if (_type == null) { return; } try { var synth = _type.CreateInstance(new Object[0]); var vs = synth.Invoke("GetInstalledVoices") as IList; if (vs != null && vs.Count > 0) { var flag = false; foreach (var item in vs) { if (XTrace.Debug) { XTrace.WriteLine("语音库:{0}", item.GetValue("VoiceInfo").GetValue("Description")); } if ((Boolean)item.GetValue("Enabled")) { flag = true; } } if (flag) { return; } } } catch { } var url = Setting.Current.PluginServer; XTrace.WriteLine("没有找到语音运行时,准备联网获取 {0}", url); var dir = ".".GetFullPath(); if (Runtime.IsWeb) { dir = dir.CombinePath("Bin"); } dir.EnsureDirectory(); var client = new WebClientX(true, true); client.Log = XTrace.Log; var file2 = client.DownloadLinkAndExtract(url, "SpeechRuntime", dir); if (!file2.IsNullOrEmpty()) { // 安装语音库 var msi = "SpeechPlatformRuntime_x{0}.msi".F(Runtime.Is64BitOperatingSystem ? 64 : 86); msi = dir.CombinePath(msi); if (File.Exists(msi)) { XTrace.WriteLine("正在安装语音平台运行时 {0}", msi); "msiexec".Run("/i \"" + msi + "\" /passive /norestart", 5000); } msi = "MSSpeech_TTS_zh-CN_HuiHui.msi"; msi = dir.CombinePath(msi); if (File.Exists(msi)) { XTrace.WriteLine("正在安装微软TTS中文语音库 {0}", msi); "msiexec".Run("/i \"" + msi + "\" /passive /norestart", 5000); } } }
public GCCArmLocation() { #region 从注册表获取目录和版本 if (String.IsNullOrEmpty(ToolPath)) { var reg = Registry.LocalMachine.OpenSubKey(@"Software\ARM\GNU Tools for ARM Embedded Processors"); if (reg == null) { reg = Registry.LocalMachine.OpenSubKey(@"Software\Wow6432Node\ARM\GNU Tools for ARM Embedded Processors"); } if (reg != null) { ToolPath = reg.GetValue("InstallFolder") + ""; if (ToolPath.Contains(".")) { Version = ToolPath.AsDirectory().Name; } WriteLog("注册表 {0} {1}", ToolPath, Version); } } #endregion #region 扫描所有根目录,获取MDK安装目录 if (String.IsNullOrEmpty(ToolPath)) { foreach (var item in DriveInfo.GetDrives()) { if (!item.IsReady) { continue; } var p = Path.Combine(item.RootDirectory.FullName, @"GCCArm\arm-none-eabi"); if (!Directory.Exists(p)) { p = Path.Combine(item.RootDirectory.FullName, @"GCC\arm-none-eabi"); } if (Directory.Exists(p)) { p = p.CombinePath(@"..\").GetFullPath(); var ver = GetVer(p); if (ver.CompareTo(Version) > 0) { ToolPath = p; Version = ver; WriteLog("本地 {0} {1}", p, ver); } } } } #endregion #region 版本更新 if (String.IsNullOrEmpty(ToolPath)) { XTrace.WriteLine("准备下载安装 GCCArm", Version); var url = "http://x.newlifex.com/"; var client = new WebClientX(true, true) { Log = XTrace.Log }; var p = Environment.SystemDirectory.CombinePath("..\\..\\GCCArm").GetFullPath(); var file = client.DownloadLinkAndExtract(url, "GCCArm", p); if (Directory.Exists(p)) { var ver = GetVer(p); if (ver.CompareTo(Version) > 0) { ToolPath = p; Version = ver; } } } #endregion if (String.IsNullOrEmpty(ToolPath)) { throw new Exception("无法获取GCC Arm安装目录!"); } }
public MDKLocation() { #region 从注册表获取目录和版本 if (String.IsNullOrEmpty(ToolPath)) { var reg = Registry.LocalMachine.OpenSubKey("Software\\Keil\\Products\\MDK"); if (reg == null) { reg = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Keil\\Products\\MDK"); } if (reg != null) { var p = reg.GetValue("Path") + ""; var v = reg.GetValue("Version") + ""; var v2 = GetVer(p, false); WriteLog("注册表 {0} {1} {2}", p, v, v2); if (Directory.Exists(p)) { ToolPath = p; Version = v; Version2 = v2; } } } #endregion #region 扫描所有根目录,获取MDK安装目录 //if (String.IsNullOrEmpty(ToolPath)) { foreach (var item in DriveInfo.GetDrives()) { if (!item.IsReady) { continue; } var p = Path.Combine(item.RootDirectory.FullName, "Keil\\ARM"); if (Directory.Exists(p)) { var ver = GetVer(p, false); if (ver.CompareTo(Version + "") > 0) { ToolPath = p; Version = ver; Version2 = GetVer(p, true); WriteLog("本地 {0} {1} {2}}", p, ver, Version2); } } } } #endregion #region 版本更新 if (Version.ToLower().CompareTo("v5.17") < 0) { XTrace.WriteLine("版本 {0} 太旧,准备更新", Version); var url = "http://x.newlifex.com/"; var client = new WebClientX(true, true) { Log = XTrace.Log }; var dir = Environment.SystemDirectory.CombinePath("..\\..\\Keil").GetFullPath(); var file = client.DownloadLinkAndExtract(url, "MDK", dir); var p = dir.CombinePath("ARM"); if (Directory.Exists(p)) { var ver = GetVer(p, false); if (ver.CompareTo(Version) > 0) { ToolPath = p; Version = ver; Version2 = GetVer(p, true); } } } if (String.IsNullOrEmpty(ToolPath)) { throw new Exception("无法获取MDK安装目录!"); } #endregion }
static void CheckContent() { // 释放ico图标 var ico = "favicon.ico"; var ico2 = ("wwwroot/" + ico).GetFullPath(); if (!File.Exists(ico2)) { // 延迟时间释放,给子系统覆盖的机会 TimerX.Delay(s => { if (!File.Exists(ico2)) { //Assembly.GetExecutingAssembly().ReleaseFile(ico, ico2); var asm = Assembly.GetExecutingAssembly(); var ns = asm.GetManifestResourceNames(); var f = ns.FirstOrDefault(e => e.EndsWithIgnoreCase(ico)); if (!f.IsNullOrEmpty()) { var ms = asm.GetManifestResourceStream(f); File.WriteAllBytes(ico2, ms.ReadBytes()); } } }, 1000); } // 检查魔方样式 var js = "wwwroot/Content/Cube.js".GetFullPath(); var css = "wwwroot/Content/Cube.css".GetFullPath(); if (File.Exists(js) && File.Exists(css)) { // 判断脚本时间 var dt = DateTime.MinValue; var ss = File.ReadAllLines(js); for (var i = 0; i < 5; i++) { if (DateTime.TryParse(ss[i].TrimStart("//").Trim(), out dt)) { break; } } // 要求脚本最小更新时间 if (dt >= "2017-12-07 00:00:00".ToDateTime()) { return; } } var url = Setting.Current.PluginServer; if (url.IsNullOrEmpty()) { return; } var wc = new WebClientX(true, true) { Log = XTrace.Log }; wc.DownloadLinkAndExtract(url, "Cube_Content", "wwwroot/Content".GetFullPath(), true); }
static SevenZip() { var p = ""; #region 附近文件 if (p.IsNullOrEmpty()) { var f = "../7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } f = "7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } } #endregion #region X组件缓存 var cache = Path.GetPathRoot(".".GetFullPath()).CombinePath(@"\X\7z").GetFullPath(); if (p.IsNullOrEmpty()) { var f = cache.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } #endregion #region 自动下载 if (p.IsNullOrEmpty()) { XTrace.WriteLine("准备下载7z扩展包"); var url = Setting.Current.PluginServer; var client = new WebClientX() { Log = XTrace.Log }; var dir = cache; var file = client.DownloadLinkAndExtract(url, "7z", dir); if (Directory.Exists(dir)) { var f = dir.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } } #endregion if (!p.IsNullOrEmpty()) { _7z = p.GetFullPath(); } XTrace.WriteLine("7Z目录 {0}", _7z); }
static SevenZip() { var p = ""; #region 附近文件 if (p.IsNullOrEmpty()) { var f = "../7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } f = "7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } } #endregion #region 注册表 #if __WIN__ if (p.IsNullOrEmpty()) { var reg = Registry.LocalMachine.OpenSubKey("Software\\7-Zip"); if (reg == null) { reg = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\7-Zip"); } if (reg != null) { var d = reg.GetValue("Path") + ""; var f = d.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } } #endif #endregion #region X组件缓存 var cache = Path.GetPathRoot(".".GetFullPath()).CombinePath(@"\X\7z").GetFullPath(); if (p.IsNullOrEmpty()) { var f = cache.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } #endregion #region 自动下载 if (p.IsNullOrEmpty()) { XTrace.WriteLine("准备下载7z扩展包"); var url = Setting.Current.PluginServer; var client = new WebClientX() { Log = XTrace.Log }; var dir = cache; var file = client.DownloadLinkAndExtract(url, "7z", dir); if (Directory.Exists(dir)) { var f = dir.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } } #endregion if (!p.IsNullOrEmpty()) { _7z = p.GetFullPath(); } XTrace.WriteLine("7Z目录 {0}", _7z); }
static SevenZip() { var p = ""; #region 附近文件 if (p.IsNullOrEmpty()) { var f = "../7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } f = "7z/7z.exe".GetFullPath(); if (File.Exists(f)) { p = f; } } #endregion #region 注册表 if (p.IsNullOrEmpty()) { var reg = Registry.LocalMachine.OpenSubKey("Software\\7-Zip"); if (reg == null) { reg = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\7-Zip"); } if (reg != null) { var d = reg.GetValue("Path") + ""; var f = d.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } } #endregion #region X组件缓存 var cache = Environment.SystemDirectory.CombinePath(@"..\..\X\7z").GetFullPath(); if (p.IsNullOrEmpty()) { var f = cache.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } #endregion #region 自动下载 if (p.IsNullOrEmpty()) { XTrace.WriteLine("准备下载7z扩展包"); var url = "http://x.newlifex.com/"; var client = new WebClientX(true, true) { Log = XTrace.Log }; var dir = cache; var file = client.DownloadLinkAndExtract(url, "7z", dir); if (Directory.Exists(dir)) { var f = dir.CombinePath("7z.exe"); if (File.Exists(f)) { p = f; } } } #endregion if (!p.IsNullOrEmpty()) { _7z = p.GetFullPath(); } #region DEBUG XTrace.WriteLine("7Z目录 {0}", _7z); #endregion }