临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

桌面程序自动更新表白记

9月1日 浅时光投稿
  HelloGoogle
  Node。js一个基于GoogleV8的JavaScript引擎。
  一个伟大的端至端语言,或许我对你的热爱源自于web这门极富情感的技术吧!
  注:
  光阴似水,人生若梦,又是人间年尾。许久未说过如此矫情而生硬的话
  如此篇幅实在无法写明白我扭曲的心理,2017望我还能继续迈进!
  喜庆的话不多说,今天给大家分享一个大致3周前,初次涉足Node。js实现的nw。js桌面程序的自动更新aclasstaghrefwiki10071IQp896J。html模块a吧。
  本文不做教学,仅用于打脸!希望以此得到各位大神的帮助。
  我本没有打算写如此博客来误人子弟,这里感谢老毕()
  下面说的这个模块是基于angular。js的,如此粗鄙的几行代码,还望各位同仁瞄眼之后便使劲的喷!
  一、机制分析
  此机制的优劣性暂且不议,这仅是目前我唯一能想到的!
  已经说了太多无聊的话,这个机制我就画个简单的草图来呈现吧。
  从图中不难看出,我所谓的这个自动更新机制其实仅4步而已:
  1。确定本地版本号与远端版本号
  2。检测版本与平台
  3。判断版本差异性
  4。是否存在差异的进一步处理
  二、模块实现
  1。模块依赖
  fsrequire(fs);pathrequire(path);requestrequire(request);childprocessrequire(childprocess);
  以下为依赖模块的简要释义:
  fs:node。js文件系统模块
  path:node。js文件路径模块
  request:node。jshttp模块
  childprocess:node。js子进程模块
  2。版本对比(使用文件读写模块对本地版本号的写入与更新)
  compareVer:function(RequestUrl){varremoteURLRequestUvardeferredq。defer();fs。readFile(path。join(nwDir,version。txt),function(err,data){if(err){fs。writeFile(path。join(nwDir,version。txt),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。txt),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(。title)。html(升级完成);angular。element(span)。html(100);interval。cancel(timer);vart3;varintervalinterval(function(){angular。element(。title)。html(自动重启);angular。element(progress)。html(spanstylefontsize:);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(span)。html(downloadProgress);},100);}
  4。无差异性处理(隐藏主进程并创建子进程)
  normal:function(){win。hide();childprocess。exec(file,function(err,stdout,stderr){process。exit(0);});},
  三、完整模块代码
  nw。js桌面程序自动更新moduleforangularAuthor:BGONLINE20161229(function(angular,factory){if(define。amd){define(bgoupdate,〔angular〕,function(angular){returnfactory(angular);});}else{returnfactory(angular);}}(typeofangularundefined?null:angular,function(angular){varmoduleangular。module(bgoUpdate,〔〕);module。factory(bgoAutoUpdate,〔http,q,interval,timeout,function(http,q,interval,timeout){varversion{localVer:,remoteVer:}varfsrequire(fs);varpathrequire(path);varrequestrequire(request);varchildprocessrequire(childprocess);varnwPathprocess。execPvarnwDirpath。dirname(nwPath);varfilepath。join(nwDir,current。exe);return{normal:function(){varintervalinterval(function(){str。;angular。element(span)。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。txt),function(err,data){if(err){fs。writeFile(path。join(nwDir,version。txt),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。txt),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(。title)。html(升级完成);angular。element(span)。html(100);interval。cancel(timer);vart3;varintervalinterval(function(){angular。element(。title)。html(自动重启);angular。element(progress)。html(spanstylefontsize:);if(0){win。hide()angular。element(。title)。html(学籍系统保护模块);angular。element(span)。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(span)。html(downloadProgress);},100);}}}〕)}));
  四、模块调用
  App。controller(UpdateController,〔rootScope,scope,bgoAutoUpdate,function(rootScope,scope,bgoAutoUpdate){bgoAutoUpdate。compareVer(rootScope。rootUrlindexlogingetVersion?platformprocess。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!

记一次接力赛那天,天气晴朗,我们学校开展了一场接力赛,我们班同学欣喜若狂。早上,阳光明媚,蓝天上有许多飘浮着的白云,今天的天气很适合跑步。我们班的四个男同学代表我们班去参加接力跑步比……假如我有魔法有一天,我和妈妈上街买衣服,我的手张开了一下,突然冒出了白色的雪花,天上立刻下起了鹅毛大雪,纷纷扬扬地落了下来,我变成了一个小雪人,我的朋友玲玲也变动了一个小雪人。我们都开心极……慢慢地我懂了小时候,也不知是哪个时间段,我的妈妈便走了。不是离婚了,而是与我爸爸离婚了。我跟着爸爸,住在爷爷奶奶的家里。虽然爷爷在我上幼儿园时便去世了,现在都称为奶奶家。在我的印象中……我的爸爸侯亦乐,吃水果了!爸爸每天晚上都要削好水果给我吃。我的爸爸是个细心的爸爸,也是一个工作认真负责的爸爸。我的爸爸长着浓浓的眉毛、大大的眼睛、高高的鼻子和一张帅气的脸。爸爸每……丝绸之路世界上本来没有路,走的人多了,也就变成了路。鲁迅大漠千里,黄沙漫漫,驼铃悠悠。一阵风沙袭来,刺得我睁不开眼睛。再回望时,来时深浅的路,已化作虚无。我拍拍沙尘,迈脚,……冬天天气变化12月的天气可真调皮,说变就变,这不,今天马上就是细雨夹杂冷风了。我的手冷冰冰的,脚也冷冰冰的。唉,你这调皮的天气,就不能冷得慢些吗?好让我们有个适应期啊。你看,因为你的……童年乐事哇!好大一只鸡啊表弟,你快乐抓啊!听说可以抓鸡,我连忙放下手中的手机,抓起家门口的渔网,就冲向养鸡场。来到养鸡场,我和姐姐就摆好阵型,拿着渔网,小心翼翼地靠近目标。近了,……难忘的经历前段时间,老师布置了一个特殊的作业,要求每组表演四大名著的片段。我们组表演的是《水浒传》中杨志卖刀,令我十分难忘。这个片段中,我扮演的是主人公杨志。我们这一组准备的不是很……奉献让生活更美好长路奉献给远方,白云奉献给草场,江河奉献给海洋每当耳畔萦绕着这熟悉的旋律时,脑海中不禁浮现出那温暖而又美好的一幕,它似寒冷中的一股暖流,又似风雨后的一抹彩虹记得那是一个雪……再现那一幕又是一个安静的雨夜,我站在小区的快递柜前,撑着伞,看着快递员忙碌的身影,不禁忆起了几个月前的一晚。暑假里的一个傍晚,下着濛濛细雨,我撑着伞去小区门口取快递,不巧的是,返回……膀胱健康睡前总想做这事竟是膀胱坏了生活当中很多人会遇到这样一个情况,就是临睡觉之前总是想尿尿。其实这时候可能是你的膀胱坏了,所以需要关注你的膀胱健康,当然有些伤肾行为也会让排尿不正常的,下面一起来看看吧!……红糖姜茶有养胃效果吗自古以来我们中华民族就有用茶叶来当做饮品以及养生的说法,这也是我们的中华民族的一种文化,以及传承了非常多年了。随着时间的发展我们对茶道的养生也越来越有研究,效果是非常不错的。比……
终身大事第八十九章联欢晚会在雪颖和卫东的策划下,他们将奠基仪式定在正月二十六。签订协议的地点在本县新苑大酒店。签订过协议之后,卫民将卫东和嫂子拉到了一间屋内,低声说道:哥,我给你说一个事儿。……一个人的朝圣励志书评精选导语:我从来不知道该用什么去丈量距离,是时间还是长度,是纳米还是光年。直到读完《一个人的朝圣》我才明白,丈量距离最好的单位是生命。一个年过六旬的老人,历经87天627英里,重拾……拍照会降低亲身的体验吗壹当人们依赖科技记下美好时刻时,他们可能无法全心专注于当下,因而影响自身亲身体验的记忆。www。此研究刊登于PsychologicalScienc期刊。拍照似乎是个……款轻盈好打理的中长发造型推荐一:甜美内卷发发型点评:这款发型类似于BOB头,发尾细并且微卷,可爱之余又不失甜美。刘海呈人字形中分,很好打理,而发尾的内卷效果没有BOB发的齐发尾厚重,包裹的作用也……长脸适合的发型浪漫甜美款头发型对于每一个女人都很重要,因为发型是给人的第一感觉。你可以不关注一个人长的漂亮,但是一定会关注一个人的发型,合适的发型可以显示出一个人独有的气质。但是每个人的脸型都不一样,长……为新娘组织完美造型阵容LOHO一字,来自于品牌所专注的目标:LeagueOfHerOwn,即是为准新娘筹组一支经过精挑细选的婚纱品牌盟军,打点婚礼那日新娘从头到脚所需要的一切妆点,简直就像是灰姑娘当……如何选购好用的洗发水看成份小心损害记忆力月桂硫酸钠危害:抑制头发生长导致脱发致癌物很多洗发水中的泡沫成份都比较多,因为洗发水厂家使用的是月桂硫酸钠,这种成份的清洁能力特别强,如果长期使用很有可能会导致癌症……现代教育不容忽视的心理健康教育在大人们看来,少年应该是五彩斑斓、天真烂漫的;在大人们看来,现在的孩子压力太大了在我们的生活中,太多大人们想象中的童年了,在为这些孩子到底是幸福还是不幸而争论不休的时候,又有多……京四郎和永远的天空影评精选《京四郎和永远的天空》是一部由柳沢执导,矢作纱友里小西克幸松冈由贵主演的一部动画类型的电影,特精心从网络上整理的一些观众的影评,希望对大家能有帮助。《京四郎和永远的天空》……开杂货铺如何进货渠道如果要开一个杂货铺,要去哪里进货呢?杂货铺的进货渠道有哪些?下面就来讲解一下。操作方法01:hr直接与生产厂家合作。如果杂货铺的地点和生产厂家比较近,直接从生……现在做什么行业挣钱现在做什么aclasstaghrefwiki10394IamYT5t8。html行业a比较挣钱呢?下面我就来说几个比较挣钱的行业,一起来看看吧。操作方法01:hr快……如何利用直通车打爆款(一)多重维度选款我们一个店铺通常有很多产品,我们又要分析哪些数据来确定他就是我们要重点推广的款呢?话说回来,一般店铺引流的方法就是先拿爆款作为引流款,通过该产品销量的提……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找