纠纷奇闻作文社交美文家庭
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

nw。js桌面程序自动更新(node。js表白记)

6月14日 无镇楼投稿
  
  HelloGoogle
  Node。js一个基于GoogleV8的JavaScript引擎。
  一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情感的技术吧!
  
  注:
  光阴似水,人生若梦,又是人间年尾。许久未说过如此矫情而生硬的话
  如此篇幅实在无法写明白我扭曲的心理,2017望我还能继续迈进!
  喜庆的话不多说,今天给大家分享一个大致3周前,初次涉足Node。js实现的nw。js桌面程序的自动更新模块吧。
  本文不做教学,仅用于打脸!希望以此得到各位大神的帮助。
  我本没有打算写如此博客来误人子弟,这里感谢老毕()
  下面说的这个模块是基于angular。js的,如此粗鄙的几行代码,还望各位同仁瞄眼之后便使劲的喷!
  
  一、机制分析
  此机制的优劣性暂且不议,这仅是目前我唯一能想到的!
  已经说了太多无聊的话,这个机制我就画个简单的草图来呈现吧。
  从图中不难看出,我所谓的这个自动更新机制其实仅4步而已:
  1。确定本地版本号与远端版本号
  2。检测版本与平台
  3。判断版本差异性
  4。是否存在差异的进一步处理
  
  
  二、模块实现
  
  1。模块依赖
  fsrequire();pathrequire();requestrequire();childprocessrequire();
  以下为依赖模块的简要释义:
  fs:node。js文件系统模块
  path:node。文件路径模块
  request:node。jshttp模块
  childprocess:node。js子进程模块
  
  2。版本对比(使用文件读写模块对本地版本号的写入与更新)
  compareVer:function(RequestUrl){varremoteURLRequestUvardeferredq。defer();fs。readFile(path。join(nwDir,version。),function(err,data){if(err){fs。writeFile(path。join(nwDir,version。),0。0。1,function(err){if(err)});alert(系统检测到重要文件丢失,请手动重启应用!);
  process。exit(0);}else{version。localVhttp。get(remoteURL)。success(function(items){if(items。code200){version。remoteVeritems。data。varisUpdateversion。localVversion。remoteVversion。localVer!version。remoteVer?true:items。isUpdateisUif(isUpdate){fs。writeFile(path。join(nwDir,version。),version。remoteVer,function(err){if(err)});}deferred。resolve(items);}})。error(function(data,status,headers,config){alert(程序初始化失败,请检查网络连接!);});}});returndeferred。},
  
  3。执行升级(使用http模块对差异版进行下载并执行文件流写入操作)
  update:function(DownloadUrl,total){request(DownloadUrl,function(error,response){if(!response。statusCode200){angular。element(。)。html(升级完成);angular。element()。html(100);interval。cancel(timer);vart3;varintervalinterval(function(){angular。element(。)。html(自动重启);angular。element()。html();if(0){win。hide()childprocess。exec(file,function(err,stdout,stderr){process。exit(0);});interval。cancel(interval);}},1000)}})。pipe(fs。createWriteStream(file));vartimerinterval(function(){varloadedfs。statSync(file)。varpercentCvardownloadProgress(percentComplete100)。toFixed(1);angular。element()。html(downloadProgress);},100);}
  
  
  4。无差异性处理(隐藏主进程并创建子进程)
  normal:function(){win。hide();childprocess。exec(file,function(err,stdout,stderr){process。exit(0);});},
  
  三、完整模块代码
  nw。js桌面程序自动更新Author:BGONLINE20161229(function(angular,factory){if(define。amd){define(,〔〕,function(angular){returnfactory(angular);});}else{returnfactory(angular);}}(?null:angular,function(angular){varmoduleangular。module(bgoU,〔〕);;。factory(bgoAutoU,〔,,,,function(http,q,interval,timeout){varversion{localVer:,remoteVer:}varfsrequire();varpathrequire();varrequestrequire();varchildprocessrequire();varnwPathprocess。execPvarnwDirpath。dirname(nwPath);varfilepath。join(nwDir,current。);return{normal:function(){;varintervalinterval(function(){。;angular。element()。html(str);if(str。3){win。hide()childprocess。exec(file,function(err,stdout,stderr){process。exit(0);interval。cancel(interval);});}},1000)},compareVer:function(RequestUrl){varremoteURLRequestUvardeferredq。defer();fs。readFile(path。join(nwDir,version。),function(err,data){if(err){fs。writeFile(path。join(nwDir,version。),0。0。1,function(err){if(err)});layer。alert(系统检测到重要文件丢失,请手动重启应用!,{closeBtn:0,icon:5,shade:0},function(){layer。closeAll();process。exit(0);});}else{version。localVhttp。get(remoteURL)。success(function(items){if(items。code200){version。remoteVeritems。data。varisUpdateversion。localVversion。remoteVversion。localVer!version。remoteVer?true:items。isUpdateisUif(isUpdate){fs。writeFile(path。join(nwDir,version。),version。remoteVer,function(err){if(err)});}deferred。resolve(items);}})。error(function(data,status,headers,config){layer。msg(程序初始化失败,请检查网络连接!,function(){});});}});returndeferred。},update:function(DownloadUrl,total){request(DownloadUrl,function(error,response){if(!response。statusCode200){angular。element(。)。html(升级完成);angular。element()。html(100);interval。cancel(timer);vart3;varintervalinterval(function(){angular。element(。)。html(自动重启);angular。element()。html();if(0){win。hide()angular。element(。)。html(学籍系统保护模块);angular。element()。html(请勿关闭!);childprocess。exec(file,function(err,stdout,stderr){process。exit(0);});interval。cancel(interval);}},1000)}})。pipe(fs。createWriteStream(file));vartimerinterval(function(){varloadedfs。statSync(file)。varpercentCvardownloadProgress(percentComplete100)。toFixed(1);angular。element()。html(downloadProgress);},100);}}}〕)}));
  
  四、模块调用
  App。controller(UpdateC,〔rootS,,bgoAutoU,function(rootScope,scope,bgoAutoUpdate){bgoAutoUpdate。compareVer(rootScope。rootUindexlogingetVersion?process。platform)。then(function(res){判断版本scope。isUpdateres。isUif(scope。isUpdate){bgoAutoUpdate。update(res。data。fileUrl,res。data。fileSize,res。data。version);执行更新}else{bgoAutoUpdate。normal();}});}〕);
  如此可爱的node。js,感谢Google!
  
