linux shell 实现node-webkit的自动跨平台打包
今天下午发现了个好玩的东西(node-webkit),这东西有一直是我想实现的功能:使用html编写桌面应用,实现跨平台;
具体实现方法:结合chrome浏览器内核和node.js搭建一个跨平台的应用运行环境(node-webkit is an app runtime based on Chromium and node.js.)
可是这东西好像还没有一个像样的IDE,没有自动打包成应用的功能,虽然手动打包的步骤也不麻烦,但作为程序猿的我,不得不用更“高级”方法实现啦~~O(∩_∩)O哈哈~
先说说手动打包吧:
windows:将你的app文件用zip压缩打包,更名为成app.nw,然后直接将nw.exe和app.nw合并为app.exe即可(注意nw.exe文件夹下的库和nw.pak不能删)。
linux:将你的app文件用zip压缩打包,更名为成app.nw,然后直接将nw和app.nw合并为app即可(注意要给app文件加上运行权限:chmod +x app)
mac:node-webkit.app/Contents/Resources/,将system-info打包成app.nw后,放入该目录即可(还有一些图标文件也要处理,由于我还没在mac平台上测试,就先不详述了,等我上我的黑苹果测试通过了再说吧)
我是在ubuntu上打包的,不喜欢用windows的命令行,在windows下工作的伙伴们可以试试cygwin.当然我不是啥linux大神啦,我是菜鸟级的,之前写过最长的shell代码应该没有超过30行,今天破纪录了,空了好多空行,看了下有90行了,O(∩_∩)O哈哈~废话不多说了,先直接上代码了:
shell#!/bin/bash
# by VellBibi
# init your app info
app_name="vview"
app_dir="/files/Web/Projects/vview/" win_nw_zipfile="/files/Web/Codes/node-webkit-v0.9.2-win-ia32.zip"
linux_nw_tarfile="/files/Web/Codes/node-webkit-v0.9.2-linux-x64.tar.gz"
mac_nw_zipfile="/files/Web/Codes/node-webkit-v0.9.2-osx-ia32.zip" # read pack_flag
w=false && l=false && m=false && o=false
while getopts "wlmo" arg # -w:windows -l:linux -m:mac -o:overwrite
do
case $arg in
w)
w=true
;;
l)
l=true
;;
m)
m=true
;;
o)
o=true
;;
?)
echo "unkonw argument"
exit 1
;;
esac
done if [ ${o} = true ]; then
#remove old file
[ ${w} = true ] && rm -rf ${app_name}_win
[ ${l} = true ] && rm -rf ${app_name}_linux
[ ${m} = true ] && rm -rf ${app_name}_mac
fi # create app.nw file
cd $app_dir
zip app.nw ./*
app_nwfile=${app_dir}/app.nw if [ ${w} = true ]; then
echo "creating windows *.exe file..."
unzip $win_nw_zipfile -d ${app_name}_win && cd ${app_name}_win
cat nw.exe $app_nwfile > ${app_name}.exe
rm -rf nw.exe nwsnapshot.exe credits.html
cd ..
echo "create windows app success!"
else
echo "ignore windows app"
fi if [ ${l} = true ]; then
echo "creating linux execute file..."
tar -xvf $linux_nw_tarfile -C ./
tardir=${linux_nw_tarfile%.tar*} && tardir=${tardir##*/} # rename tardir
mv $tardir ${app_name}_linux && cd ${app_name}_linux
cat nw $app_nwfile > ${app_name} && chmod +x ${app_name}
rm -rf nw nwsnapshot credits.html
cd ..
echo "create linux app success!"
else
echo "ignore linux app"
fi if [ ${m} = true ]; then
echo "creating mac execute file..."
unzip $mac_nw_zipfile -d ${app_name}_mac && cd ${app_name}_mac
if [ -f ${app_dir}/Info.plist ];then
cp ${app_dir}/Info.plist node-webkit.app/Contents/
fi
cp $app_nwfile node-webkit.app/Contents/Resources/
if [ -f ${app_dir}/app.icns ];then
cp ${app_dir}/app.icns node-webkit.app/Contents/Resources/
fi
mv node-webkit.app ${app_name}.app
rm -rf nwsnapshot credits.html
cd ..
echo "create mac app success!"
else
echo "ignore mac app"
fi # remove app.nw
rm -f app.nw
使用方法:
将代码保存到一个.sh文件里并添加运行权限,修改你的app_name(应用名称),app_dir(你的应用所在的文件夹全路径),win_nw_zipfile(你的windows版本node-webkit的zip文件路径),linux_nw_tarfile(你的linux版本node-webkit的tar文件路径),mac_nw_zipfile(你的mac版本node-webkit的zip文件路径)
运行你的.sh文件(如:packer.sh),有四个参数可以给定:
- -w : 打包windows下的运行文件到 [your_app_name]_win文件夹下
- -l : 打包linux下的运行文件到[your_app_name]_linux文件夹下
- -m : 打包mac下的运行文件到[your_app_name]_mac文件夹下
- -o : 覆盖之前打包过的文件(没有加这一项的话中间会有提示是否覆盖文件)
如果你想的到windows下和linux下的运行文件,同时覆盖老版本文件:sh packer.sh –wlo
你会发现在你的项目文件夹下多出了两个文件夹:[your_app_name]_win ,[your_app_name]_linux
linux shell 实现node-webkit的自动跨平台打包的更多相关文章
- Linux Shell完成Qt程序的自动部署
#!/bin/sh #取当前脚本的绝对路径 srcDir=$(cd ")";pwd) #设置库所在路径 libDir=${srcDir}"/J1900RunLib/*&q ...
- Linux Shell自动交互/人机交互的三种方法
如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下. 一.背景 shell脚本在处理自动循环或大的任 ...
- 设置Linux shell超时自动退出
Linux shell,一般默认情况下是不会超时退出的,但是有的时候我们想要让它在多少分钟后没有操作自动退出终端(听起来有点像windows多少分钟后自动锁屏一样).我们可以通过设置来实现这一功能. ...
- Linux Shell常用技巧
转载自http://www.cnblogs.com/stephen-liu74/ 一. 特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文 ...
- Linux Shell之监测磁盘空间
Linux Shell之监测磁盘空间 系统管理员的另一个重要任务就是监测系统磁盘的使用情况.不管运行的是简单Linux台式机还是大型的Linux服务器,我们都要知道还有多少空间可以留给应用程序.事实上 ...
- Linux之systemd服务配置及自动重启
layout: post title: Linux之systemd服务配置及自动重启 date: 2019-09-09 tags: linux --- Linux之systemd服务配置及自动重启 0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
随机推荐
- 获取腾讯soso地图坐标代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Linux卸载系统自带的httpd的方法
卸载linux自带的httpd服务: 方法一: #rpm -e httpd 结果,出现以下错误 httpd-mmn = 20020628 is needed by (installed) mod_pe ...
- MyEclipse 2014GA 新建 Web Project 并配置 SSH
基本软件配置: 1)MyEclipse 2014GA(JDK:内置 1.7.0.u45:SSH:内置 Struts2.1.Spring3.1 和 Hibernate4.1) 2)apache- ...
- 关于矩阵最通俗的解释-超级经典zz
线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙.比如说,在全国一般工科院系教学中应用最广泛的同济线性代数教材(现在到了第四版),一上来就介绍逆序数这个“前无古人,后无来者 ...
- AndroidApplication Fundamentals(Android应用基础)
AndroidApplication Fundamentals(Android应用基础) Android应用采用Java编程语言来编写,AndroidSDK工具编译我们的代码,连同任何数据和资源文件一 ...
- POJ 1707 Sum of powers(伯努利数)
题目链接:http://poj.org/problem?id=1707 题意:给出n 在M为正整数且尽量小的前提下,使得n的系数均为整数. 思路: i64 Gcd(i64 x,i64 y) { if( ...
- [Codeforces673C]Bear and Colors(枚举,暴力)
题目链接:http://codeforces.com/contest/673/problem/C 题意:给一串数,不同大小的区间内出现次数最多的那个数在计数的时候会+1,问所有区间都这样计一次数,所有 ...
- ogre, dx, opengl坐标矩阵
opengl 右手坐标系 列向量 左乘 列主序存储矩阵osg 右手坐标系 行向量 右乘 行主序存储矩阵d3d 左手坐标系 行向量 右乘 行主序存储矩阵ogre 右手坐标系 列向量 ...
- BootStrap弹窗
效果图: 注意引入的文件,js文件要在前面 Bootstrap框架中的模态弹出框,分别运用了“modal”.“modal-dialog”和“modal-content”样式,而弹出窗真正的内容都放置在 ...
- UVA 658 It's not a Bug, it's a Feature! (最短路,经典)
题意:有n个bug,有m个补丁,每个补丁有一定的要求(比如某个bug必须存在,某个必须不存在,某些无所谓等等),打完出来后bug还可能变多了呢.但是打补丁是需要时间的,每个补丁耗时不同,那么问题来了: ...

