无忧启动论坛

标题: NW.js 在 WinXP 下不能运行,求解决 [打印本页]

作者: 不点    时间: 2016-9-11 19:20
标题: NW.js 在 WinXP 下不能运行,求解决
从这里 http://nwjs.io/ 下载的 nw for Windows IA32 不能在 XP 下运行。

请知情者帮忙重新编译一个能在 XP 下运行的版本。


作者: 邪恶海盗    时间: 2016-9-11 22:48


是不是跟这个有关系???
作者: 不点    时间: 2016-9-12 00:03
邪恶海盗 发表于 2016-9-11 22:48
是不是跟这个有关系???

我把它理解为:nw.exe 是已经包含了 Chromium 53 + Node 6.5.0 的。不知是不是该这么理解?


作者: 邪恶海盗    时间: 2016-9-12 12:37
不点 发表于 2016-9-12 00:03
我把它理解为:nw.exe 是已经包含了 Chromium 53 + Node 6.5.0 的。不知是不是该这么理解?

反正我不懂,你试试看呗...
作者: 不点    时间: 2016-9-12 13:09
邪恶海盗 发表于 2016-9-12 12:37
反正我不懂,你试试看呗...

我猜想 nw.exe 能在 Win7 以上系统下运行。它在 XP 下运行出现错误,根本没法试验,或者说,试验失败。

要是有人能在 Win7 以上的系统下给出试验结果就好了。

就是鼠标双击 nw.exe,看看能否正常运行,而不是给出什么 “缺少 DLL” 之类的错误。


作者: captain_g    时间: 2016-9-12 14:20
一点不懂,帮忙试一下举手之劳。

正常升级至今的32位WIN7 SP1系统中,双击后如下图,没什么提示,接下来就不晓得了!

捕获.PNG (14.11 KB, 下载次数: 31)

捕获.PNG

作者: 不点    时间: 2016-9-12 17:21
captain_g 发表于 2016-9-12 14:20
一点不懂,帮忙试一下举手之劳。

正常升级至今的32位WIN7 SP1系统中,双击后如下图,没什么提示,接下来 ...

非常感谢!你的试验表明,nw.exe 能够在 Win7 32-bit 下顺利执行。这就证明是编译的问题了。他们编译的结果不支持 XP,只支持 Win7 以上的系统。

好的,既然如此,我放弃 nw 这个软件。


作者: slore    时间: 2016-9-15 08:28
本帖最后由 slore 于 2016-9-15 08:29 编辑
不点 发表于 2016-9-12 17:21
非常感谢!你的试验表明,nw.exe 能够在 Win7 32-bit 下顺利执行。这就证明是编译的问题了。他们编译的结 ...


你发错区了吧。
http://nwjs.io/downloads/
选择右侧的支持Windows XP的LTS 0.14版,再点Windows 32-Bits的NORMAL下载。
作者: 不点    时间: 2016-9-15 09:23
本帖最后由 不点 于 2016-9-15 09:24 编辑
slore 发表于 2016-9-15 08:28
你发错区了吧。
http://nwjs.io/downloads/
选择右侧的支持Windows XP的LTS 0.14版,再点Windows 32- ...

按照您的指点,我下载了这个:

https://dl.nwjs.io/v0.14.7/nwjs-v0.14.7-win-ia32.zip

果然能在 XP 下运行!这下子就能玩了。太感谢了!

感慨啊,精力不济,老年痴呆,脑子跟不上形势的发展了,连找软件都找不到地方,水平不是一般的差。

我提问的时候,考虑到这是个开源软件,支持各种平台,因此,权衡良久,把问题发在这里。也算是发对了地方吧,不然你们怎么会在这么短的时间里就帮我解决了问题呢?假如发在综合讨论区或者 Windows 区,我恐怕很快会被别的大量帖子淹没了,那就可能得不到答复了。

所以我一再敦促管理员删掉大量垃圾攻击者的帖子,因为那些帖子干扰正常的提问和回答,会让正常的提问和回答淹没或沉底。看来今后还得继续加大敦促的力度,保持网站的正常运转。我的理念是,宁愿没有一个帖子,也不要有垃圾帖子。



