linux下node-webkit自动跨平台打包shell

本文介绍了如何在Linux环境下通过shell脚本来实现node-webkit应用的跨平台打包,包括对官方打包工具的简化和针对win32、linux64、mac32平台的修改,提供了一种便捷的打包解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

node-webkit可谓是webapp开发神器,支持windows、mac、linux,但是打包是个问题,总不能在三个系统里面打包吧。

官方也有打包工具,但是总觉得挺麻烦的。

于是想着linux可不可以通过shell来实现跨平台打包。

实现

http://www.linuxidc.com/Linux/2014-03/97933.htm

发现一位大神写的脚本,但是由于node-webkit改名为nwjs,且该脚本windows、mac下的脚本有问题,因此对它进行了一些修改。

#!/bin/bash
# by minghuazhou
# init your app info
app_name="toopos"
app_dir="/home/qiqi/toopos_/trunk/tooposWeb/build"

win_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-win-ia32.zip"
linux_nw_tarfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-linux-x64.tar.gz"
mac_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-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 -r 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
winzipdir=$(ls  -ad */)
mv ${winzipdir}* ./
cat nw.exe $app_nwfile > ${app_name}.exe
rm -rf ${winzipdir} 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 -xf $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
maczipdir=$(ls  -ad */)
mv ${maczipdir}* ./
if [ -f ${app_dir}/Info.plist ];then
    cp ${app_dir}/Info.plist nwjs.app/Contents/
fi
cp $app_nwfile nwjs.app/Contents/Resources/
if [ -f ${app_dir}/app.icns ];then
    cp ${app_dir}/app.icns nwjs.app/Contents/Resources/
fi
mv nwjs.app ${app_name}.app
rm -rf ${maczipdir} nwsnapshot credits.html
cd ..
echo "create mac app success!"
else
echo "ignore mac app"
fi

# remove app.nw
rm -f app.nw

使用方法

一.从nwjs官网上下载三个平台的包

这里取了win32、linux64、mac32的包

二.修改shell脚本中app名称、路径、各平台包文件地址

app_name="toopos"
app_dir="/home/qiqi/toopos_/trunk/tooposWeb/build"

win_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-win-ia32.zip"
linux_nw_tarfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-linux-x64.tar.gz"
mac_nw_zipfile="/home/qiqi/toopos_/trunk/tooposBuilder/codes/nwjs-v0.12.3-osx-ia32.zip"
三.终端运行你的.sh文件,如sh yourshell.sh,有四个参数可以给定:

1.-w : 打包windows下的运行文件到 [your_app_name]_win文件夹下

2.-l : 打包linux下的运行文件到[your_app_name]_linux文件夹下

3.-m : 打包mac下的运行文件到[your_app_name]_mac文件夹下

4.-o : 覆盖之前打包过的文件(没有加这一项的话中间会有提示是否覆盖文件)

四.效果图(mac上没有试过,穷逼一个)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值