以往写windows桌面程序须要用MFC、C#之类的技术,那么若是你只会web开发技术呢?或者说你有一个网站,可是你想把你的网站打包成一个桌面应用程序,该如何作呢?linux
答案就是用node-webkit这个开源框架,他封装了webkit内核和node.js,让你能够用web技术来开发windows/linux/OSX程序等。指的一提的是目前node-webkit已经更名为NW.js,下面是在github上的此框架站点:git
https://github.com/nwjs/nw.jsgithub
本文讲述了如何使用该工具打包成windows桌面程序的一个简单例子,同时给出了如何下降打包出来的程序的size的一个方式(用node-webkit打包出来的桌面程序size一般会比较大),更多的技术细节请参考上述站点。web
需求json
首先咱们的需求很简单,作一个windows桌面程序(exe),里面载入百度的首页,用户能够就像用浏览器同样使用。以此类推,因为是封装了webkit,固然你即可以使用web技术开发一个windows桌面软件。windows
下载和安装node-webkit
进入官网后(http://nwjs.io/),点击下载,我这里使用的是win8.1的64位计算机,即下载win64版本
下载出来后解压,文件夹中即为Node-webkit的主文件夹:
这里的nw.exe即该框架原先提供的一个已经封装了webkit等的exe,这个是你构建本身的exe的基础,你本身建立的web程序其实都是须要这个东西来运行,由于它提供了runtime环境。
修改icon
这里有一点须要提的是,默认状况下你建立出来的你的应用程序(exe)会和nw.exe的图标同样,固然这个不是你所想要的。因此你能够经过resource hacker这个工具来修改nw.exe的图标成你所想要的,好比能够参考:
撰写WEB应用
到这里咱们就能够开始撰写web应用了,由于本例子很简单就是打开一个网址,因此应用的目录大体以下:
咱们主要来看package.json这个配置文件,这个是每一个用node-webkit进行打包时候必需要的一个配置文件,内容大体以下:
{ // "main": "index.html", "main":"http://www.baidu.com/", "name": "baidu", "window": { "title": "baidu", "icon": "assest/img/logo.png", "toolbar": true, "width": 1280, "height": 800, "min_width": 400, "min_height": 200 }, "webkit": { "plugin": true, "java": false, "page-cache": false } }
因为咱们仅仅是打开一个网页,因此main这个参数里面的值并非index.html,而直接写上一个网址就好
window.icon这个参数能够配置这个exe在windows的底部任务栏上的图标
toolbar最好设置为true,这样子你的应用程序上面会有相似于浏览器的工具栏,若是你的程序相似于一个音乐播放器之类的东西,那么你可能须要设置为false
关键package.json的语法请参考:
https://github.com/nwjs/nw.js/wiki/Manifest-format#webkit-subfields
打包
下面咱们能够开始打包了。
首先将你的全部的应用程序全选,添加压缩文件后并更名为app.nw(名字无所谓,可是扩展名必定要修改成nw),要确保package.json在根目录。即你打开压缩后的zip应该是这样的
随后,将你的app.nw拷贝到node-webkit的和nw.exe同一目录,进入windows cmd后运行这个命令:
copy /b nw.exe+app.nw app.exe
这个时候你发现生成了app.exe,这个时候即成功将你的web应用打包成了一位windows桌面程序,直接双击它便可运行:
是否是看起来像是一个浏览器?其实他真的就是一个浏览器,由于他封装了webkit!
发布
这个时候你但愿把exe发布出去,可是要注意的是你不能独立的运行这个app.exe,由于它须要依赖一些dll,官网上推荐用Enigma Virtual Box这个软件来将app.exe和依赖的dll打包成一个exe后发布,可是这里有个严重问题,那就是这个最后生成的yourapp.exe的size太大,至少70MB以上!
缘由很简单,这个是由于app.exe自己就很大,已经有几十mb,而他其实也是基于咱们刚解压出来node-webkit后那个nw.exe而生成的,而那个nw.exe自己已经50+mb了,因此咱们的app.exe能小的起来吗?
这里推荐另外一个打包方式,就是用Inno Setup来打包成安装程序,即将你的一开始的web应用源文件和node-webkit的nw.exe和一些以来dll直接压缩成一个安装文件,咱们并不须要上述中间那先打包成app.exe的步骤。用户在使用你的exe后会出现setup wizard把程序安装到Program Files目录中,其实等于解压缩了,将nw.exe和dll还有你的web应用释放出来,这个时候所生成的安装文件其实size会小不少。
咱们经过这个站点来下载Inno Setup工具
http://www.jrsoftware.org/isdl.php
下载安装运行后点击File->New即进入傻瓜式的建立步骤
下一步,填写你的发布应用的公司信息
继续下一步直到走到Application Files,这一步是添加你的应用程序的打包文件:
上面的“Application main executable file”指向node-webkit的nw.exe,下面的Other application files,经过add file(s)来添加nw.pak和dll依赖文件,经过add folder来添加你的web应用文件
继续点击下一步,后面还能够选择用户安装的时候能够选择的语言:(默认是没有中文的,中文包请在这里下载http://www.jrsoftware.org/files/istrans/)
下一步,能够还能够选择分发的exe的icon
继续后面的操做的,便可生成一个只有20多mb的setup.exe安装文件了,以供分发