private void check_ver() { l_ver.Content = m_ver.ver_string; if (m_other_vers.Count > 0) { m_gver = m_other_vers[0]; m_other_vers.RemoveAt(0); l_state.Content = "正在更新版本到 " + m_gver.ver_string; WebClient wc = new WebClient(); if (!Directory.Exists("download")) { Directory.CreateDirectory("download"); } string name = m_gver.file.Substring(m_gver.file.LastIndexOf("/") + 1); wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged); wc.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted); wc.DownloadFileAsync(new Uri(m_gver.file), "download/" + name); l_progress.Value = 0; } else { l_state.Content = "更新完成"; l_start.IsEnabled = true; } }
private void ver_callback(IAsyncResult result) { try { HttpWebRequest request = (HttpWebRequest)(result.AsyncState); StreamReader sr = new StreamReader(request.EndGetResponse(result).GetResponseStream()); string data = sr.ReadToEnd(); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(data); XmlNodeList xnl = xmldoc.SelectNodes("vers/ver"); for (int i = 0; i < xnl.Count; i++) { XmlNode xn = xnl.Item(i); s_ver v = new s_ver(); v.ver_string = xn.Attributes["v"].Value; v.ver = get_ver(v.ver_string); v.file = xn.Attributes["file"].Value; if (v.ver > m_ver.ver) { m_other_vers.Add(v); } } } catch { Dispatcher.BeginInvoke(new Action(() => { l_state.Content = "获取版本信息失败"; MessageBox.Show("获取版本信息失败"); })); return; } Dispatcher.BeginInvoke(new Action(() => { check_ver(); })); }
private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { Dispatcher.BeginInvoke(new Action(() => { string path = m_gver.file.Substring(m_gver.file.LastIndexOf("/") + 1); path = "download/" + path; if (utils.UnZip(path, "./main")) { l_progress.Value = 100; m_ver = m_gver; FileStream fs = new FileStream("ver", FileMode.Open, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Write(m_ver.ver_string); sw.Close(); fs.Close(); check_ver(); } else { l_state.Content = "解压失败"; MessageBox.Show("解压失败"); } })); }