【NWJS】解析node-webkit(NWJS)的打包和发布
目录结构:
node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦。很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的。
1.下载和安装node-webkit
node-webkit的官方网址:https://nwjs.io/
githup的访问地址:https://github.com/nwjs
node-webkit的中文网址:https://nwjs.org.cn
下载的时候有两个版本,一个是NORMAL版,另一个是SDK版本。SDK版本支持debug调试,NORMAL不支持。开发的话,应该下载SDK版本,发布的话应该下载NORMAL版本。
2.建立一个简单的WEB应用
新建立一个app/index.html,作为这个demo的入口文件:
<html>
<head>
<meta charset="utf-8" />
<title>Demo</title>
<head>
<body>
<h1>Hello World!</h1>
</body>
<html>
创建一个配置文件package.json:
{
"main": "app/index.html",
"name": "nw-demo",
"description": "demo app of node-webkit",
"version": "0.1.0",
"keywords": [ "demo", "node-webkit" ],
"window": {
"title": "node-webkit demo",
"toolbar": true,
"frame": true,
"width": 800,
"height": 500,
"position": "center",
"min_width": 400,
"min_height": 200,
"max_width": 800,
"max_height": 600
},
"webkit": {
"plugin": true
}
}
其中main属性用来指定入口文件,这个属性值可以是本地文件,也可以是远程网址(相当于把一个远程的web界面直接变成一个桌面应用了)。其它的属性,比如:图标、窗口栏、初始化的大小等等可以参考官方文档。
3.生成EXE可执行文件
将index.html和package.json这两个文件压缩到一个zip压缩包里,命名为app.zip
把app.zip这个文件的扩展名改为nw,变为 app.nw
将app.nw放置到nw.exe同一级目录,进入windows cmd后运行这个命令:
copy /b nw.exe+app.nw app.exe
然后会生成app.exe文件。
我们可以使用如下的几种方式安装到客户的电脑上:
1.直接RAR打包,发给用户,这也就是个绿色版,无需安装。
2.我们用软件工具 Enigma Virtual Box 封包,用这个工具可以把整个应用程序文件夹生成一个单独的app.exe, 用户直接双击就能运行,这个也是无需安装的。
3.用软件工具innosetup,这个工具会生成一个安装版本。
4.修改icon
默认情况下创建出来的应用程序(exe)会和nw.exe的图标一样,可以通过resource hacker这个工具来修改nw.exe的图标成你所想要的。
打开resource hacker,找到对应的图片组资源(icon group),然后右击选择替换(replace)就可以了。
5.封包
在进行打包前,首先把我们在NWJS_SDK版本(是在NWJS_SDK版本下进行开发的)下的package.json、app.exe、app文件夹复制到NWJS_NORMAL版本中,并且删除NWJS_NORMAL版本中的nw.exe文件。
5.1 Enigma Virtual Box
官网上推荐用Enigma Virtual Box这个软件来将app.exe和依赖的dll打包成一个exe后发布
在选择待封包的主程(Enter Input File Name)输入app.exe的路径
在封包程序另存(Enter Output File Name)输入可执行程序的输出路径
拖入文件和文件夹,选择nwjs_normal的配置文件(除了app.exe的其它文件和文件夹)
点击封包后,封包结束后会得到app_boxed.exe。然后删除app_boxed.exe之外的所有文件和文件夹(如果在封装的时候没有拖入所有的文件,那么就不能删除那些未参与封包的文件),然后就可以得到最后的可执行文件app_boxed.exe
从截图可以看出,这个app_boxed.exe是免安装的,可以点击直接运行。这是Enigma Virtual Box封包的优点,无需安装直接运行,但缺点就是太大了,从截图可以看出app_boxed.exe达到了202MB。
5.2 Inno Setup
这是另一种打包方式,就是用Inno Setup来打包成安装程序,即将一开始的web应用源文件和node-webkit的nw.exe和一些以来dll直接压缩成一个安装文件,我们并不需要上述中间那先打包成app.exe的步骤。用户在使用你的exe后会出现setup wizard把程序安装到Program Files目录中,将nw.exe,dll,web应用释放出来,这个时候所生成的安装文件其实大小会小很多。
下载安装运行后点击File->New即进入创建步骤
填写应用发布的信息:
添加应用程序的打包文件:
执行后续操作,进行编译:
生成可执行EXE:
我们可以看出安装包的大小是54.3MB,Inno Setup的优点就是安装包小,但缺点就是需要进行安装。
【NWJS】解析node-webkit(NWJS)的打包和发布的更多相关文章
- 解析Xcode把应用程序打包成ipa---解决打包完新版本itunes提示不是有效应用程序的问题
Xcode把应用程序打包成ipa是本文要介绍的内容,不多说,先俩看内容.注意:本方法需要先制作假凭证编译于项目中,否则产生的ipa还是无法于iPhone中运行. 制作方法请参考: http://blo ...
- APP的功能分类及打包与发布的分类方式
智能手机的出现改变了我们的生活,同时各种各样的APP充斥在我们的手机当中.那么我先现在在来熟悉一下APP的分类及其用途:工具类.社交类.信息类.娱乐类.生活类等几大类.我么了解了APP的用途分类,那么 ...
- 基于node的前端项目代码包发布至nexus
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 配置angular.json文件... 1 2.2. 配置package.json文件... 1 2.3. 复制git地址. ...
- Java应用程序的打包和发布
Java应用程序的打包和发布 简化Java应用程序的打包和发布 发布Java应用程序时Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,探讨Ja ...
- ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现
前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...
- Node v0.12.5 稳定版发布
Node v0.12.5 稳定版发布了,该版本改进记录主要包括: openssl: upgrade to 1.0.1o (Addressing multiple CVEs) npm: upgrade ...
- EclipseAndroid打包签名发布安装失败闪退运行不了
EclipseAndroid打包签名发布安装失败闪退运行不了 本来没怎么用过用Eclipse写安卓,可是有人有需要必须用Eclipse写,那就写呗. 可在签名打包的时候,发到手机上安装,提示安装成功. ...
- VSCode插件开发全攻略(十)打包、发布、升级
更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...
- hbuilder IOS APP 打包与发布2
在上一篇的<hbuilder IOS APP 打包与发布>中,请求 的 是APP ids . ios开发证书 .和开发配置文件 , 这一篇中就不写发布证书和配置文件的请求,因为流程 ...
- 使用 maven 自动将源码打包并发布
1.maven-source-plugin 访问地址 在 pom.xml 中添加 下面的 内容,可以 使用 maven 生成 jar 的同时 生成 sources 包 <plugin> & ...
随机推荐
- CDA数据分析实务【第一章:营销决策分析概述】
一.营销概述 营销是关于企业如何发现.创造和交付价值以满足一定目标市场的需求,同时获取利润的学科.营销学用来辨识未被满足的需求,定义,度量目标市场的规模和利润潜力,找到最合适企业进入的细分市场和适合该 ...
- YUM方法安装mysql5.7版本
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kabolee/article/deta ...
- Prometheus学习笔记(7)PromQL玩法入门
目录 1.什么是PromQL??? 2.如何查询??? 1.什么是PromQL??? PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持. ...
- 大数据:Hadoop(简介)
一.简介 定义:开源的,做分布式存储与分布式计算的平台: 功能:搭建大型数据仓库,对PB级数据进行存储.处理.分析.统计等业务:(如日志分析.数据挖掘) Hadoop工作模块 Common:提供框架和 ...
- pt-online-schema-change 最佳实践(转)
pt的详细步骤 Step 1: Create the new table. Step 2: Alter the new, empty table. This should be very quick, ...
- Codeforces K. Ice Skating(求强连通分量)
题目描述: Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告
作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:Beta阶段团队项目互评 团队名称: 那周余嘉熊掌将得队 作业目标:项目互测互评 队员学号 队员姓名 博客地址 备注 221600131 ...
- 12、Python函数高级(命名空间、作用域、装饰器)
一.名称空间和作用域 1.命名空间(Namespace) 命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的. 命名空间提供了在项目中避免名字冲突的一种方法.各个命名空 ...
- JSE,JEE,JME三者之间有什么区别
JAVA是一种面向对象语言由SUN公司出品 J针对不同的使用方向规划出J2SE,J2EE,J2ME三个版本 J2SE 指标准版一般用于用户学习JAVA语言的基础也是使用其他两个版本的基础主要用于编写C ...
- LeetCode 911. Online Election
原题链接在这里:https://leetcode.com/problems/online-election/ 题目: In an election, the i-th vote was cast fo ...