1. 程式人生 > >linux下node-webkit自動跨平臺打包shell

linux下node-webkit自動跨平臺打包shell

前言

node-webkit可謂是webapp開發神器,支援windows、mac、linux,但是打包是個問題,總不能在三個系統裡面打包吧。

官方也有打包工具,但是總覺得挺麻煩的。

於是想著linux可不可以通過shell來實現跨平臺打包。

實現

發現一位大神寫的指令碼,但是由於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上沒有試過,窮逼一個)


相關推薦

linuxnode-webkit自動跨平臺打包shell

前言 node-webkit可謂是webapp開發神器,支援windows、mac、linux,但是打包是個問題,總不能在三個系統裡面打包吧。 官方也有打包工具,但是總覺得挺麻煩的。 於是想著linux可不可以通過shell來實現跨平臺打包。 實現 發現一位大神寫的指令碼

LinuxTomcat日誌自動定時打包完美實現

一、場景 1、環境 CentOS 7.0,Tomcat 8.0.33 ,(jdk-1.8.0_171) 2、目的 隨著時間推移,tomcat下的日誌檔案catalina.out越來越大,當檢視日誌時效率低下。所以,為了方便日誌的查閱,將catalina.out

LinuxOracle資料庫自動備份Shell指令碼

1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA  #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK  #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P

linuxnode部署

del 兩個 打開 nbsp class 運行 分享 profile 編輯 我直接下載二進制文件解壓,然後進行環境全局變量設置 解壓到對應的目錄tar zxvf node-v0.10.26-linux-x64.tar.gz 進入 解壓後的目錄bin目錄下,執行ls會看到兩個

LinuxTomcat開機自動啟動

權限 esc ref 進程 chkconfig lin 自啟動腳本 lock cas linux下tomcat開機自動啟動有兩種方法,一種是簡單,一種是復雜而又專業的,使用shell腳本要實現,我們一般推薦shell腳本啟動方式。下面我們分別介紹這兩種方法。 1.shel

linux開機不自動掛載指定分區

信息 img 指定 記錄 替換 查看 類型 一個 windows 我的debian裝好後,有保留windows,但是卻不想在debian啟動後桌面上,文件管理器中顯示windows分區,留個記錄在這裏,需要的時候方便查看 使用mount 的 noauto參數: 創建一個掛

【筆記】linux的nginx自動安裝

前言: nginx依賴的元件比較多,大概有這幾個: a、openssl b、pcre c、zlib 安裝過程較為繁瑣,所以,這裡拿券君已經幫你整理好啦,只需要一鍵執行即可!   話不多說,開始! 1、下載整理好的nginx: https://downlo

linuxmysql的自動補全工具mycli

習慣了在bash命令列下的tab自動補全功能,在linux下安裝mysql,或者是mariadb後發現不能自動補全,這就讓我很難受,所以我找到了一個很強大的工具可以實現自動補全 這個工具就是mycli,這個工具很強大,先來看一下 我用的是centos7下的ma

Linux開機自啟動自定義shell指令碼

一、Ubuntu下 1、方法一,編輯rc.loacl指令碼  Ubuntu開機之後會執行/etc/rc.local檔案中的指令碼, 所以我們可以直接在/etc/rc.local中新增啟動指令碼。【進入到/etc/rc5.d下,發現S99rc.local,即開機軟

linux使用maven自動構建專案

sudo mv apache-maven-3.5.0-bin.tar.gz /opt tar xzvf apache-maven-3.5.0-bin.tar.gz ·把maven的bin目錄新增到環境變數 export PATH

Linux的Jenkins+Tomcat+Maven+Git+Shell環境的搭建使用(jenkins自動化部署)

命令 get off ret inux src b- 保存 image 一、軟件安裝 1.安裝jdk環境 JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-down

Linux清除ftp自動登入狀態

筆者在使用機子訪問ftp時一直連著上一個使用者登入狀態下訪問的地址,導致一直無法訪問公司裡的指定ftp目錄,想著登出狀態再重新登入,一時沒找到登出方法是在是鬱悶了一會。 後來通過查詢資料找到的解決辦法: 在圖形介面桌面點選左上角的「應用程式」-「工具」-「密

Linuxmysql資料庫自動定時備份

對於網遊來說,資料庫中的資料尤其重要,實際運營中通常會有DBA或者運維人員對資料庫中資料進行日常備份,防止伺服器宕機或硬碟損壞導致的資料丟失問題 1.建立備份目錄 cd /home/game mkdir backup cd backup2.建立備份shell指令碼 vi

Linuxmysql的自動定時備份

yaml val dev 目錄 lang 自動 blank UNC -- 1、查看磁盤空間情況: 既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現因空間不足導致備份失敗,數據丟失的惡果! 存儲到當前磁盤這是最簡單,卻是最不推薦的;服務器有多塊硬盤,最好是把備份存放到

linux如何將資料夾打包

linux zip壓縮。壓縮當前資料夾下所有檔案,壓縮為a.zip。命令列的方法是怎樣。 zip  -r fileName.zip  資料夾名 tar tar命令可以用來壓縮打包單檔案、多個檔案、單個目錄、多個目錄。 常用格式: 單個檔案壓縮打包 tar

linux實現ssh自動登入遠端伺服器

前言:開發工作中,由於有時需要通過ssh登入遠端伺服器上去,每次都要輸入密碼,密碼很難記,感覺很麻煩,於是上網搜了通過 ssh自動登入遠端伺服器上去,從而免去了每次都要輸入密碼的困擾。 系統說明:本地機器:Redhat遠端機器:Redhat 步驟: A.本地機器需要做的修

Linux的Jenkins+Tomcat+Maven+Gitlab+Shell環境的搭建使用(jenkins自動化部署)

jenkins自動化部署 目標:jenkins上點構建(也可以自動檢查程式碼變化自動構建)》》》專案部署完成。 一、安裝jenkins 1.下載jenkins       這裡我選擇的是war包安裝jenkins,簡單不傷腦,別的部落格寫的jenkins版本都

LinuxMakefile的自動生成步驟

一、 Makefile 介紹               Makefile 是用於自動編譯和連結的 ,一個工程有很多檔案組成 ,每一個檔案的改變都會導致工程的重新連結 ,但是不是         所有的檔案都需要重新編譯 ,Makefile 中紀錄有檔案的資訊 ,在 mak

linux實現sftp自動登入。

今天幫之前同事寫一個sftp自動上傳的指令碼,因為sftp無法匿名登入,因此使用sftp時,每次都需要輸入伺服器密碼,無法進行自動上傳和下載檔案,其中一種方法可以使用lftp這個就不在詳細介紹了,現在介紹另外一種方法。ssh驗證金鑰的方式(不知道github 是不是這樣)。

linuxtomcat的自動備份

tomcat的檔案可以隨時備份,在linux下設定的備份方法和Windows下一樣。計劃任務,定時打成壓縮包,方法如下: 1、頁面檔案在/home/edn/tomcat6/webapps目錄下,備份檔案存放在/home/backup目錄下. shell#vi /home/