作者: slore    时间: 2016-9-15 10:23
不点 发表于 2016-9-15 09:23
按照您的指点,我下载了这个:

https://dl.nwjs.io/v0.14.7/nwjs-v0.14.7-win-ia32.zip

新主题首页可以看到,前几天在首页看到了,想着也是编译问题,手头没环境就没看了。
今天新机器重新安装了开发环境,打算去下载代码看看,结果看到Download页面有LTS版,
所以来找这个帖子,结果Windows区没找到。后来点到您个人页面,找发布的帖子才找到,
发现在LINUX区。我平时不看LINUX区的,工作测试用用而已,生活上还是Windows方便,
所以才觉得不应该发到LINUX区,虽然是开源软件,但是明显是WINDOWS版的问题,放
这里感觉反而会被LINUXER无视掉吧。

不管怎么说问题解决了就好。:smile:
作者: 不点    时间: 2016-9-16 10:18
本帖最后由 不点 于 2016-9-17 13:28 编辑

用 html5 和 JS 开发本地应用程序


本人玩过很多计算机编程语言,从 VB、C、VC++、DELPHI、JAVA 一直到现在用的 Javascript 和 node.js,可以用一句话概况“多而不精”,当然这也反映了计算机的发展过程,从单机程序向网络程序逐步过渡。但在我们的工作过程中会发现,在某些情况下,操作本地资源的能力也是不可或缺的,做一个桌面软件也很有必要。那么是不是需要重新拣起 VC 或 DELPHI 呢?不说需要重新安装几个 G 的开发环境,丢下用顺手的语言,重新用另一种语言,也很不合算。那么 Javascript 可以开发桌面程序吗?答案是肯定的。在 Github 上就有一个开源的项目 node-webkit,现在已更名为 nw.js。它就可以实现这个功能。那么它是怎样实现的呢?

Nw.js 这个项目采用 webkit 内核作为界面显示的引擎。众所周知,webkit 是对 html5 支持最好的浏览器之一,我们可以用最新的 html5 技术来开发桌面软件。但考虑到安全性,webkit 不支持操作本地资源。Nw.js 有个创新,它把 node.js 集成了进来,而且让 node.js 和 webkit 的 Javascript 引擎运行在同一个进程中。这样就完全打通了前端和后端。我们完全可以用 html5 和 Javascript 来开发桌面应用软件。下面就以一个简单的功能实现为切入点来说明开发的大致过程。

首先要下载 nw.js,可以在 github 下载源码自己编译。也可以到官网下载编译好的二进制文件或者是安装文件。在 windows 环境下,当然是下载 msi 安装文件更方便。下载安装后,有这样一目录结构:

(图片略)

其中最重要的就是 nw.exe 这个可执行文件。只要编写好自己的脚本,然后把脚本拖到 nw.exe 上面即可运行,是不是非常简单呢?当然,也可以把脚本打包为可执行文件。可惜,打包后的程序体积比较庞大,想象一下,我们的程序集成了的大量功能,容易明白体积庞大是必然的。

其次,编写程序脚本。自己的脚本最好存放在一个单独的文件夹中。比如 APP。在这个文件夹中,最重要的是 package.json 文件。这个文件定义了程序的入口文件,以及窗口的样式等等,
  1. {
  2.   "name": "nw-demo",
  3.   "version": "0.0.1",
  4.   "main": "index.html", // 入口的HTML文件
  5.   "window": {
  6.         "toolbar": true, // 是否显示toolbar
  7.         "width": 800,   // 窗口的宽
  8.         "height": 500,  // 窗口的高
  9.         "frame": true                                
  10.     }
  11. }
复制代码

这是一个 JSON 格式的文本文件,我们可以自己用记事本或 notepad++ 来创建。

最后,就是编写脚本了。其实就是写网页啊,作为前端工作人员,这肯定是您最擅长的工作了。当然,因为要操作本地资源,你还得会 node.js。

