nw.js node-webkit系列(17)怎样打包和分发你的应用

来源:互联网 发布:淘宝上哪家日代靠谱 编辑:程序博客网 时间:2024/05/18 22:08

本节将介绍完成应用编码后,如何将其打包和分发给你的用户,本篇内容较为复杂,接下来我们一步步来进行吧。(其中打包很分发的方法很多,请选择适合你的方法。)

(一)应用中可能存在的额外的文件

下面文件作为子目录可以放在应用的根目录中:

(1)node_modules目录-如果你有使用到第三方模块进行开发,可以放在这个目录下。

(2)plugins目录-如果你有使用到插件,可以放置在这个目录下。

你不需要放置nwsnapshot文件到你的下载包中(据博主估计nwsnapshot应该是nw.exe存在前的精简版,因为在官方文档中并没有看到介绍

(注)不要认为node_modules目录的第三方模块类库在Windows下能运行就代表在OS X中也能运行,比如node-email-templates在Windows系统下和在OS X下就有不同的初始化命令。作为一个经验法则就是,在你发布项目前都要去仔细测试每个涉及到第三模块应用的功能。


(二)打包和分发

(1)Make a package (打包)

将项目文件压缩生成的.nw包其实就是一个ZIP格式的压缩包,有三点说明:

1)必须要有package.json配置文件

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是一个多媒体库,如果你需要使用<video>或<audio>,或者一些其他格式的媒体,则你需要使用这个库。

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那里,遇到提示的话默认就可以了。

QQ截图20140210135428

QQ截图20140210135428


(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

0 0
原创粉丝点击