/// <summary> /// 下载文件 /// </summary> /// <param name="xfi"></param> /// <returns>全部下载完成,返回true</returns> private bool DownloadUpdateFiles(List <XMLFileInfo> xfi) { if (GlobalData.isDebug) { using (var fs = new FileStream("D:\\bnm.txt", FileMode.Create)) { using (var sw = new StreamWriter(fs)) { int i = 0; foreach (var item in xfi) { sw.WriteLine((i++).ToString()); sw.WriteLine("Address:" + item.Address); sw.WriteLine("Install:" + item.InstallPath); } sw.WriteLine("总数:" + i.ToString()); } } } if (ftp != null) { ftp.Dispose(); } //GlobalData.dataXML.IP = GlobalData.localXML.x_FTPAddress; ftp = Utility.CreateFTPDownload(); SetFormUIEvent(); for (int i = 0; i < xfi.Count; i++) { GlobalEvent.WriteLog("下载第" + i.ToString() + "个文件 : " + xfi[i].Name); RundoShowDownloadFileInfo((i + 1).ToString() + "/" + xfi.Count.ToString()); RundoShowFilesCountBar(i, xfi.Count); float f = (float)i / (float)xfi.Count; f = f * 100f; RundoShowFileCountPercent(((int)f).ToString() + "%"); var dP = Path.Combine(GlobalData.dataXML.CurrIP, xfi[i].Address); var sP = Path.Combine(GlobalData.filePath.UpdatePath, xfi[i].Address); var d1 = new FileInfo(sP); if (!Directory.Exists(d1.Directory.FullName)) { Directory.CreateDirectory(d1.Directory.FullName); } GlobalEvent.WriteLog("地址:" + dP); if (!ftp.Download(dP.Replace("\\", "/"), sP)) { ExceptionHandle(ftp.E); i--; } if (isNewUpdate) { break; } } if (ftp != null) { ftp.Dispose(); } return(!isNewUpdate); }
/// <summary> /// 下载Version-C.config文件 /// </summary> private void DownloadVersion_C() { if (ftp != null) { ftp.Dispose(); } GlobalEvent.WriteLog("下载version-C.config"); ftp = Utility.CreateFTPDownload(); SetFormUIEvent(); RundoShowDownloadFileInfo("下载配置文件"); if (File.Exists(GlobalData.filePath.ConfigDataFullPath_Tmp)) { File.Delete(GlobalData.filePath.ConfigDataFullPath_Tmp); } if (File.Exists(GlobalData.filePath.ConfigDataFullPath_Tmp + ".zzfz")) { File.Delete(GlobalData.filePath.ConfigDataFullPath_Tmp + ".zzfz"); } while (!ftp.Download(GlobalData.dataXML.CurrVersionAddr, GlobalData.filePath.ConfigDataFullPath_Tmp)) { Utility.SetException(ftp.E); if (File.Exists(GlobalData.filePath.ConfigDataFullPath_Tmp + ".zzfz")) { File.Delete(GlobalData.filePath.ConfigDataFullPath_Tmp + ".zzfz"); } } if (GlobalData.isFirstUse) { var p = Path.Combine(Directory.GetCurrentDirectory(), "data.config.tmp"); if (File.Exists(p)) { File.Delete(p); } while (!ftp.Download(GlobalData.dataXML.CurrDataAddr, p)) { Utility.SetException(ftp.E); } } ftp.Dispose(); }
/// <summary> /// 如果下载过程中,服务器又发生了更新,则执行 /// 有更新返回true /// <returns></returns> /// </summary> private bool DownladDataAndAnalysisData() { //FTPDownload ftp = new FTPDownload(GlobalData.localXML.x_FtpAccount.Username, GlobalData.localXML.x_FtpAccount.Password); ftp = Utility.CreateFTPDownload(); var p = Path.Combine(Directory.GetCurrentDirectory(), "data.config.tmp"); if (File.Exists(p)) { File.Delete(p); } while (!ftp.Download(GlobalData.dataXML.CurrDataAddr, p)) { continue; } ftp.Dispose(); var dataXml = Utility.ODecode(p).SelectSingleNode("Version"); var ve = dataXml.SelectSingleNode("ClientVersion").Attributes[0].Value; if (GlobalData.webVersion != ve) { GlobalData.webVersion = ve; isNewUpdate = true; GlobalData.localUpdateCarNodesName.Clear(); GlobalData.localUpdateNodesName.Clear(); if (dataXml.SelectSingleNode("UpdateText") != null) { var updates = dataXml.SelectSingleNode("UpdateText").ChildNodes; GlobalData.updateText = new string[updates.Count]; for (int i = 0; i < updates.Count; i++) { GlobalData.updateText[i] = updates[i].InnerText.TrimEnd() + "\n"; } doShowUpdateInfo(""); } try { var v = dataXml.SelectSingleNode("FileHashList").SelectNodes("FileName"); for (int i = 0; i < v.Count; i++) { GlobalData.localUpdateNodesName.Add(v[i].Attributes[0].InnerText.Replace(" ", "")); } } catch { } try { var c = dataXml.SelectNodes("CarModel"); for (int i = 0; i < c.Count; i++) { GlobalData.localUpdateCarNodesName.Add(c[i].Attributes[0].InnerText.Replace(" ", "")); } } catch { } if (!GlobalData.isFirstUse) { doShowVersion(GlobalData.webVersion); } } return(isNewUpdate); }