Electron+vue打包成桌面程序

第一步:安装nodejs

1、windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到下载页面。?

macos 下也可以下载直接安装官网(https://nodejs.org/en/)最好下载LTS版本


这个是nodejs官网


2、windows下载完成后双击运行进行安装,安装过程基本直接“NEXT”就可以了(全部采用默认方式安装)。(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如“C:Program Files odejs”)。

macos 下也是点击安装,安装过程基本直接“NEXT”就可以了。


3、windows安装完成后可以使用cmd(win+r然后输入cmd进入 )测试下是否安装成功。方法:在cmd下输入node -v,出现下图版本提示就是完成了NodeJS的安装。?


图2


macos 下打开终端输入?node -v 及npm -v?出现下图版本提示就是完成了NodeJS的安装。



图3

4、npm的安装。由于新版的NodeJS已经集成了npm,所以之前npm也一并安装好了。同样可以使用cmd命令行输入”npm -v”来测试是否成功安装。如上图,出现版本提示便OK了。?

常规NodeJS的搭建到现在为止已经完成了

第二步:搭建vue开发环境

我们就可以全局vue-cli脚手架,输入命令:npm install--global vue-cli ?回车;验证是否安装成功,在命令输入vue,出来vue的信息,及说明安装成功;


图4

第三步:搭建vue项目

?使用命令创建项目,一步步选择之后开始等等项目创建完成

在命令行输入:vue init webpack myapp? 其中“myapp”是我的项目名。


图5

完成后如下:


图6


图7

执行命令,出现如下效果说明项目已经运行成功:

npm run dev


图8

执行生成命令:

npm run build

?注意: 生成的时候一定要修改index.js 中的生成路径,否则后面程序运行打包页面会显示空白,找不到路径

图9

出现如下效果


图10

项目下回多出一个dist的文件夹,里面就你打包好的东西


接下来一切操作都在dist文件夹目录下。

第四步:安装Electron

执行命令:

npm install electron

 安装成功后执行:electron -v 查看一下是否安装成功


第五步:创建主程序的入口(main.js),及相关配置 package.json

在dist文件夹内创建main.js文件及package.json 文件

main.js内容如下:

const {app,BrowserWindow} = require('electron'); //引入electron

let win;

let windowConfig = {

width:800,

? height:600,

? icon:"icon.png",

}; //窗口配置程序运行窗口的大小

function createWindow() {

win =new BrowserWindow(windowConfig); //创建一个窗口

? win.loadURL(`file://${__dirname}/index.html`); //在窗口内要展示的内容index.html 就是打包生成的index.html

? win.webContents.openDevTools(); //开启调试工具

? win.on('close', () => {

//回收BrowserWindow对象

? ? win =null;

? });

? win.on('resize', () => {

win.reload();

? })

}

app.on('ready', createWindow);

app.on('window-all-closed', () => {

app.quit();

});

app.on('activate', () => {

if (win ==null) {

createWindow();

? }

});

package.json内容如下:

{

"name": "myapp",

? "productName": "myapp",

? "author": "cdl",

? "version": "1.0.0",

? "main": "main.js",

? "description": "myapp",

? "scripts": {

"pack": "electron-builder --dir",

? ? "dist": "electron-builder",

? ? "postinstall": "electron-builder install-app-deps"

? },

? "build": {

"directories": {

"output": "build"

? ? },

? ? "electronVersion": "20.1.2",

? ? "win": {

"requestedExecutionLevel": "highestAvailable",

? ? ? "target": [

{

"target": "nsis",

? ? ? ? ? "arch": [

"x64"

? ? ? ? ? ]

}

]

},

? ? "appId": "com.app.myapp",

? ? "artifactName": "myapp.${ext}",

? ? "extraResources": [],

? ? "nsis": {

"artifactName": "myapp.${ext}"

? ? },

? ? "publish": [

{

"provider": "generic",

? ? ? ? "url": "myapp"

? ? ? }

]

},

? "dependencies": {

"core-js": "^2.4.1",

? ? "electron-package": "^0.1.0",

? ? "electron-packager": "^12.1.0",

? ? "electron-updater": "^4.6.5",

? ? "fs-extra": "^4.0.1",

? ? "install.js": "^1.0.1",

? ? "moment": "^2.18.1",

? ? "moment-es6": "^1.0.0"

? },

? "license": "ISC",

? "devDependencies": {

"electron-builder": "^23.3.3"

? }

}

package.json更多配置可查看官方文档:https://www.electron.build/configuration/configuration

在你的vue项目里面App.vue生命周期里面新增如下代码:这是自动检测更新

mounted: function () {

? ? ? if (window.require) {

? ? ? ? let ipc = window.require('electron').ipcRenderer;

? ? ? ? ipc.send("checkForUpdate");

? ? ? ? ipc.on("message", (event, text) => {

? ? ? ? ? this.tips = text;

? ? ? ? ? console.log('message1',this.tips)

? ? ? ? });

? ? ? ? ipc.on("downloadProgress", (event, progressObj)=> {

? ? ? ? ? this.downloadPercent = progressObj.percent || 0;

? ? ? ? ? console.log('message2',this.downloadPercent)

? ? ? ? });

? ? ? ? ipc.on("isUpdateNow", () => {

? ? ? ? ? ipc.send("isUpdateNow");

? ? ? ? });

? ? ? }

? ? },

在dist文件夹内-执行命令:?electron .


成功后效果如下:



出现如上效果说明你已经成功了。

第六步:打包成软件包

在dist文件夹内-执行命令

npm install electron-builder

npm install electron-package

npm install electron-updater

执行打包命令:

electron-bulider 或?执行命令:npm run dist

如出现:

这是得再运行下:npm install electron --save-dev

后再npm run dist


至此全部完成。




最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容