投诉 评论 转载

维修案例:主板开机10秒掉电故障昨天下午拿到一台某公司拿来的一台电脑主板,故障是不开机,按我们的故障定型为能触发点不亮,开始动手维修,拆下主机箱侧板,上电检测,现象是这样的,按开机键,CPU散热风扇转一下过1……nw。js桌面程序自动更新(node。js表白记)HelloGoogleNode。js一个基于GoogleV8的JavaScript引擎。一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情……电脑?优化故障维护14电脑办公优化故障维护电脑设计系统上网安全优化故障维护办公软硬件电脑教程图片素材其它路由器tplink8……笔记本几大部件维修(上)引言笔记本电脑由于其结构的特殊性,决定了其维修的复杂性。但笔记本电脑终究是电脑的一种,它的维修原理与普通台式机是基本相同的。如果你是一位笔记……只知道增大内存来提速吗?别逗了,主要看设。。。?每天定时推送电脑使用技巧、电脑硬件维护维修等优质文章。维修界最接地气、重服务的微信平台!关注我们妥妥没错!(微信号:weixiuhao123)为何你的电脑总是慢!……笔记本电脑进水不用慌,这几步作对了就能还魂当你勇者笔记本电脑正专心工作时,不小心手一甩碰到了旁边的茶杯,裡面的饮料就以迅雷不及掩耳之式整杯洒在上面,相信不少人都遇到这种情况,但多数人却不知道该怎样紧急处理,只能眼睁睁地……关于电脑主板的小小闲谈说在前面的话:说到主板,其实分为2种,大板跟小板,然而它们只有外观的区别,然后就是扩展插槽的区别大板扩展能力好点,升级非常方便,同等芯片组的情况下性能是没有区别的。……笔记本电脑维修常识四大方面18个技巧平常百姓家拥有一台笔记本电脑已经并非难事,虽然笔记本的身价跌下来不少,但身为高科技产物的它仍然极具娇嫩之气,一旦照顾不周就很可能影响你的正常工作!对于它的每一个部件都不能掉以轻……手把手教你如何建立U盘免疫文件夹U盘免疫文件夹的原理:U盘感染病毒需要激活,但是病毒文件主体一般比较明显。需要一个小动作让主人不知不觉激活病毒主体。这就需要一个文件Autorun。inf……《跟我学五笔系列》之三。怎样拆分汉字本节学习内容1。字根间的结构关系2。多字根汉字的拆分3。汉字的拆分方法4。拆分原则详解5。汉字的三种字型6。识别码的组成和判断7。末笔……键盘上各个健的作用F1帮助F2改名F3搜索F4地址F5刷新F6切换F10菜单CTRLA全选CTRLC复制CTRLX剪切CTRLV粘贴……Alt键的十三个高效的快捷操作方式Alt键的十三个高效的快捷操作方式时间就是金钱,对于瞬息万变的IT行业来讲,效率更为重要。作为一名IT人士,提高工作效率是有很多方法,也可以从多个方面去做,今天笔讲述的是……
闲鱼信用速卖要怎么操作免费普通话训练软件有哪些百度云管家如何使用磁力链接(神秘代码)如何查看淘宝售后维权和退款记录怎么查询联通手机号码激活时间?微信绑定QQ邮箱后不能绑定QQ怎么办?今日头条号指数是什么,怎么达到650分?如何将网站快速生成手机app斗鱼tv直播认证流程腾达(Tenda)如何设置无线信号放大ipad怎么下载微信QQ同步助手如何备份或恢复短信、通话记录
恋情再添实锤,国乒男神张继科新女友曝光,疑似二婚还带孩子?世界上最性感的花,嘴唇花(天生的烈焰红唇)宋时轮新的一年新的开始说说(社会)喜气洋洋迎新春一个夏天11场比赛,中国男篮暴露的无解难题优雅到骨子里的女人裙要齐膝盖配饰要精致,到老也很得体夫妻笑话胸被撞大了cpu怎么看好坏cpu如何看好坏【歌词】盗歌手:林俊杰热评聚热点网 亲戚三不去,邻居二不交,老祖宗的话会受益!哺乳期一年都要忌口吗?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形