聚宝盆记账易因为很多页面是云交互的,可以静默升级,因此开始做升级软件的时候并没有怎么用心,而且很多由于都是我自己一个人写的,为了赶工期。升级程序做的特别简单粗暴,就是下载一个主单文件就好了。
但是后来随着aardio语言和miniBlink的不断升级,他们之间难免会产生一些不兼容,按以前的只升级单文件就不行了,会有一些奇奇怪怪的问题,如不能打印等。叫用户自己卸载重装吧,很多用户都偷懒只会重装,不会卸载,如果不卸载直接重装的话,而新的node.dll文件并不会覆盖老的,就有奇怪问题产生了。因此重写个升级程序就很有必要了。
前天晚上下雨,开始动工,搞到晚上一点多,没搞完,接着第二天跟着搞,中间推掉了两个手机维修,一直搞到下午3点多钟才搞好,中间遇到了一些值得注意的,这里来讲一下,方便以后又遇到一样情况的朋友。
先放升级软件界面图吧,并不算漂亮,有的方面也有瑕疵,但这用的低频,先就这样吧。
升级工具核心是直接用的aardio里自带的几个库,
这两个库的作用我也写在注释旁边的,当然,第一步肯定是调用fsys.update.dlMgr进行升级和下载。
对了,升级包如何制作呢?直接用的aardio里面编译软件完成之后自带的那个升级包制作工具制作的,当然,在右侧工具->编码里面也可以单独打开。
先说第一个注意点吧。本意是想晚上一下子把它做完的,当时简单的写了下界面后写到下载文件,怎么都下载不下来,因为很多是多线程的,报错默认也不会弹出来,加上才开始接触update这些库也不熟悉,报错接口也没写,后来写了接口才发现是我的服务器默认没有添加.lzma后缀格式的文件,没添加默认访问肯定就到404页面了,下载不下来。这个是第一个注意点。排除这个问题后就晚上一点多了,想一口气写完的可能不大了。就睡觉了。
第二个注意点。
其实update.dlMgr里面虽然注释不多,但使用方法基本上是按别人调用的顺序来的,直接跟着看跟着走就好。顺着就写完了,这里就到了第二个值得注意的地方,软件能用了,也能升级了,但就是第一次能正常完成,第二次就报错了。如下图,为了这问题我排查了好长时间,甚至一度以为是杀毒软件的干扰。因为这种替换升级的必须要编译出来才能测试,感觉痛苦的很,加上家里的事情有很多,真的是又急又气,下午还要去新江口呢。
没办法后来仔细看源码。发现升级库里升级之前会对默认的文件做个比对,用的是crc32取特征码,比对完后会把日志文件存在一个地方。本来升级前会校检我知道,但我满以为每次测试时只要把本地已有的升级目录删除了就可以再次测试升级了,结果仔细看源码后我发现我天真了,大神写的太科学了,本地文件和云校检的如果是一致的,是不会下载任何东西的,这时候如果强行升级,就会报错。
解决的方法很简单,在下载完成,准备更新那里加个判断就好
updateMain.onEnd = function(updater,saveDir,appDir,mainPath,updateFilesCount){
if(updateFilesCount>0){
大于0则更新,否则提示不用更新。
终于下午3点前完成了,又可以愉快的去干活了。
这里再次感谢aardio的作者。各种各样的库真的太多了,拿来只用,太爽了,大大的缩短了工期。愿aardio越来越好。这里写出来也是让如果同样写这类软件的遇到这种问题就知道一下。
聚宝盆记账易现在的用户也很多了,最主要是推广成功率很高了,推广成功率是给别人讲,别人就会用了,祝大家都越来越好。
来个链接:http://www.jvbaopeng.com/