版权声明:我的博客我做主! https://blog.csdn.net/lk1822791193/article/details/85197762
在线更新的方法多种多样,在这里我们分享一下我的思路!
本地系统的版本号存在系统额配置文件中,新系统的版本号存在服务的数据库中,通过查询数据库的版本号和本地的版本号进行对比,判断是否更新。
与此同时,在数据库中同时记录下,服务器中文件路径和文件名字(如果有需要,数据库中也可以记录版本更新内容),这样通过一次查询,就得到了你需要的所有信息。
下载更新的代码:
using System.Net;
//调用的WCF服务
using DAL.UpdateServiceTest;
public List<string> SelectUpdatNews()
{
List<string> stringList=null;
//判断用户是否联网
if (NetWorkState.IsNetWorking())
{
//正常联网
//创建WCF服务客户端
UpdateServiceClient client = new UpdateServiceClient();
//接受服务器的版本等信息
stringList = client.SelectVersion();
//返回服务器的版本等信息
}
return stringList;
}
//从服务器中下载新系统安装包
public void DownLoadFile()
{
//数据库返回的更新文件的信息
//SelectUpdateNews是调用的WCF查询服务器新版本文件的信息
//它可以直接通过远程查询实现
List<string> stringList = SelectUpdatNews();
//更新文件的路径
string url = stringList[0].ToString();
//建立连接服务器的客户端
WebClient wc = new WebClient();
// GetCurrentDirectory
// 摘要:获取应用程序的当前工作目录。
// 返回结果:包含当前工作目录的路径且不以反斜杠 (\) 结尾的字符串。
string dir = System.IO.Directory.GetCurrentDirectory();
// Combine
// 将字符串数组组合成一个路径
string fileName = System.IO.Path.Combine(dir, fileName + ".zip");
//连接服务器的用户名和密码
wc.Credentials = new System.Net.NetworkCredential("admin", "Radmin");
//下载文件(路径,文件名)
//路径形式: ftp://192.168.**.***/ftp/最新系统.zip
//文件名形式: 最新系统.zip(可以通过字符串截取获得)
wc.DownloadFile(url, fileName);
// 释放由 System.ComponentModel.Component 使用的所有资源
wc.Dispose();
}
首先解释一下:线程。一大家都知道一个进程包括多个线程(就像一个包里边有多个类一样),一个程序进行时,为了能让程序能进行多个操作,我们就需要在开始一个进行。
为什么要启用多线程,为了给用户更好的用户体验,在程序执行的时候,我们后台自动将需要更新的文件下载到本地,这样的话,用户只需要等待你安装的时间。
public bool IsUpdate()
{
bool flag=false;
string newVersion;
//配置文件中获取系统的版本号
string oldVersion = ConfigurationManager.AppSettings.Get("version");
//获取服务器的版本号
List<string> stringList = SelectUpdatNews();
newVersion = stringList[2].ToString();
//在这里需要判断一下,用户电脑是否联网,没有联网是复发下载的
if(NetWorkState.IsNetWorking())
{
//判断本地系统的版本号和服务器中的版本号是否一致
if (oldVersion == newVersion)
{
flag = false;
}
else
{
flag = true;
}
}
}
//在程序启动的后端代码中
//判断是否新版本更新
if(IsUpdate())
{
//创建一个线程,上边的DownLoadFile方法
Thread thread = new Thread(DownLoadFile());
//开始线程
thread .Start();
}
通过这种方法,就能实现:版本对比,远程下载。(后续还会更新如何解压和替换旧的系统,实现更新)。
小编只是简单总结实现,如有不足,欢迎大神指点!