用node-webkit把web应用打包成桌面应用

node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦。很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的。

下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境)

首先新建一个index.html文件,作为我们这个demo的入口页面,我们暂且就把这个页面当成一个完整的web应用吧。内容随便写点什么,比如:

然后创建配置文件 package.json,内容如下:

其中的main属性就是用来指定入口文件的,这个属性的值可以是本地文件,也可以是远程网址,这样就相当于可以把一个远程的web应用直接变为一个桌面应用了。

除了name与main这两个属性外,还有很多其他有用的属性可以配置,比如指定应用的图标,显不显示浏览器的工具栏,指定浏览器的初始大小等等,具体的配置参数文档可看这里https://github.com/rogerwang/node-webkit/wiki/Manifest-format

现在我们有了两个文件了。

然后将index.htmlpackage.json这两个文件压缩到一个zip压缩包里,命名为app.zip

现在app.zip这个压缩包里的内容应该是这样的:

然后把app.zip这个文件的扩展名改为nw,变为 app.nw

然后下载一个windows版本的node-webkit,解压后得到一个文件夹:

之后我们之前得到的app.nw这个文件就可以用nw.exe来执行了,直接把app.nw拖到nw.exe上就可以了。运行结果如下:

跟在chrome中打开index.html这个页面的效果差不多,当然你可以通过配置package.json这个文件,来隐藏浏览器的工具栏或边框,来使它更像是一个桌面软件。

因为nw文件的运行需要node-webkit环境的支持,所以我们还需要把app.nw这个文件跟node-webkit的环境文件一起打包成一个可执行文件。

首先打开windows的cmd,然后输入如下命令:

copy /b nw.exe+app.nw app.exe

注意文件路径要根据你的实际情况进行变动,这里假设app.nw放在了node-webkit的主文件夹里,然后输出的``也会在这个文件夹里。

执行命令后我们得到了app.exe这个可执行文件。

到了这步,我们已经得到了app.exe这个文件,但如果只有app.exe这个文件还是不够的,这个可执行文件的运行还需要几个dll文件的支持。

其中 nw.pak 与 icudt.dll 这个两个文件是必须要的。

ffmpegsumo.dll 文件是媒体支持文件,如果你的html页面中用到了

libEGL.dll 和 libGLESv2.dll 这个两个文件则是使用webGL或GPU必须要的

最后我们得到的就是这样一个文件夹:

执行app.exe就可以运行我们的demo了。

但我们大多数人想的是给用户一个exe文件,用户就可以使用了,不用再附带一些其他文件。

嗯,所以我们还可以把app.exe跟其他的文件再打包一次,把上图中的所有文件变成一个可执行文件,用户只要得到这个文件,就能运行我们的应用了。

做这步我们需要一个软件叫Enigma Virtual Box,首先下载和安装这个软件,然后打开它。

然后在Enter Input File Name那里输入我们的app.exe的路径,在Enter Output File Name那里填写我们要把打包出来的可执行文件输出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的话默认就可以了。

最后点击右下角的Process按钮,就大功告成了。

最后我们得到了一个 app_boxed.exe 的文件,只要把这个文件交给用户,用户就可以运行了。

node-webkit虽然方便,但有个很大的缺点是得到的可执行文件有点大,大家在可以在衡量利弊后决定使不使用。

我的github地址:http://github.com/biezhi
开源框架Blade:http://github.com/biezhi/blade

时间: 2024-08-04 00:51:10

用node-webkit把web应用打包成桌面应用的相关文章

数据库-求助:java web项目打包成安装文件,在桌面生成浏览器快捷方式,点击快捷方式访问网址。

问题描述 求助:java web项目打包成安装文件,在桌面生成浏览器快捷方式,点击快捷方式访问网址. 已做好一不联网的人员信息登记程序,不想发布到远程服务器上,想把程序打包成安装包 安装包内包含 数据库(mysql), web服务器(tomcat 6.0), jdk 1.6, 安装完成后自动发布到tomcat,服务设置成自动,每次开机启动服务. 卸载时数据库,tomcat jdk全部卸载,包括服务. 求指点如何做.先谢谢各位了. 注:不是异想天开,现在有一实例就是这样的,所以打算参照这个做一个.

