/// <summary>下载</summary> /// <returns></returns> public async Task <Boolean> DownloadAsync() { var set = NewLife.Setting.Current; //var client = new WebClientX //{ // Log = XTrace.Log //}; //var links = client.GetLinks(set.PluginServer); //var lnk = links.First(e => e.Name.EqualIgnoreCase("Gtk")); //var file = client.DownloadLink(set.PluginServer, "Gtk", GtkRoot); var file = await DownloadLinkAsync(set.PluginServer, "Gtk", GtkRoot); var link = new Link(); link.Parse(file); XTrace.WriteLine("版本:{0}", link.Version); //client.DownloadLinkAndExtract(set.PluginServer, "Gtk", gtk, true); GtkPath = GtkRoot.CombinePath(link.Version + ""); Version = link.Version; Extract(file, GtkPath, true); return(true); }
/// <summary>检查是否安装有GTK运行时</summary> /// <returns></returns> public Boolean Check() { // 只处理Windows if (!Runtime.Windows) { return(true); } // LOCALDATA if (GtkRoot.IsNullOrEmpty()) { var data = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); GtkRoot = data.CombinePath("Gtk").GetFullPath(); } //XTrace.WriteLine("查找GTK运行时:{0}", GtkRoot); var di = GtkRoot.AsDirectory(); if (!di.Exists) { return(false); } var dis = di.GetDirectories(); if (dis == null || dis.Length == 0) { return(false); } //var gtk = dis.OrderByDescending(e => e.Name).FirstOrDefault(); //GtkPath = gtk.FullName; //Version = new Version(gtk.Name.TrimStart('v', 'V')); foreach (var item in dis) { var gtk = item.FullName.CombinePath("libgdk-3-0.dll"); if (File.Exists(gtk)) { GtkPath = item.FullName; try { Version = new Version(item.Name.TrimStart('v', 'V')); } catch { } break; } } if (GtkPath.IsNullOrEmpty()) { return(false); } XTrace.WriteLine("发现GTK运行时:[{0}] {1}", Version, GtkPath); return(true); }