本节将介绍完成应用编码后,如何将其打包和分发给你的用户,本篇内容较为复杂,接下来咱们一步步来进行吧。(其中打包很分发的方法不少,请选择适合你的方法。)php
(一)应用中可能存在的额外的文件html
下面文件做为子目录能够放在应用的根目录中:node
(1)node_modules目录-若是你有使用到第三方模块进行开发,能够放在这个目录下。git
(2)plugins目录-若是你有使用到插件,能够放置在这个目录下。github
你不须要放置nwsnapshot文件到你的下载包中(据博主估计nwsnapshot应该是nw.exe存在前的精简版,由于在官方文档中并无看到介绍)web
(注)不要认为node_modules目录的第三方模块类库在Windows下能运行就表明在OS X中也能运行,好比node-email-templates在Windows系统下和在OS X下就有不一样的初始化命令。做为一个经验法则就是,在你发布项目前都要去仔细测试每一个涉及到第三模块应用的功能。shell
(二)打包和分发
(1)Make a package (打包)npm
将项目文件压缩生成的.nw包其实就是一个ZIP格式的压缩包,有三点说明:json
1)必需要有package.json配置文件app
2)package.json配置文件必须在根目录
3)在.nw包里,文件和目录是区分大小写的
下面将介绍怎么打包.nw文件:
Windows环境下:
1)建立一个ZIP压缩包
2)将你全部的文件拷贝进压缩包,保持目录结构和保证package.json在根目录下(注意:不要把包含整个项目文件夹拷贝进压缩包,只须要项目里的文件)
3)将.ZIP压缩包重命名为.nw
Linux / OS X 环境下:
1)使用命令行进入项目的根目录 cd ~/Projects/my_app
2)执行 zip -r ../${PWD##*/}.nw *
3)这样你就能得到一个.nw文件
(2a) Put your app with nw executable(把应用和nw执行程序放在一块儿)
· 你能够将项目文件压缩成ZIP文件并重命名为.nw,而后将这个.nw文件放到与nw执行程序相同的目录上。
· 或者你能够把nw执行各个文件(即由官网下载下来的所有文件)放到你项目的package.json相同目录下,当双击点击nw.exe时会自动寻找相同目录下的package.json并启动应用。(在苹果系统下原理是同样的,把应用的文件和node-webkit.app放到统一目录下便可),推荐当你的应用文件比较大时可使用这种方法。
· nodebob是一款针对node-webkit的构建工具。它是使用批处理执行的。如直接执行批处理build.bat(生成window环境执行的APP),生成可直接执行的app.exe。详细信息请查看:(推荐使用)
https://github.com/geo8bit/nodebob
· nw-builder & grunt-nw-builder 能够构建你出能够再Windows环境、Linux环境和OS环境下执行的node-webkit应用。较复杂,博主试过,可是没成功,貌似不兼容最新版本的nw.exe , 详细请参考:
https://github.com/nwjs/nw-builder
https://github.com/nwjs/grunt-nw-builder
·Nuwk!能够轻松的构建基于node-webkit的苹果应用,能够轻松地测试和构建程序,它负责建立执行程序,配置图标和相关应用配置。详细请参考:
http://codeb.it/nuwk/
· generator-node-webkit 也是一款打包Windows环境、Linux环境和OS环境下执行应用程序。详细请参考:
https://www.npmjs.com/package/generator-node-webkit
·Web2Executable是一款完成的、跨平台的、开源的GUI打包应用。它可打包Windows环境、Linux环境和OS环境下执行应用程序,是一款很是受欢迎的应用。详细请参考:
https://github.com/jyapayne/Web2Executable
· nwjs-shell-builder 这是一款针对构建node-webkit的应用。这些脚本能够很容易的集成到你的构建过程,它会自动下载nwjs 32/64位Windows,Linux和OSX,并在指定目录同时打包这三种平台可执行的应用。详细请参考:
https://github.com/Gisto/nwjs-shell-builder
(2b) Alternative way - Making an executable file out of a .nw file(另外一种方法:从.nw文件中生成一个可执行文件)
不少人都关心最终用户须要作些什么才能运行app呢?若是只发给用户一个.nw文件,那么他们就须要安装nw执行程序(至少得解压它)才能执行.nw。因此,最好的办法就是合并.nw文件和nw执行程序。
有两点提醒:
1)合并后的文件不只仅只是一个执行文件,还包括一些DLL动态连接库。
2)合并后的文件仍然能够被一个文件管理软件是被,如WinZip。
Windows
在Windows环境,你可使用下面命令行进行合并:
copy /b nw.exe+app.nw app.exe
而后你就能够把app.exe和nw的相关DLL动态连接库分发出去。
Linux
在Linux环境,你可使用下面命令行进行合并:
cat `which nw` app.nw > app && chmod +x app
Mac OS X
在苹果环境下,nw.app文件的所在路径是很容易被改变的。你须要把你的app文件放在Contents/Resources目录下,而且重命名为app.nw。 较其余平台的好处是,app.nw没必要合并,为了更快速的启动,你能够把app.nw做为你的应用的打开路径。
你须要修改如下文件,为了更好地发布:
1)Contents/Resources/nw.icns: 应用图标
2)Contents/Info.plist: 苹果打包描述文件
关于Info.plist文件,它将会影响到你的应用的发布,详细信息请查阅:http://cocoadevcentral.com/articles/000071.php
(3)哪些文件是必须的?
从v0.10.0版本开始,icudtl.dat文件在三种平台中都是必须存在的,而icudt.dll文件则再也不必须。
除了这个文件外,每种平台还须要不一样的其余nw文件,详细往下看:
(注):And since the binary is based on Chromium, multiple open source license notices are needed including the MIT License, the LGPL, the BSD, the Ms-PL and an MPL/GPL/LGPL tri-license. (This doesn't apply to your code and you don't have to open source your code)
Windows
必须包含nw.pak文件和icudt.dll文件,前者包含了一些重要的js库,后者包含了一些重要的net库。
ffmpegsumo.dll是一个多媒体库,若是你须要使用或,或者一些其余格式的媒体,则你须要使用这个库。
libEGL.dll 和 libGLESv2.dll 是被用于WebGL 和 GPU,你最好带上它们。
D3DCompiler_43.dll 和 d3dx9_43.dll 这两个文件也是为了更好地运行WebGL 。
Linux
必须包含nw.pak文件,若是你须要使用多媒体库也能够加入libffmpeg.so.文件。
Mac OS X
只须要node-webkit.app便可,你大可不用关心其余文件。
(4)在Windows系统下打包nw应用的另外一种方法
若是你按照上述(2b)的步骤打包,你仍然须要加入其余的一些DLL动态连接库或者文件。有一种办法能够将全部文件都打包成一个可执行文件。
这种方法就是使用打包软件Enigma Virtual Box,下面为下载地址:
http://enigmaprotector.com/en/aboutvb.html
打开软件,而后在Enter Input File Name那里输入咱们的app.exe的路径,在Enter Output File Name那里填写咱们要把打包出来的可执行文件输出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的话默认就能够了。
(5)Setup on Windows
应用打包完成后,我想你还须要一个安装文件把应用安装在你的电脑上,下面提供一款能够生成安装程序的免费软件:
http://www.jrsoftware.org/isinfo.php
例子:
https://github.com/SSilence/sum/blob/master/setup.iss
小贴士:若是你发布的是苹果应用,能够阅读苹果应用商店(MAC)提交指南,链接以下:
https://github.com/nwjs/nw.js/wiki/Mac-App-Store-%28MAS%29-Submission-Guideline