请教一个问题,把WEB站点打包成MSI时,安装这个MSI时同时将SQL的脚本也弄到SQL SERVER里生成表?

问题描述 请教一个问题,把WEB站点打包成MSI时,安装这个MSI时同时将SQL的脚本也弄到SQLSERVER里生成表?

sae-如何将java代码文件打包成.war格式的包

问题描述 如何将java代码文件打包成.war格式的包 我在sina?app?engine上创建了一个应用,现在要把代码上传上去,上传格式只能是war的格式上传,如何将文件压缩为war格式呢?另外怎么将数据库一起弄到上面? 解决方案 打开项目工程 用eclipse导出 war就可以啦 解决方案二: 如何将Web应用打包成.war文件?如何将Web应用打包成.war文件?---------------------- 解决方案三: 1.使用winrar压缩软件,直接将应用文件目录(包含该目录下的所有

一个有数据库支持的web项目,打包成war包时应该怎么配置数据库才能在别人电脑上也能运行?

问题描述 一个有数据库支持的web项目,打包成war包时应该怎么配置数据库才能在别人电脑上也能运行? 学生党,最近要交一项作业,编写一个数据库支持的web项目,然后打包成war包交上去,我想问对于数据库该怎么处理才能在其他电脑上运行时访问的也是我的数据库?用的是mysql 解决方案 你可以学习一下jdbc

java web-Java Web项目如何打包成安装文件

问题描述 Java Web项目如何打包成安装文件 开发完一个JavaWe项目,怎么把它打包成可运行文件,像安装文件一样!使程序能在其他地方运行,能退出! 解决方案 java项目打包成exe文件asp.net 开发的WEB项目和数据库打包成exe安装文件asp.net 开发的WEB项目和数据库怎样打包成exe安装文件 解决方案二: web 项目运行 需要web服务器 不是么 和 windows程序开发不一样.如果你是写的java 程序 可以打包成war包 在tomcat中以war包的方式运行

Hera-将小程序打包成移动APP的开发框架

继移动APP之后,小程序作为当前移动的有一个入口为大家所推崇,不管是微信的小程序还是支付宝的小程序,其实现的思路都是一致的,即通过一个宿主来运行相关的JS页面. 现在Hera根据市场需求,推出了一款真正的跨平台框架,除了可以让你的小程序除了在微信上运行,还可以打包成 Android . iOS应用,以及以 h5 的方式跑在浏览器端. 主要的优点有: 一套代码 处处运行Hera提供了强大的跨平台能力:不仅可以让开发者的微信小程序业务从微信中平滑迁移到Android和iOS端的App中,同时也提供了

利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

原文:利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包 因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是64位也可能是32位,所以在打包的时候就需要打包成两份安装包.研究了几天终于有所收获,下边就是打包的步骤. 打包步骤: 一.前期准备 1.将asp.netmvc发布到本地目录中

java 打包成war里,能否不将引用的jar包打入,让它引用外部的jar

问题描述 java 打包成war里,能否不将引用的jar包打入,让它引用外部的jar java 打包成war里,能否不将引用的jar包打入,让它引用外部的jar 解决方案 你打成war,应该是需要放到tomcat或者weblogic这种容器里运行吧,如果是的话,可以不用打包进去,把包放到容器的lib目录下就行了,不过这样容易导致冲突和升级成本的上升(如果web容器里有多个应用的话)

java 做的桌面程序可以打包成EXE,但能打包成MSI安装吗?

问题描述 java 做的桌面程序可以打包成EXE,但能打包成MSI安装吗?如果可以,要怎么做,有没有什么好的免费的工具使用?我自己知道可以先打包成EXE,然后再用工具转换成MSI,但不知道JAVA桌面程序能不能打包成MSI来安装呢? 问题补充:liveHappy 写道 解决方案 我只找到一个.使用一个开源的组件(jdic)的包装器组件 ,把JNLP(Java Web Start)应用转换成本地安装程序,那么如果是windows系统的话包装成的就是msi,它仅仅为Web Start应用提供点击安装