Пример #1
0
        /// <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);
        }
Пример #2
0
        protected override void ExceptionHandle(Exception e)
        {
            Thread.Sleep(1000);  //****出现异常后,延迟1秒后,在处理异常
            var eType = Utility.SetException(e);

            switch (eType)
            {
            case Utility.EcpType.Normal:
                break;

            case Utility.EcpType.Null:
                break;

            case Utility.EcpType.AddressError:
                break;

            case Utility.EcpType.Disconnect:
                RundoShowDownloadFileInfo(Utility.E_Disconnect);
                RundoShowRemainTime(null);
                RundoShowDownloadSpeed(null);
                CheckInternet(3);
                break;

            case Utility.EcpType.LimitConnect:
                GlobalData.dataXML.CurrIndex++;
                doShowDownloadFileInfo(Utility.E_LimitConnect + ":" + GlobalData.dataXML.CurrIndex.ToString() + "号");
                System.Windows.Forms.Application.DoEvents();
                Utility.Delay(2);     ///**********延迟
                break;

            case Utility.EcpType.SerDisconnect:
                doShowDownloadFileInfo(Utility.E_SerDisconnect);
                break;

            case Utility.EcpType.ReceiveError:
                doShowDownloadFileInfo(Utility.E_ReceiveError);

                break;

            case Utility.EcpType.ErrorPw:
                ftp = new FTPDownload("anonymous", "*****@*****.**");
                break;

            case Utility.EcpType.FileNotFound:
                //isNewUpdate = true;
                break;

            default:
                //System.Windows.Forms.MessageBox.Show("未知错误");
                doShowDownloadFileInfo(e.Message);
                GlobalEvent.SaveDebugLog();
                Environment.Exit(0);
                break;
            }
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        /// <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);
        }