then.js is cool
来源:互联网 发布:大街网 知乎 编辑:程序博客网 时间:2024/05/16 10:42
var CON_SERVER_ADDRESS = "";//服务器地址//声明nodejs功能对象var path = require('path');var http = require('http');var fs = require('fs');var exec = require('child_process').execFile;//var then = require('/thenjs/thenjs.js');//初始化当前exe运行的路径,后面很多地方要用var execPath = path.dirname(process.execPath);//读取本地配置文件,查看是否设置了服务器地址function ReadServerAddress_Async(next){ appconfig.read("_CON_SERVER_ADDRESS", function (addr) { //console.info(addr); if (addr == "") { window.location.replace("choose-server.html"); } else { CON_SERVER_ADDRESS = addr; //赋值 console.info("$$ 读取服务器地址:", addr); next(null, CON_SERVER_ADDRESS); } });}//读取本地的最大版本文件,不含路径,应该返回 sonicc-9.05.zipfunction GetClientMaxAppName_Async(next){ fs.readdir(execPath + "\\app", function (err, files) { try { var clientVersion = 0; var maxVersionFileName = ""; for (var i = 0; i < files.length; i++) { var ffn = path.basename(files[i], ".zip"); var tVersion = parseFloat(ffn.split('-')[1]); //console.info("tVersion = " + tVersion); if (tVersion > clientVersion) maxVersionFileName = ffn; } console.info("$$ 读取客户机最大版本:", maxVersionFileName); next(null, maxVersionFileName); } catch (ex) { _WriteError(ex); //出错后不回调是对的,因为退出按钮已经显示 } });}//启动本地最新程序function RunMaxVersionClientFileName(){ var then = require('./node_modules/thenjs'); then(function (next) { GetClientMaxAppName_Async(next); //读取客户端最大版本的文件 }) .then(function (next, res) { console.info("$$ 准备启动读取读取最大版本文件", res); var nwjsPath = execPath + "\\nw.exe "; var maxVerFl = execPath + "\\app\\" + res + ".zip "; const spawn = require('child_process').spawn; const child = spawn(nwjsPath, [maxVerFl], { detached: true, //表示启动的进程是独立的 }); })}//检查服务器版本,是不是需要下载function CheckServerFile_Async(ClientMaxFileName, next){ $.GetOnlyAsync(CON_SERVER_ADDRESS + "/w8/home/CheckNeedUpdateClient?clientFileName=" + ClientMaxFileName, true, function (res) { if (res.xException != null && res.xException != '') { _WriteError("连接服务器成功,但服务器内部异常:", ex); } else { next(null, res); } }, function (res) { _WriteError("连接服务器异常:", ex); });}//下载最新文件function DownloadFileFromServer (url, dest, next){ var file = fs.createWriteStream(dest); var request = http.get(url, function (res) { var fsize = res.headers['content-length']; res.on('data', function (data) { file.write(data); var progressCounter = Math.round(100 - (((fsize - file.bytesWritten) / fsize) * 100), 2); $("#xProgressInfo").html(progressCounter + "%"); }); res.on('end', function () { file.end(); next(null, null); }); }).on('error', function (err) { fs.unlink(dest); next(null, err.message); });};$(document).ready(function (){ var then = require('./node_modules/thenjs'); then(function (next) { ReadServerAddress_Async(next); //读取服务器地址,如果没有则转向 }) .then(function (next, res) { GetClientMaxAppName_Async(next); //读取客户端最大版本的文件 }) .then(function (next, res) { console.info("$$ 客户机最大版本号", res); CheckServerFile_Async(res, next) }) .then(function (next, res) { console.info("$$ 看看是否需要下载 = " , res); if (res.xNeed) { _WriteMsg("下载文件:" + res.xFileName); DownloadFileFromServer(CON_SERVER_ADDRESS + "/w8/zo-content/client-down-package/" + res.xFileName,execPath + "\\app\\" + res.xFileName,next); } else { _WriteMsg("无需更新,准备启动..."); next(null, null); } }) .then(function (next, res) { console.info("$$ 准备启动"); RunMaxVersionClientFileName(); })});//辅助性函数//////////////////////////////////////////////////////////////////////////////////function _WriteMsg(msg){ $("#xsubMsg").html(msg);}function _WriteError(msg, ex){ $("#xsubMsg").html(msg + "<br>" + ex); $("#btnQuitAndClear,#btnQuit").show();}//////////////////////////////////////////////////////////////////////////////////////////////
0 0
- then.js is cool
- Open Watcom is cool!
- Firefox is just cool.
- Debian is really COOL
- writely is cool!
- Samba is really cool
- This is cool...
- life is cool
- [Cool Node.js] 题记
- Boost Preprocessor is so cool
- Github pages is pretty cool
- Angular JS中的then()
- 关于js中的then()
- cool sina oauth node.js
- git-everything-is-cool阅读笔记
- cool
- cool
- Cool!
- angular 系列八 ui-router详细介绍及ngRoute工具区别
- 苹果审核失败相关申诉
- 进程与线程
- UTF-8,GB2312,UNICODE,字符集Windows平台互转类,简单高效
- 文章标题
- then.js is cool
- Java 二分查找
- 小绿人小红人和小黄人
- ImageLoader的各种加载方式
- 组合数取模
- JOSSO入门指南及其与WildFly AS 10的集成
- 关于super.XXX函数
- 数据建模那点事儿
- TCP 连接断连问题剖析