很多朋友开发好程序,又需要时间去开发升级模块,比较麻烦,我在这里给出一个通用升级工具的解决方法。
首先,我们考虑下对这个升级程序或模块的要求,主要是通用性和便捷性这两点;在这里,我忽然想到了网络游戏的更新程序,发现它非常不错,我们可以像它一样,由主程序调用独立的LiveUpdate程序,对自己进行升级,这样就解决了通用性的问题,具体如何做呢?我们可以利用EXE文件参数的方法来实现,也就是给程序添加运行参数。
功能描述:通过参数和配置文件的形式,实现文件更新,采用HTTP协议,可方便的集成到软件中或用于文件升级。
缺点描述:配置时需要手工设置,不是断点续传,单线程。
特别说明:程序会自动开户下载任务,没有设置自动关闭的,可在下载后手工再点更新键下载一次。
参数描述:LiveUpdate 配置文件地址 是否自动关闭 需要执行的文件(只支持一个文件)
具体例子:
自动下载、关闭、启动|LiveUpdate http://localhost/outcall/liveupdate.ini 1 c:\smallarmy.exe
自动下载、关闭|LiveUpdate http://localhost/outcall/liveupdate.ini 1
自动下载|LiveUpdate http://localhost/outcall/liveupdate.ini
配置文件:注意FileTime这个项目,必须是yyyy-MM-dd hh:mm:ss,升级时只比较到秒的十位,个位不比较。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
LiveUpdate开发过程:
首先找一些图片和图标资源,主要是与下载有关的即可;然后在Delphi中新建一个工程,在窗口上添加一个ListView用来显示下载项,两个ProgressBar用来显示总进度和下载项进度;由于考虑的是http方式,这个方式也比较方便,只需找个web空间就行,所以,在Delphi中,我们采用自带的indy组件包中的idHttp组件;在窗口中添加IdHttp和IdAntiFreeze各一个;IdHttp组件,用到两个事项,分别是WorkBegin和Work,主要是处理进程条的显示,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
在listview上,我们添加几列内容,分别是图标列、文件、版本、日期、地址、路径,分别调整下宽度,后面地址和路径两列宽度为0,进行隐藏,这是用来保存下载项的放置目标地址和下载地址的;接下去我贴上主要的处理代码:
格式化文件修改日期的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
下载处理代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
|
其他关于界面美化什么的,不再描述。完成后,就可以直接在各个项目中引用它,而无需每个项目都去开发升级程序或模块了。