如何讓一個html網(wǎng)頁變成一個exe可執(zhí)行程序

有朋友的朋友找我做個小“頁面”,一開始對接需求沒說清楚,我就寫了個html文檔。交付時,才知道對方想要一個桌面應(yīng)用程序。
于是就想找尋下工具,看有沒有辦法把已有的html頁面轉(zhuǎn)化成一個exe程序。

參考文章1里發(fā)現(xiàn)有三種方法:HTMLRunExe 工具、hta文件、nwjs工具。
我只嘗試過其中的 hta 和 nwjs,并且最終采用了nwjs工具。所以此處只比較下這兩種方法。

1 轉(zhuǎn)成hta文檔

hta,是html applilcation的縮寫。翻譯過來就是html應(yīng)用程序。
實現(xiàn)方式也很簡單。

  1. 新建一個文本文檔,重命名為hta后綴名,比如 test.hta;
  2. 然后用文本編輯器在里面編寫一個iframe標(biāo)簽,把我們的目標(biāo)網(wǎng)頁地址帶入到其src屬性中;
<iframe src="你的網(wǎng)頁地址" style="width:100%;height:100%"></iframe>
  1. 雙擊 test.hta即可。
    打開hta文件的窗口界面

優(yōu)點:實現(xiàn)簡單。
缺點:不兼容h5、css3,而且JavaScript腳本也很容易出問題。

2 nw.js工具

nwjs官網(wǎng)下載
nw.js的github地址

nw.js的使用流程:

    1. 測試可用
      解壓下載包后,雙擊nw.exe,可以正常啟動,則說明可以使用node-webkit。


      nw.exe
    1. 構(gòu)建自己的項目.
      比如,此處要把index.html頁面變成.exe程序。
      則需要引入index.html頁面和package.json文件。
      其中,package.json相當(dāng)于是配置文件,配置項如下:
{
  "main": "index.html", //入口
  "name": "nw-demo",//字符串必須是小寫字母或者數(shù)字,可以包含"." 或者"_"或者"-" ,不允許帶空格,必須唯一
  "description": "demo app of node-webkit",//描述
  "version": "0.1.0",//版本
  "keywords": [ "demo", "node-webkit" ],//關(guān)鍵字
  "window": {//窗體配置
    "title": "node-webkit demo", //窗體的標(biāo)題
    "icon": "link.png",//窗體的ico圖標(biāo)
    "toolbar": true,//是否要工具欄
    "frame": false,//bool值。如果設(shè)置為false,程序?qū)o邊框顯示 也就是沒有系統(tǒng)默認(rèn)的關(guān)閉,最小化,全屏按鈕
    "width": 800,//窗口的大小
    "height": 500, //窗口的大小
    "position": "mouse", //字符串。窗口打開時的位置,可以設(shè)置為“null”、“center”或者“mouse”。
    "min_width": 400,//最小寬度
    "min_height": 200,//最小高度
    "max_width": 800,//最大寬度
    "max_height": 600,//最大高度
    "as_desktop" :false,//是否作為桌面背景窗口顯示
    "resizable":false,//是否允許調(diào)整窗口大小
    "always-on-top":true,//窗口是否置頂
    "fullscreen":false,//是否全屏顯示 
    "show_in_taskbar":true,//是否顯示任務(wù)欄圖標(biāo) 
    "show":false, //如果設(shè)置為false,啟動時窗口不可見
    "kiosk":false //是否使用kiosk模式。如果使用kiosk模式,應(yīng)用程序?qū)⑷溜@示,并且阻止用戶離開應(yīng)用
 
},
  "webkit": {
    "plugin": true,//bool值,是否加載插件,如flash,默認(rèn)值為false。
    "java":false, //bool值 是否加載java applets
    " page-cache":false //是否啟用頁面緩存
    }
}

如果你只需要配置其中一兩項,當(dāng)然也可以寫簡單點,如下:

"name": "index-demo", 
"main": "index.html", //入口
    1. 文件準(zhǔn)備
      把上面的 index.htmlpackage.json 放置到 nw.js 解壓的文件夾里面。
      如果你的項目不是單文件index.html,那可以把所有文件放在一個文件夾里,比如 mydemo
      package.json 必須和nw.exe同級,這時候就要注意配置項的
"main": "./mydemo/index.html"

注意:此處和參考文章2不同,文章2是package.jsonindex.html在一個文件夾里面。但我按照它的方法,沒有辦法合成exe。最后測試時package.jsonnw.exe同級,不需要合成(指令:copy /b nw.exe+app.nw app.exe),直接打開nw.exe即可。

    1. 被動模式啟動mydemo
      (1)指令方式

      (2)拖拽方式
      把文件夾拖動到nw.exe上即可。
    1. nw.exe
      由于package.json已經(jīng)配置好入口,此處再啟動nw.exe時,你會發(fā)現(xiàn),已經(jīng)直接指向index.html頁面了。

至此,已經(jīng)成功了大半部分,但是這個nw.exe只能在當(dāng)前環(huán)境指向,換到其他目錄或者其他環(huán)境就不行了,因為其他目錄就找不到nwjs包內(nèi)依賴的文件。(→_→除非你就整個文件夾壓縮下,隨身帶著使用。)

    1. 使用 Enigma Virtual Box 打成獨立的可執(zhí)行的exe文件
      萬能的網(wǎng)絡(luò),聰慧的人類,總是給人以希望??!我們有個工具 Enigma Virtual Box 可以做打包的工作。
      在官網(wǎng)下載Enigma Virtual Box,然后傻瓜式安裝下;
      (1)導(dǎo)入項目exe文件
      (2)選擇輸出路徑
      (3)添加default文件夾
      (4)添加nwjs文件
      (5)點擊process,等待生成。

3 小結(jié)

小缺陷:用newjs工具,可以完美生成一個exe程序,但文件刀削也不小,有200+M,實際上index.html才10KB。


補充:本次實驗和參考文章2有所出入,如果文章2的生成流程也是可以了,望大家留言探討。

參考文章:

  1. 讓HTML網(wǎng)頁變成一個exe執(zhí)行程序(node-webkit或HTMLRunExe或hta)
  2. NW.js構(gòu)建桌面應(yīng)用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容