• 基于C/S模式的程序更新下载


    思路:

    ①检查是否需要更新(通过数据库获取最新版本号和本地版本号进行比对(本地版本号可存在txt文件中,需要进行一定程度上的加密和解密操作))

    ②从指定目录下载最新版本的程序覆盖本地文件(下载的文件时压缩文件)

    ③将压缩文件进行程序内解压缩(有可能客户电脑未安装压缩软件,所以只能通过程序本身来进行解压)

    ④解压完成后调用主程序

    实现:

    下载:WebClient

     1 if (webClient.IsBusy)//是否存在正在进行中的Web请求
     2             {
     3                 webClient.CancelAsync();
     4             }
     5             //为webClient添加事件
     6             webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
     7             webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
     8             //开始下载
     9             string path = exePath + @"\Update.RAR";
    10             webClient.DownloadFileAsync(new Uri(this.txtFilePath.Text), path);
     1  private void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
     2         {
     3 
     4             this.progressBar1.Value = e.ProgressPercentage;
     5             this.lbl_pro.Text = e.ProgressPercentage.ToString() + "%";
     6             this.lbl_detail.Text = string.Format("Downloading....,{0}/{1}(byte)"
     7                                 , e.BytesReceived
     8                                 , e.TotalBytesToReceive);
     9             if (e.TotalBytesToReceive == e.BytesReceived)
    10             {
    11                 this.lbl_detail.Text = ("DownLoad success.Update now, wait a second!");
    12             }
    13         }
     1  private void webClient_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
     2         {
     3             if (e.Cancelled)
     4             {
     5                 DevExpress.XtraEditors.XtraMessageBox.Show("Download is canceled!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
     6                 return;
     7             }
     8             else
     9             {
    10 
    11                 if (this.lbl_detail.Text == ("DownLoad success.Update now, wait a second!"))
    12                 {
    13                     Thread t = new Thread(//实际上进行更新的方法);
    14                     CheckForIllegalCrossThreadCalls = false;
    15                     t.Start();
    16                 }
    17 
    18             }
    19         }
  • 相关阅读:
    Sublime Text 3065
    FBX .NET
    macbook pro的usb串口失效的的处理方法
    CMAKE使用
    Ctrl+Scroll改变所有Editor的缩放比例 (Code::Blocks)
    如何在Mac OSX 10.10上安装GDB
    yum安装指定(特定)版本(旧版本)软件包的方法
    MinGW: TOO MANY SECTIONS issue
    轻量级Image Library
    CodeLite的姿势
  • 原文地址:https://www.cnblogs.com/JoeyZJ/p/5653252.html
Copyright © 2020-2023  润新知