Пример #1
0
        private string Download(string file, AppUpdateInfo info, ProgressDelegate.ProgressHandler progress = null, object sender = null)
        {
            if (info != null)
            {
                switch (info.DownloadMode)
                {
                case 0:    //http 下载
                {
                    if (HttpTool.Download(info.HttpUrl, file, progress, sender))
                    {
                        return(file);
                    }
                }
                break;

                case 1:    //ftp 下载
                {
                    FtpTool ftp = new FtpTool(info.FtpIp, info.FtpAccount, info.FtpPassword);
                    if (ftp.Download(info.FtpFile, file, progress, sender))
                    {
                        return(file);
                    }
                }
                break;
                }
            }
            return(null);
        }
Пример #2
0
 /// <summary>
 /// 下载程序文件
 /// </summary>
 /// <returns></returns>
 bool DownloadFile(string downloadPath)
 {
     if (DirTool.Create(downloadPath))
     {
         FileCodeTool fcode = new FileCodeTool();
         for (int i = 0; i < version.FileList.Count; i++)
         {
             string fileName   = Path.GetFileName(version.FileList[i].File);
             string sourceFile = version.ServerPath + version.FileList[i].File;
             string destFile   = downloadPath + version.FileList[i].File;
             string destPath   = destFile.Substring(0, destFile.Length - fileName.Length);
             if (DirTool.Create(destPath))
             {
                 if (File.Exists(R.AppPath + version.FileList[i].File) &&
                     version.FileList[i].MD5 == fcode.GetMD5(R.AppPath + version.FileList[i].File))
                 {
                     UIDgvFileListUpdate(i, "ColDown", R.cst.FILE_JUMP);
                 }
                 else
                 {
                     FtpTool ftp = new FtpTool(R.FtpIp, R.FtpAccount, R.FtpPassword);
                     if (!ftp.DownloadFile(sourceFile, destPath))
                     {
                         if (!ftp.DownloadFile(sourceFile, destPath))
                         {
                             if (!ftp.DownloadFile(sourceFile, destPath))
                             {
                                 MessageBox.Show("更新文件无法被下载,请检查网络重试,谢谢。", "网络故障");
                                 Step  = 5;
                                 Error = -201;
                                 return(false);
                             }
                         }
                     }
                     UIDgvFileListUpdate(i, "ColDown", R.cst.FILE_SUCC);
                 }
             }
             else
             {
                 UIDgvFileListUpdate(i, "ColDown", R.cst.FILE_FAIL);
             }
             Thread.Sleep(R.cst.WAIT_TIME);
         }
     }
     Step = 3;
     return(true);
 }
Пример #3
0
        /// <summary>
        /// 下载要更新的文件
        /// </summary>
        /// <param name="vm"></param>
        /// <returns></returns>
        private bool UpdateDownload(VersionModel vm)
        {
            FileCodeTool fcode    = new FileCodeTool();
            var          downFile = vm.FileList.Where(x => x.IsClean == false).ToList();

            if (vm != null && ListTool.HasElements(downFile))
            {
                for (int i = 0; i < downFile.Count(); i++)
                {
                    VersionFile file       = downFile[i];
                    string      serverFile = DirTool.Combine(vm.ServerPath, file.ServerFile);
                    string      tempFile   = DirTool.Combine(R.Paths.Temp, DownTemp, file.ServerFile);                                                 //下载到目标位置(带文件名)
                    string      localFile  = DirTool.IsDriver(file.LocalFile) ? file.LocalFile : DirTool.Combine(R.Paths.ProjectRoot, file.LocalFile); //旧文件位置
                    if (fcode.GetMD5(localFile) != file.FileMD5)
                    {
                        UIUpdateDetail("正在下载:" + Path.GetFileName(file.ServerFile));
                        R.Log.v(string.Format("{0} 文件有更新,正在下载文件", Path.GetFileName(file.ServerFile)));
                        FtpTool ftp = new FtpTool(R.Settings.FTP.Address, R.Settings.FTP.Account, R.Settings.FTP.Password);
                        if (!ftp.Download(serverFile, tempFile))
                        {
                            if (!ftp.Download(serverFile, tempFile))
                            {
                                if (!ftp.Download(serverFile, tempFile))
                                {
                                    R.Log.w(string.Format("{0} 文件下载失败", Path.GetFileName(file.ServerFile)));
                                    return(false);
                                }
                            }
                        }
                    }
                    else
                    {
                        UIUpdateDetail("文件已存在:" + Path.GetFileName(file.ServerFile));
                        R.Log.v(string.Format("{0} 文件不需要更新,已跳过该文件", Path.GetFileName(file.ServerFile)));
                    }
                    UIProgress(i + 1, downFile.Count());
                }
                return(true);
            }
            return(false);
        }