摘要:本文主要介紹應(yīng)用如何打包成和文件。添加監(jiān)聽并生成快捷方式安裝卸載運(yùn)行步驟和重新打包此時(shí),再次運(yùn)行進(jìn)行安裝,就會自動再桌面和開始菜單生成快捷方式了。
本文主要介紹Electron應(yīng)用如何打包成msi和exe文件。
由于介紹Electron打包成msi和exe的文章很少,官方的文檔也一筆帶過,在研究的過程中踩了很多坑,所以寫下此文,給其他人一個參考。
關(guān)于Electron基礎(chǔ)知識的文章,官方文檔很詳細(xì),在此不再贅述,還沒入門的童鞋可以看看方的入門文檔:
https://github.com/electron/e...
照著本文操作前,請確保電腦上已經(jīng)安裝了NodeJs,Electron模塊,然后有一個寫好的Electron應(yīng)用。
沒打包之前,想要用Electron運(yùn)行你的應(yīng)用有兩種方式
在應(yīng)用目錄打開命令行,輸入electron .
在命令行輸入electron,啟動一個Electron窗口,并把mian.js拖入窗口中。
這種方式不太優(yōu)雅,我想直接雙擊就能運(yùn)行呢?那就要用到常規(guī)打包(以下步驟都是在應(yīng)用根目錄,即上圖的Electron_Zhihu下):
1.1 安裝依賴
常規(guī)打包需要用到electron-packager模塊,所以先在命令行中輸入npm install --save-dev electron-packager安裝。
1.2 package.json里添加一條打包命令,免得每次打包都要輸入一長串命令
"scripts": { "package": "electron-packager ./ zhihu --win --out zhihu --arch=x64 --version 1.3.4 --overwrite --ignore=node_modules" }
參數(shù)說明
electron-packager
location of project:應(yīng)用目錄;
name of project:應(yīng)用名稱;
platform:要打包的平臺;
architecture:x86 or x64架構(gòu);
electron version:electron 版本(不是應(yīng)用版本);
optional options:其它選項(xiàng);
1.3 執(zhí)行npm run-script package開始打包,第一次打包會下載相應(yīng)平臺的包,可能會比較久
打包完畢后,會多出來一個目錄,比如我的是zhihu,打開之后,會有一個zhihu-win32-x64目錄,里面就是打包生成的各種文件:
zhihu.exe是可以直接雙擊運(yùn)行的,resources里是源文件。
注意,node_modules不會被打包進(jìn)去,如果有依賴,記得進(jìn)入resources/app目錄輸入npm install安裝一下依賴。
Electron官方推薦使用grunt-electron-installer模塊自動生成 Windows 安裝向?qū)А?br>注意:以下操作都在zhihu-win32-x64的父級目錄中
2.1 安裝grunt-electron-installer
新建package.json文件
package.json的內(nèi)容可以簡單寫下:
{ "name": "zhihu", "version": "1.0.0" }
打開命令行,輸入npm install grunt-electron-installer --save-dev安裝grunt-electron-installer模塊,接著輸入npm install grunt --save-dev安裝grunt。
2.2 配置Gruntfile.js
因?yàn)橐玫絞runt執(zhí)行打包任務(wù),所以,新建一個Gruntfile.js文件,并配置gurnt.config,我的配置如下:
var grunt = require("grunt"); grunt.config.init({ pkg: grunt.file.readJSON("package.json"), "create-windows-installer": { x64: { appDirectory: "./zhihu-win32-x64", authors: "yohnz.", exe: "zhihu.exe", description:"zhihu", } } }) grunt.loadNpmTasks("grunt-electron-installer"); grunt.registerTask("default", ["create-windows-installer"]);
配置說明:
Config Name | Required | Description |
---|---|---|
appDirectory | Yes | Electron App 的目錄 |
outputDirectory | No | 輸出exe的目錄. 默認(rèn)生成在installer目錄. |
loadingGif | No | 安裝過程中的加載動畫圖片. |
authors | Yes | 作者,若未指明,則從應(yīng)用的package.json文件中讀取 |
owners | No | 應(yīng)用擁有者,若未定義則與作者相同. |
exe | No | 應(yīng)用的入口exe名稱. |
description | No | 應(yīng)用描述 |
version | No | 應(yīng)用版本號. |
title | No | 應(yīng)用的標(biāo)題. |
certificateFile | No | 證書文件 |
certificatePassword | No | 加密密鑰 |
signWithParams | No | 傳遞給signtool簽名工具的參數(shù),如果軟件不簽名,可以忽略這個 |
iconUrl | No | 應(yīng)用圖標(biāo)鏈接,默認(rèn)是Atom的圖標(biāo). |
setupIcon | No | Setup.exe 的icon |
noMsi | No | 是否創(chuàng)建.msi安裝文件? |
remoteReleases | No | 更新鏈接,如果填寫,當(dāng)鏈接中有新版本,會自動下載安裝。 |
2.3 grunt打包
在命令行輸入npm grunt,就會執(zhí)行自動構(gòu)建安裝程序。在構(gòu)建完之后的installer目錄(或者你配置的輸出目錄)中會有如下幾個文件
運(yùn)行setup.exe就開始自動安裝了,我們?nèi)?控制面板->程序和功能"里檢驗(yàn)一下,發(fā)現(xiàn)應(yīng)用已經(jīng)安裝了。
2.4 生成快捷方式
到此處,Electron的安裝文件就打包好了,但是裝完之后,沒有自動生成快捷方式,所以,我們要在main.js里加入生成快捷方式的功能。
添加監(jiān)聽并生成快捷方式
var handleStartupEvent = function () { if (process.platform !== "win32") { return false; } var squirrelCommand = process.argv[1]; switch (squirrelCommand) { case "--squirrel-install": case "--squirrel-updated": install(); return true; case "--squirrel-uninstall": uninstall(); app.quit(); return true; case "--squirrel-obsolete": app.quit(); return true; } // 安裝 function install() { var cp = require("child_process"); var updateDotExe = path.resolve(path.dirname(process.execPath), "..", "update.exe"); var target = path.basename(process.execPath); var child = cp.spawn(updateDotExe, ["--createShortcut", target], { detached: true }); child.on("close", function(code) { app.quit(); }); } // 卸載 function uninstall() { var cp = require("child_process"); var updateDotExe = path.resolve(path.dirname(process.execPath), "..", "update.exe"); var target = path.basename(process.execPath); var child = cp.spawn(updateDotExe, ["--removeShortcut", target], { detached: true }); child.on("close", function(code) { app.quit(); }); } }; if (handleStartupEvent()) { return; }
運(yùn)行步驟1.3和2.3重新打包,此時(shí),再次運(yùn)行setup.exe進(jìn)行安裝,就會自動再桌面和開始菜單生成快捷方式了。但是,你可能會發(fā)現(xiàn)快捷方式的名字是Electron而不是你設(shè)置的應(yīng)用名。如果比較處女座,可以繼續(xù)執(zhí)行一下步驟:
2.5. 修改打包參數(shù)
修改步驟1.2中的打包參數(shù),添加:--version-string.CompanyName=zhihu --version-string.ProductName=zhihu
完整命令如下:
"scripts": { "package": "electron-packager ./ zhihu --win --out zhihu --arch=x64 --version 1.3.4 --overwrite --ignore=node_modules --version-string.CompanyName=zhihu --version-string.ProductName=zhihu" },
然后重新運(yùn)行步驟1.3和2.3進(jìn)行打包,此時(shí)再編譯好的安裝包就可以運(yùn)行并生成桌面快捷方式和開始菜單了。
運(yùn)行截圖項(xiàng)目的配置文件和代碼源文件已上傳github,歡迎star:https://github.com/yohnz/Elec...
轉(zhuǎn)載請說明來源:http://yohnz.github.io/2016/1...
參考資料:
https://github.com/electron/g...
https://github.com/electron/e...
http://blog.csdn.net/w3429160...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87983.html
摘要:這里是里面的內(nèi)容安裝如果速度太慢,建議使用淘寶的,和的區(qū)別建議去了解一下。安裝以及相關(guān)插件使用加載器繼續(xù)修改里面的內(nèi)容,給對象加一個屬性。 很多人剛學(xué)習(xí)react的時(shí)候,往往因?yàn)榉爆嵉呐渲枚^疼,這里我將手把手教大家怎么用webpack配置react和redux的環(huán)境,這篇教程包括前端react和后臺node整個網(wǎng)站的環(huán)境配置,對node沒興趣的可以只看這篇。這里是下篇鏈接:手把手教你...
摘要:這里是里面的內(nèi)容安裝如果速度太慢,建議使用淘寶的,和的區(qū)別建議去了解一下。安裝以及相關(guān)插件使用加載器繼續(xù)修改里面的內(nèi)容,給對象加一個屬性。 很多人剛學(xué)習(xí)react的時(shí)候,往往因?yàn)榉爆嵉呐渲枚^疼,這里我將手把手教大家怎么用webpack配置react和redux的環(huán)境,這篇教程包括前端react和后臺node整個網(wǎng)站的環(huán)境配置,對node沒興趣的可以只看這篇。這里是下篇鏈接:手把手教你...
閱讀 2922·2021-11-24 09:39
閱讀 3599·2021-11-22 13:54
閱讀 3409·2021-11-16 11:45
閱讀 2432·2021-09-09 09:33
閱讀 3194·2019-08-30 15:55
閱讀 1290·2019-08-29 15:40
閱讀 920·2019-08-29 15:19
閱讀 3396·2019-08-29 15:14