自己參加的web項目,最后發現被公司封裝成了桌面應用,所以一直好奇是怎么加殼的,在網上找資料后終於發現了一些方法,我找到了三種方法可實現:JWebBrowser(基於IE內核,使用時會發現很多html5不支持);JXBrowser(基於chrome內核,支持html5,但收費),node-webkit(基於chrome內核,唯一缺點是打包后exe程序過大),我用的是node-webkit,以下是自己抄襲並整理的一些內容:
node-webkit是一個Chromium和node.js上的結合體,通過它我們可以把建立在chrome瀏覽器和node.js上的web應用打包成桌面應用,而且還可以跨平台的哦。很顯然比起傳統的桌面應用,在某些特定領域用html5+css3+js開發的web應用更加簡單和高效,而且還可以使用node.js的功能,所以node-webkit還是很有用處的。
下面我通過一個簡單的demo來介紹怎么樣把一個web應用打包成一個可執行文件(這里只介紹windows環境)
首先新建一個index.html文件,作為我們這個demo的入口頁面,我們暫且就把這個頁面當成一個完整的web應用吧。內容隨便寫點什么(可跳轉已經發布的頁面),比如:
然后創建配置文件 package.json,內容如下:
現在我們有了兩個文件了。
然后將index.html和package.json,任務欄圖標圖片(png格式)這三個文件壓縮到一個zip壓縮包里,命名為app.zip
現在app.zip這個壓縮包里的內容應該是這樣的:
然后把app.zip這個文件的擴展名改為nw,變為 app.nw
然后下載一個windows版本的node-webkit,解壓后得到一個文件夾:
之后我們之前得到的app.nw這個文件就可以用nw.exe來執行了,直接把app.nw拖到nw.exe(沒啟動前)上就可以了
因為nw文件的運行需要node-webkit環境的支持,所以我們還需要把app.nw這個文件跟node-webkit的環境文件一起打包成一個可執行文件。
首先打開windows的cmd(可shift+鼠標右鍵,選擇在此處打開命令窗口),然后輸入如下命令:
copy /b nw.exe+app.nw app.exe
注意文件路徑要根據你的實際情況進行變動,這里假設app.nw放在了node-webkit的主文件夾里,然后輸出的app.exe也會在這個文件夾里。
執行命令后我們得到了 app.exe 這個可執行文件。
到了這步,我們已經得到了app.exe這個文件,但如果只有app.exe這個文件還是不夠的,這個可執行文件的運行還需要幾個dll文件的支持。
其中 nw.pak 與 icudt.dll 這個兩個文件是必須要的。
ffmpegsumo.dll 文件是媒體支持文件,如果你的html頁面中用到了<video>或<audio>或其它與媒體相關的東西,則必須帶上這個文件。
libEGL.dll 和 libGLESv2.dll 這個兩個文件則是使用webGL或GPU必須要的
最后我們得到的就是這樣一個文件夾:
執行app.exe就可以運行我們的demo了。
但我們大多數人想的是給用戶一個exe文件,用戶就可以使用了,不用再附帶一些其他文件。
嗯,所以我們還可以把app.exe跟其他的文件再打包一次,把上圖中的所有文件變成一個可執行文件,用戶只要得到這個文件,就能運行我們的應用了。
做這步我們需要一個軟件叫Enigma Virtual Box,首先下載和安裝這個軟件,然后打開它。
然后在Enter Input File Name那里輸入我們的app.exe的路徑,在Enter Output File Name那里填寫我們要把打包出來的可執行文件輸出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的話默認就可以了。
最后點擊右下角的Process按鈕,就大功告成了。
最后我們得到了一個 app_boxed.exe 的文件,只要把這個文件交給用戶,用戶就可以運行了。
node-webkit雖然方便,但有個很大的缺點是得到的可執行文件有點大,大家在可以在衡量利弊后決定使不使用
修改node-webkit的默認圖標
(注意:在用enigmavb.exe加殼前替換圖標,否則會出現”不是有效的32位系統”)
使用node-webkit開發應用程序的時候,最終生成的exe文件,使用的默認的圖標,無法在代碼中修改。這次就說說這圖標的事,要用到兩款軟件(當然你可以用別的,我只提供一下我的方案):Resource Hacker 和 Axialis IconWorkshop。
制作圖標
第一步要做的是制作ico圖標,在windows系統中,可以設置“大圖標”,‘中等圖標’和“小圖標”等不同尺寸,所以,一個ico文件實際上包含多個不同尺寸的圖標。
使用Axialis IconWorkshop打開你的圖片,點擊左上角的圖標,然后就可以選擇你要生成的尺寸了:
我做的時候選擇了RGBA的各種尺寸圖標,然后點擊確定,就生成ico文件了。
替換exe文件的圖標
下一步就是替換圖標,使用Resource Hacker打開exe文件:
可以看到node-webkit的默認圖標只有一個48 x 48的。右鍵點擊1033,選擇替換資源,替換為剛才制作的ico文件:
ok,打完收工。另外發現貌似windows本身會緩存圖標,就是說替換完后,在當前文件夾切換大圖標之類的,還是看不到效果,並且windows 7 左下角的信息也沒變:
把exe復制到別的目錄就能看到效果
----------------------------------------------------------------