C# Winform自动更新

在Unity里面,有XLua,ILRuntime 这样的热更新框架,Unity和Winform不同之处是,Unity生成的项目,哪怕是Windows平台,根本不必关闭程序才能进行更新,但是Winform项目必须关闭程序才进行下载替换,在Winform平台目前还没看到什么好的开源框架,于是我自己动手写了一个

效果如下:

代码暂时不上传了,后续我会更新代码上来,大概步骤如下

1.新建需要更新的软件

随便创建一个Winform项目,界面随意弄一个,在软件中设置版本号

C# Winform自动更新_第1张图片

2.更新文件夹列表生成器

我们知道,在Winform生成项目后,文件不止一个,还可能会存在多个文件夹,但是有的文件是不需要更新,这里的问题是,如何要区分文件是否需要更新呢,于是我需要一个更新文件生成器,用来生成文件列表,和文件的哈希值,当前软件的版本号,每次客户端启动器一打开就联网判断是否需要更新版本。

更新文件生成器界面如下,将最新的软件文件放到服务器一个固定的文件夹,然后用更新文件生成器就可以生成文件列表等数据了

C# Winform自动更新_第2张图片

不过json文件是加密的,直接是看不出里面有什么的,这个需要在客户端软件启动器中进行解密。

C# Winform自动更新_第3张图片

加密json如下图

这里加密了文件列表也是为了传输的安全。另外也可以加一些文件完整性校验,这个功能我暂时没加。

3.搭建更新服务器

服务器可以使用软件来实现,不用的时候就关掉,在测试的时候,我们不必使用 IIS 这样的服务器,配置起来太麻烦了,软件名如下图

C# Winform自动更新_第4张图片

搭建软件服务器,主要有两个功能,

1.主要就是让客户端在启动的时候,判断是否需要更新,

2.当需要更新的时候,主动从服务器下载需要更新的文件

4.软件启动器

软件启动器作用是

1.判断是否需要更新,

2.判断当前客户端文件哈希值,和服务器文件夹的哈希值是否一致

3.根据需要执行:下载,覆盖,删除 任务。

4.完成了文件基本操作,启动客户端本体(这里可以设置客户端只能有软件启动器打开)

C# Winform自动更新_第5张图片

 只要打开软件启动器,就能自动判断是否需要更新了,如果需要更新,会自动下载文件到本地,下图就是更新好的文件了,如有重复,会自动覆盖。

C# Winform自动更新_第6张图片

end

你可能感兴趣的:(C#,Winform,c#)