在本例中,我要做一个把 Word 图文文档转换为 HTML 的软件。必须得把本地图片读取出来编码为 Base64 附加在 HTML 中。好在 html5 本身支持剪贴板,我为文本框绑定了 onpaste(粘贴)事件。以下是 index.html 的内容,它应该保存为 utf8 格式,否则在运行时,中文会显示为乱码:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Word to HTML</title>
  6. </head>
  7. <body>
  8.           <h1>Hello World!</h1>

  9. <textarea name=testInput id='testInput' rows=3 cols=80 >
  10.         请把含有图片的 word 文档的内容复制、粘贴到这里
  11. </textarea>
  12. <div id='wordhtml'></div>

  13. <!--textarea id='html_data' rows=100 cols=80 ></textarea-->

  14. <script>
  15. var s='';
  16. var s1='';
  17. var s2='';
  18. document.getElementById( 'testInput' ).addEventListener( 'paste', function( e ){
  19.         var clipboardData = e.clipboardData;
  20.         if(clipboardData.types.indexOf('text/html')!=-1){
  21.                 s=clipboardData.getData('text/html');
  22.                 // 将本地文件中的图片都转化为base64编码   
  23.                 document.getElementById('wordhtml').innerHTML=s;
  24.                 var imgs=document.getElementsByTagName('img');
  25.                 //alert (imgs.length);
  26.                 for(var i=0;i<imgs.length;i++){
  27.                         imgs[ i ].onload=imgReader(imgs[ i ]);
  28.                 }
  29.                 //var tmp = document.getElementById('wordhtml').innerHTML;
  30.                 //document.getElementById('html_data').innerHTML=tmp;
  31.                 document.write(s);
  32.                 var wfile = 'word_tmp.html';
  33.                 fs.writeFileSync(wfile, s);
  34.                 alert ('转换后的 HTML 数据已经写入文件 ' + wfile);

  35.         }
  36. });

  37. //var img_code = "";
  38. var k=0;
  39. var imgReader = function( image ){
  40.         //alert (image.src);
  41.     ss = 'src="file:///' + image.src.slice(8).replace(/\//g, '\\') + '"';
  42.     k = s.indexOf(ss);
  43.     //alert ('k=' + k + ', ' + ss);
  44.     if (k < 0) {
  45.             return;
  46.     }
  47.     s1 = s.substring(0, k + 5);
  48.     s2 = s.slice(k + 5 + image.src.length);
  49.     var data=base64_encode(image.src);
  50.         console.log(data);
  51.         image.src=data;
  52.         s = s1 + data + s2;
  53. };

  54. var fs = require('fs');
  55. var os=require('os');
  56. function base64_encode(file) {
  57.         file=file.slice(8); // 必须去除前面的file:///   
  58.         var head='data:image/png;base64,';
  59.         var ext = file.substring(file.lastIndexOf('.') + 1).toLowerCase();
  60.         console.log(ext);
  61.         if(ext=='jpg' || ext=='jpeg'){
  62.                 head='data:image/jpg;base64,';
  63.         }else if(ext=='png'){
  64.                 head='data:image/png;base64,';
  65.         }else if(ext=='gif'){
  66.                 head='data:image/gif;base64,';
  67.         }
  68.     var bitmap = fs.readFileSync(file);
  69.     // convert binary data to base64 encoded string
  70.     var data= new Buffer(bitmap).toString('base64');
  71.         return head+data;
  72. }
  73. </script>
  74.   </body>
  75. </html>
复制代码

关键代码在 base64_encode 中。它读取本地图片并编码为 base64 格式。

运行程序很简单:把 APP 这个文件夹往 nw.exe 上一拖,就开始运行了。

把 word 文档粘贴上去后是这样的:

(图片略)

这里的图片都是 Base64 格式附加在 HTML 文档中了。这样的文档存储在数据库中,会拖慢数据库的响应,但图片能够直接嵌入网页,也有好处。


作者: 52uu.top64    时间: 2016-9-23 05:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: sherylynn    时间: 2016-10-26 00:35
因为Nodejs6.0.0就不支持xp了,所以用了6.5的NW也是不支持xp的
Nodejs开发6.0.0的时候票选的,不少人推动投去掉支持的
作者: qjden    时间: 2016-11-29 10:36
不错哦!!!












实习生必备关注微信号:shsxjy




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3