NSIS:应用软件自动升级功能的探索与实践

原文 NSIS:应用软件自动升级功能的探索与实践

记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能

(详细http://www.flighty.cn/html/soft/20110106_108.html)

但那个QUpdater毕竟不是自己写的,用起来不怎么放心,关键是其开发者对程序进行了各种限制。

现在,轻狂用NSIS来实现软件自动升级功能,有兴趣的同学可以共同探讨。

 

本文为原创文章,转载请注明出处和链接!(鄙视一下COPY帝……)

 

实现过程:

1、搭建一个HTTP环境,放置升级安装包文件(少轻狂.exe,关于这个升级安装包怎么写,请参考NSIS:制作软件升级安装包http://www.flighty.cn/html/bushu/20100208_20.html)和版本记录文件(up.txt,其中记录了版本号和少轻狂.exe的MD5值);或者把升级安装包文件文件和版本记录文件放在互联网空间中,只要在浏览器中键入地址可以直接下载即可。

2、运行本地机器中用NSIS写的up.exe,自动根据升级服务器配置文件(upserver.txt)中指定的服务器地址(这个地址可以自行更改以便更广泛的适用)下载版本记录文件(up.txt)到本地,将up.txt中的版本(或MD5)与本地机器中软件的版本(或MD5)进行比对,不一致则自动下载少轻狂.exe,下载完成后将up.txt中记录的MD5值与下载到的少轻狂.exe的MD5值进行比对,如果一致则自动运行升级,否则删除少轻狂.exe以免运行了错误的安装包。

 

实现图示:

演示程序与上述实现过程稍有区别,请注意。不过整体思路是一致的。

下载配置文件失败的提示

演示程序为了方便查看是否已经升级,先打开旧文件(实际应用中因为需要静默运行,故无此步骤,此为演示截图。)

比对软件MD5(实际应用中因为需要静默运行,故不会显示此消息,此为演示截图。)

升级完成提示

打开新版本文件

至此整个升级过程完成。

 

如果再次运行升级程序会提示无需升级了(实际应用中因为需要静默运行,故不会显示此消息,此为演示截图。)

 

应用扩展:

客户网络环境如下:有N个分店,每个分店的服务器可以连接互联网,但基于安全和维护方面的考虑,限制了分店客户端连接互联网。

根据此环境,扩展如下:各个分店服务器的down.exe从源升级服务器(或者网站)判断是否有更新,如果有则将升级文件下载到分店服务器的HTTP环境中,分店客户端的up.exe从分店服务器判断是否有更新,如果有则下载到客户端机器进行更新。

这样做的好处:

1、有效减轻源升级服务器(或者网站)下载压力,节省带宽。

2、由于分店客户端的升级是在局域网内进行,下载速度会非常快,而且大大减少文件下载失败或下载的文件MD5不一致的问题。

 

付费定制:

此源码出售(提供升级程序up.exe的源码、自动下载升级文件到HTTP环境down.exe的源码、HTTP环境搭建程序安装包、简单使用说明文件)

也可以根据要求进行一定的付费定制(付费定制不提供源码,只提供编译好的程序)

有意者请与我联系softsetup#qq.com(把#换成@)

 

演示程序:

下载解压后运行文件夹中的up.exe即可查看演示效果。

posted on 2014-04-08 15:56 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3652195.html

通用自动更新NSIS安装包程序 检查本地的配置版本服务器配置的版本, 如果服务器比较新则进行下载并更新文件. 注意: 需要结合NSIS安装包进行安装. 升级时采用/S静默安装方式进行安装. 配置中, "name"属性指定的应用程序, 将最后被安装. 程序目前只支持更新一个主程序和一个插件程序, 其他功能自行完善 带源码, 带完整配置文件, 各项主要设置均可通过配置文件修改, 并包含程序逻辑简要描述说明文件. 功能不复杂, 主要是不想重复开发. 7. 程序逻辑: a. CommonAutoUpdate启动后, 将检查和加载本地配置文件, 加载成功后, 将判断"run"中指定的程序是否正在运行. 如果在运行, 则给出错误提示后, 退出更新程序; b. 如果"run"中的程序没有在运行, 则根据svrurl + "/commonAutoUpdate.xml" 地址, 加载服务器上的配置文件; c. 在加载配置文件过程中, 任何的异常, 均会提示"检查自动更新失败, 请稍后再试", 并退出; (不会启动"run"中配置的文件) d. 如果加载成功, 则会对比本地"version"中的版本号服务器"cv"节点中的"v"属性的版本号; e. 如果服务器版本号小于或等于本地版本号, 则不进行更新, 直接运行"run"中指定的程序, 并传递"cau"参数作为标记; f. 如果服务器版本号大于本地版本号, 则会显示提示更新的界面, 在点击确定按钮后, 开始下载服务器"cv"节点中的"p"属性指定的文件; g. 待下载完成, 则会退出, 并运行下载的安装包进行安装.
检查本地的配置版本服务器配置的版本, 如果服务器比较新则进行下载并更新文件. 注意: 需要结合NSIS安装包进行安装. 升级时采用/S静默安装方式进行安装. 配置中, "name"属性指定的应用程序, 将最后被安装. 程序目前只支持更新一个主程序和一个插件程序, 其他功能自行完善 带源码, 带完整配置文件, 各项主要设置均可通过配置文件修改, 并包含程序逻辑简要描述说明文件. 功能不复杂, 主要是不想重复开发. 7. 程序逻辑: a. CommonAutoUpdate启动后, 将检查和加载本地配置文件, 加载成功后, 将判断"run"中指定的程序是否正在运行. 如果在运行, 则给出错误提示后, 退出更新程序; b. 如果"run"中的程序没有在运行, 则根据svrurl + "/commonAutoUpdate.xml" 地址, 加载服务器上的配置文件; c. 在加载配置文件过程中, 任何的异常, 均会提示"检查自动更新失败, 请稍后再试", 并退出; (不会启动"run"中配置的文件) d. 如果加载成功, 则会对比本地"version"中的版本号服务器"cv"节点中的"v"属性的版本号; e. 如果服务器版本号小于或等于本地版本号, 则不进行更新, 直接运行"run"中指定的程序, 并传递"cau"参数作为标记; f. 如果服务器版本号大于本地版本号, 则会显示提示更新的界面, 在点击确定按钮后, 开始下载服务器"cv"节点中的"p"属性指定的文件; g. 待下载完成, 则会退出, 并运行下载的安装包进行安装.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值