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(把#换成@)