Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        ///// <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());
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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);
                }
            }
        }
Пример #7
0
        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安装目录!");
            }
        }
Пример #8
0
        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
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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
        }