基于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         }
时间: 2024-10-09 17:10:22

基于C/S模式的程序更新-下载的相关文章

基于C/S模式的程序更新-启动

根据不同需求,启动更新过后的程序 ①关闭更新程序,启动主程序 1 System.Diagnostics.Process.Start(exePath + @"\GreenStarMES.exe"); 2 this.Close(); ②启动主程序,不关闭更新程序,当主程序关闭时,同步关闭更新程序 1 System.Diagnostics.Process.Start(exePath + @"\GreenStarMES.exe").WaitForExit(); 2 this

基于C/S模式的程序更新-解压

主要是利用开源dll----SharpCompress.dll 1 using (Stream stream = File.OpenRead(exePath + @"\Update.RAR")) 2 { 3 var reader = ReaderFactory.Open(stream); 4 while (reader.MoveToNextEntry()) 5 { 6 if (!reader.Entry.IsDirectory) 7 { 8 //Console.WriteLine(re

基于libUSB的USB设备固件更新程序(下载数据)(转)

源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libUSB-Win32给出的example里面,有一个bulk.c文件,分析其关键代码,结合libusb官方文档,摘出其关键代码如下: int main(void) { usb_dev_handle *dev = NULL; /* the device handle */ usb_init(); /* i

微信小程序最新版本已更新下载(1.02.1805160)

微信小程序最新版本已更新下载(1.02.1805160) windows 64 . windows 32 . mac 2018.05.16 基础库更新(2.0.8) 1.仅针对开发工具,更新小程序/小游戏转发相关接口,移除转发回调 2018.05.15 基础库更新(2.0.7) A 新增 素材管理功能 详情 A 新增 工具栏右键进行工具栏管理 详情 A 新增 独立窗口显示模拟器和调试器的功能 详情 A 新增 可以在工具栏切换小程序模式和插件模式 A 新增 小程序使用的插件有更新时,在控制台提示插

Android程序版本更新--通知栏更新下载安装(转)

Android应用检查版本更新后,在通知栏下载,更新下载进度,下载完成自动安装,效果图如下: 检查当前版本号 AndroidManifest文件中的versionCode用来标识版本,在服务器放一个新版本的apk,versioncode大于当前版本,下面代码用来获取versioncode的值 PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); int

微信小程序最新版本已更新下载 (1.02.1806080)

下载地址如下: windows 64 . windows 32 . mac 2018.06.08 更新日志 A 新增 自动预览功能 A 新增 远程调试 Network 面板 A 新增 模拟器静音功能 A 新增 代码断点检测及提示 A 新增 支持插件页面 A 新增 上传插件时推荐版本号 A 新增 Storage 面板清除按钮及数据详情展示 A 新增 项目详情 appid 复制按钮 F 修复 Win10 1803 版本出现自动编译的问题 win10 更新到1803后 频繁自动重新编译,上一个开发工具

企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)

前言: 原理与思想 这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性.健康性与易配性.这里做的是两服务器A,B各有Mysql实例3310,两个实例间互为主从 主从复制模式采用GTID主从复制模式,在服务器A,B上配置keepalived负载均衡,通过VIP连接数据库,目的是一旦有某数据库宕机,keepalived 就会立即建VIP执行另外一台 健康的数据库实例上,实现快速切换,避免单点故障,从而保证业务的正常运行. 这里只做了 双主+keepalived  ,

基于C/S模式的android手机与PC机通信系统的开发

原文链接: http://blog.csdn.net/nupt123456789/article/details/8213486 基于C/S模式的android手机与PC机通信系统的开发 作者:郑海波 单位:南京邮电大学 通信与信息工程学院 信号与信息处理 6班 学号:1012010638 邮箱:[email protected] -----------------------------------------------------------------------------------

第五篇:本人多年来积累的单片机程序 资料下载(绝对干货,内附下载链接)

首先打个广告:如果需要做毕设以及嵌入式项目合作,欢迎进入我们工作室:创想嵌入式设计工作室 本人搜集的大量单片机源码资料及毕业设计资料,足有1200+套,很多实用的demo源码和毕业设计参考方案,可用于做项目时借鉴,博尾附有下载链接.(内附本人联系方式,可一起交流探讨,交朋友) 为了方便 查找,我已将项目源码的目录整理出来了,方便 采用"ctrl +F"快速查找验证是否有需要的demo.可以一键打包下载,也可只下载需要的demo. 下载链接内附本人联系方式,如果在安装过程中遇到问题,可以