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阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容