桌面应用程序自动检测更新

4 篇文章 0 订阅
3 篇文章 0 订阅

简介

我们编写的桌面 APP ,只要发送给客户那么以后再想更新就需要通过 QQ 、邮箱或者其他方式传送源程序,让客户下载、替换,麻烦不说而且用户体验相当不好。

现在有一种方式,应用程序打开后,通过到服务器下载最新安装程序的配置文件,和本地文件版本做一次对比,如果服务器端的程序版本更新,则提示用户下载并更新本地程序!

所需组件

  • 客户端程序: C#
  • 服务器: Apache
  • 后端程序: PHP
  • 后台应用管理:浏览器 chrome
  • 前端程序: html css JavaScript
  • 前后端交互方式: AJAX
  • 前后端数据交互: JSON
  • 其他:域名,VPS 主机

虽然是一个 app 应用更新,但是包含的组件挺多的。

步骤

思路

首先,规划一下总体思路。要想自动更新应用程序,首先需要有一个服务器可以在外网访问,这样就需要一个VPS 主机,我选择的是 搬瓦工

有了主机空间和固定的 IP 地址,但是访问方式不够友好,你是希望记住一串 IP 地址还是更加友好的域名呢?毫无疑问的,我们更喜欢域名访问。我在 GoDaddy 上面购买的域名 muasy.com

有了域名,你需要域名解析,我们选择 DNSPod ,将域名解析到我们 VPS 主机。

然后是搭建服务器,在 VPS 上面,我们使用的操作系统是 CentOS ,需要在 VPS 上编译 Apache 、配置、启动。

服务器搭建完成后,需要添加 PHP 模块,用来支持前台发出的请求。

前台需要一个浏览器 Chrome ,而 html css js 都可以被浏览器解析!

所有的上述工作做完,最后我们需要编写一个桌面 app ,用来从服务器下载更新文件!

后台服务管理页面

通过访问域名 xgmanager.muasy.com ,进入网站!

网站所有的页面,静态文件使用 html ,样式使用 css ,这样只是一个肉体,点击按钮,点击下拉列表等功能需要借助于 JavaScript 实现。

前后端的交互最开始使用 htmlform 表单,但是这种设计会导致页面跳转,影响用户体验。修改为使用 Ajax(异步的JavaScript与XML技术) ,核心是使用 XMLHttpRequest 对象,通过设置回调函数,在服务器返回响应数据后,进行后期处理!

前后端交互的数据形式使用 JSON(JavaScript Object Notation) ,这是一种轻量化的 XML 文件格式,其实就是一些键值对的集合!

用户登录

这里写图片描述

用户登录界面,用户名和密码存储在后台 MySQL 中,并未提供注册功能,设计的初衷就是为了管理员登录后管理后台程序!

主页

这里写图片描述

主页面是进入其他页面的入口,包含多个超链接!

上传

这里写图片描述

文件上传功能,用户需要将项目使用 zip 打成压缩包形式

  • 项目名称:区分大小写,该名称需要和待升级的应用程序名称相同,形如:XGHelper
  • 版本号:必须为 4 位!形如:1.0.0.0
  • 版本日志:当前版本的升级内容

填写完毕,选择 *.zip 压缩文件,点击上传即可!

下载

这里写图片描述

该页面自动检测最新上传的软件版本,当用户点击 download 按钮时,浏览器自动下载!

管理

这里写图片描述

网站支持管理多个项目,多个版本,可以删除任意版本,显示当前版本日志内容!

关于

这里写图片描述

显示描述信息!

桌面升级程序

桌面端升级程序,使用 C# 编写

APPUpgrade.exe

这里写图片描述

将程序设计为接收外部参数启动方式,这样做的好处是灵活性高,任何其他语言写的程序调用这个 APP ,都可以升级自己。

版本比较

每次上传新版本后,都会在服务器端更新一下配置文件,APPUpgrade.exe 打开后,默认会到服务器获取配置文件,目前使用 json 文件,需要使用外部库 Newtonsoft.Json.dll 。在配置文件中找到最新的版本号,如上图:1.0.0.4 ,再和本地应用程序的文件版本进行比较,如果服务器端版本比较新,则弹出窗口从服务器下载最新的文件到本地的 download 目录。

冲突检测

在更新本地文件过程中,遇到最多的问题是本地文件被占用,像 exedll 等 。因此,在升级之前需要判断文件是否被占用!由于从服务器下载的文件为压缩包,我们使用外部库 ICSharpCode.SharpZipLib.dll 解压,其实文件更新本质上就是解压文件夹的过程。在解压之前,首先判断解压缩的位置所在的文件是否被占用,如果被占用,提示用户并终止程序运行。如果没有占用,先删除与压缩包内同名的文件,再解压到本地生成新的文件!

解压完成,提示用户程序更新完毕!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值